最近一个项目使用到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;
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;
(缺图待补)
至此,克隆关闭数据库的整个过程结束!