Maison >base de données >tutoriel mysql >【使用rman复制数据库10g--clone-1】
目标数据库:jadl0g 复制的结果数据库:d10g 注意:****目标库与clone结果库在同一台机子上**** 1.vi /u01/oracle/10g/network/admin/tnsnames.ora D10G =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = oracle.db.com)(PORT = 1521))(CONNECT_DATA =(SE
目标数据库:jadl0g
复制的结果数据库:d10g
注意:****目标库与clone结果库在同一台机子上****
1.vi /u01/oracle/10g/network/admin/tnsnames.ora
D10G = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oracle.db.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = d10g) ) (failover = on) )
2.vi /u01/oracle/10g/network/admin/listener.ora
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME=jadl10g) (SID_NAME = jadl10g) (ORACLE_HOME = /u01/oracle/10g) ) (SID_DESC = (GLOBAL_DBNAME=d10g) (SID_NAME = d10g) (ORACLE_HOME = /u01/oracle/10g) ) )
3.重启监听
lsnrctl stop lsnrctl start tnsping d10g tnsping jadl10g
4.创建密码文件和参数文件
[oracle@oracle ~]$ cd /u01/oracle/10g/dbs/ [oracle@oracle dbs]$ orapwd file=orapwd10g password=oracle [oracle@oracle dbs]$ strings spfilejadl10g.ora > initd10g.ora [oracle@oracle dbs]$ vi initd10g.ora :1,$ s/jadl10g/d10g/g---执行该命令 [oracle@oracle dbs]$ grep u01 initd10g.ora *.audit_file_dest='/u01/oracle/admin/d10g/adump' *.background_dump_dest='/u01/oracle/admin/d10g/bdump' *.control_files='/u01/oracle/oradata/d10g/control01.ctl','/u01/oracle/flash_recovery_area/d10g/control02.ctl'#Restore Controlfile *.core_dump_dest='/u01/oracle/admin/d10g/cdump' *.db_recovery_file_dest='/u01/oracle/flash_recovery_area' *.user_dump_dest='/u01/oracle/admin/d10g/udump' 5.创建相应的文件 [oracle@oracle dbs]$ mkdir /u01/oracle/admin/d10g/adump -p [oracle@oracle dbs]$ mkdir /u01/oracle/admin/d10g/bdump -p [oracle@oracle dbs]$ mkdir /u01/oracle/admin/d10g/cdump -p [oracle@oracle dbs]$ mkdir /u01/oracle/admin/d10g/udump -p [oracle@oracle dbs]$ mkdir /u01/oracle/oradata/d10g [oracle@oracle dbs]$ export ORACLE_SID=d10g [oracle@oracle dbs]$ rman target / Recovery Manager: Release 10.2.0.5.0 - Production on Fri Nov 7 12:59:20 2014 Copyright (c) 1982, 2007, Oracle. All rights reserved. connected to target database (not started) RMAN> startup nomount Oracle instance started Total System Global Area 599785472 bytes Fixed Size 2098112 bytes Variable Size 171969600 bytes Database Buffers 419430400 bytes Redo Buffers 6287360 bytes RMAN> exit Recovery Manager complete. [oracle@oracle dbs]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.5.0 - Production on Fri Nov 7 13:00:15 2014 Copyright (c) 1982, 2010, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production With the Partitioning, Oracle Label Security, OLAP, Data Mining Scoring Engine and Real Application Testing options SQL> create spfile from pfile; File created. SQL> shutdown ORA-01507: database not mounted ORACLE instance shut down. SQL> startup nomount ORACLE instance started. Total System Global Area 599785472 bytes Fixed Size 2098112 bytes Variable Size 171969600 bytes Database Buffers 419430400 bytes Redo Buffers 6287360 bytes SQL> exit Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production With the Partitioning, Oracle Label Security, OLAP, Data Mining Scoring Engine and Real Application Testing options **************************** [oracle@oracle dbs]$ rman target sys/oracle@jadl10g auxiliary sys/oracle@d10g Recovery Manager: Release 10.2.0.5.0 - Production on Fri Nov 7 13:26:11 2014 Copyright (c) 1982, 2007, Oracle. All rights reserved. RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-00554: initialization of internal recovery manager package failed RMAN-04005: error from target database: ORA-01031: insufficient privileges
这个错误是由于我的目标数据库没有密码文件造成的。
解决方法就是创建密码文件
[oracle@oracle dbs]$ orapwd file=orapwjadl10g password=oracle **************************** [oracle@oracle dbs]$ rman target sys/oracle@jadl10g auxiliary sys/oracle@d10g Recovery Manager: Release 10.2.0.5.0 - Production on Fri Nov 7 13:34:12 2014 Copyright (c) 1982, 2007, Oracle. All rights reserved. connected to target database: JADL10G (DBID=2011530396) connected to auxiliary database: D10G (not mounted) 执行如下命令(注意必须是远程和本地的顺序): RMAN> duplicate target database to "D10G" nofilenamecheck 2> db_file_name_convert('/u01/oracle/oradata/jadl10g/','/u01/oracle/oradata/d10g/') 3> logfile '/u01/oracle/oradata/d10g/redo01.log' size 10m, 4> '/u01/oracle/oradata/d10g/redo02.log' size 10m; Starting Duplicate Db at 07-NOV-14 using target database control file instead of recovery catalog allocated channel: ORA_AUX_DISK_1 channel ORA_AUX_DISK_1: sid=156 devtype=DISK contents of Memory Script: { set until scn 556591; set newname for datafile 1 to "/u01/oracle/oradata/d10g/system01.dbf"; set newname for datafile 2 to "/u01/oracle/oradata/d10g/undotbs01.dbf"; set newname for datafile 3 to "/u01/oracle/oradata/d10g/sysaux01.dbf"; set newname for datafile 4 to "/u01/oracle/oradata/d10g/users01.dbf"; set newname for datafile 5 to "/u01/oracle/oradata/d10g/example01.dbf"; 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 07-NOV-14 using channel ORA_AUX_DISK_1 skipping datafile 1; alrea【本文来自鸿网互联 (http://www.68idc.cn)】dy restored to file /u01/oracle/oradata/d10g/system01.dbf skipping datafile 2; already restored to file /u01/oracle/oradata/d10g/undotbs01.dbf skipping datafile 3; already restored to file /u01/oracle/oradata/d10g/sysaux01.dbf skipping datafile 4; already restored to file /u01/oracle/oradata/d10g/users01.dbf skipping datafile 5; already restored to file /u01/oracle/oradata/d10g/example01.dbf restore not done; all files readonly, offline, or already restored Finished restore at 07-NOV-14 sql statement: CREATE CONTROLFILE REUSE SET DATABASE "D10G" RESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 292 LOGFILE GROUP 1 '/u01/oracle/oradata/d10g/redo01.log' SIZE 10 M , GROUP 2 '/u01/oracle/oradata/d10g/redo02.log' SIZE 10 M DATAFILE '/u01/oracle/oradata/d10g/system01.dbf' CHARACTER SET AL32UTF8 contents of Memory Script: { switch clone datafile all; } executing Memory Script datafile 2 switched to datafile copy input datafile copy recid=1 stamp=863013896 filename=/u01/oracle/oradata/d10g/undotbs01.dbf datafile 3 switched to datafile copy input datafile copy recid=2 stamp=863013896 filename=/u01/oracle/oradata/d10g/sysaux01.dbf datafile 4 switched to datafile copy input datafile copy recid=3 stamp=863013896 filename=/u01/oracle/oradata/d10g/users01.dbf datafile 5 switched to datafile copy input datafile copy recid=4 stamp=863013896 filename=/u01/oracle/oradata/d10g/example01.dbf contents of Memory Script: { set until scn 556591; recover clone database delete archivelog ; } executing Memory Script executing command: SET until clause Starting recover at 07-NOV-14 using channel ORA_AUX_DISK_1 starting media recovery archive log thread 1 sequence 1 is already on disk as file /u01/oracle/flash_recovery_area/JADL10G/archivelog/2014_11_07/o1_mf_1_1_b5qkpgh1_.arc archive log thread 1 sequence 2 is already on disk as file /u01/oracle/flash_recovery_area/JADL10G/archivelog/2014_11_07/o1_mf_1_2_b5qkpk0o_.arc archive log thread 1 sequence 1 is already on disk as file /u01/oracle/flash_recovery_area/JADL10G/archivelog/2014_11_07/o1_mf_1_1_b5rqvjwq_.arc archive log thread 1 sequence 2 is already on disk as file /u01/oracle/flash_recovery_area/JADL10G/archivelog/2014_11_07/o1_mf_1_2_b5rqvmxf_.arc archive log filename=/u01/oracle/flash_recovery_area/JADL10G/archivelog/2014_11_07/o1_mf_1_1_b5qkpgh1_.arc thread=1 sequence=1 archive log filename=/u01/oracle/flash_recovery_area/JADL10G/archivelog/2014_11_07/o1_mf_1_2_b5qkpk0o_.arc thread=1 sequence=2 media recovery complete, elapsed time: 00:00:23 Finished recover at 07-NOV-14 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 599785472 bytes Fixed Size 2098112 bytes Variable Size 171969600 bytes Database Buffers 419430400 bytes Redo Buffers 6287360 bytes sql statement: CREATE CONTROLFILE REUSE SET DATABASE "D10G" RESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 292 LOGFILE GROUP 1 '/u01/oracle/oradata/d10g/redo01.log' SIZE 10 M , GROUP 2 '/u01/oracle/oradata/d10g/redo02.log' SIZE 10 M DATAFILE '/u01/oracle/oradata/d10g/system01.dbf' CHARACTER SET AL32UTF8 contents of Memory Script: { set newname for tempfile 1 to "/u01/oracle/oradata/d10g/temp01.dbf"; switch clone tempfile all; catalog clone datafilecopy "/u01/oracle/oradata/d10g/undotbs01.dbf"; catalog clone datafilecopy "/u01/oracle/oradata/d10g/sysaux01.dbf"; catalog clone datafilecopy "/u01/oracle/oradata/d10g/users01.dbf"; catalog clone datafilecopy "/u01/oracle/oradata/d10g/example01.dbf"; switch clone datafile all; } executing Memory Script executing command: SET NEWNAME renamed temporary file 1 to /u01/oracle/oradata/d10g/temp01.dbf in control file cataloged datafile copy datafile copy filename=/u01/oracle/oradata/d10g/undotbs01.dbf recid=1 stamp=863013929 cataloged datafile copy datafile copy filename=/u01/oracle/oradata/d10g/sysaux01.dbf recid=2 stamp=863013929 cataloged datafile copy datafile copy filename=/u01/oracle/oradata/d10g/users01.dbf recid=3 stamp=863013929 cataloged datafile copy datafile copy filename=/u01/oracle/oradata/d10g/example01.dbf recid=4 stamp=863013929 datafile 2 switched to datafile copy input datafile copy recid=1 stamp=863013929 filename=/u01/oracle/oradata/d10g/undotbs01.dbf datafile 3 switched to datafile copy input datafile copy recid=2 stamp=863013929 filename=/u01/oracle/oradata/d10g/sysaux01.dbf datafile 4 switched to datafile copy input datafile copy recid=3 stamp=863013929 filename=/u01/oracle/oradata/d10g/users01.dbf datafile 5 switched to datafile copy input datafile copy recid=4 stamp=863013929 filename=/u01/oracle/oradata/d10g/example01.dbf contents of Memory Script: { Alter clone database open resetlogs; } executing Memory Script database opened Finished Duplicate Db at 07-NOV-14 RMAN> exit Recovery Manager complete. 验证是否clone成功: [oracle@oracle dbs]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.5.0 - Production on Fri Nov 7 14:21:20 2014 Copyright (c) 1982, 2010, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production With the Partitioning, Oracle Label Security, OLAP, Data Mining Scoring Engine and Real Application Testing options SQL> select instance_name from v$instance; INSTANCE_NAME ---------------- d10g
1.密码文件问题
2.网络问题
3.参数问题
4.rman语句 db_file_name_convert 在同一个服务器设置语法有问题
5.注意必须要有备份,远程的话需要copy备份到目标库