利用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参数来控制恢复到具体时间点。
转载于:https://blog.51cto.com/rainzl/1162851