利用RMAN来复制数据库
一 创建AUXILIARY数据库 1.创建AUXILIARY数据库的密码文件 orapwd file=D:\oracle\product\10.2.0\oradata\orcl_aux\orclaux.pwd password=orcl entries=10; 2.创建AUXILIARY数据库实例 oradim -new -sid orclaux 3.使用sqlplus连接AUXILIARY数据库实例 set oracle_sid=orclaux sqlplus / as sysdba 4.创建参数文件。 新建文本文件,添加一下内容: DB_NAME=orclaux CONTROL_FILES=(D:\oracle\product\10.2.0\oradata\orcl_aux\control01.ctl,D:\oracle\product\10.2.0\oradata\orcl_aux\control02.ctl) sga_target=290455552 #这里需要写上版本号。如不写会报ORA-01130等错 *.compatible='10.2.0.1.0' 保存为orclaux.ora 在sqlplus中用刚刚保存的文件创建spfile文件 SQL> create spfile from pfile='D:\oracle\product\10.2.0\oradata\orcl_aux\orclaux.ora'; 5.启动数据库到nomount阶段 SQL> startup force nomount;二利用RMAN复制数据库。
1.用RMAN分别连上主数据库和AUXILIARY数据 rman target sys/orcl@orcl auxiliary sys/orcl@orclaux 注:如果出现ORA-04031: 无法分配 180 字节的共享内存,请在辅助数据库的参数文件里把内存sga_target加大一点。 2.执行复制脚本 RUN { # set new filenames for the datafiles SET NEWNAME FOR DATAFILE 1 TO 'D:\oracle\product\10.2.0\oradata\orcl_aux\SYSTEM01.DBF'; SET NEWNAME FOR DATAFILE 2 TO 'D:\oracle\product\10.2.0\oradata\orcl_aux\UNDOTBS01.DBF'; SET NEWNAME FOR DATAFILE 3 TO 'D:\oracle\product\10.2.0\oradata\orcl_aux\SYSAUX01.DBF'; SET NEWNAME FOR DATAFILE 4 TO 'D:\oracle\product\10.2.0\oradata\orcl_aux\USERS01.DBF'; SET NEWNAME FOR DATAFILE 5 TO 'D:\oracle\product\10.2.0\oradata\orcl_aux\EXAMPLE01.DBF'; SET NEWNAME FOR TEMPFILE 1 TO 'D:\oracle\product\10.2.0\oradata\orcl_aux\TEMP01.DBF'; DUPLICATE TARGET DATABASE TO orclaux SKIP TABLESPACE EMR LOGFILE 'D:\oracle\product\10.2.0\oradata\orcl_aux\redo01.log' SIZE 50m, 'D:\oracle\product\10.2.0\oradata\orcl_aux\redo02.log' SIZE 50m, 'D:\oracle\product\10.2.0\oradata\orcl_aux\redo03.log' SIZE 50m;};脚本说明:
SET NEWNAME : 将数据文件重命名。 DUPLICATE TARGET DATABASE TO orclaux SKIP TABLESPACE :复制数据库,跳过制定的表空间执行后复制成功。
如果需要不完全恢复一张表,可以加上在 DUPLICATE 命令后加上until参数来控制恢复到具体时间点。