使用RMAN遷移單庫到RAC
一、源庫
create pfile='/home/oracle/rman_bk/pfile.ora' from spfile;
backup incremental level 0 format '/home/oracle/rman_bk/orcl_%U' database plus archivelog delete all input;
backup current controlfile format '/home/oracle/rman_bk/control_%U';
將/home/oracle/rman_bk目錄下檔案複製到目標庫相應目錄下
二、目標庫(其中一個節點上操作)
1、根據源庫生成的pfile建立rac的spfile
(1)修改引數檔案
[oracle@centosnode1 rman]$ vim pfile.ora
*.__db_cache_size=104857600
*.__java_pool_size=4194304
*.__large_pool_size=4194304
*.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
*.__pga_aggregate_target=192937984
*.__sga_target=343932928
*.__shared_io_pool_size=0
*.__shared_pool_size=213909504
*.__streams_pool_size=8388608
db021.instance_name='db021'
db022.instance_name='db022'
db021.instance_number=1
db022.instance_number=2
*.audit_file_dest='/u01/app/oracle/admin/db02/adump'
*.audit_trail='db'
*.cluster_database=true
*.cluster_database_instances=2
db021.thread=1
*.compatible='11.2.0.1.0'
*.control_files='+DATA/db02/controlfile/current.1214.911838439'#Restore Controlfile
*.db_block_size=8192
*.db_create_file_dest='+DATA'
*.db_domain=''
*.db_name='db02'
*.db_recovery_file_dest=''
*.log_archive_dest_1='location=+DATA/db02/arch'
*.log_archive_format='%t_%s_%r.dbf'
*.job_queue_processes=10
*.remote_login_passwordfile='EXCLUSIVE'
*.memory_target=1606418432
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='exclusive'
db022.undo_tablespace='UNDOTBS2'
db021.undo_tablespace='UNDOTBS1'
注意:1、這個時候不能加orcl2.thread=2引數,否則後面無法將資料庫啟動到mount狀態
2、*.compatible='11.2.0.1.0'指定的版本號一定要和源庫的版本號一致,否則後面恢復控制檔案後,啟動例項到mount狀態是報錯:
ORA-00201: control file version 11.2.0.1.0 incompatible with ORACLE version11.2.0.0.0
(2)建立共享引數檔案spfile
SQL> create spfile='+DATA/db02/parameterfile/spfiledb02.ora' from pfile='/home/oracle/rman/pfile.ora';
(3)在兩個節點上分別建立審計目錄、pfile以及密碼檔案
[oracle@centosnode1 rman]$ mkdir -p /u01/app/oracle/admin/db02/adump
[oracle@centosnode1 rman]$ cd $ORACLE_HOME/dbs
[oracle@centosnode1 dbs]$ echo 'spfile=+DATA/db02/parameterfile/spfiledb02.ora' > initdb021.ora
[oracle@centosnode1 dbs]$ orapwd file=orapwdb021 password=oracle
2、將節點例項啟動到nomount狀態,然後從備份中恢復控制檔案
RMAN> restore controlfile from '/home/oracle/rman/control_0sr5lmfp_1_1';
3、恢復控制檔案後重新啟動例項到mount狀態,恢復資料檔案
run{
set newname for datafile 1 to '+DATA/db02/datafile/system01.dbf';
set newname for datafile 2 to '+DATA/db02/datafile/sysaux01.dbf';
set newname for datafile 3 to '+DATA/db02/datafile/undotbs01.dbf';
set newname for datafile 4 to '+DATA/db02/datafile/users01.dbf';
set newname for datafile 5 to '+DATA/db02/datafile/tbs01.dbf';
set newname for datafile 6 to '+DATA/db02/datafile/citibank.dbf';
set newname for tempfile 1 to '+DATA/db02/tempfile/temp01.dbf';
restore database;
switch datafile all;
switch tempfile all;
}
recover database;
4、對線上重做日誌檔案進行更名,新增thread 2日誌組
SQL> alter database rename file '/u01/app/oracle/oradata/db02/redo01.log' to '+DATA/db02/onlinelog/redo01.log';
SQL> alter database rename file '/u01/app/oracle/oradata/db02/redo02.log' to '+DATA/db02/onlinelog/redo02.log';
SQL> alter database rename file '/u01/app/oracle/oradata/db02/redo03.log' to '+DATA/db02/onlinelog/redo03.log';
SQL> alter database add logfile thread 2 group 4 '+DATA' size 50M;
SQL> alter database add logfile thread 2 group 5 '+DATA' size 50M;
SQL> alter database add logfile thread 2 group 6 '+DATA' size 50M;
SQL> select thread#,bytes/(1024*1024),status from v$log;
THREAD# BYTES/(1024*1024) STATUS
---------- ----------------- ----------------
1 50 CURRENT
1 50 INACTIVE
1 50 INACTIVE
2 50 UNUSED
2 50 UNUSED
2 50 UNUSED
5、使用open resetlogs方式開啟資料庫
SQL> recover database using backup controlfile until cancel;
ORA-00279: change 2609022 generated at 05/15/2016 16:05:49 needed for thread 1
ORA-00289: suggestion : +DATA/db02/arch/1_60_908532301.dbf
ORA-00280: change 2609022 for thread 1 is in sequence #60
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
Media recovery cancelled.
SQL> alter database open resetlogs;
Database altered.
SQL> select open_mode,name from gv$database;
OPEN_MODE NAME
-------------------- ---------
READ WRITE DB02
6、修改相關的初始化引數,建立undotbs2表空間,啟用thread 2日誌組
SQL> alter system set thread=1 scope=spfile sid='db021';
SQL> alter system set thread=2 scope=spfile sid='db022';
SQL> select bytes/(1024*1024) MB from dba_data_files where tablespace_name='UNDOTBS1';
MB
----------
75
SQL> create undo tablespace undotbs2 datafile '+DATA/db02/datafile/undotbs02.dbf' size 75M;
SQL> alter system set undo_tablespace=undotbs2 sid='db022';
SQL> alter database enable thread 2;
alter database enable thread 2
*
ERROR at line 1:
ORA-01612: instance UNNAMED_INSTANCE_2 (thread 2) is already enabled
注:此處已經啟動,如果沒有啟動需要手動啟動日誌程式thread 2
7、重新啟動節點1例項,再啟動節點2例項
三、新增db02庫到srvctl管理
[oracle@centosnode1 ~]$ srvctl add database -d db02 -o /u01/app/oracle/product/11.2.0/db_1 -p +DATA/orcl/spfileorcl.ora
[oracle@centosnode1 ~]$ srvctl add instance -d db02 -i db021 -n centosnode1
[oracle@centosnode1 ~]$ srvctl add instance -d db02 -i db022 -n centosnode2
[oracle@centosnode1 ~]$ srvctl start database -d db02
[oracle@centosnode1 ~]$ srvctl status database -d db02
Instance db021 is running on node centosnode1
Instance db022 is running on node centosnode2
注意:要使用oracle使用者新增
備註:srvctl刪除資料庫資訊命令:
[oracle@rac1 ~]$ srvctl stop database -d db02
[oracle@rac1 ~]$ srvctl remove database -d db02
create pfile='/home/oracle/rman_bk/pfile.ora' from spfile;
backup incremental level 0 format '/home/oracle/rman_bk/orcl_%U' database plus archivelog delete all input;
backup current controlfile format '/home/oracle/rman_bk/control_%U';
將/home/oracle/rman_bk目錄下檔案複製到目標庫相應目錄下
二、目標庫(其中一個節點上操作)
1、根據源庫生成的pfile建立rac的spfile
(1)修改引數檔案
[oracle@centosnode1 rman]$ vim pfile.ora
*.__db_cache_size=104857600
*.__java_pool_size=4194304
*.__large_pool_size=4194304
*.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
*.__pga_aggregate_target=192937984
*.__sga_target=343932928
*.__shared_io_pool_size=0
*.__shared_pool_size=213909504
*.__streams_pool_size=8388608
db021.instance_name='db021'
db022.instance_name='db022'
db021.instance_number=1
db022.instance_number=2
*.audit_file_dest='/u01/app/oracle/admin/db02/adump'
*.audit_trail='db'
*.cluster_database=true
*.cluster_database_instances=2
db021.thread=1
*.compatible='11.2.0.1.0'
*.control_files='+DATA/db02/controlfile/current.1214.911838439'#Restore Controlfile
*.db_block_size=8192
*.db_create_file_dest='+DATA'
*.db_domain=''
*.db_name='db02'
*.db_recovery_file_dest=''
*.log_archive_dest_1='location=+DATA/db02/arch'
*.log_archive_format='%t_%s_%r.dbf'
*.job_queue_processes=10
*.remote_login_passwordfile='EXCLUSIVE'
*.memory_target=1606418432
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='exclusive'
db022.undo_tablespace='UNDOTBS2'
db021.undo_tablespace='UNDOTBS1'
注意:1、這個時候不能加orcl2.thread=2引數,否則後面無法將資料庫啟動到mount狀態
2、*.compatible='11.2.0.1.0'指定的版本號一定要和源庫的版本號一致,否則後面恢復控制檔案後,啟動例項到mount狀態是報錯:
ORA-00201: control file version 11.2.0.1.0 incompatible with ORACLE version11.2.0.0.0
(2)建立共享引數檔案spfile
SQL> create spfile='+DATA/db02/parameterfile/spfiledb02.ora' from pfile='/home/oracle/rman/pfile.ora';
(3)在兩個節點上分別建立審計目錄、pfile以及密碼檔案
[oracle@centosnode1 rman]$ mkdir -p /u01/app/oracle/admin/db02/adump
[oracle@centosnode1 rman]$ cd $ORACLE_HOME/dbs
[oracle@centosnode1 dbs]$ echo 'spfile=+DATA/db02/parameterfile/spfiledb02.ora' > initdb021.ora
[oracle@centosnode1 dbs]$ orapwd file=orapwdb021 password=oracle
2、將節點例項啟動到nomount狀態,然後從備份中恢復控制檔案
RMAN> restore controlfile from '/home/oracle/rman/control_0sr5lmfp_1_1';
3、恢復控制檔案後重新啟動例項到mount狀態,恢復資料檔案
run{
set newname for datafile 1 to '+DATA/db02/datafile/system01.dbf';
set newname for datafile 2 to '+DATA/db02/datafile/sysaux01.dbf';
set newname for datafile 3 to '+DATA/db02/datafile/undotbs01.dbf';
set newname for datafile 4 to '+DATA/db02/datafile/users01.dbf';
set newname for datafile 5 to '+DATA/db02/datafile/tbs01.dbf';
set newname for datafile 6 to '+DATA/db02/datafile/citibank.dbf';
set newname for tempfile 1 to '+DATA/db02/tempfile/temp01.dbf';
restore database;
switch datafile all;
switch tempfile all;
}
recover database;
4、對線上重做日誌檔案進行更名,新增thread 2日誌組
SQL> alter database rename file '/u01/app/oracle/oradata/db02/redo01.log' to '+DATA/db02/onlinelog/redo01.log';
SQL> alter database rename file '/u01/app/oracle/oradata/db02/redo02.log' to '+DATA/db02/onlinelog/redo02.log';
SQL> alter database rename file '/u01/app/oracle/oradata/db02/redo03.log' to '+DATA/db02/onlinelog/redo03.log';
SQL> alter database add logfile thread 2 group 4 '+DATA' size 50M;
SQL> alter database add logfile thread 2 group 5 '+DATA' size 50M;
SQL> alter database add logfile thread 2 group 6 '+DATA' size 50M;
SQL> select thread#,bytes/(1024*1024),status from v$log;
THREAD# BYTES/(1024*1024) STATUS
---------- ----------------- ----------------
1 50 CURRENT
1 50 INACTIVE
1 50 INACTIVE
2 50 UNUSED
2 50 UNUSED
2 50 UNUSED
5、使用open resetlogs方式開啟資料庫
SQL> recover database using backup controlfile until cancel;
ORA-00279: change 2609022 generated at 05/15/2016 16:05:49 needed for thread 1
ORA-00289: suggestion : +DATA/db02/arch/1_60_908532301.dbf
ORA-00280: change 2609022 for thread 1 is in sequence #60
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
Media recovery cancelled.
SQL> alter database open resetlogs;
Database altered.
SQL> select open_mode,name from gv$database;
OPEN_MODE NAME
-------------------- ---------
READ WRITE DB02
6、修改相關的初始化引數,建立undotbs2表空間,啟用thread 2日誌組
SQL> alter system set thread=1 scope=spfile sid='db021';
SQL> alter system set thread=2 scope=spfile sid='db022';
SQL> select bytes/(1024*1024) MB from dba_data_files where tablespace_name='UNDOTBS1';
MB
----------
75
SQL> create undo tablespace undotbs2 datafile '+DATA/db02/datafile/undotbs02.dbf' size 75M;
SQL> alter system set undo_tablespace=undotbs2 sid='db022';
SQL> alter database enable thread 2;
alter database enable thread 2
*
ERROR at line 1:
ORA-01612: instance UNNAMED_INSTANCE_2 (thread 2) is already enabled
注:此處已經啟動,如果沒有啟動需要手動啟動日誌程式thread 2
7、重新啟動節點1例項,再啟動節點2例項
三、新增db02庫到srvctl管理
[oracle@centosnode1 ~]$ srvctl add database -d db02 -o /u01/app/oracle/product/11.2.0/db_1 -p +DATA/orcl/spfileorcl.ora
[oracle@centosnode1 ~]$ srvctl add instance -d db02 -i db021 -n centosnode1
[oracle@centosnode1 ~]$ srvctl add instance -d db02 -i db022 -n centosnode2
[oracle@centosnode1 ~]$ srvctl start database -d db02
[oracle@centosnode1 ~]$ srvctl status database -d db02
Instance db021 is running on node centosnode1
Instance db022 is running on node centosnode2
注意:要使用oracle使用者新增
備註:srvctl刪除資料庫資訊命令:
[oracle@rac1 ~]$ srvctl stop database -d db02
[oracle@rac1 ~]$ srvctl remove database -d db02
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29067253/viewspace-2127179/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用RMAN遷移資料庫到異機資料庫
- 【遷移】使用rman遷移資料庫資料庫
- RMAN遷移資料庫(rac or single)資料庫
- 使用RMAN遷移檔案系統資料庫到ASM資料庫ASM
- 使用RMAN簡單遷移表空間
- 【資料遷移】RMAN遷移資料庫到ASM(三)遷移onlinelog等到ASM資料庫ASM
- 【資料遷移】RMAN遷移資料庫到ASM(一)建立ASM磁碟組資料庫ASM
- RAC 例項 遷移到 單例項 -- 使用RMAN Duplicate單例
- 使用RMAN進行Oracle資料庫遷移Oracle資料庫
- 【資料遷移】RMAN遷移資料庫到ASM(二)切換資料檔案到ASM資料庫ASM
- 用rman遷移資料庫資料庫
- Oracle11g使用rman從單例項遷移到racOracle單例
- RMAN之CONVERT整庫遷移
- 用rman從檔案系統遷移資料庫到asm資料庫ASM
- Oracle11g使用rman從rac遷移到racOracle
- 用RMAN遷移檔案到ASM或從ASM遷出ASM
- 四、用rman從檔案系統遷移資料庫到asm資料庫ASM
- 使用RMAN進行資料遷移
- Oracle資料庫遷移之一:RMANOracle資料庫
- 單機遷移資料到RAC完整案例
- 遷移資料庫到ASM資料庫ASM
- rac到單例項的rman恢復單例
- 使用RMAN duplicate 建立standby資料庫(RAC或單機)資料庫
- 三、rman 資料庫遷移--從檔案系統到裸裝置資料庫
- 利用RMAN跨平臺遷移資料庫資料庫
- 【RMAN】Oracle11g使用rman遷移升級資料庫(win_to_linux)Oracle資料庫Linux
- 透過rman全庫備份遷移資料庫資料庫
- 使用SQL Developer 遷移異構資料庫到OracleSQLDeveloper資料庫Oracle
- 使用RMAN將RAC+ASM複製到單例項+ASM上ASM單例
- 遷移資料庫到SQLonLinuxDocker資料庫SQLLinuxDocker
- oracle 遷移資料庫到asmOracle資料庫ASM
- RMAN異機恢復:RAC到單例項單例
- 使用RMAN完成跨平臺資料遷移
- 使用RMAN執行oracle ASM資料遷移OracleASM
- Oracle 11.2.0.4 從單例項,使用RMAN 異機恢復到RACOracle單例
- 用Rman 異機遷移
- RMAN遷移表空間
- 單例項資料庫expdp遷移到RAC庫單例資料庫