迁移数据库——rman Duplicate 异机复制数据库

数据库版本是:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

RMAN 异机复制和同机复制操作步骤是一样的,不同的是我们需要把备份的文件copy到辅助库上去,而且位置要和目标库上一致,因为备份集的位置是写在控制文件里的。

目标库信息:

ORACLE_BASE: /u01/app

ORACLE_HOME: /u01/app/oracle

ORACLE_SIDorcl

IP: 10.10.10.8

辅助库信息:

ORACLE_BASE: /u01/app

ORACLE_HOME: /u01/app/oracle

ORACLE_SID:db

IP: 10.10.10.9


1、在辅助实例上创建初始化参数文件,可以根据源数据库的参数文件来修改。
(参数文件非常重要,直接决定了复杂能否成功,注意最后两行。)
[oracle@linux dbs]$ cat initdb.ora 
*.audit_file_dest='/u01/app/admin/db/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/u01/app/oradata/db/controlfile.ora'
*.db_block_size=8192
*.db_create_file_dest=''
*.db_domain=''
*.db_file_multiblock_read_count=128
*.db_name='db'
*.db_recovery_file_dest_size=8589934592
*.db_recovery_file_dest='/u01/app/oradata/db/flash_area'
*.diagnostic_dest='/u01/app'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=dbXDB)'
*.log_archive_format='%t_%s_%r.dbf'
*.memory_max_target=536870912
*.memory_target=536870912
*.nls_language='SIMPLIFIED CHINESE'
*.nls_territory='CHINA'
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_max_size=419430400
*.undo_tablespace='UNDOTBS1'
*.db_file_name_convert=('/u01/app/oradata','/u01/app/oradata/db')
*.log_file_name_convert=('/u01/app/oradata','/u01/app/oradata/db')

2、在辅助实例上创建必要的目录和密码文件:
$ mkdir -p /u01/app/admin/db/adump
$ mkdir -p /u01/app/oradata/db/flash_area
$ orapwd file= '/u01/app/oracle/dbs/ orapwdb'  password=oracle entries=10

3、在辅助实例上创建spfile,nomount db实例:
SQL> startup nomount
SQL> create spfile from pfile='/u01/app/oracle/dbs/initdb.ora';
SQL> startup force nomount
SQL> show parameter spfile

4、在目标实例上备份数据库:
$ rman target /
RMAN> startup
RMAN> run {
allocate channel c1 device type disk format '/u01/backup/%d_%U';
backup  database;
backup archivelog  all;
backup  current controlfile;
}

5、从目标实例上复制备份集到辅助实例:(存放备份集目录相同)
[oracle@db u01]$ scp -r [email protected]:/u01/backup /u01
The authenticity of host '10.10.10.8 (10.10.10.8)' can't be established.
RSA key fingerprint is 9d:59:1d:a9:55:99:a8:0b:b7:1e:71:29:3e:f1:4d:b8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.10.10.8' (RSA) to the list of known hosts.
[email protected]'s password: 
ORCL_1kodreq0_1_1                                                        100% 1131MB  10.1MB/s   01:52    
ORCL_1nodreuk_1_1                                                        100%   97MB   1.1MB/s   01:30    
ORCL_1oodreus_1_1                                                        100%   10MB 782.8KB/s   00:13    
ORCL_1lodretb_1_1                                                        100%  455MB   2.7MB/s   02:51    
ORCL_1modreuf_1_1                                                        100%   10MB  10.0MB/s   00:00 

6、在目标实例的tnsnames.ora中添加到辅助实例的配置(红色部分):
$ cat tnsnames.ora 
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = linux)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

DB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.9)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SID = db)
    )
  )
$ lsnrctl start

7、在辅助实例上配置listener.ora和tnsnames.ora(红色部分很重要)
[oracle@db admin]$ cat listener.ora 
SID_LIST_LISTENER =  
  (SID_LIST =  
    (SID_DESC =  
      (GLOBAL_DBNAME = db)  
      (SID_NAME = db)  
      (ORACLE_HOME = /u01/app/oracle)  
    )  
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = db)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = /u01/app

[oracle@db admin]$ cat tnsnames.ora 
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.8)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SID = orcl)
    )
  )

DB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = db)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SID = db)
    )
  )

$ lsnrctl start

8、在目标实例上,用rman连接orcl和db数据库实例
$ rman target sys/oracle@orcl auxiliary sys/oracle@db
RMAN> duplicate target database to db skip tablespace perfstat;

9、附录
a)在duplicata的时候不能有session连接。

b)skip tablespace perfstat;  这里跳过了表空间:perfstat。

c)duplicate target database to ORCL nofilenamecheck;

Nofilenamecheck 参数:如果在复制时,位置不同时,我们会用参数db_file_name_convert 对文件位置进行转换。 如果相同的位置。 所以这里必须加上nofilenamecheck参数。 该参数通知复制操作不必在执行还原操作前确认文件名是不同的。如果没有指定nofilenamecheck参数,rman会给出如下错误

RMAN-05001: auxiliary filename /u01/app/oracle/oradata/orcl/example01.dbf conflicts with a file used by the target database

RMAN-05001: auxiliary filename /u01/app/oracle/oradata/orcl/users01.dbf conflicts with a file used by the target database


d)使用duplicata复制数据库,会为辅助数据库生成新的DBID。

你可能感兴趣的:(迁移数据库——rman Duplicate 异机复制数据库)