最近一个项目使用到Oracle,由于数据库比较大,每次备份恢复时间比较长,这几天参考了较多的资料,终于成功进行了数据库克隆,欣喜之余通过图解方式把这个过程共享出来。

Oracle 10g克隆数据库步骤:

1、 准备目标数据库存放路径、配置信息等

2、 配置目标数据库控制文件脚本

3、 准备目标数据库的数据文件(通过冷备份方式进行)

4、 运行控制文件脚本

5、 打开克隆的数据库


1、 准备目标数据库存放路径、配置信息等

a) 创建目标数据库存放路径:

分别创建数据库文件 (D:\oracle\product\10.1.0\oradata\CLNE)和运行信息(D:\oracle\product\10.1.0\admin\CLNE)文件夹,其中运行信息文件夹包括bdump、cdump、create、pfile、udump五个文件夹

b) 初始化参数文件:

可以从其他数据库拷贝,进行修改。在这里拷贝源数据库PRACTICE的初始化配置文件到D:\oracle\product\10.1.0\Db_1\databas\目录中,并把该文件命名为initCLNE.ora,打开该文件把”PRACTICE”替换成”CLNE”

修改后如下图:

c) 数据库密码文件

通过命令行进行创建,放置于D:\oracle\product\10.1.0\Db_1\database\ ,文件名称为PWDCLNE.ora

命令为:orapwd file=D:\oracle\product\10.1.0\Db_1\database\PWDCLNE.ora password=CLNE entries=4



d) 创建Oracle实例服务

通过命令行进行创建,服务名称为OracleServiceCLNE

命令为:oradim –new –sid CLNE –intpwd CLNE;

 

2、 配置目标数据库控制文件脚本

在SQL PLUS以dba的身份登录PRACTICE,通过如下命令生成PRACTICE的控制文件:

ALTER DATABASE BACKUP CONTROLFILE TO TRACE RESETLOGS;

 


可以在D:\oracle\product\10.1.0\admin\PRACTICE\udump文件夹中找到创建控制文件时刻的文件,把该文件复制到D:\oracle\product\10.1.0\admin\CLNE\create中,并且更名为create_control.sql;打开该文件进行

 删除脚本中的注释行

 将CREATE CONTROLFILE REUSE DATABASE "CLNE"中的”REUSE”修改为”SET”

 将CREATE CONTROLFILE 中的”PRACTICE”修改为”CLNE”

 将每个数据文件和日志文件所在的路径由原来的/oradata/PRACTICE目录修改为/oradata/CLNE

修改后最好的结果下图:

3、 准备目标数据库的数据文件(通过冷备份方式进行)

在服务中把PRACTICE服务停止或者用Shutdown immediate等方法把源数据库关闭,然后把源数据库文件(D:\oracle\product\10.1.0\oradata\PRACTICE)拷贝到目标数据库文件夹(D:\oracle\product\10.1.0\oradata\CLNE)中 

4、 运行控制文件脚本

a) 配置TNS服务:打开D:\oracle\product\10.1.0\Db_1\NETWORK\ADMIN\ tnsnames.ora,添加目标数据库服务

b) 配置Lisenter服务:打开D:\oracle\product\10.1.0\Db_1\NETWORK\ADMIN\ listener.ora,添加目标数据库服务
(缺图待补)
c) 执行控制文件:在命令行中以NOLOG方式登录
命令为:sqlplus /nolog
  Connect sys/CLNE as sysdba
  D:\oracle\product\10.1.0\admin\CLNE\create\create_control.sql

(缺图待补)

5、 打开克隆的数据库
通过重设日志的方式打开数据库
命令为:alter database open resetlogs;

(缺图待补)

至此,克隆关闭数据库的整个过程结束!