Oracle 12Cr2 Using CloneDB to clone a database
這裡將介紹如何使用Oracle 12CR2的CloneDB功能來克隆一個資料庫,生產庫orcl的Oracle home目錄為/u01/app/oracle/product/12.2.0/db,資料庫的備份檔案儲存在/u01/app/oracle/backup/目錄中,CloneDB庫clonedb的oracle home目錄也為/u01/app/oracle/product/12.2.0/db
操作步驟如下:
1.對生產庫執行備份,因為生產庫jy啟用了歸檔所以執行聯機備份,使用backup as copy來備份生產庫的資料檔案,只備份資料檔案。
SQL> col name for a50 SQL> select file#,rfile#,name from v$datafile; FILE# RFILE# NAME ---------- ---------- -------------------------------------------------- 1 1 +DATA/ORCL/DATAFILE/system.280.941831569 2 2 +DATA/ORCL/DATAFILE/sysaux.281.941831647 3 3 +DATA/ORCL/DATAFILE/undotbs1.282.941831677 4 4 +DATA/ORCL/DATAFILE/users.284.941831687 SQL> select name from v$tablespace; NAME -------------------------------------------------- SYSTEM SYSAUX UNDOTBS1 TEMP USERS RMAN> backup as copy database format '/u01/app/oracle/backup/%U'; Starting backup at 25-APR-17 using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile copy input datafile file number=00001 name=+DATA/ORCL/DATAFILE/system.280.941831569 output file name=/u01/app/oracle/backup/data_D-ORCL_I-1469612247_TS-SYSTEM_FNO-1_1vs2jnif tag=TAG20170425T210621 RECID=17 STAMP=942267998 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15 channel ORA_DISK_1: starting datafile copy input datafile file number=00002 name=+DATA/ORCL/DATAFILE/sysaux.281.941831647 output file name=/u01/app/oracle/backup/data_D-ORCL_I-1469612247_TS-SYSAUX_FNO-2_20s2jnj1 tag=TAG20170425T210621 RECID=18 STAMP=942268013 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15 channel ORA_DISK_1: starting datafile copy input datafile file number=00004 name=+DATA/ORCL/DATAFILE/users.284.941831687 output file name=/u01/app/oracle/backup/data_D-ORCL_I-1469612247_TS-USERS_FNO-4_21s2jnjj tag=TAG20170425T210621 RECID=19 STAMP=942268023 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07 channel ORA_DISK_1: starting datafile copy input datafile file number=00003 name=+DATA/ORCL/DATAFILE/undotbs1.282.941831677 output file name=/u01/app/oracle/backup/data_D-ORCL_I-1469612247_TS-UNDOTBS1_FNO-3_22s2jnjs tag=TAG20170425T210621 RECID=20 STAMP=942268033 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:08 Finished backup at 25-APR-17 Starting Control File and SPFILE Autobackup at 25-APR-17 piece handle=/u01/app/oracle/product/12.2.0/db/dbs/c-1469612247-20170425-03 comment=NONE Finished Control File and SPFILE Autobackup at 25-APR-17
2.建立pfile引數檔案
SQL> create pfile='/u01/app/oracle/product/12.2.0/db/dbs/initclonedb.ora' from spfile; File created.
3.建立克隆庫clonedb
3.1 手動生成建立CloneDB庫的SQL指令碼
3.1.1 以sysdba或sysbackup管理許可權連線到生產庫
[oracle@jytest3 ~]$ export ORACLE_SID=orcl [oracle@jytest3 ~]$ sqlplus / as sysdba SQL*Plus: Release 12.2.0.1.0 Production on Mon Apr 24 19:56:40 2017 Copyright (c) 1982, 2016, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
3.1.2 執行以下命令來對生產庫的控制檔案生成備份
SQL> alter database backup controlfile to trace; Database altered. SQL> oradebug setmypid Statement processed. SQL> oradebug tracefile_name /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_22801.trc
3.1.3 將生成的跟蹤檔案中的startup nomount與create controlfile語句複製到一個新建立的指令碼中。
[oracle@jytest3 dbs]$ vi create_clonedb.sql STARTUP NOMOUNT CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 2 MAXDATAFILES 30 MAXINSTANCES 1 MAXLOGHISTORY 292 LOGFILE GROUP 1 '+DATA/ORCL/ONLINELOG/group_1.278.941831529' SIZE 100M BLOCKSIZE 512, GROUP 2 '+DATA/ORCL/ONLINELOG/group_2.279.941831545' SIZE 100M BLOCKSIZE 512 -- STANDBY LOGFILE DATAFILE '+DATA/ORCL/DATAFILE/system.280.941831569', '+DATA/ORCL/DATAFILE/sysaux.281.941831647', '+DATA/ORCL/DATAFILE/undotbs1.282.941831677', '+DATA/ORCL/DATAFILE/users.284.941831687' CHARACTER SET ZHS16GBK ;
3.1.4 統計圖指令碼create_clonedb.sql,將資料庫名從orcl修改為clonedb,將日誌檔案目錄從+data/orcl/onlinelog/修改為+data/clonedb/onlinelog,將資料檔案目錄從+data/orcl/datafile修改為備份目錄/u01/app/oracle/backup/,修改之後的指令碼內容如下:
STARTUP NOMOUNT pfile=/u01/app/oracle/product/12.2.0/db/dbs/initclonedb.ora CREATE CONTROLFILE REUSE SET DATABASE clonedb RESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 2 MAXDATAFILES 30 MAXINSTANCES 1 MAXLOGHISTORY 292 LOGFILE GROUP 1 '+data/clonedb/onlinelog/redo1.log' SIZE 100M BLOCKSIZE 512, GROUP 2 '+data/clonedb/onlinelog/redo2.log' SIZE 100M BLOCKSIZE 512 -- STANDBY LOGFILE DATAFILE '/u01/app/oracle/backup/data_D-ORCL_I-1469612247_TS-SYSTEM_FNO-1_1vs2jnif', '/u01/app/oracle/backup/data_D-ORCL_I-1469612247_TS-SYSAUX_FNO-2_20s2jnj1', '/u01/app/oracle/backup/data_D-ORCL_I-1469612247_TS-USERS_FNO-4_21s2jnjj', '/u01/app/oracle/backup/data_D-ORCL_I-1469612247_TS-UNDOTBS1_FNO-3_22s2jnjs' CHARACTER SET ZHS16GBK ;
3.1.5 將生成的引數檔案pfile複製到clonedb庫所儲存引數檔案的位置,因為這裡生產庫與clonedb庫的Oracle home目錄相同,所以不用複製,這裡需要引數檔案修改為clonedb庫所使用的相關引數,並且要增加CLONEDB=TRUE這個引數
[oracle@jytest3 dbs]$ vi initclonedb.ora orcl.__data_transfer_cache_size=0 orcl.__db_cache_size=427819008 orcl.__inmemory_ext_roarea=0 orcl.__inmemory_ext_rwarea=0 orcl.__java_pool_size=4194304 orcl.__large_pool_size=20971520 orcl.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment orcl.__pga_aggregate_target=432013312 orcl.__sga_target=641728512 orcl.__shared_io_pool_size=0 orcl.__shared_pool_size=171966464 orcl.__streams_pool_size=0 *.control_files='+data/clonedb/controlfile/control01.ctl','+data/clonedb/controlfile/control02.ctl' *.db_create_file_dest='+DATA' *.db_name=clonedb *.log_archive_dest_1='location=+data/arch/clonedb/' *.memory_target=1G clonedb=true
3.1.6 使用SQL*PLUS並以sysdba管理許可權連線到clonedb庫
[oracle@jytest3 ~]$ export ORACLE_SID=clonedb [oracle@jytest3 ~]$ sqlplus / as sysdba SQL*Plus: Release 12.2.0.1.0 Production on Mon Apr 24 20:24:52 2017 Copyright (c) 1982, 2016, Oracle. All rights reserved. Connected to an idle instance.
3.1.7 執行之前建立的create_clonedb.sql指令碼
SQL> @/u01/app/oracle/product/12.2.0/db/dbs/create_clonedb.sql ORACLE instance started. Total System Global Area 1073741824 bytes Fixed Size 8628936 bytes Variable Size 629146936 bytes Database Buffers 427819008 bytes Redo Buffers 8146944 bytes Control file created.
3.1.8 對於在備份目錄中的每個資料檔案,執行dbms_dnfs.clonedb_renamefile過程,srcfile指定備份檔案,destfile指定目標檔案
SQL> BEGIN 2 DBMS_DNFS.CLONEDB_RENAMEFILE(srcfile => '/u01/app/oracle/backup/data_D-ORCL_I-1469612247_TS-SYSTEM_FNO-1_1vs2jnif',destfile => '+DATA/clonedb/datafile/system.dbf'); 3 DBMS_DNFS.CLONEDB_RENAMEFILE(srcfile => '/u01/app/oracle/backup/data_D-ORCL_I-1469612247_TS-SYSAUX_FNO-2_20s2jnj1',destfile => '+DATA/clonedb/datafile/sysaux.dbf'); 4 DBMS_DNFS.CLONEDB_RENAMEFILE(srcfile => '/u01/app/oracle/backup/data_D-ORCL_I-1469612247_TS-USERS_FNO-4_21s2jnjj',destfile => '+DATA/clonedb/datafile/users.dbf'); 5 DBMS_DNFS.CLONEDB_RENAMEFILE(srcfile => '/u01/app/oracle/backup/data_D-ORCL_I-1469612247_TS-UNDOTBS1_FNO-3_22s2jnjs',destfile => '+DATA/clonedb/datafile/undotbs1.dbf'); 6 END; 7 / PL/SQL procedure successfully completed.
4.如果使用聯機備份建立clonedb庫,那麼需要對clonedb執行恢復操作。如果是使用的完全離線備份或使用的是backup as copy備份,則不需要執行恢復操作,因為我這是使用的backup as copy備份。需要執行恢復,執行以下命令:
SQL> recover database using backup controlfile until cancel; ORA-00279: change 630593 generated at 04/25/2017 21:06:24 needed for thread 1 ORA-00289: suggestion : +DATA/arch/clonedb/1_22_941831511.dbf ORA-00280: change 630593 for thread 1 is in sequence #22 Specify log: {=suggested | filename | AUTO | CANCEL}
這裡需要查詢生產庫當前正在使用的聯機重做日誌檔案
SQL> set long 300 SQL> set linesize 300 SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# NEXT_TIME CON_ID ---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ------------ ------------ ------------ ---------- 1 1 21 104857600 512 1 YES INACTIVE 627446 25-APR-17 630528 25-APR-17 0 2 1 22 104857600 512 1 NO CURRENT 630528 25-APR-17 1.8447E+19 0 SQL> col member for a50 SQL> select * from v$logfile; GROUP# STATUS TYPE MEMBER IS_ CON_ID ---------- ------- ------- -------------------------------------------------- --- ---------- 1 ONLINE +DATA/ORCL/ONLINELOG/group_1.278.941831529 NO 0 2 ONLINE +DATA/ORCL/ONLINELOG/group_2.279.941831545 NO 0 +DATA/ORCL/ONLINELOG/group_2.279.941831545 Log applied. Media recovery complete. SQL>
5.執行以下命令open資料庫
SQL> alter database open resetlogs; Database altered.
到此克隆資料庫的所要操作完成。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2137924/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle clone databaseOracleDatabase
- 12CR2 using create database command for create non-CDB rac databaseDatabase
- Using Regular Expressions in Oracle DatabaseExpressOracleDatabase
- A example that using JQuery clonejQuery
- clone database using RMAN without new incarnation (with NORESETLOGS)_1608236.1Database
- Clone a database on the same serverDatabaseServer
- Oracle Database 12cR2/R1中的更改OracleDatabase
- Oracle Database 12cR2多租戶權威指南OracleDatabase
- How a Clone Database Is Mounted (296)Database
- How to check whether the current database in using Oracle optionsDatabaseOracle
- For oracle databases, if the top showing the oracle database, then oracle process is using the top cOracleDatabase
- oracle create a new database using backup controlfile to traceOracleDatabase
- Using Oracle Database 11g Release 2 Result Cache in an Oracle RAC EnvironmentOracleDatabase
- Converting Oracle Database from Linux to Windows using RMANOracleDatabaseLinuxWindows
- G009-ORACLE-ASK Using In-Database ArchivingOracleDatabase
- Oracle 12C Transport a Database to a Different Platform Using Backup SetsOracleDatabasePlatform
- Converting Oracle Database from Windows to Linux using RMANOracleDatabaseWindowsLinux
- Database Clone by rebuilding control file.DatabaseRebuild
- Manually Backup - Restore or Clone a Database to Another Node [ID 562556.1]RESTDatabase
- 克隆(clone) ORACLE HOMEOracle
- Oracle軟體cloneOracle
- Clone (克隆) ORACLE HOMEOracle
- Duplicate Database from ASM to Non- ASM Database Using RMANDatabaseASM
- oracle clone oracle_home 方法Oracle
- Oracle Database 12c Release 2 (12.2) RAC On Oracle Linux 7 Using VMwareOracleDatabaseLinux
- 克隆 clone Oracle 軟體Oracle
- recover database using backup controlfileDatabase
- Oracle Database 19c(19.9) RAC On RedHat 8.3 Using VirtualBox and MacBookOracleDatabaseRedhatMac
- Oracle Database 11g Release 2 RAC On Linux Using VMware Server 2OracleDatabaseLinuxServer
- Oracle 12CR2 dbca -silent -createDatabaseOracleDatabase
- recover database using backup controlfile與 recover database 的區別Database
- recover database using backup controlfile理解Database
- recover database using backup control fileDatabase
- How to Restore the Database Using AMDU after Diskgroup CorruptionRESTDatabase
- Using RMAN Incremental Backups to Refresh a Standby DatabaseREMDatabase
- Duplicating Database using RMAN duplicate commandDatabase
- git clone 報錯 “URL using bad/illegal format or missing URL“GitORM
- Oracle 12c Refreshable CloneOracle