閱讀152 返回首頁    go 阿裏雲 go 技術社區[雲棲]


利用 RMAN 進行異機全恢複

服務器資料信息

servername

role

sid

db_unique_name

db­_name

lsn name

ip addr

node222

primary

TBDB

node222

node222

node222

192.168.17.222

node173

standby

TBDB

node173

node222

node173

192.168.17.173

 

node222, node173 數據文件,日誌文件,歸檔日誌存放位置一致

 

為實現物理standby

物理standby與primary數據庫完全一模一樣

同一鏡像數據庫,則 sid, db_name 必須一致

為標示不同數據庫, db­_unique_name 必須不一樣

為連接不同數據庫,連接器命令也必須不一樣

 

目標

primary 中導入測試數據,創建 rman 進行全備,複製備份片至standby 然後導入 rman

 

創建數據表空間 (node173,node222)

create tablespace RECHARGE datafile  '/u01/app/oracle/oradata/node222/recharge.dbf' size 500M extent management  local;

 

創建應用連接的用戶(node173,node222)

SQL> grant connect, resource to  RECHARGE identified by   "RECHARGE";

SQL> alter user RECHARGE default  tablespace RECHARGE;

 

exp數據導入

注意, 數據導入過程中需要操作係統語言, 數據庫語言, 客戶端語言同步

 

查詢並修改數據庫語言環境

查詢方法

SQL> select userenv('language') from  dual;

 

USERENV('LANGUAGE')

----------------------------------------------------

AMERICAN_AMERICA.AL32UTF8

 

修改方法

SQL> SHUTDOWN immediate;

SQL> STARTUP RESTRICT

SQL> alter database character set  internal_use AL32UTF8 ;

SQL> ALTER SYSTEM DISABLE RESTRICTED  SESSION;

SQL> shutdown immediate;

SQL> startup

 

確保 oracle 語言環境一致後

修改係統語言環境並導入數據 (node222)

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

imp userid=system/oracle  touser=RECHARGE  file=day_new.dmp

 

創建RMAN(node173,node222)

SQL> create tablespace rman

logging datafile  '/u01/app/oracle/oradata/node222/rman.dbf' size 1024M

extent management local segment space  management auto;

 

創建 RMAN 授權(node173,node222)

create user rman identified by rman  default tablespace rman;

grant connect,resource to rman;

grant recovery_catalog_owner to rman;

grant unlimited tablespace to rman;

grant sysdba to rman;

 

建立catalog數據庫及注冊數據庫(node173,node222)

rman catalog rman/rman

RMAN> create catalog tablespace  "RMAN";

RMAN> exit

 

連接 catalog(node173,node222)

rman target sys/oracle@node222 catalog  rman/rman@node222

 

         : 需啟動連接器,node222為客戶端連接服務器的標識符

 

返回下麵信息為正常連接到 RMAN

connected to target database: NODE222  (DBID=3694045568)

connected to recovery catalog database

 

注冊 catalog(node173,node222)

RMAN> register database;

database registered in recovery catalog

starting full resync of recovery catalog

full resync complete

 

創建備份目錄

mkdir /u01/app/oracle/backup

cd /u01/app/oracle/backup

mkdir controlfileback dbback log logback

controlfileback 存放備份的控製文件

dbback        存放備份的數據文件

log           存放備份生成的日誌,堅持查詢該日誌查看備份是否成功

logback       存放歸檔日誌文件

 

備份數據(node222)

rman target sys/oracle@node222 catalog  rman/rman@node222

         : @node222 listener 監聽器連接(配置略)

 

顯示一下全局配置信息

show all;

 

修改自動備份 control 功能

默認狀態

CONFIGURE BACKUP OPTIMIZATION OFF; # 默認狀態

CONFIGURE SNAPSHOT CONTROLFILE NAME TO

'/u01/app/oracle/product/11.2.0/db1/dbs/snapcf_TBDB.f';  # 默認保存位置

修改

CONFIGURE CONTROLFILE AUTOBACKUP ON;

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT  FOR DEVICE TYPE DISK TO

 '/u01/app/oracle/product/11.2.0/db1/dbs/cf%F';

 

修改備份數據最長時間

CONFIGURE RETENTION POLICY TO RECOVERY  WINDOW OF 15 DAYS;

 

如果需要刪除過時備份

DELETE OBSOLETE

 

全庫備份

RMAN> sql 'alter system archive log  current';

RMAN> backup database format  '/u01/app/oracle/backup/dbback/TBDB_%d_%T_%U';

備份過程信息如下

Starting backup at 28-JUN-13

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=198 device  type=DISK

channel ORA_DISK_1: starting full  datafile backup set

channel ORA_DISK_1: specifying  datafile(s) in backup set

input datafile file number=00007  name=/u01/app/oracle/oradata/node222/rman.dbf

input datafile file number=00001  name=/u01/app/oracle/oradata/node222/system01.dbf

input datafile file number=00002  name=/u01/app/oracle/oradata/node222/sysaux01.dbf

input datafile file number=00006  name=/u01/app/oracle/oradata/node222/recharge.dbf

input datafile file number=00003  name=/u01/app/oracle/oradata/node222/undotbs01.dbf

input datafile file number=00005  name=/u01/app/oracle/oradata/node222/example01.dbf

input datafile file number=00004  name=/u01/app/oracle/oradata/node222/users01.dbf

channel ORA_DISK_1: starting piece 1 at  28-JUN-13

channel ORA_DISK_1: finished piece 1 at 28-JUN-13

piece  handle=/u01/app/oracle/backup/dbback/TBDB_NODE222_20130628_01odb0sc_1_1  tag=TAG20130628T150651 comment=NONE

channel ORA_DISK_1: backup set complete,  elapsed time: 00:00:35

Finished backup at 28-JUN-13

 

Starting Control File and SPFILE Autobackup  at 28-JUN-13

piece  handle=/u01/app/oracle/product/11.2.0/db1/dbs/cfc-3695602788-20130628-00  comment=NONE

Finished Control File and SPFILE  Autobackup at 28-JUN-13

 

歸檔備份方法

sql 'alter system archive log current';

backup archivelog all format '/u01/app/oracle/backup/logback/arc_%t_%s'  delete all input;

 

控製文件手動備份方法

backup current controlfile format  '/u01/app/oracle/backup/controlfileback/cntrl_%s_%p_%s';

 

查詢備份信息

RMAN> list backup;

 

備份信息顯示

List of Backup Sets

===================

 

BS Key   Type LV Size       Device Type Elapsed Time Completion Time

------- ---- -- ---------- -----------  ------------ ---------------

159      Full    1.56G      DISK        00:01:02     27-JUN-13

         BP Key: 162   Status:  AVAILABLE  Compressed: NO  Tag: TAG20130627T121557

         Piece Name:  /u01/app/oracle/backup/dbback/TBDB_NODE222_20130627_01od82ft_1_1

   List of Datafiles in backup set 159

   File LV Type Ckp SCN    Ckp  Time  Name

   ---- -- ---- ---------- --------- ----

   1       Full 3122357    27-JUN-13 /u01/app/oracle/oradata/node222/system01.dbf

   2       Full 3122357    27-JUN-13  /u01/app/oracle/oradata/node222/sysaux01.dbf

   3       Full 3122357    27-JUN-13  /u01/app/oracle/oradata/node222/undotbs01.dbf

   4       Full 3122357    27-JUN-13 /u01/app/oracle/oradata/node222/users01.dbf

   5       Full 3122357    27-JUN-13  /u01/app/oracle/oradata/node222/example01.dbf

   6       Full 3122357    27-JUN-13  /u01/app/oracle/oradata/node222/recharge.dbf

   7       Full 3122357    27-JUN-13  /u01/app/oracle/oradata/node222/rman.dbf

 

BS Key   Type LV Size       Device Type  Elapsed Time Completion Time

------- ---- -- ---------- -----------  ------------ ---------------

160      Full    9.36M      DISK        00:00:02     27-JUN-13

         BP Key: 163   Status:  AVAILABLE  Compressed: NO  Tag: TAG20130627T121557

         Piece Name:  /u01/app/oracle/backup/dbback/TBDB_NODE222_20130627_02od82hv_1_1

   SPFILE Included: Modification time: 27-JUN-13

   SPFILE db_unique_name: NODE222

   Control File Included: Ckp SCN: 3122444      Ckp time: 27-JUN-13

 

BS Key   Size       Device Type Elapsed  Time Completion Time

------- ---------- -----------  ------------ ---------------

191      746.56M    DISK        00:00:26     27-JUN-13

        BP Key: 194   Status: AVAILABLE  Compressed: NO  Tag: TAG20130627T121920

         Piece Name: /u01/app/oracle/backup/logback/arc_819202760_3

 

   List of Archived Logs in backup set 191

   Thrd Seq     Low SCN    Low Time   Next SCN   Next Time

   ---- ------- ---------- --------- ---------- ---------

   1    85      2901879    25-JUN-13 2936275    25-JUN-13

   1    86      2936275    25-JUN-13 2952511    25-JUN-13

   1    87      2952511    25-JUN-13 2974058    26-JUN-13

   1    88      2974058    26-JUN-13 3000002    26-JUN-13

   1    89      3000002    26-JUN-13 3018605    26-JUN-13

   1    90      3018605    26-JUN-13 3046423    26-JUN-13

   1    91      3046423    26-JUN-13 3056627    27-JUN-13

   1    92      3056627    27-JUN-13 3080492    27-JUN-13

   1    93      3080492    27-JUN-13 3094323    27-JUN-13

   1    94      3094323    27-JUN-13 3098061    27-JUN-13

   1    95      3098061    27-JUN-13 3098704    27-JUN-13

   1    96      3098704    27-JUN-13 3099248    27-JUN-13

   1    97      3099248    27-JUN-13 3099871    27-JUN-13

   1    98      3099871    27-JUN-13 3100505    27-JUN-13

   1    99      3100505    27-JUN-13 3101436    27-JUN-13

   1    100     3101436    27-JUN-13 3101973    27-JUN-13

   1    101     3101973    27-JUN-13 3107360    27-JUN-13

   1    102     3107360    27-JUN-13 3120392    27-JUN-13

   1    103     3120392    27-JUN-13 3122322    27-JUN-13

   1    104     3122322    27-JUN-13 3122845    27-JUN-13

   1    105     3122845    27-JUN-13 3122892    27-JUN-13

 

BS Key   Type LV Size       Device Type Elapsed Time Completion Time

------- ---- -- ---------- -----------  ------------ ---------------

221      Full    9.33M      DISK        00:00:02     27-JUN-13

         BP Key: 243   Status:  AVAILABLE  Compressed: NO  Tag: TAG20130627T121956

        Piece Name:  /u01/app/oracle/backup/controlfileback/cntrl_4_1_4

   Control File Included: Ckp SCN: 3123051      Ckp time: 27-JUN-1

 

node222 RMAN 備份數據複製至 node173 然後做全庫恢複

按照默認位置,把文件存放 /u01/app/oracle/backup/dbback 對應目錄下

logback/arc_819202760_3               (archive log backup)

controlfileback/cntrl_4_1_4             (control file backup)

dbback/TBDB_NODE222_20130627_01od82ft_1_1  (datafile backup)

dbback/TBDB_NODE222_20130627_02od82hv_1_1  (datafile backup)

 

執行 node173 恢複(下麵所有操作在 node173 執行)

恢複控製文件,必須以 nomount 啟動

shutdown immediate;

startup nomount;

: node222, node173當前 db_name,sid, 數據存放位置一致,否則需要重寫 pfile()

 

恢複控製文件過程

rman target /

 

RMAN> restore controlfile from  '/u01/app/oracle/backup/controlfileback/cntrl_4_1_4';

 

恢複過程

channel ORA_DISK_1: restoring control  file

channel ORA_DISK_1: restore complete,  elapsed time: 00:00:01

output file  name=/u01/app/oracle/oradata/node222/control01.ctl

output file  name=/u01/app/oracle/flash_recovery_area/node222/control02.ctl

Finished restore at 28-JUN-13

 

恢複數據,切換數據庫至 mount 狀態

SQL> alter database mount;

 

直接恢複數據庫則可

RMAN> restore database;

 

恢複過程

Starting restore at 28-JUN-13

Starting implicit crosscheck backup at  28-JUN-13

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=63 device  type=DISK

Crosschecked 3 objects

Finished implicit crosscheck backup at  28-JUN-13

 

Starting implicit crosscheck copy at  28-JUN-13

using channel ORA_DISK_1

Finished implicit crosscheck copy at  28-JUN-13

 

searching for all files in the recovery  area

cataloging files...

no files cataloged

 

using channel ORA_DISK_1

 

channel ORA_DISK_1: starting datafile  backup set restore

channel ORA_DISK_1: specifying  datafile(s) to restore from backup set

channel ORA_DISK_1: restoring datafile  00001 to /u01/app/oracle/oradata/node222/system01.dbf

channel ORA_DISK_1: restoring datafile  00002 to /u01/app/oracle/oradata/node222/sysaux01.dbf

channel ORA_DISK_1: restoring datafile  00003 to /u01/app/oracle/oradata/node222/undotbs01.dbf

channel ORA_DISK_1: restoring datafile  00004 to /u01/app/oracle/oradata/node222/users01.dbf

channel ORA_DISK_1: restoring datafile  00005 to /u01/app/oracle/oradata/node222/example01.dbf

channel ORA_DISK_1: restoring datafile  00006 to /u01/app/oracle/oradata/node222/recharge.dbf

channel ORA_DISK_1: restoring datafile  00007 to /u01/app/oracle/oradata/node222/rman.dbf

channel ORA_DISK_1: reading from backup  piece /u01/app/oracle/backup/dbback/TBDB_NODE222_20130627_01od82ft_1_1

channel ORA_DISK_1: piece  handle=/u01/app/oracle/backup/dbback/TBDB_NODE222_20130627_01od82ft_1_1  tag=TAG20130627T121557

channel ORA_DISK_1: restored backup piece  1

channel ORA_DISK_1: restore complete,  elapsed time: 00:00:55

Finished restore at 28-JUN-13

 

修複數據庫 (主要利用 archive log 進行修複)

RMAN> restore database;

 

修複過程

Starting restore at 28-JUN-13

using channel ORA_DISK_1

 

skipping datafile 1; already restored to file  /u01/app/oracle/oradata/node222/system01.dbf

skipping datafile 2; already restored to file  /u01/app/oracle/oradata/node222/sysaux01.dbf

skipping datafile 3; already restored to file  /u01/app/oracle/oradata/node222/undotbs01.dbf

skipping datafile 4; already restored to file  /u01/app/oracle/oradata/node222/users01.dbf

skipping datafile 5; already restored to file  /u01/app/oracle/oradata/node222/example01.dbf

skipping datafile 6; already restored to file /u01/app/oracle/oradata/node222/recharge.dbf

skipping datafile 7; already restored to file  /u01/app/oracle/oradata/node222/rman.dbf

restore not done; all files read only, offline, or already  restored

Finished restore at 28-JUN-13

修複完成後啟動數據庫

SQL> alter database open resetlogs;

 

ERROR at line 1:

ORA-01152: file 1 was not restored from a  sufficiently old backup

ORA-01110: data file 1:  '/u01/app/oracle/oradata/node222/system01.dbf'

 

檢測係統 SCN

SQL> select checkpoint_change# from  v$database;

 

CHECKPOINT_CHANGE#

------------------

            3122322

 

檢測數據文件 SCN

SQL> select checkpoint_change# from  v$datafile;

 

CHECKPOINT_CHANGE#

------------------

            3122357

            3122357

            3122357

            3122357

            3122357

            3122357

            3122357

 

7 rows selected.

 

SQL> select checkpoint_change# from  v$datafile_header;

 

CHECKPOINT_CHANGE#

------------------

            3122357

            3122357

            3122357

            3122357

            3122357

            3122357

            3122357

 

7 rows selected.

 

結論: 係統 SCN < 數據文件 SCN 導致報錯

解決方法, 重新恢複一下控製文件

SQL> recover database using backup  controlfile until cancel;

ORA-00279: change 3122357 generated at  06/27/2013 12:15:57 needed for thread 1

ORA-00289: suggestion :

/u01/app/oracle/flash_recovery_area/NODE173/archivelog/2013_06_28/o1_mf_1_104_%u

_.arc

ORA-00280: change 3122357 for thread 1 is  in sequence #104

 

Specify log: {<RET>=suggested |  filename | AUTO | CANCEL}

cancel

Media recovery cancelled.

 

重新啟動數據庫

SQL> alter database open resetlogs;

 

Database altered.

 

檢測 node173, node222 數據,同步成功, 建議對服務器進行全備.

最後更新:2017-04-03 16:59:46

  上一篇:go eclipse package,source folder,folder區別及相互轉換
  下一篇:go iOS訪問通訊錄開發-讀取聯係人信息