RAC迁移到单节点

已有 1051 次阅读2013-1-13 17:59 |个人分类:迁移

RAC迁移到单节点

从RAC迁移到单节点可以用备份导出导入的方法,也可以用RMAN,下面实验下RMAN的做法

实验数据库RAC无闪回区,10.2.0版本,迁移到rac2所在主机的orcl实例

1.备份数据库,备份归档

run{
sql 'alter system archive log current';
backup database format '+backup/full_%T_%s_%p'
include current controlfile;
}

run{
allocate channel t1 type disk  connect 'sys/fishcat@rac1';
allocate channel t2 type disk  connect 'sys/fishcat@rac2';
BACKUP
FORMAT '+backup/arch_%T_%s_%p'
SKIP INACCESSIBLE
ARCHIVELOG ALL DELETE INPUT;
release channel t1;
release channel t2;
}

2.复制dump目录

[oracle@node2 admin]$ cp -r rac orcl

3.修改pfile文件
在源数据库上
SQL> create pfile='/tmp/pfile.ora' from spfile;

File created.

内容如下:
[oracle@node1 tmp]$ cat pfile.ora.bak
rac2.__db_cache_size=83886080
rac1.__db_cache_size=71303168
rac2.__java_pool_size=4194304
rac1.__java_pool_size=4194304
rac2.__large_pool_size=4194304
rac1.__large_pool_size=4194304
rac2.__shared_pool_size=71303168
rac1.__shared_pool_size=83886080
rac2.__streams_pool_size=0
rac1.__streams_pool_size=0
*.audit_file_dest='/home/oracle/admin/rac/adump'
*.background_dump_dest='/home/oracle/admin/rac/bdump'
*.cluster_database_instances=2
*.cluster_database=true
*.compatible='10.2.0.1.0'
*.control_files='+G1/rac/controlfile/current.256.804551605'
*.core_dump_dest='/home/oracle/admin/rac/cdump'
*.db_block_size=8192
*.db_create_file_dest='+G1'
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='rac'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=racXDB)'
rac1.instance_number=1
rac2.instance_number=2
*.job_queue_processes=10
rac2.log_archive_dest_1='location=/archive/rac2'
rac1.log_archive_dest_1='location=/archive/rac1'
*.open_cursors=300
*.pga_aggregate_target=16777216
*.processes=150
*.remote_listener='LISTENERS_RAC'
*.remote_login_passwordfile='exclusive'
*.sga_target=167772160
rac2.thread=2
rac1.thread=1
*.undo_management='AUTO'
rac1.undo_tablespace='UNDOTBS1'
rac2.undo_tablespace='UNDOTBS2'
*.user_dump_dest='/home/oracle/admin/rac/udump'


修改后如下:
*.audit_file_dest='/home/oracle/admin/orcl/adump'
*.background_dump_dest='/home/oracle/admin/orcl/bdump'
*.cluster_database=false
*.compatible='10.2.0.1.0'
*.control_files='/home/oracle/oradata/orcl/control01.ctl',/home/oracle/oradata/orcl/control02.ctl',/home/oracle/oradata/orcl/control03.ctl'
*.core_dump_dest='/home/oracle/admin/orcl/cdump'
*.db_block_size=8192
*.db_create_file_dest='/home/oracle/oradata/orcl'
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='orcl'
*.job_queue_processes=10
*.log_archive_dest_1='location=/archive2'
*.open_cursors=300
*.pga_aggregate_target=16777216
*.processes=150
*.remote_login_passwordfile='exclusive'
*.sga_target=167772160
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/home/oracle/admin/orcl/udump'
*.log_file_name_convert=('+G1/rac/onlinelog','/home/oracle/oradata/orcl')
*.db_file_name_convert=('+G1/rac/datafile','/home/oracle/oradata/orcl')
*.db_file_name_convert=('+G1/rac/tempfile','/home/oracle/oradata/orcl')


------------------------------------------------------------
*.log_file_name_convert=('+G1/rac/onlinelog','/home/oracle/oradata/orcl')
*.db_file_name_convert=('+G1/rac/datafile','/home/oracle/oradata/orcl')
*.db_file_name_convert=('+G1/rac/tempfile','/home/oracle/oradata/orcl')

上面这三行是转换logfile,dbfile,tempfile路径,如果一样则不必修改

4.制作RMAN脚本
根据语句
select 'set newname for datafile '||file_id||' to "/home/oracle/oradata/orcl/'||substr(file_name,18)||'";' from DBA_data_files;
select 'set newname for tempfile '||file_id||' to "/home/oracle/oradata/orcl/'||substr(file_name,18)||'";' from dba_temp_files;
select 'group '||a.group#||' (''/home/oracle/oradata/orcl/'||substr(member,19)||''')size '||bytes||' reuse,'
from v$logfile a,v$log b
where a.GROUP#=b.GROUP#;
可以得出
--------------更改数据文件路径的语句
set newname for datafile 1 to "/home/oracle/oradata/orcl/system.259.804551621";
set newname for datafile 2 to "/home/oracle/oradata/orcl/undotbs1.260.804551649";
set newname for datafile 3 to "/home/oracle/oradata/orcl/sysaux.261.804551661";
set newname for datafile 4 to "/home/oracle/oradata/orcl/undotbs2.263.804551689";
set newname for datafile 5 to "/home/oracle/oradata/orcl/users.264.804551699";

----------------更改临时文件路径的语句
set newname for tempfile 1 to "/home/oracle/oradata/orcl/temp.262.804551671";

----------------更改控制文件的语句

group 1 ('/home/oracle/oradata/orcl/group_1.257.804551611')size 52428800 reuse,
group 2 ('/home/oracle/oradata/orcl/group_2.258.804551615')size 52428800 reuse,
group 3 ('/home/oracle/oradata/orcl/group_3.265.804553343')size 52428800 reuse,
group 4 ('/home/oracle/oradata/orcl/group_4.266.804553347')size 52428800 reuse,


根据以上语句得到如下的Rman脚本

run{
set newname for datafile 1 to "/home/oracle/oradata/orcl/system.259.804551621";
set newname for datafile 2 to "/home/oracle/oradata/orcl/undotbs1.260.804551649";
set newname for datafile 3 to "/home/oracle/oradata/orcl/sysaux.261.804551661";
set newname for datafile 4 to "/home/oracle/oradata/orcl/undotbs2.263.804551689";
set newname for datafile 5 to "/home/oracle/oradata/orcl/users.264.804551699";
set newname for tempfile 1 to "/home/oracle/oradata/orcl/temp.262.804551671";
duplicate target database to orcl nofilenamecheck logfile
group 1 ('/home/oracle/oradata/orcl/group_1.257.804551611')size 52428800 reuse,
group 2 ('/home/oracle/oradata/orcl/group_2.258.804551615')size 52428800 reuse,
group 3 ('/home/oracle/oradata/orcl/group_3.265.804553343')size 52428800 reuse,
group 4 ('/home/oracle/oradata/orcl/group_4.266.804553347')size 52428800 reuse;
}

 

5.切换到orcl环境下export ORACLE_SID=orcl
根据pfile文件启动到nomount状态,然后exit

SQL> startup nomount pfile='$ORACLE_HOME/dbs/pfile.ora'
ORACLE instance started.

Total System Global Area  167772160 bytes
Fixed Size                  1218316 bytes
Variable Size              62916852 bytes
Database Buffers          100663296 bytes
Redo Buffers                2973696 bytes
SQL> exit


6.执行RMAN脚本

[oracle@node2 orcl]$ rman target 'sys/fishcat@rac1' auxiliary /


RMAN> run{
2> set newname for datafile 1 to "/home/oracle/oradata/orcl/system.259.804551621";
3> set newname for datafile 2 to "/home/oracle/oradata/orcl/undotbs1.260.804551649";
4> set newname for datafile 3 to "/home/oracle/oradata/orcl/sysaux.261.804551661";
5> set newname for datafile 4 to "/home/oracle/oradata/orcl/undotbs2.263.804551689";
6> set newname for datafile 5 to "/home/oracle/oradata/orcl/users.264.804551699";
7> set newname for tempfile 1 to "/home/oracle/oradata/orcl/temp.262.804551671";
8> duplicate target database to orcl nofilenamecheck logfile
9> group 1 ('/home/oracle/oradata/orcl/group_1.257.804551611')size 52428800 reuse,
10> group 2 ('/home/oracle/oradata/orcl/group_2.258.804551615')size 52428800 reuse,
11> group 3 ('/home/oracle/oradata/orcl/group_3.265.804553343')size 52428800 reuse,
12> group 4 ('/home/oracle/oradata/orcl/group_4.266.804553347')size 52428800 reuse;
13> }


--------------脚本执行结果如下;
executing command: SET NEWNAME
using target database control file instead of recovery catalog

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting Duplicate Db at 13-JAN-13
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: sid=153 devtype=DISK

contents of Memory Script:
{
   set until scn  318371;
   set newname for datafile  1 to
 "/home/oracle/oradata/orcl/system.259.804551621";
   set newname for datafile  2 to
 "/home/oracle/oradata/orcl/undotbs1.260.804551649";
   set newname for datafile  3 to
 "/home/oracle/oradata/orcl/sysaux.261.804551661";
   set newname for datafile  4 to
 "/home/oracle/oradata/orcl/undotbs2.263.804551689";
   set newname for datafile  5 to
 "/home/oracle/oradata/orcl/users.264.804551699";
   restore
   check readonly
   clone database
   ;
}
executing Memory Script

executing command: SET until clause

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting restore at 13-JAN-13
using channel ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: starting datafile backupset restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /home/oracle/oradata/orcl/system.259.804551621
restoring datafile 00002 to /home/oracle/oradata/orcl/undotbs1.260.804551649
restoring datafile 00003 to /home/oracle/oradata/orcl/sysaux.261.804551661
restoring datafile 00004 to /home/oracle/oradata/orcl/undotbs2.263.804551689
restoring datafile 00005 to /home/oracle/oradata/orcl/users.264.804551699
channel ORA_AUX_DISK_1: reading from backup piece +BACKUP/full_20130113_13_1
channel ORA_AUX_DISK_1: restored backup piece 1
piece handle=+BACKUP/full_20130113_13_1 tag=TAG20130113T161131
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:01:27
Finished restore at 13-JAN-13
sql statement: CREATE CONTROLFILE REUSE SET DATABASE "ORCL" RESETLOGS ARCHIVELOG
  MAXLOGFILES    192
  MAXLOGMEMBERS      3
  MAXDATAFILES     1024
  MAXINSTANCES    32
  MAXLOGHISTORY      292
 LOGFILE
  GROUP  1 ( '/home/oracle/oradata/orcl/group_1.257.804551611' ) SIZE 52428800    REUSE,
  GROUP  2 ( '/home/oracle/oradata/orcl/group_2.258.804551615' ) SIZE 52428800    REUSE,
  GROUP  3 ( '/home/oracle/oradata/orcl/group_3.265.804553343' ) SIZE 52428800    REUSE,
  GROUP  4 ( '/home/oracle/oradata/orcl/group_4.266.804553347' ) SIZE 52428800    REUSE
 DATAFILE
  '/home/oracle/oradata/orcl/system.259.804551621'
 CHARACTER SET ZHS16GBK


contents of Memory Script:
{
   switch clone datafile all;
}
executing Memory Script

released channel: ORA_AUX_DISK_1
datafile 2 switched to datafile copy
input datafile copy recid=1 stamp=804617372 filename=/home/oracle/oradata/orcl/undotbs1.260.804551649
datafile 3 switched to datafile copy
input datafile copy recid=2 stamp=804617372 filename=/home/oracle/oradata/orcl/sysaux.261.804551661
datafile 4 switched to datafile copy
input datafile copy recid=3 stamp=804617372 filename=/home/oracle/oradata/orcl/undotbs2.263.804551689
datafile 5 switched to datafile copy
input datafile copy recid=4 stamp=804617373 filename=/home/oracle/oradata/orcl/users.264.804551699

contents of Memory Script:
{
   set until scn  318371;
   recover
   clone database
    delete archivelog
   ;
}
executing Memory Script

executing command: SET until clause

Starting recover at 13-JAN-13
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: sid=153 devtype=DISK

starting media recovery

channel ORA_AUX_DISK_1: starting archive log restore to default destination
channel ORA_AUX_DISK_1: restoring archive log
archive log thread=2 sequence=17
channel ORA_AUX_DISK_1: restoring archive log
archive log thread=2 sequence=18
channel ORA_AUX_DISK_1: reading from backup piece +BACKUP/arch_20130113_18_1
channel ORA_AUX_DISK_1: restored backup piece 1
piece handle=+BACKUP/arch_20130113_18_1 tag=TAG20130113T161419
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
channel ORA_AUX_DISK_1: starting archive log restore to default destination
channel ORA_AUX_DISK_1: restoring archive log
archive log thread=1 sequence=35
channel ORA_AUX_DISK_1: restoring archive log
archive log thread=1 sequence=36
channel ORA_AUX_DISK_1: reading from backup piece +BACKUP/arch_20130113_19_1
channel ORA_AUX_DISK_1: restored backup piece 1
piece handle=+BACKUP/arch_20130113_19_1 tag=TAG20130113T161419
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
archive log filename=/archive2/1_35_804551593.dbf thread=1 sequence=35
archive log filename=/archive2/2_17_804551593.dbf thread=2 sequence=17
channel clone_default: deleting archive log(s)
archive log filename=/archive2/1_35_804551593.dbf recid=3 stamp=804617377
archive log filename=/archive2/1_36_804551593.dbf thread=1 sequence=36
channel clone_default: deleting archive log(s)
archive log filename=/archive2/2_17_804551593.dbf recid=2 stamp=804617376
archive log filename=/archive2/2_18_804551593.dbf thread=2 sequence=18
channel clone_default: deleting archive log(s)
archive log filename=/archive2/1_36_804551593.dbf recid=4 stamp=804617377
channel clone_default: deleting archive log(s)
archive log filename=/archive2/2_18_804551593.dbf recid=1 stamp=804617376
media recovery complete, elapsed time: 00:00:03
Finished recover at 13-JAN-13

contents of Memory Script:
{
   shutdown clone;
   startup clone nomount ;
}
executing Memory Script

database dismounted
Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area     167772160 bytes

Fixed Size                     1218316 bytes
Variable Size                 62916852 bytes
Database Buffers             100663296 bytes
Redo Buffers                   2973696 bytes
sql statement: CREATE CONTROLFILE REUSE SET DATABASE "ORCL" RESETLOGS ARCHIVELOG
  MAXLOGFILES    192
  MAXLOGMEMBERS      3
  MAXDATAFILES     1024
  MAXINSTANCES    32
  MAXLOGHISTORY      292
 LOGFILE
  GROUP  1 ( '/home/oracle/oradata/orcl/group_1.257.804551611' ) SIZE 52428800    REUSE,
  GROUP  2 ( '/home/oracle/oradata/orcl/group_2.258.804551615' ) SIZE 52428800    REUSE,
  GROUP  3 ( '/home/oracle/oradata/orcl/group_3.265.804553343' ) SIZE 52428800    REUSE,
  GROUP  4 ( '/home/oracle/oradata/orcl/group_4.266.804553347' ) SIZE 52428800    REUSE
 DATAFILE
  '/home/oracle/oradata/orcl/system.259.804551621'
 CHARACTER SET ZHS16GBK


contents of Memory Script:
{
   set newname for tempfile  1 to
 "/home/oracle/oradata/orcl/temp.262.804551671";
   switch clone tempfile all;
   catalog clone datafilecopy  "/home/oracle/oradata/orcl/undotbs1.260.804551649";
   catalog clone datafilecopy  "/home/oracle/oradata/orcl/sysaux.261.804551661";
   catalog clone datafilecopy  "/home/oracle/oradata/orcl/undotbs2.263.804551689";
   catalog clone datafilecopy  "/home/oracle/oradata/orcl/users.264.804551699";
   switch clone datafile all;
}
executing Memory Script

executing command: SET NEWNAME

renamed temporary file 1 to /home/oracle/oradata/orcl/temp.262.804551671 in control file

cataloged datafile copy
datafile copy filename=/home/oracle/oradata/orcl/undotbs1.260.804551649 recid=1 stamp=804617403

cataloged datafile copy
datafile copy filename=/home/oracle/oradata/orcl/sysaux.261.804551661 recid=2 stamp=804617403

cataloged datafile copy
datafile copy filename=/home/oracle/oradata/orcl/undotbs2.263.804551689 recid=3 stamp=804617403

cataloged datafile copy
datafile copy filename=/home/oracle/oradata/orcl/users.264.804551699 recid=4 stamp=804617404

datafile 2 switched to datafile copy
input datafile copy recid=1 stamp=804617403 filename=/home/oracle/oradata/orcl/undotbs1.260.804551649
datafile 3 switched to datafile copy
input datafile copy recid=2 stamp=804617403 filename=/home/oracle/oradata/orcl/sysaux.261.804551661
datafile 4 switched to datafile copy
input datafile copy recid=3 stamp=804617403 filename=/home/oracle/oradata/orcl/undotbs2.263.804551689
datafile 5 switched to datafile copy
input datafile copy recid=4 stamp=804617404 filename=/home/oracle/oradata/orcl/users.264.804551699

contents of Memory Script:
{
   Alter clone database open resetlogs;
}
executing Memory Script

database opened
Finished Duplicate Db at 13-JAN-13


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 加入社区

他的关注

意见
反馈