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
- Converting Oracle Database from Linux to Windows using RMANOracleDatabaseLinuxWindows
- G009-ORACLE-ASK Using In-Database ArchivingOracleDatabase
- Oracle Database 12cR2多租戶權威指南OracleDatabase
- Oracle Database 12cR2/R1中的更改OracleDatabase
- Oracle Database 19c(19.9) RAC On RedHat 8.3 Using VirtualBox and MacBookOracleDatabaseRedhatMac
- recover database using backup controlfile理解Database
- [20181007]12cR2 Using SQL Patch.txtSQL
- [20181007]12cR2 Using SQL Patch 2.txtSQL
- git clone 報錯 “URL using bad/illegal format or missing URL“GitORM
- ORACLE database vaultOracleDatabase
- Oracle Database Cloud - Database as a Service Quick StartOracleDatabaseCloudUI
- Oracle VM上實施Oracle 12cR2 RACOracle
- Oracle Database Scheduler整理OracleDatabase
- Oracle Physical Database LimitsOracleDatabaseMIT
- Oracle 12.2 使用Database Link優化Standby Database WorkloadOracleDatabase優化
- Oracle Data Guard Feature 12cR2系列(二)Oracle
- Oracle Data Guard Feature 12cR2系列(一)Oracle
- Step by Step Data Replication Using Oracle GoldenGateOracleGo
- Oracle 19c Concepts(01):Introduction to Oracle DatabaseOracleDatabase
- Oracle 19c Concepts(13):Oracle Database InstanceOracleDatabase
- Oracle OCP(35):Database 安裝OracleDatabase
- oracle 10g flashback databaseOracle 10gDatabase
- Oracle DG Standby Database型別OracleDatabase型別
- Oracle DG建立Physical Standby DatabaseOracleDatabase
- Oracle DG建立Logical Standby DatabaseOracleDatabase
- Oracle 12C Database File Mapping for Oracle ASM FilesOracleDatabaseAPPASM
- Oracle OCP(38):Database 物理結構OracleDatabase
- 關於Oracle Database Vault介紹OracleDatabase
- Scheduler in Oracle Database 10g(轉)OracleDatabase
- [翻譯]-Detect And Repair Corruption in an Oracle DatabaseAIOracleDatabase
- Oracle 19c Database Management ToolsOracleDatabase
- Oracle 19c Concepts(00):Changes in This Release for Oracle Database ConceptsOracleDatabase
- 【Oracle】Windows安裝oracle11gR1 database 11.1.0.6OracleWindowsDatabase
- Oracle 12CR2查詢轉換之星型轉換Oracle
- Oracle 12CR2查詢轉換之謂詞推送Oracle
- 2.10.1.2 使用CloneDB克隆資料庫資料庫
- Oracle OCP(37):Database 體系結構OracleDatabase
- Oracle database 升級(文件)to 10.2.0.4 from 10.2.0.1OracleDatabase