單例項環境利用備份恢復RAC資料庫(四)
在另外一臺伺服器上利用備份恢復RAC資料庫的過程。
這一篇描述資料庫恢復過程中碰到的錯誤。
單例項環境利用備份恢復RAC資料庫(一):http://yangtingkun.itpub.net/post/468/496756
單例項環境利用備份恢復RAC資料庫(二):http://yangtingkun.itpub.net/post/468/496775
單例項環境利用備份恢復RAC資料庫(三):http://yangtingkun.itpub.net/post/468/496780
前面描述了整個恢復過程,在恢復過程中難免會碰到一些錯誤。有些錯誤很簡單,而有些錯誤的解決相對比較複雜。這裡簡單描述一下恢復過程中碰到的錯誤,以及這些錯誤對應的解決方法。
碰到的第一個錯誤是在使用sqlplus嘗試開啟資料庫時碰到的:
SQL> startup mount pfile=/export/home/oracle/inittradedb1.ora
ORA-00439: feature not enabled: Real Application Clusters
ORA-01078: 處理系統引數失敗
當時對應的初始化引數資訊為:
*.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='+DATA/tradedb/control01.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=+DATA/tradedb/'
tradedb2.log_archive_dest_1='LOCATION=/data/oradata/tradedb/archivelog2'
tradedb2.log_archive_dest_2='SERVICE=tradedb1'
*.log_archive_format='%t_%s_%r.dbf'
*.log_archive_local_first=FALSE
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=5000
*.pga_aggregate_target=1098907648
*.processes=300
*.remote_listener='LISTENERS_TRADEDB'
*.remote_login_passwordfile='EXCLUSIVE'
*.session_max_open_files=20
*.sessions=335
*.sga_target=4395630592
*.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'
由於當前是一個單例項環境,而初始化引數中設定了CLUSTER_DATABASE為TRUE,導致了上面的錯誤,只要將這個引數修改為FALSE,即可避免上面的錯誤。不過對於單例項環境而言,例項2對應的引數沒有意義,因此應該將所有例項2上對應的引數去掉。
下面這個錯誤仍然是啟動是碰到的:
SQL> startup mount pfile=/export/home/oracle/inittradedb1.ora
ORA-00119: invalid specification for system parameter REMOTE_LISTENER
ORA-00132: syntax error or unresolved network name 'LISTENERS_TRADEDB'
ORA-01078: 處理系統引數失敗
錯誤對應的初始化引數為:
*.audit_file_dest='/data/oracle/admin/tradedb/adump'
*.background_dump_dest='/data/oracle/admin/tradedb/bdump'
*.cluster_database=false
*.cluster_database_instances=1
*.compatible='10.2.0.1.0'
*.control_files='+DATA/tradedb/control01.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
*.job_queue_processes=50
*.log_archive_dest_1='LOCATION=+DATA/tradedb/'
*.log_archive_format='%t_%s_%r.dbf'
*.log_archive_local_first=FALSE
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=5000
*.pga_aggregate_target=1098907648
*.processes=300
*.remote_listener='LISTENERS_TRADEDB'
*.remote_login_passwordfile='EXCLUSIVE'
*.session_max_open_files=20
*.sessions=335
*.sga_target=4395630592
*.streams_pool_size=50331648
*.undo_management='AUTO'
*.undo_retention=10800
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/data/oracle/admin/tradedb/udump'
這個錯誤是引數REMOTE_LISTENER導致的,由於沒有在tnsnames.ora中配置LISTENERS_TRADEDB資訊,導致啟動報錯。由於顯然不是RAC環境,完全沒有必要設定這個引數,直接將其從初始化引數檔案中去掉即可。
下面這個錯誤是在恢復時碰到的:
RMAN> restore database;
啟動 restore 於 07-8月 -09
使用目標資料庫控制檔案替代恢復目錄
MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: restore 命令 (在 08/07/2009 10:24:20 上) 失敗
RMAN-12001: 無法開啟通道 ORA_DISK_1
RMAN-10008: 無法建立通道上下文
RMAN-10003: 無法連線到目標資料庫
ORA-12154: TNS: 無法解析指定的連線識別符號
這時對應的RMAN配置資訊為:
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/dbs/snapcf_tradedb1.f'; # default
由於控制檔案中保留了源資料庫環境的配置,導致恢復報錯。
解決方法很簡單,利用CONFIGURE命令清除掉控制檔案中的配置即可。當然也可以透過run的方式手工分配CHANNEL來執行恢復。
下面這個錯誤資訊最簡單:
SQL> recover database until cancel;
ORA-00283: 恢復會話因錯誤而取消
ORA-01610: 使用 BACKUP CONTROLFILE 選項的恢復必須已完成
在恢復資料庫的時候需要指定USING BACKUP CONTROLFILE語句,例如:
SQL> recover database until cancel using backup controlfile;
ORA-00279: 更改 1112442604608 (在 08/02/2009 00:18:15 生成) 對於執行緒 2 是必需的
ORA-00289: 建議: +DATA/tradedb/2_1466_620234770.dbf
ORA-00280: 更改 1112442604608 (用於執行緒 2) 在序列 #1466 中
指定日誌: {
cancel
最後一個錯誤發生在資料庫的開啟過程中:
SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出現錯誤:
ORA-00344: 無法重新建立聯機日誌 '/dev/vx/rdsk/datadg/tradedb_redo1_1_1_1g'
ORA-27040: 檔案建立錯誤, 無法建立檔案
SVR4 Error: 2: No such file or directory
由於當前是ASM磁碟組作為儲存介質,所以必須更改控制檔案中REDO日誌檔案的路徑和名稱。
利用型別下面的語句修改所有的redo檔案的路徑,就可以解決這個錯誤:
SQL> alter database rename file '/dev/vx/rdsk/datadg/tradedb_redo1_1_1_1g'
2 to '+DATA/tradedb/tradedb_redo1_1_1_1g';
資料庫已更改。
SQL> alter database rename file '/dev/vx/rdsk/datadg/tradedb_redo1_1_2_1g'
2 to '+DATA/tradedb/tradedb_redo1_1_2_1g';
資料庫已更改。
SQL> alter database rename file '/dev/vx/rdsk/datadg/tradedb_redo1_2_1_1g'
2 to '+DATA/tradedb/tradedb_redo1_2_1_1g';
資料庫已更改。
SQL> alter database rename file '/dev/vx/rdsk/datadg/tradedb_redo1_2_2_1g'
2 to '+DATA/tradedb/tradedb_redo1_2_2_1g';
資料庫已更改。
SQL> alter database rename file '/dev/vx/rdsk/datadg/tradedb_redo1_3_1_1g'
2 to '+DATA/tradedb/tradedb_redo1_3_1_1g';
資料庫已更改。
SQL> alter database rename file '/dev/vx/rdsk/datadg/tradedb_redo1_3_2_1g'
2 to '+DATA/tradedb/tradedb_redo1_3_2_1g';
資料庫已更改。
SQL> alter database rename file '/dev/vx/rdsk/datadg/tradedb_redo1_4_1_1g'
2 to '+DATA/tradedb/tradedb_redo1_4_1_1g';
資料庫已更改。
SQL> alter database rename file '/dev/vx/rdsk/datadg/tradedb_redo1_4_2_1g'
2 to '+DATA/tradedb/tradedb_redo1_4_2_1g';
資料庫已更改。
SQL> alter database rename file '/dev/vx/rdsk/datadg/tradedb_redo2_1_1_1g'
2 to '+DATA/tradedb/tradedb_redo2_1_1_1g';
資料庫已更改。
SQL> alter database rename file '/dev/vx/rdsk/datadg/tradedb_redo2_1_2_1g'
2 to '+DATA/tradedb/tradedb_redo2_1_2_1g';
資料庫已更改。
SQL> alter database rename file '/dev/vx/rdsk/datadg/tradedb_redo2_2_1_1g'
2 to '+DATA/tradedb/tradedb_redo2_2_1_1g';
資料庫已更改。
SQL> alter database rename file '/dev/vx/rdsk/datadg/tradedb_redo2_2_2_1g'
2 to '+DATA/tradedb/tradedb_redo2_2_2_1g';
資料庫已更改。
SQL> alter database rename file '/dev/vx/rdsk/datadg/tradedb_redo2_3_1_1g'
2 to '+DATA/tradedb/tradedb_redo2_3_1_1g';
資料庫已更改。
SQL> alter database rename file '/dev/vx/rdsk/datadg/tradedb_redo2_3_2_1g'
2 to '+DATA/tradedb/tradedb_redo2_3_2_1g';
資料庫已更改。
SQL> alter database rename file '/dev/vx/rdsk/datadg/tradedb_redo2_4_1_1g'
2 to '+DATA/tradedb/tradedb_redo2_4_1_1g';
資料庫已更改。
SQL> alter database rename file '/dev/vx/rdsk/datadg/tradedb_redo2_4_2_1g'
2 to '+DATA/tradedb/tradedb_redo2_4_2_1g';
資料庫已更改。
SQL> alter database open resetlogs;
資料庫已更改。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-627259/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 將RAC備份集恢復為單例項資料庫單例資料庫
- 從nub備份恢復(同平臺)恢復RAC至單例項單例
- rac恢復到單例項單例
- 資料庫備份恢復資料庫
- 備份與恢復:polardb資料庫備份與恢復資料庫
- RAC備份恢復之Voting備份與恢復
- oracle資料庫跨平臺(AIX)從RAC恢復至(linux)下的單例項Oracle資料庫AILinux單例
- 利用innobackupex備份集恢復指定庫
- Mysql資料庫備份及恢復MySql資料庫
- 達夢資料庫備份恢復資料庫
- postgresql備份與恢復資料庫SQL資料庫
- ClickHouse資料庫單機安裝及備份恢復資料庫
- pg_dump 備份,恢復資料庫資料庫
- Mongo 資料庫備份和恢復命令Go資料庫
- 資料庫備份與恢復技術資料庫
- PostgreSql資料庫的備份和恢復SQL資料庫
- SqlServer資料庫恢復備份資料的方法SQLServer資料庫
- DM7 RAC資料庫恢復成單機資料庫資料庫
- 利用docker-compose恢復gitlab備份的資料DockerGitlab
- 【資料庫資料恢復】ASM例項不能掛載的Oracle資料庫資料恢復案例資料庫資料恢復ASMOracle
- mongodb資料庫備份與恢復(資料庫資料遷移)MongoDB資料庫
- PG-pg_dump備份/恢復資料庫資料庫
- MySQL-19.資料庫備份與恢復MySql資料庫
- vivo 資料庫備份恢復系統演化資料庫
- 使用Mysqldump備份和恢復MySQL資料庫MySql資料庫
- 備份與恢復:Polardb資料庫資料基於時間點恢復資料庫
- 【資料庫資料恢復】LINUX環境下ORACLE資料庫誤刪除的資料恢復資料庫資料恢復LinuxOracle
- 資料庫資料恢復—無備份,binlog未開啟的Mysql資料庫資料恢復案例資料庫資料恢復MySql
- 【資料庫資料恢復】Oracle ASM例項無法掛載的資料恢復案例資料庫資料恢復OracleASM
- NoSQL 資料庫案例實戰 -- MongoDB資料備份、恢復SQL資料庫MongoDB
- RMAN備份恢復典型案例——資料庫卡頓資料庫
- Linux下MySQL資料庫的備份與恢復LinuxMySql資料庫
- Mysql資料備份與恢復MySql
- Dedecms資料庫恢復與備份的兩種方法資料庫
- 時序資料庫 InfluxDB 之備份和恢復策略資料庫UX
- 淺談達夢資料庫的備份與恢復資料庫
- 時序資料庫InfluxDB之備份和恢復策略資料庫UX
- gitlab的資料備份和恢復Gitlab
- RabbitMQ如何備份與恢復資料MQ