Oracle單機Rman筆記[6]---記一次oracle脫機異地還原

系統狀況介紹

正式環境:windows 2008 r2-32bit/ Oracle: Release 11.2.0.1.0
目標環境:windows 2012 Standard-64bit / Oracle: Release 11.2.0.1.0
備份工具:EMC Avamar 7.5.1-RMAM全備sql

備份介紹

Avamar自動配置RMAN腳本,全備數據庫,自動腳本日誌內容以下(圖形界面配置的,自動生成以下腳本,也能夠手工寫腳本備份):數據庫

1> RMAN> @@ORCL-24081.tmp
2> connect target *;
3> **文件結尾**
4> run {
5> configure controlfile autobackup on;
6> set controlfile autobackup format for device type sbt to 'CONTROLFILE.ORCL.%F';
7> allocate channel c0 type sbt PARMS="SBT_LIBRARY=C:\PROGRA~1\avs\bin\LIBOBK~1.DLL" format '%d_%U';
8> send  channel 'c0' '"--libport=55154" "--force-expires" "--ctlusessl=false" "--cacheprefix=ORCL_c0" "--sysdir=C:\Program Files\avs\etc" "--bindir=C:\Program Files\avs\bin" "--vardir=C:\Program Files\avs\var\clientlogs" "--logfile=C:\Program Files\avs\var\clientlogs\yongyouLV0-yongyouLV0-1553436000010-3002-OracleORCL-avtar0.log" "--ctlcallport=55152"';
9> backup filesperset = 1   incremental level = 0 database plus archivelog delete input;
10> }
11>

還原過程

採用了Avamar恢復數據庫的方式,實際上也是RMAN腳本,按照要求使用dbca命令創建好相同實例名稱等,並備份相關控制文件(此步驟在Linux上能夠手工創建)開始還原。其中須要注意的問題包含了恢復段的SCN號。開始沒注意,致使完報錯以下:windows

歸檔日誌文件名=E:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2019_03_21\O1_MF_1_29360_G97XBTPZ_.ARC 線程=1 序列=29360
通道 default: 正在刪除歸檔日誌
歸檔日誌文件名=E:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2019_03_21\O1_MF_1_29360_G97XBTPZ_.ARC RECID=8674 STAMP=1003498474
沒法找到歸檔日誌
歸檔日誌線程=1 序列=29361
釋放的通道: c0
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 03/21/2019 13:34:38 上) 失敗
RMAN-06054: 介質恢復正在請求未知的線程 1 序列 29361 的歸檔日誌以及起始 SCN 983751610

再次使用SCN號參數恢復後,Avamar中顯示恢復正常,但使用rman target / nocatalog 訪問恢復後的數據庫時,忽然發現數據庫沒法啓動,報錯以下:oracle

RMAN-00571: ====================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ========
RMAN-00571: ====================================================
RMAN-00554: 內部恢復管理器程序包初始化失敗
RMAN-04005: 目標數據庫中存在錯誤:
ORA-12432: LBAC 錯誤: zllesesinit:OCIStmtExecute

使用 sqlplus / as sysdba能夠登錄數據庫,但沒法執行SQL語句,報錯以下:工具

ORA-01012: not logged on

問題解決過程

在網上找了下相同狀況的問題,其中在oracle官網找到了相似問題,以下圖:
網站

同時其餘網站上大部分給出的解決方式爲:this

--Oracle給出的解決方案
--To solve this situation the LBAC option has to be disabled:
Step 1
  cd $ORACLE_HOME/rdbms/lib
  make -f ins_rdbms.mk lbac_off ioracle

-- Author   : Robinson Cheng
-- Blog     : http://blog.csdn.net/robinson_0612
-- DB Forum : http://bbs.dbsupport.cn

Step 2
$ sqlplus "/ as sysdba"
SQL> startup migrate
SQL> @?/rdbms/admin/catnools.sql
SQL> shutdown immediate
SQL> startup
SQL> select * from v$version where rownum<2;

但因爲這次的環境爲windows,嘗試了使用step2的方式仍是不行,又在網上找了下,發現別人的一片文章,連接以下:Fix ORA-12432: LBAC error: zllesesinit:OCIStmtExecute when you cannot logon - General Database Discussions。其中根據做者所述:
.net

給了我解決思路。因而我採用此方式。sqlplus / as sysdba後先abort數據庫,在嘗試使用Step2的步驟線程

SQL>shutdown abort
SQL> startup migrate

此時數據庫居然起來了,繼續執行Step2的步驟日誌

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

發生報錯ORA-06553: PLS-801: 內部錯誤 [56327]。嘗試解決以下:

SQL>shutdown abort
SQL> startup upgrade
SQL> @?/rdbms/admin/utlirp
SQL> shutdown immediate

此時,又發生了報錯ORA-12432: LBAC 錯誤: zllesesinit:OCIStmtExecute。繼續嘗試執行:

SQL>shutdown abort
SQL> startup upgrade
SQL> @?/rdbms/admin/utlrp

此後在此步驟一直卡住不動了,嘗試開啓了新的窗口,從新執行:

SQL> shutdown abort
SQL> startup migrate
SQL> @?/rdbms/admin/catnools.sql

此時數據庫居然沒報錯,再次使用如下命令後,數據庫正常啓動。

SQL> shutdown immediate
SQL> startup
SQL> select * from v$version where rownum<2;

問題總結

實際上本次遷移主要遇到的問題是:

  • ORA-01012: not logged on
  • ORA-12432: LBAC 錯誤: zllesesinit:OCIStmtExecute 可是在處理這兩個問題時發生了ORA-06553: PLS-801: 內部錯誤 [56327]的報錯。在解決此報錯時,沒有辦法按照正常的流程執行完全部的SQL只能分次屢次執行。但最終來看運氣仍是比較好,妥善的解決了兩個報錯。最終數據庫正常加載啓動。
相關文章
相關標籤/搜索