DG環境下重新構建物理備庫oracle12C

jasperjohn發表於2013-09-22
# ----------------------------------------------------------------------------
#
#  File:   rebuildstandby.txt
#  Creation Date:  20/8/13
#  Last Modified:  20/8/13
#  Purpose:恢復物理備庫
#
# ----------------------------------------------------------------------------

主庫:192.168.10.52
備庫:192.168.10.53
改變備庫為物理備庫:
***備庫操作:
sqlplus / as sysdba
sql>shutdown immediate;
刪除所有的控制檔案和資料檔案

rm -rf /u01/app/oracle/oradata/orcl/*

##下面對primary庫(192.168.10.53)做一個全備


/*注意rman 時候,必須把主庫啟動到mount狀態(alter database open;)進行備份!(否則恢復到備庫報錯:ora-16009)*/


new-svn-> rman target sys/orcl@prim

恢復管理器: Release 12.1.0.1.0 - Production on 星期二 8月 20 09:41:25 2013

Copyright (c) 1982, 2013, Oracle and/or its affiliates.  All rights reserved.

已連線到目標資料庫: ORCL (DBID=1349930489, 未開啟)

RMAN> backup full database format='/u01/oracle/fulldatabase_%U%d' include current controlfile for standby;

然後把備份集scp到standby庫:
new-svn-> scp /u01/oracle/full* 192.168.10.53:/u01/oracle/

啟動備份庫到nomount狀態

ora1-> sqlplus sys/orcl@stby as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on 星期一 8月 19 22:25:02 2013

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

已連線到空閒例程。

SQL> startup pfile='$ORACLE_HOME/dbs/initstby.ora' nomount force
ORACLE 例程已經啟動。

Total System Global Area  835104768 bytes
Fixed Size                  2293880 bytes
Variable Size             683675528 bytes
Database Buffers          142606336 bytes
Redo Buffers                6529024 bytes
SQL> exit

方法1:在primary庫利用RMAN建立standby資料庫(內部測試採用這個方法)


new-svn-> rman target sys/orcl@prim

恢復管理器: Release 12.1.0.1.0 - Production on 星期二 8月 20 09:50:15 2013

Copyright (c) 1982, 2013, Oracle and/or its affiliates.  All rights reserved.

已連線到目標資料庫: ORCL (DBID=1349930489, 未開啟)

RMAN> connect auxiliary sys/orcl@stby;

已連線到輔助資料庫: ORCL (未裝載)


RMAN> duplicate target database for standby nofilenamecheck;

啟動 Duplicate Db 於 2013-08-20 09:51:05
使用目標資料庫控制檔案替代恢復目錄
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: SID=178 裝置型別=DISK

記憶體指令碼的內容:
{
   restore clone standby controlfile;
}
正在執行記憶體指令碼

啟動 restore 於 2013-08-20 09:51:06
使用通道 ORA_AUX_DISK_1

通道 ORA_AUX_DISK_1: 正在開始還原資料檔案備份集
通道 ORA_AUX_DISK_1: 正在還原控制檔案
通道 ORA_AUX_DISK_1: 正在讀取備份片段 /u01/oracle/rman/c-1349930489-20130820-00
通道 ORA_AUX_DISK_1: ORA-19870: 還原備份片段 /u01/oracle/rman/c-1349930489-20130820-00 時出錯
ORA-19505: 無法識別檔案"/u01/oracle/rman/c-1349930489-20130820-00"
ORA-27037: 無法獲得檔案狀態
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

故障轉移到上一個備份

通道 ORA_AUX_DISK_1: 正在開始還原資料檔案備份集
通道 ORA_AUX_DISK_1: 正在還原控制檔案
通道 ORA_AUX_DISK_1: 正在讀取備份片段 /u01/oracle/fulldatabase_2gohoq53_1_1ORCL
通道 ORA_AUX_DISK_1: 段控制程式碼 = /u01/oracle/fulldatabase_2gohoq53_1_1ORCL 標記 = TAG20130820T094223
通道 ORA_AUX_DISK_1: 已還原備份片段 1
通道 ORA_AUX_DISK_1: 還原完成, 用時: 00:00:03
輸出檔名=/u01/app/oracle/oradata/orcl/control01.ctl
輸出檔名=/u01/app/oracle/fast_recovery_area/orcl/control02.ctl
完成 restore 於 2013-08-20 09:51:10

記憶體指令碼的內容:
{
   sql clone 'alter database mount standby database';
}
正在執行記憶體指令碼

sql 語句: alter database mount standby database

記憶體指令碼的內容:
{
   set newname for tempfile  1 to
 "/u01/app/oracle/oradata/orcl/temp01.dbf";
   set newname for tempfile  2 to
 "/u01/app/oracle/product/12c/dbs/test_tmp1";
   switch clone tempfile all;
   set newname for datafile  1 to
 "/u01/app/oracle/oradata/orcl/system01.dbf";
   set newname for datafile  2 to
 "/u01/app/oracle/oradata/orcl/tab_test1.dbf";
   set newname for datafile  3 to
 "/u01/app/oracle/oradata/orcl/sysaux01.dbf";
   set newname for datafile  4 to
 "/u01/app/oracle/oradata/orcl/undotbs01.dbf";
   set newname for datafile  5 to
 "/u01/app/oracle/oradata/orcl/tab_test2.dbf";
   set newname for datafile  6 to
 "/u01/app/oracle/oradata/orcl/users01.dbf";
   set newname for datafile  7 to
 "/u01/app/oracle/oradata/system02.dbf";
   set newname for datafile  8 to
 "/u01/app/oracle/oradata/orcl/aningtbs1.dbf";
   set newname for datafile  9 to
 "/u01/app/oracle/oradata/orcl/aningtbs2.dbf";
   restore
   clone database
   ;
}
正在執行記憶體指令碼

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

臨時檔案 1 在控制檔案中已重新命名為 /u01/app/oracle/oradata/orcl/temp01.dbf
臨時檔案 2 在控制檔案中已重新命名為 /u01/app/oracle/product/12c/dbs/test_tmp1

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

啟動 restore 於 2013-08-20 09:51:18
使用通道 ORA_AUX_DISK_1

通道 ORA_AUX_DISK_1: 正在開始還原資料檔案備份集
通道 ORA_AUX_DISK_1: 正在指定從備份集還原的資料檔案
通道 ORA_AUX_DISK_1: 將資料檔案 00001 還原到 /u01/app/oracle/oradata/orcl/system01.dbf
通道 ORA_AUX_DISK_1: 將資料檔案 00002 還原到 /u01/app/oracle/oradata/orcl/tab_test1.dbf
通道 ORA_AUX_DISK_1: 將資料檔案 00003 還原到 /u01/app/oracle/oradata/orcl/sysaux01.dbf
通道 ORA_AUX_DISK_1: 將資料檔案 00004 還原到 /u01/app/oracle/oradata/orcl/undotbs01.dbf
通道 ORA_AUX_DISK_1: 將資料檔案 00005 還原到 /u01/app/oracle/oradata/orcl/tab_test2.dbf
通道 ORA_AUX_DISK_1: 將資料檔案 00006 還原到 /u01/app/oracle/oradata/orcl/users01.dbf
通道 ORA_AUX_DISK_1: 將資料檔案 00007 還原到 /u01/app/oracle/oradata/system02.dbf
通道 ORA_AUX_DISK_1: 將資料檔案 00008 還原到 /u01/app/oracle/oradata/orcl/aningtbs1.dbf
通道 ORA_AUX_DISK_1: 將資料檔案 00009 還原到 /u01/app/oracle/oradata/orcl/aningtbs2.dbf
通道 ORA_AUX_DISK_1: 正在讀取備份片段 /u01/oracle/fulldatabase_2fohoq3v_1_1ORCL
通道 ORA_AUX_DISK_1: 段控制程式碼 = /u01/oracle/fulldatabase_2fohoq3v_1_1ORCL 標記 = TAG20130820T094223
通道 ORA_AUX_DISK_1: 已還原備份片段 1
通道 ORA_AUX_DISK_1: 還原完成, 用時: 00:04:03
完成 restore 於 2013-08-20 09:55:04

記憶體指令碼的內容:
{
   switch clone datafile all;
}
正在執行記憶體指令碼

資料檔案 1 已轉換成資料檔案副本
輸入資料檔案副本 RECID=1 STAMP=823905123 檔名=/u01/app/oracle/oradata/orcl/system01.dbf
資料檔案 2 已轉換成資料檔案副本
輸入資料檔案副本 RECID=2 STAMP=823905124 檔名=/u01/app/oracle/oradata/orcl/tab_test1.dbf
資料檔案 3 已轉換成資料檔案副本
輸入資料檔案副本 RECID=3 STAMP=823905124 檔名=/u01/app/oracle/oradata/orcl/sysaux01.dbf
資料檔案 4 已轉換成資料檔案副本
輸入資料檔案副本 RECID=4 STAMP=823905124 檔名=/u01/app/oracle/oradata/orcl/undotbs01.dbf
資料檔案 5 已轉換成資料檔案副本
輸入資料檔案副本 RECID=5 STAMP=823905124 檔名=/u01/app/oracle/oradata/orcl/tab_test2.dbf
資料檔案 6 已轉換成資料檔案副本
輸入資料檔案副本 RECID=6 STAMP=823905124 檔名=/u01/app/oracle/oradata/orcl/users01.dbf
資料檔案 7 已轉換成資料檔案副本
輸入資料檔案副本 RECID=7 STAMP=823905125 檔名=/u01/app/oracle/oradata/system02.dbf
資料檔案 8 已轉換成資料檔案副本
輸入資料檔案副本 RECID=8 STAMP=823905125 檔名=/u01/app/oracle/oradata/orcl/aningtbs1.dbf
資料檔案 9 已轉換成資料檔案副本
輸入資料檔案副本 RECID=9 STAMP=823905125 檔名=/u01/app/oracle/oradata/orcl/aningtbs2.dbf
完成 Duplicate Db 於 2013-08-20 09:55:36

RMAN>


方法2:(建議採用此方法)
##########################################################333
--在備庫上進行操作
ora1-> rman target sys/orcl@stby

恢復管理器: Release 12.1.0.1.0 - Production on 星期一 8月 19 22:35:01 2013

Copyright (c) 1982, 2013, Oracle and/or its affiliates.  All rights reserved.

已連線到目標資料庫: ORCL (DBID=1349930489, 未開啟)--可以從連線資訊看到是同時連到主和備(注意此時主庫為open狀態,備庫為nomount狀態)

RMAN> connect auxiliary sys/orcl@prim;
RMAN> duplicate target database for standby nofilenamecheck;

--把拷過來的備份(全備和控制檔案備份)進行恢復,如果兩個庫路徑一致,就可以加上nofilenamecheck

ora1-> sqlplus sys/orcl@stby as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on 星期一 8月 19 22:37:08 2013

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


連線到:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> recover managed standby database disconnect from session;
完成介質恢復。                        --這句話是開啟日誌傳遞應用功能
SQL> recover managed standby database using current logfile disconnect from session;--物理備用庫恢復程式(實時)(證明實際程式已經啟動)
ORA-01153: 啟用了不相容的介質恢復
SQL> alter database recover managed standby database using current logfile;  --這句話的意思是把物理備庫redo實時應用開啟!(證明實際程式已經啟動)
alter database recover managed standby database using current logfile
*
第 1 行出現錯誤:
ORA-01153: 啟用了不相容的介質恢復  

######################可以通過下面的語句去查詢,實際已經啟動歸檔程式

SQL> SELECT PROCESS, STATUS, THREAD#, SEQUENCE#, BLOCK#, BLOCKS FROM V$MANAGED_STANDBY;

PROCESS            STATUS                      THREAD#  SEQUENCE#     BLOCK#
------------------ ------------------------ ---------- ---------- ----------
    BLOCKS
----------
ARCH               CONNECTED                         0          0          0
         0

ARCH               CONNECTED                         0          0          0
         0

ARCH               CONNECTED                         0          0          0
         0


PROCESS            STATUS                      THREAD#  SEQUENCE#     BLOCK#
------------------ ------------------------ ---------- ---------- ----------
    BLOCKS
----------
ARCH               CONNECTED                         0          0          0
         0

MRP0               WAIT_FOR_LOG                      1        128          0
         0
#######################################################################

在主庫上查詢動態檢視
SQL> col DEST_NAME  for a24
SQL> col STATUS for a24
SQL> col ERROR for a24
SQL> select process,status from v$managed_standby;

PROCESS            STATUS
------------------ ------------------------
ARCH               CONNECTED
ARCH               CONNECTED
ARCH               CONNECTED
ARCH               CONNECTED
#################################################################
測試:

在主庫上建一個表空間:

SQL> create tablespace t2 datafile '/u01/app/oracle/oradata/orcl/t2.dbf' size 20m autoextend off;

表空間已建立。

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/system01.dbf
/u01/app/oracle/oradata/orcl/tab_test1.dbf
/u01/app/oracle/oradata/orcl/sysaux01.dbf
/u01/app/oracle/oradata/orcl/undotbs01.dbf
/u01/app/oracle/oradata/orcl/tab_test2.dbf
/u01/app/oracle/oradata/orcl/users01.dbf
/u01/app/oracle/oradata/system02.dbf
/u01/app/oracle/oradata/orcl/aningtbs1.dbf
/u01/app/oracle/oradata/orcl/aningtbs2.dbf
/u01/app/oracle/oradata/orcl/t2.dbf

已選擇 10 行。

備庫查詢:
SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/system01.dbf
/u01/app/oracle/oradata/orcl/tab_test1.dbf
/u01/app/oracle/oradata/orcl/sysaux01.dbf
/u01/app/oracle/oradata/orcl/undotbs01.dbf
/u01/app/oracle/oradata/orcl/tab_test2.dbf
/u01/app/oracle/oradata/orcl/users01.dbf
/u01/app/oracle/oradata/system02.dbf
/u01/app/oracle/oradata/orcl/aningtbs1.dbf
/u01/app/oracle/oradata/orcl/aningtbs2.dbf
/u01/app/oracle/oradata/orcl/t2.dbf

已選擇 10 行。
主庫檢視當前歸檔日誌號:
SQL> archive log list;
資料庫日誌模式            存檔模式
自動存檔             啟用
存檔終點            /u01/oracle/arch/orcl
最早的聯機日誌序列     127
下一個存檔日誌序列   129
當前日誌序列           129
SQL>
備庫檢視當前歸檔日誌號:
SQL> archive log list;
資料庫日誌模式            存檔模式
自動存檔             啟用
存檔終點            /u01/oracle/arch/stby
最早的聯機日誌序列     0
下一個存檔日誌序列   0
當前日誌序列           129
檢視當前的歸檔日誌序列號是否跟著變動,並且和主庫一致;如果是,表明成功!
檢視主備庫當前已規檔最大執行緒號及取得當前資料庫各執行緒已歸檔檔案最大序號,如果primary 與standby 最大序號不相同,
必須將多出的序號對應的歸檔檔案複製到待轉換的standby伺服器。
主庫:
刪除剛才建的測試表空間:
SQL>drop tablespace t2;

備庫以只讀方式開啟:
SQL> startup pfile='$ORACLE_HOME/dbs/initstby.ora' force;
ORACLE 例程已經啟動。

Total System Global Area  835104768 bytes
Fixed Size                  2293880 bytes
Variable Size             683675528 bytes
Database Buffers          142606336 bytes
Redo Buffers                6529024 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL>
檢視開啟方式:
SQL> select open_mode from v$database;

OPEN_MODE
----------------------------------------
READ ONLY

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

相關文章