RMAN異地恢復(ORA-06553: PLS-801: internal error [56319])

lovehewenyu發表於2012-08-09

異地 ( ORA-06553: PLS-801: internal error [56319]

 

一、基本思路:

1、 源庫 RMAN全備,並 歸檔日誌

2、 目的 建立好所需要目錄、許可權, copy備份集到目的伺服器的指定目錄

3、 恢復引數檔案成文字格式並修改控制檔案的位置,然後恢復控制控制檔案, catalog start with ‘備份集目錄 crosscheck

4、 如果儲存資料檔案目錄不同,則需要 set newname , restore,recover

5、  Alter database open resetlogs啟庫,最後新增 temp檔案

 

二、執行:

1、全庫指令碼

run {

allocate channel d1 type disk;

backup as compressed backupset database filesperset 4 format

'/backup/rman/level0_%d_%s_%p_%u_%T.bak' include current controlfile;

'alter system archive log current';

backup archivelog all filesperset 10 format '/backup/rman/arc_%d_%s_%p_%u_%T.bak'

release channel d1;

crosscheck backup;

}

 

2scp –P 80 –r BK oracle@192.168.1.33:/rman/test (-P 80不同埠傳輸, -r把整個目錄傳到目的 )

 

3restore pfile from ‘引數檔案備份集 ’;

        vi initSID.ora 修改控制檔案目錄為指定目錄

        restore controlfile from ‘控制檔案備份集 ’;

        catalog start with ‘/rman/test/BK’;

        crosscheck backup;

        crosscheck copy;

        crosscheck archivelog all;

4run{

set newname for datafile 1 to ' 目錄 /system01.dbf';

set newname for datafile 2 to ' 目錄 /undotbs01.dbf';

set newname for datafile 3 to ' 目錄 /sysaux01.dbf';

set newname for datafile 4 to ' 目錄 /users01.dbf';

###………;

restore database;

switch datafile all;

recover database;}

     指定時間點恢復

run{

set newname for datafile 1 to ' 目錄 /system01.dbf';

set newname for datafile 2 to ' 目錄 /undotbs01.dbf';

set newname for datafile 3 to ' 目錄 /sysaux01.dbf';

set newname for datafile 4 to ' 目錄 /users01.dbf';

###………;

sql 'alter session set nls_date_format="yyyy-mm-dd hh24:mi:ss"';

set until time = '2012-10-19 10:00:00';

restore database;

switch datafile all;

recover database;}

 

(源 執行SQL

select 'set newname for datafile ' || file# ||' to '''||replace(name,' 源資料庫資料的儲存目錄 ',' 目的資料庫儲存資料的目錄 ') ||''';' from v$datafile;)

5、  resetlogs啟庫

   指定redo log  新位置,

   alter database rename file '目錄/redo01.log' to '新目錄/redo01.log';

    alter database open resetlogs;

       檢視臨時表空間

       select  TABLESPACE_NAME, CONTENTS from dba_tablespaces where CONTENTS='TEMPORARY';

alter tablespace temp add tempfile ‘目錄 /temp02.dbf’ size 200m reuse;

alter database tempfile ‘源目錄 /temp01.dbf’ offline;

alter database tempfile ‘源目錄 /temp01.dbf’ drop including datafiles;

 

 

 

三、附表:

這次異地恢復遇到了 ORA-06553: PLS-801: internal error [56319]

 

遇到這個問題都是因為自己的不規範操作引起的。內心愧疚啊!

 

問題根本原因: 32位的資料庫,恢復到 64位資料庫,產生的問題。

解決方法:參考 惜分飛      感謝惜分飛的分享

 

重新編譯物件

SQL> shutdown immediate;

SQL> startup upgrade;

SQL> @?/rdbms/admin/utlirp.sql

SQL> @?/rdbms/admin/utlrp.sql

SQL> shutdown immediate;

SQL> startup;

查詢元件是否都正常

SELECT    COMP_NAME,STATUS FROM     DBA_REGISTRY;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26442936/viewspace-740497/,如需轉載,請註明出處,否則將追究法律責任。

相關文章