如何利用Direct NFS克隆Oracle数据库(二)

2015-07-16 12:09:09 · 作者: · 浏览: 2
“BACKUP AS COPY”(不支持rman备份集)


在这里,我们选用rman备份


以oracle身份登录node1


[oracle@node1 ~]$ rman target /
RMAN> sql 'alter database begin backup';
RMAN> backup as copy database format '/backup/prod/%U';
RMAN> sql 'alter database end backup';


备份完毕后,查看/backup/prod中的备份文件


?


[oracle@node1 ~]$ ll /backup/prod/
total 1294792
-rw-r-----. 1 oracle asmadmin? ? 98304 Apr 24 00:26 0cq553i6_1_1
-rw-r-----. 1 oracle asmadmin? 9748480 Apr 24 00:26 cf_D-PROD_id-289579616_0aq553hp
-rw-r-----. 1 oracle asmadmin 513810432 Apr 24 00:26 data_D-PROD_I-289579616_TS-SYSAUX_FNO-2_08q553gd
-rw-r-----. 1 oracle asmadmin 765468672 Apr 24 00:25 data_D-PROD_I-289579616_TS-SYSTEM_FNO-1_07q553dp
-rw-r-----. 1 oracle asmadmin? 31465472 Apr 24 00:26 data_D-PROD_I-289579616_TS-UNDOTBS1_FNO-3_09q553hj
-rw-r-----. 1 oracle asmadmin? 5251072 Apr 24 00:26 data_D-PROD_I-289579616_TS-USERS_FNO-4_0bq553i5
drwx------. 2 root? root? ? ? ? 16384 Apr 23 19:45 lost+found


?


其中cf_D-PROD_id-289579616_0aq553hp为控制文件的备份


六、为克隆数据库创建pfile


登录生产数据库


[oracle@node1 ~]$ sqlplus / as sysdba


生成pfile


SQL> create pfile='/backup/prod/pfile.ora' from spfile;


修改参数文件,除将所有涉及到prod的地方改为orcl外,同时新增了一个参数CLONEDB=TRUE,这个是必需的,最后参数文件内容如下:


?


[oracle@node1 ~]$ cat /backup/prod/pfile.ora
orcl.__db_cache_size=83886080
orcl.__java_pool_size=4194304
orcl.__large_pool_size=8388608
orcl.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=125829120
orcl.__sga_target=188743680
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=83886080
orcl.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/fast_recovery_area/orcl/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=4353687552
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.memory_target=314572800
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
CLONEDB=TRUE


?


在克隆数据库中新建参数文件中涉及的目录


[oracle@node2 admin]$ mkdir -p /u01/app/oracle/admin/orcl/adump
[oracle@node2 admin]$ mkdir -p /u01/app/oracle/oradata/orcl/
[oracle@node2 admin]$ mkdir -p /u01/app/oracle/fast_recovery_area/orcl


七、克隆数据库


ORACLE官方文档中提供了两种方式,一种是利用oracle自身提供的脚本,一个是手动创建。


在这里,我们选择脚本方式,通过脚本执行过程中的输出,对比ORACLE官方文档,我们可以发现两者其实是一样的,只不过手动创建所需要的命令写到脚本里面去了。


首先在克隆数据库所在的主机上设置环境变量


[oracle@node2 ~]$ export MASTER_COPY_DIR=/prod/backup
[oracle@node2 ~]$ export CLONE_FILE_CREATE_DEST=/u01/app/oracle/oradata/orcl
[oracle@node2 ~]$ export CLONEDB_NAME=orcl


其中MASTER_COPY_DIR指的是备份所在的目录,CLONE_FILE_CREATE_DEST指的是数据文件、日志文件、控制文件所在的目录??CLONEDB_NAME指定数据库名


执行数据库提供的perl脚本,关于脚本所在的目录及其执行的方式,我们来看看官方的说明:


?


因为我的数据库版本为11.2.0.4,故直接COPY到home目录下


[oracle@node2 ~]$ cp /u01/app/oracle/product/11.2.0.1/db_1/rdbms/install/clonedb.pl ~


执行脚本


[oracle@node2 ~]$ perl clonedb.pl /prod/backup/pfile.ora crtdb.sql dbren.sql


在/home/oracle下会生成两个文件,crtdb.sql和dbren.sql


登录数据库,执行crtdb.sql


?


[oracle@node2 ~]$ sqlplus / as sysdba


SQL*Plus: Release 11.2.0.4.0 Production on Fri Apr 24 18:26:46 2015


Copyright (c) 1982, 2013, Oracle.? All rights reser