在这里,我们选用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