利用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参数来控制恢复到具体时间点。