联系:手机/微信(+86 17813235971) QQ(107644445)
标题:oracle数据库复制
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
oracle数据库复制就是对当前的库进行拷贝(使用拷贝库用于测试、还原操作等)
1、本实验规划
使用的是同一个数据库服务器上做的拷贝试验
原数据库oracle_sid=orcl,准备新建数据库oracle_sid=xff,新建的数据库的文件放置符合ofm标准,也就是说,数据文件、控制文件、联机归档日志文件放置oradata/xff下面,一些日志记录文件放置在admin/xff下
2、用户管理方式复制数据库:
1)新建相关文件夹mkdir(省略)
2)准备xff的pfile文件
在orcl数据库中执行create pfile=’c:\orclpfile.txt’ from spfile;
修改orclpfile.txt文件,使用替换法,把所有的orcl替换成xff(替换的时候大致看下哦)
3)准备xff的控制文件
在orcl数据库中执行alter database backup controlfile to trace as ‘c:\b.txt’;
选择Set #2. RESETLOGS case部分,除掉其中的注释,把reuse修改为set处理后的大概结果如下:
CREATE CONTROLFILE set DATABASE "XFF" RESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 292 LOGFILE GROUP 1 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\XFF\REDO01.LOG' SIZE 50M, GROUP 2 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\XFF\REDO02.LOG' SIZE 50M, GROUP 3 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\XFF\REDO03.LOG' SIZE 50M DATAFILE 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\XFF\SYSTEM01.DBF', 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\XFF\UNDOTBS01.DBF', 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\XFF\SYSAUX01.DBF', 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\XFF\USERS01.DBF', 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\XFF\XFF01.DBF' CHARACTER SET AL32UTF8 ;
4)alter database begin backup;
开始把orcl中的数据库文件,复制到xff的文件夹中
alter database end backup;
5)在dos下执行oradim -new -sid xff -intpwd oracle(建立oracle_sid=xff,并创建用户名为sys,密码为oracle的秘密文件)(删除oradim -DELETE -SID xff )
6)在dos下执行set oracle_sid=xff,因为没有配置tns的相信,手工设置oracle_sid
7)sqlplus sys/oracle as sysdba;连接到xff数据库
8)使用startup pfile=’c:\orclpfile.txt’ nomount 把xff数据库至于nomount状态
9)使用刚刚(3)中准备的创建控制文件的脚步,创建控制文件
10)使用在xff的sqlplus 环境下使用set logsource ‘path’指定归档日志位置(path为归档日志路径),
然后使用recover database using backup controlfile until cancel;
按照提示看看对应的文件是否存在,如果不存在查找下硬盘上是否有该文件,如果都不存在,尝试着使用联机日志文件恢复
11)使用alter database open resetlogs 打开数据库
12)建立临时文件
ALTER TABLESPACE TEMP ADD TEMPFILE ‘C:\ORACLE\PRODUCT\10.2.0\ORADATA\xff\TEMP01.DBF’
SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M
13)配置listener和tns,数据库复制工作完成
3、rman复制数据库
1)备份数据库rman
backup database include current controlfile plus archivelog format=’c:\%U.bak’;
2)创建spfile文件
create spfile=’%oracle_home%\database\spfilexff.ora’ from pfile=’c:\b.txt’;
3)登录xff把数据库设置到nomount模式
4)
run{ set newname for datafile 1 to 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\XFF\SYSTEM01.DBF'; set newname for datafile 2 to 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\XFF\undotbs01.DBF'; set newname for datafile 3 to 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\XFF\sysaux01.DBF'; set newname for datafile 4 to 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\XFF\users01.DBF'; set newname for datafile 5 to 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\XFF\xff01.DBF'; set newname for tempfile 1 to 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\XFF\\TE.DBF'; duplicate target database to xff logfile 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\XFF\redo01.log' size 10m, 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\XFF\redo02.log' size 10m, 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\XFF\redo03.log' size 10m; } --note:1、需要加上temp表空间的转换,不然会报错 --2、在运行run之前,要确保在xff中的除本rman之外的所有用户均以退出
其他与用户复制oracle操作一致。和用户操作比起来,这个不用手工创建控制文件,只要创建spfile或者pfile(注意默认路径和名称)就可以了,其他的均有rman帮我们搞定
duplicate target database to xff logfile 应该改为
duplicate target database to xff nofilenamecheck logfile