复制数据库成为复本或克隆数据库,数据库的副本名称与原数据库相同,克隆数据库与原数据库名称不同。我们可以运用前面讲过的还原和恢复技术,可以方便复制数据库。通过复制数据库可以为自己以及开发团队带来好处:
利用Oracle工具,可以用三种方式复制数据库:
复制数据库看上去很简单,如MS SQLServer只需要把MDF文件复制到另一个地方即可,Oracle的复制实际上并没有那么简单。复制Oracle数据库包括数据文件、重做日志文件和控制文件三类文件类型的处理。
练习9:克隆打开的PRACTICE数据库
克隆数据库大致的步骤:首先建立CLNE数据库存放的路径、参数文件、口令文件和Windows服务,接着把PRACTICE数据文件复制到CLNE数据库的数据文件目录下,然后将生成为CLNE数据库创建一个新的控制文件所需的命令脚本,最后运行这个命令完成CLNE数据库的创建。
步骤一:准备CLNE数据库
首先,创建CLNE数据库所需的路径:

可以通过这个命令创建数据库路径接口,如果有差别可以调整相关参数的路径,当然可以通过Window系统建立文件夹建立需要的文件夹。
接着,进入D:oracleproduct10.1.0Db_1database文件夹,复制PRACTICE参数文件SPFILEPRACTICE.ORA并命名为SPFILEPCLNE.ORA,使用写字板打开,将文件中出现”PRACTICE”替换为”CLNE”。
再次,为CLNE创建一个名为OracleSerciveCLNE的数据库服务,使用CLNE口令:
最后,配置TNS服务:打开D:oracleproduct10.1.0Db_1NETWORKADMIN tnsnames.ora添加目标数据库服务;
步骤二:备份打开的PRACTICE数据库删除后如下(具体用户参见练习5):
步骤三:配置控制文件脚本
有一个捷径可以让数据库产生创建一个新的控制文件所需要的指令:
使用这个命令Oracle会创建包含创建控制文件所需要的全部命令,文件的位置由user_dump_dest初始化参数确定。
这个文件可能以ora123.trc之类的名称命名,寻找一个日期/时间与提交跟踪命令时刻相同的文件,打开该文件将看到创建一个控制文件和启动数据库所需要的全部命令。把该文件命名为create_control_open.sql,并剪切到D:oracleproduct10.1.0adminCLNEcreate目录下,并做如下改动:
完成修改后,文件如下:
步骤四:运行控制文件脚本
使用SYSDBA登录SQL*Plus数据库,运行D:oracleproduct10.1.0adminCLNEcreate路径下的create_control_open.sql脚本,创建一组新的控制文件。
步骤五:恢复克隆数据库
步骤四已经为CLNE数据库创建了一组新的控制文件,由于数据文件是打开数据库备份的,所以必须对这些归档日志进行恢复。无论采用完全或不完全恢复,需使用PRACTICE的归档日志文件:
命令通知CLNE实例在PRACTICE数据库的归档目的路径中寻在用于恢复的归档日志,在这里采用取消式恢复:
在提示下至少应用过一个归档日志文件,通过应用重做日志,所有的数据文件都将提升到同样的SCN。如果要进行完全恢复,可以采用如下两种选择:
如果恢复了CLNE数据库,将看到MEDIA RECOVERY COMPLETE。需要注意数据库不断写入到当前联机日志,所以在PRACTICE数据库打开是不要尝试应用PRACITCE当前重做日志到CLNE中。
步骤六:打开克隆数据库
截至恢复被取消或完成的消息之后,使用RESETLOG选项打开数据库:
------------------------------------实验没有开归档,用的是不完全恢复-------------------------------------------------
SQL> shutdown abort;
ORACLE 例程已经关闭。
SQL> @D:oracleproduct10.2.0adminorcl02createcreate_control_open.sql;
ORACLE 例程已经启动。
Total System Global Area 167772160 bytes
Fixed Size 1247876 bytes
Variable Size 92276092 bytes
Database Buffers 67108864 bytes
Redo Buffers 7139328 bytes
控制文件已创建。
ORA-00279: ?? 579694 (? 10/26/2011 23:50:56 ??) ???? 1 ????
ORA-00289: ??:
D:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCL02ARCHIVELOG2011_10_27O1_MF_
1_3_%U_.ARC
ORA-00280: ?? 579694 (???? 1) ??? #3 ?
ORA-00308: ???????? '--'
ORA-27041: ??????
OSD-04002: ????????????
O/S-Error: (OS 2) ??????????????????????
ORA-00308: ???????? 'ALTER'
ORA-27041: ??????
OSD-04002: ????????????
O/S-Error: (OS 2) ??????????????????????
ORA-00308: ???????? '--'
ORA-27041: ??????
OSD-04002: ????????????
O/S-Error: (OS 2) ??????????????????????
ORA-00308: ???????? '--'
ORA-27041: ??????
OSD-04002: ????????????
O/S-Error: (OS 2) ??????????????????????
ORA-00308: ???????? '--'
ORA-27041: ??????
OSD-04002: ????????????
O/S-Error: (OS 2) ??????????????????????
ORA-00308: ???????? 'ALTER'
ORA-27041: ??????
OSD-04002: ????????????
O/S-Error: (OS 2) ??????????????????????
ORA-00308: ???????? 'SIZE'
ORA-27041: ??????
OSD-04002: ????????????
O/S-Error: (OS 2) ??????????????????????
ORA-00308: ???????? '--'
ORA-27041: ??????
OSD-04002: ????????????
O/S-Error: (OS 2) ??????????????????????
ORA-00308: ???????? '--'
ORA-27041: ??????
OSD-04002: ????????????
O/S-Error: (OS 2) ??????????????????????
指定日志: {
Auto
ORA-00308: ????????
'D:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCL02ARCHIVELOG2011_10_27O1_MF
_1_3_%U_.ARC'
ORA-27041: ??????
OSD-04002: ????????????
O/S-Error: (OS 2) ??????????????????????
ORA-00308: ????????
'D:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCL02ARCHIVELOG2011_10_27O1_MF
_1_3_%U_.ARC'
ORA-27041: ??????
OSD-04002: ????????????
O/S-Error: (OS 2) ??????????????????????
SQL> alter databse open resetlogs;
alter databse open resetlogs
*
第 1 行出现错误:
ORA-00940: ??? ALTER ??
SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出现错误:
ORA-01113: ?? 1 ??????
ORA-01110: ???? 1: 'D:ORACLEPRODUCT10.2.0ORADATAORCL02SYSTEM01.DBF'
SQL> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;
ORA-00279: ?? 579694 (? 10/26/2011 23:50:56 ??) ???? 1 ????
ORA-00289: ??:
D:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCL02ARCHIVELOG2011_10_27O1_MF_
1_3_%U_.ARC
ORA-00280: ?? 579694 (???? 1) ??? #3 ?
指定日志: {
ORA-00308: ????????
'D:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCL02ARCHIVELOG2011_10_27O1_MF
_1_3_%U_.ARC'
ORA-27041: ??????
OSD-04002: ????????????
O/S-Error: (OS 2) ??????????????????????
SQL>
SQL> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;
ORA-00279: ?? 579694 (? 10/26/2011 23:50:56 ??) ???? 1 ????
ORA-00289: ??:
D:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCL02ARCHIVELOG2011_10_27O1_MF_
1_3_%U_.ARC
ORA-00280: ?? 579694 (???? 1) ??? #3 ?
指定日志: {
Cancel
介质恢复已取消。
SQL> alter database open resetlogs;
数据库已更改。
SQL> select * from v$instance;
INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------
HOST_NAME
----------------------------------------------------------------
VERSION STARTUP_TIME STATUS PAR THREAD# ARCHIVE
----------------- -------------- ------------ --- ---------- -------
LOG_SWITCH_WAIT LOGINS SHU DATABASE_STATUS INSTANCE_ROLE ACTIVE_ST
--------------- ---------- --- ----------------- ------------------ ---------
BLO
---
1 orcl02
ACER-AE70AD3423
10.2.0.1.0 27-10? -11 OPEN NO 1 STOPPED
INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------
HOST_NAME
----------------------------------------------------------------
VERSION STARTUP_TIME STATUS PAR THREAD# ARCHIVE
----------------- -------------- ------------ --- ---------- -------
LOG_SWITCH_WAIT LOGINS SHU DATABASE_STATUS INSTANCE_ROLE ACTIVE_ST
--------------- ---------- --- ----------------- ------------------ ---------
BLO
---
ALLOWED NO ACTIVE PRIMARY_INSTANCE NORMAL
NO
SQL> select * from distributors ;
DID NAME
---------- ----------------------------------------
1 test01
2 test02
SQL>
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8337095/viewspace-1055974/ ,如需转载,请注明出处,否则将追究法律责任。