RAC環境利用備份恢復RAC資料庫(一)

yangtingkun發表於2010-04-09

在另外的RAC環境中利用備份恢復RAC資料庫的過程。

這一篇描述恢復前的準備工作。

 

 

前面介紹了在非RAC環境中,在一臺伺服器上透過單例項恢復RAC資料庫。

這篇描述在已經建好的RAC環境中,恢復一個RAC資料庫的過程。

首先需要在兩個伺服器上建立好同版本的CLUSTERDATABASE軟體。由於當前的RAC環境使用ASM作為共享儲存機制,因此應該提前將ASM例項也建立好。

利用ftp將資料庫的備份檔案複製到本地磁碟組的相同位置上。

下面是恢復前的準備工作,首先設定當前的ORACLE_SID,然後從備份集中恢復初始化引數檔案:

bash-3.00$ export ORACLE_SID=tradedb1
bash-3.00$ rman target /

恢復管理器: Release 10.2.0.3.0 - Production on 星期五 8 14 16:33:46 2009

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

已連線到目標資料庫 (未啟動)

RMAN> startup nomount

啟動失敗: ORA-01078: failure in processing system parameters
LRM-00109: ???????????????? '/data/oracle/product/10.2/database/dbs/inittradedb1.ora'

在沒有引數檔案的情況下啟動 Oracle 例項以檢索 spfile
Oracle
例項已啟動

系統全域性區域總計     159383552 位元組

Fixed Size                     2126864 位元組
Variable Size                 81628144
位元組
Database Buffers              71303168
位元組
Redo Buffers                   4325376
位元組

RMAN> restore spfile to '/export/home/oracle/spfiletradedb.ora' from '/data/backup/tradedb/a6kmlkel_1_1';

啟動 restore 14-8 -09
使用通道 ORA_DISK_1

通道 ORA_DISK_1: 已找到的自動備份: /data/backup/tradedb/a6kmlkel_1_1
MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: restore
命令 ( 08/14/2009 16:35:49 ) 失敗
ORA-19687:
在備份集內找不到 SPFILE

RMAN> restore spfile to '/export/home/oracle/spfiletradedb.ora' from '/data/backup/tradedb/a7kmlkem_1_1';

啟動 restore 14-8 -09
使用通道 ORA_DISK_1

通道 ORA_DISK_1: 已找到的自動備份: /data/backup/tradedb/a7kmlkem_1_1
通道 ORA_DISK_1: 從自動備份復原 SPFILE 已完成
完成 restore 14-8 -09

在恢復控制檔案前,先在節點2上利用ASMCMD工具來建立資料庫所需的目錄:

bash-3.00$ export ORACLE_SID=+ASM2
bash-3.00$ asmcmd
ASMCMD> cd member
ASMCMD> mkdir TRADEDB
ASMCMD> cd tradedb
ASMCMD> mkdir ARCHIVELOG
ASMCMD> exit
bash-3.00$

下面恢復控制檔案:

RMAN> restore controlfile to '+MEMBER/tradedb/control01.ctl' from '/data/backup/tradedb/a7kmlkem_1_1';

啟動 restore 14-8 -09
使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在復原控制檔案
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:04
完成 restore 14-8 -09

RMAN> restore controlfile to '+MEMBER/tradedb/control02.ctl' from '/data/backup/tradedb/a7kmlkem_1_1';

啟動 restore 14-8 -09
使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在復原控制檔案
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:02
完成 restore 14-8 -09

RMAN> restore controlfile to '+MEMBER/tradedb/control03.ctl' from '/data/backup/tradedb/a7kmlkem_1_1';

啟動 restore 14-8 -09
使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在復原控制檔案
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:02
完成 restore 14-8 -09

RMAN> shutdown immediate

Oracle 例項已關閉

RMAN> exit


恢復管理器完成。

下面利用sqlplus來建立pfile檔案:

bash-3.00$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.3.0 - Production on 星期五 8 14 16:42:49 2009

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

已連線到空閒例程。

SQL> create pfile='/export/home/oracle/inittradedb1.ora' from spfile='/export/home/oracle/spfiletradedb.ora';

檔案已建立。

編輯inittradedb1.ora初始化引數檔案如下:

tradedb1.__db_cache_size=14378074112
tradedb2.__db_cache_size=16441671680
tradedb1.__java_pool_size=16777216
tradedb2.__java_pool_size=16777216
tradedb1.__large_pool_size=16777216
tradedb2.__large_pool_size=16777216
tradedb1.__shared_pool_size=6996099072
tradedb2.__shared_pool_size=4932501504
tradedb1.__streams_pool_size=50331648
tradedb2.__streams_pool_size=50331648
*.audit_file_dest='/data/oracle/admin/tradedb/adump'
*.background_dump_dest='/data/oracle/admin/tradedb/bdump'
*.cluster_database=true
*.cluster_database_instances=2
*.compatible='10.2.0.1.0'
*.control_files='+MEMBER/TRADEDB/control01.ctl', '+MEMBER/TRADEDB/control02.ctl', '+MEMBER/TRADEDB/control03.ctl'
*.core_dump_dest='/data/oracle/admin/tradedb/cdump'
*.db_block_size=16384
*.db_domain='us.oracle.com'
*.db_file_multiblock_read_count=16
*.db_name='tradedb'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=tradedbXDB)'
*.global_names=TRUE
tradedb1.instance_number=1
tradedb2.instance_number=2
*.job_queue_processes=50
tradedb1.local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = 172.0.2.62)(PORT = 1521))'
tradedb2.local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = 172.0.2.63)(PORT = 1521))'
*.log_archive_dest_1='LOCATION=+MEMBER/tradedb/archivelog'
*.log_archive_format='%t_%s_%r.dbf'
*.log_archive_local_first=FALSE
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=5000
*.pga_aggregate_target=4395630592
*.processes=300
*.remote_listener='LISTENERS_TRADEDB'
*.remote_login_passwordfile='EXCLUSIVE'
*.session_max_open_files=20
*.sessions=335
*.sga_target=21474836480
*.streams_pool_size=50331648
tradedb1.thread=1
tradedb2.thread=2
*.undo_management='AUTO'
*.undo_retention=10800
tradedb1.undo_tablespace='UNDOTBS1'
tradedb2.undo_tablespace='UNDOTBS2'
*.user_dump_dest='/data/oracle/admin/tradedb/udump'

主要修改了LOCAL_LISTENER初始化引數中的IP相關的引數資訊,並重新設定了相關的dest目錄資訊。此外,將控制檔案的路徑和歸檔路徑設定為ASM磁碟組。

下面建立DEST相關的路徑:

bash-3.00$ mkdir -p /data/oracle/admin/tradedb
bash-3.00$ cd /data/oracle/admin/tradedb/
bash-3.00$ mkdir bdump adump cdump udump

在兩個節點的tnsnames.ora中,新增LISTENERS_TRADEDB資訊:

vi /data/oracle/product/10.2/database/network/admin/tnsnames.ora

LISTENERS_TRADEDB =
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ser1-vip)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = ser2-vip)(PORT = 1521))
  )

下面可以啟動資料庫例項了:

SQL> startup mount pfile=/export/home/oracle/inittradedb1.ora
ORACLE
例程已經啟動。

Total System Global Area 2.1475E+10 bytes
Fixed Size                  2166792 bytes
Variable Size            7090270200 bytes
Database Buffers         1.4378E+10 bytes
Redo Buffers                4325376 bytes
資料庫裝載完畢。
SQL> exit
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
斷開

隨後退出sqlplus,利用RMAN準備進行恢復。

在執行RESTORE命令之前,還需要進行一些額外的設定:

bash-3.00$ rman target /

恢復管理器: Release 10.2.0.3.0 - Production on 星期五 8 14 17:07:18 2009

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

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

RMAN> show all;

使用目標資料庫控制檔案替代恢復目錄
RMAN
配置引數為:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE SBT_TAPE TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET;
CONFIGURE DEVICE TYPE 'SBT_TAPE' PARALLELISM 2 BACKUP TYPE TO BACKUPSET;
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE SBT_TAPE TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE SBT_TAPE TO 1; # default
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT   '/data/backup/tradedb/%U';
CONFIGURE CHANNEL 1 DEVICE TYPE DISK CONNECT '*' FORMAT   '/data/backup/tradedb/%U';
CONFIGURE CHANNEL 2 DEVICE TYPE DISK CONNECT '*' FORMAT   '/data/backup/tradedb/%U';
CONFIGURE CHANNEL 1 DEVICE TYPE 'SBT_TAPE' CONNECT '*';
CONFIGURE CHANNEL 2 DEVICE TYPE 'SBT_TAPE' CONNECT '*';
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/data/oracle/product/10.2/database/dbs/snapcf_tradedb1.f'; # default

RMAN> configure channel device type disk clear;

舊的 RMAN 配置引數:
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT   '/data/backup/tradedb/%U';
已成功刪除舊的 RMAN 配置引數

RMAN> configure channel 1 device type sbt clear;

舊的 RMAN 配置引數:
CONFIGURE CHANNEL 1 DEVICE TYPE 'SBT_TAPE' CONNECT '*';
已成功刪除舊的 RMAN 配置引數

RMAN> configure channel 2 device type sbt clear;

舊的 RMAN 配置引數:
CONFIGURE CHANNEL 2 DEVICE TYPE 'SBT_TAPE' CONNECT '*';
已成功刪除舊的 RMAN 配置引數

RMAN> configure channel 1 device type disk clear;

舊的 RMAN 配置引數:
CONFIGURE CHANNEL 1 DEVICE TYPE DISK CONNECT '*' FORMAT   '/data/backup/tradedb/%U';
已成功刪除舊的 RMAN 配置引數

RMAN> configure channel 2 device type disk clear;

舊的 RMAN 配置引數:
CONFIGURE CHANNEL 2 DEVICE TYPE DISK CONNECT '*' FORMAT   '/data/backup/tradedb/%U';
已成功刪除舊的 RMAN 配置引數

RMAN> configure device type disk clear;

舊的 RMAN 配置引數:
CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET;
RMAN
配置引數已成功重置為預設值

RMAN> configure device type sbt clear;

舊的 RMAN 配置引數:
CONFIGURE DEVICE TYPE 'SBT_TAPE' PARALLELISM 2 BACKUP TYPE TO BACKUPSET;
RMAN
配置引數已成功重置為預設值

RMAN> catalog backuppiece '/data/backup/tradedb/a6kmlkel_1_1';

已列入目錄的備份段
備份段 handle=/data/backup/tradedb/a6kmlkel_1_1 recid=2371 stamp=694890555

RMAN> catalog backuppiece '/data/backup/tradedb/a7kmlkem_1_1';

已列入目錄的備份段
備份段 handle=/data/backup/tradedb/a7kmlkem_1_1 recid=2372 stamp=694890570

RMAN> catalog backuppiece '/data/backup/tradedb/a8kmlmrl_1_1';

已列入目錄的備份段
備份段 handle=/data/backup/tradedb/a8kmlmrl_1_1 recid=2373 stamp=694890592

RMAN> catalog backuppiece '/data/backup/tradedb/a9kmlmrl_1_1';

已列入目錄的備份段
備份段 handle=/data/backup/tradedb/a9kmlmrl_1_1 recid=2374 stamp=694890624

RMAN> catalog backuppiece '/data/backup/tradedb/aakmlmru_1_1';

已列入目錄的備份段
備份段 handle=/data/backup/tradedb/aakmlmru_1_1 recid=2375 stamp=694890639

RMAN> catalog backuppiece '/data/backup/tradedb/abkmlmru_1_1';

已列入目錄的備份段
備份段 handle=/data/backup/tradedb/abkmlmru_1_1 recid=2376 stamp=694890654

RMAN> catalog backuppiece '/data/backup/tradedb/ackmlndl_1_1';

已列入目錄的備份段
備份段 handle=/data/backup/tradedb/ackmlndl_1_1 recid=2377 stamp=694890671

由於備份檔案的儲存位置和源資料庫中保持一致,不再需要使用CATALOG命令將備份檔案新增到控制檔案中,至此恢復的準備工作完成,下面準備資料庫的RESTORE工作。

 

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

相關文章