oracle實驗記錄 (oracle 10G dataguard(9)rman恢復與dg)

fufuh2o發表於2009-11-16

rman 恢復與 standby

先將primary xh 註冊一個catalog  orcl
C:\>set oracle_sid=orcl

C:\>sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 11月 12 09:17:59 2009

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

已連線到空閒例程。

SQL> startup
ORACLE 例程已經啟動。

Total System Global Area  289406976 bytes
Fixed Size                  1248576 bytes
Variable Size             100664000 bytes
Database Buffers          180355072 bytes
Redo Buffers                7139328 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL> select name from v$database;

NAME
---------
ORCL


SQL> create user rman identified by rman default tablespace users;

使用者已建立。

SQL> grant connect,resource to rman;

授權成功。

SQL> grant recovery_catalog_owner to rman;

授權成功。

SQL>


C:\>set oracle_sid=XH

C:\>rman target '/ as sysdba' catalog rman/rman@orcl

恢復管理器: Release 10.2.0.1.0 - Production on 星期四 11月 12 09:24:18 2009

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

連線到目標資料庫: XH (DBID=3098165337)
連線到恢復目錄資料庫

RMAN> register database
2> ;

註冊在恢復目錄中的資料庫
正在啟動全部恢復目錄的 resync
完成全部 resync

RMAN> list backup of database;


備份集列表
===================

BS 關鍵字  型別 LV 大小       裝置型別 經過時間 完成時間
------- ---- -- ---------- ----------- ------------ ----------
63      Full    594.45M    DISK        00:01:53     11-11月-09
        BP 關鍵字: 67   狀態: AVAILABLE  已壓縮: NO  標記: TAG20091111T170844
段名:G:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\BACKUPSET\2009_11_11\O1_MF_
NNNDF_TAG20091111T170844_5HNZRXQX_.BKP
  備份集 63 中的資料檔案列表
  檔案 LV 型別 Ckp SCN    Ckp 時間   名稱
  ---- -- ---- ---------- ---------- ----
  1       Full 580059     11-11月-09 G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\SYSTEM0
1.DBF
  2       Full 580059     11-11月-09 G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\UNDOTBS
01.DBF
  3       Full 580059     11-11月-09 G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\SYSAUX0
1.DBF
  4       Full 580059     11-11月-09 G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\USERS01
.DBF
  5       Full 580059     11-11月-09 G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\EXAMPLE
01.DBF

 

primary 設定實時應用
SQL> alter system set log_archive_dest_2='service=standby1 lgwr valid_for=(onlin   (primary)
e_logfiles,primary_role) db_unique_name=standby1';

系統已更改。

 

SQL> alter database add standby logfile group 4 'e:\standby\standby04.log' size   (standby)
50m;

資料庫已更改。


SQL>  select process,client_process,status,sequence# from v$managed_standby; (standby)

PROCESS   CLIENT_P STATUS        SEQUENCE#
--------- -------- ------------ ----------
ARCH      ARCH     CONNECTED             0
ARCH      ARCH     CONNECTED             0
RFS       LGWR     IDLE                 12
RFS       ARCH     IDLE                  0
RFS       N/A      IDLE                  0

SQL> select dbid,group#,bytes,status ,first_change#,last_change# from v$standby_   (standby)
log;

DBID           GROUP#      BYTES STATUS     FIRST_CHANGE# LAST_CHANGE#
---------- ---------- ---------- ---------- ------------- ------------
3098165337          4   52428800 ACTIVE            698275       698436


SQL> create table t1  (a int) tablespace xhtr;  (primary)

表已建立。

SQL> insert into t1 values(1);  (primary)

已建立 1 行。

SQL> commit;   (primary)

提交完成。

SQL>
SQL> col file_name format a50
SQL> select file_id ,file_name from dba_data_files; (primary)

   FILE_ID FILE_NAME
---------- --------------------------------------------------
         4 G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\USERS01.DBF
         3 G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\SYSAUX01.DBF
         2 G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\UNDOTBS01.DBF
         1 G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\SYSTEM01.DBF
         5 G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\EXAMPLE01.DBF
         6 G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\XHTR.DBF

已選擇6行。

SQL> alter database recover managed standby database using current logfile disco  (standby)
nnect from session;

資料庫已更改。


SQL> alter database recover managed standby database cancel; (standby)

資料庫已更改。

SQL> alter database open   (standby)
  2  ;

資料庫已更改。

SQL> select * from t1;(standby)

         A
----------
         1


RMAN> delete noprompt backup          ~~~刪除下備份
2> ;

 

實驗利用standby備份 完全恢復primary

C:\>set oracle_sid=standby1

C:\>rman target '/ as sysdba' catalog rman/rman@orcl   (連線catalog ,standby 使用standby的資料檔案備份)

恢復管理器: Release 10.2.0.1.0 - Production on 星期四 11月 12 10:11:47 2009

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

連線到目標資料庫: XH (DBID=3098165337)
連線到恢復目錄資料庫

RMAN> backup  datafile 6;

啟動 backup 於 12-11月-09
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=147 devtype=DISK
通道 ORA_DISK_1: 啟動全部資料檔案備份集
通道 ORA_DISK_1: 正在指定備份集中的資料檔案
輸入資料檔案 fno=00006 name=E:\STANDBY\DATAFILE\XHTR.DBF *****************
通道 ORA_DISK_1: 正在啟動段 1 於 12-11月-09
通道 ORA_DISK_1: 已完成段 1 於 12-11月-09
段控制程式碼=E:\STANDBY\ARCHIVE\STANDBY1\BACKUPSET\2009_11_12\O1_MF_NNNDF_TAG20091112T
101239_5HPVRQMK_.BKP 標記=TAG20091112T101239 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:01
完成 backup 於 12-11月-09

SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> host del G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\XHTR.DBF;

SQL> startup
ORACLE 例程已經啟動。

Total System Global Area  289406976 bytes
Fixed Size                  1248576 bytes
Variable Size             113246912 bytes
Database Buffers          167772160 bytes
Redo Buffers                7139328 bytes
資料庫裝載完畢。
ORA-01157: 無法標識/鎖定資料檔案 6 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 6: 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\XHTR.DBF'


SQL> alter database datafile 6 offline;(primary)

資料庫已更改。

 


C:\>set oracle_sid=XH

C:\>rman target '/ as sysdba' catalog rman/rman@orcl

恢復管理器: Release 10.2.0.1.0 - Production on 星期四 11月 12 10:25:03 20

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

已連線到目標資料庫: XH (DBID=3098165337, 未開啟)
連線到恢復目錄資料庫
RMAN> run{restore datafile 6;
2> recover datafile 6;
3> }

啟動 restore 於 12-11月-09
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=139 devtype=DISK

通道 ORA_DISK_1: 正在開始恢復資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集恢復的資料檔案
正將資料檔案00006恢復到G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\XHTR.DBF
通道 ORA_DISK_1: 正在讀取備份段 E:\STANDBY\ARCHIVE\STANDBY1\BACKUPSET\2009_11_12
\O1_MF_NNNDF_TAG20091112T101239_5HPVRQMK_.BKP
通道 ORA_DISK_1: 已恢復備份段 1
段控制程式碼 = E:\STANDBY\ARCHIVE\STANDBY1\BACKUPSET\2009_11_12\O1_MF_NNNDF_TAG2009111
2T101239_5HPVRQMK_.BKP 標記 = TAG20091112T101239
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:04
完成 restore 於 12-11月-09

啟動 recover 於 12-11月-09
使用通道 ORA_DISK_1

正在開始介質的恢復
介質恢復完成, 用時: 00:00:00

完成 recover 於 12-11月-09

RMAN>


SQL> alter database datafile 6 online; (primary)

資料庫已更改。

SQL> select * from t1; (primary)

         A
----------
         1


standby controlfile丟失 恢復

SQL> show parameter control (standby)

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time        integer     7
control_files                        string      E:\STANDBY\DATAFILE\CONTROL01.
                                                 CTL
SQL> shutdown immediate; (standby)
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> host del  E:\STANDBY\DATAFILE\CONTROL01.CTL   (standby)

SQL> startup   (standby)
ORACLE 例程已經啟動。

Total System Global Area  289406976 bytes
Fixed Size                  1248576 bytes
Variable Size              96469696 bytes
Database Buffers          184549376 bytes
Redo Buffers                7139328 bytes
ORA-00205: ?????????, ??????, ???????

 


SQL> alter database create standby controlfile as 'e:\standby\datafile\control01  (primry)
.ctl';

資料庫已更改。


SQL> alter system switch logfile;(primary)

系統已更改。

primary要 切換一起,否則 standby open時報 ORA-16004:

SQL> alter database recover managed standby database disconnect from session;  (standby)

資料庫已更改。

SQL> alter database recover managed standby database cancel;(standby)

資料庫已更改。

SQL> alter database open;(standby)

資料庫已更改。


standby datafile 丟失

SQL> shutdown immediate; (standby)
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> host del e:\standby\datafile\xhtr.dbf  (standby)

SQL> startup  (standby)
ORACLE 例程已經啟動。

Total System Global Area  289406976 bytes
Fixed Size                  1248576 bytes
Variable Size              96469696 bytes
Database Buffers          184549376 bytes
Redo Buffers                7139328 bytes
資料庫裝載完畢。
ORA-16004: 備份資料庫需要恢復
ORA-01157: 無法標識/鎖定資料檔案 6 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 6: 'E:\STANDBY\DATAFILE\XHTR.DBF'

 


C:\>rman target system/a831115@standby1 catalog rman/rman@orcl


RMAN> run{set  newname for datafile 6 to 'e:\standby\datafile\xhtr.dbf';
2> restore datafile 6;
3> }

 

SQL> alter database recover managed standby database disconnect from session; (standby)

資料庫已更改。


SQL> alter database recover managed standby database cancel;(standby)

資料庫已更改。

SQL> alter database open;(standby)

資料庫已更改。

SQL> select * from t1;(standby)

         A
----------
         1


SQL> insert into t1 values(2);(primary)

已建立 1 行。

SQL> commit;(primary)

提交完成。

SQL> alter database recover managed standby database using current logfile disco  (standby)
nnect from session;

資料庫已更改。

SQL> alter database recover managed standby database cancel;  (standby)

資料庫已更改。

SQL> alter database open ;  (standby)

資料庫已更改。

 

SQL> select * from t1;  (standby)

         A
----------
         1
         2

SQL>
SQL> select count(*) from v$archived_log; (standby)

  COUNT(*)
----------
         4
SQL> select applied from v$archived_log;(standby)

APP
---
YES
YES
YES
YES
SQL> insert into t1 values(3);(primary)

已建立 1 行。

SQL> commit;(primary)

提交完成。
SQL> alter database recover managed standby database using current logfile disco  (standby)
nnect from session;

資料庫已更改。

SQL> alter database recover managed standby database cancel; (standby)

SQL> shutdown immediate; (standby)
ORA-01109: 資料庫未開啟


已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> host del e:\standby\datafile\xhtr.dbf; (standby)

SQL> startup  (standby)
ORACLE 例程已經啟動。

Total System Global Area  289406976 bytes
Fixed Size                  1248576 bytes
Variable Size              96469696 bytes
Database Buffers          184549376 bytes
Redo Buffers                7139328 bytes
資料庫裝載完畢。
ORA-16004: 備份資料庫需要恢復
ORA-01157: 無法標識/鎖定資料檔案 6 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 6: 'E:\STANDBY\DATAFILE\XHTR.DBF'

SQL> alter database recover managed standby database using current logfile disco   (standby)
nnect from session;

資料庫已更改。

SQL> alter database recover managed standby database cancel;  (standby)

資料庫已更改。

SQL> alter database open;  (standby)
alter database open
*
第 1 行出現錯誤:
ORA-16004: 備份資料庫需要恢復
ORA-01152: 檔案 6 沒有從過舊的備份中恢復
ORA-01110: 資料檔案 6: 'E:\STANDBY\DATAFILE\XHTR.DBF'


SQL> alter database recover managed standby database disconnect from session; (standby)

資料庫已更改。

SQL> alter database recover managed standby database cancel; (standby)

資料庫已更改。

SQL> alter database open; (standby)
alter database open
*
第 1 行出現錯誤:
ORA-16004: 備份資料庫需要恢復
ORA-01152: 檔案 6 沒有從過舊的備份中恢復
ORA-01110: 資料檔案 6: 'E:\STANDBY\DATAFILE\XHTR.DBF'

RMAN> run{set  newname for datafile 6 to 'e:\standby\datafile\xhtr.dbf';  
2> restore datafile 6;
3> recover datafile 6;
4> }
RMAN-03002: recover 命令 (在 11/12/2009 13:56:52 上) 失敗
RMAN-06067: RECOVER DATABASE 要求一個備份控制檔案或建立的控制檔案
SQL> alter system switch logfile;

系統已更改。

SQL> select count(*) from v$archived_log;(primary)

  COUNT(*)
----------
         5

SQL> alter database recover managed standby database using current logfile disco (standby)
nnect from session;

資料庫已更改。

SQL> alter database recover managed standby database cancel;(standby)

資料庫已更改。

SQL> alter database open ;(standby)

資料庫已更改。

SQL> select * from t1;(standby)

         A
----------
         1
         2
         3

總結:如果恢復standby丟失的datafile,需要使用歸檔到standby_file_dest的 archived log,如果向上面 一樣 使用實時應用 並沒有 歸檔到standby 的standby file dest,那麼恢復restore 到standby的datafile沒有可以應用的archived log,無法恢復完成,此時需要primary 執行一個歸檔~~讓standby 產生一個歸檔,並應用既可.

 

 

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

相關文章