使用RMAN的duplicate命令来创建一个辅助数据库,该辅助数据库一但创建成功就和源数据库脱离了关系,可以使用辅助数据库做一些实验。
本文利用源数据库在本机的其他目录中创建一个辅助数据库。
源数据库:
SID = ORCL
辅助数据库:
SID = DUP
源数据库和辅助数据库的物理文件目录见下面initDUP.ora.
执行orapwd命令来创建秘钥文件,远程登录数据库时就需要秘钥文件中所保存的密码。
命令:
$: orapwd file=orapwDUP password=oracle entries=30
秘钥文件的格式为orapwSID,我们的辅助数据库SID为DUP。
DB_NAME='DUP' shared_pool_size=163577856 control_files='/u01/app/oracle/oradata/DUP/controlfile/o1_mf_blt7js24_.ctl','/u01/app/oracle/oradata/DUP/controlfile/o1_mf_blt7js9b_.ctl' db_block_size=8192 DB_FILE_NAME_CONVERT=('/u01/app/oracle/oradata/ORCL/datafile','/u01/app/oracle/oradata/DUP/datafile') LOG_FILE_NAME_CONVERT=('/u01/app/oracle/oradata/ORCL/onlinelog','/u01/app/oracle/oradata/DUP/onlinelog')我们的辅助数据库中只有这必要的6个参数。因为我们是在同一台机器上创建辅助数据库,所以辅助数据库和源数据库的数据文件目录和联机日志文件目录必然不同,所以需要对目录进行转换,最后后两个参数就是源数据库和辅助数据库数据文件和联机日志文件的目录转换。
然后sqlplus连接上辅助数据库上,注意转换环境变量$ORACLE_SID。(使用export ORACLE_SID=DUP命令进行转换)
使用initDUP.ora来创建spfile:
SQL>create spfile from pfile。
由于此时辅助数据库并没有控制文件,所以只把数据库启动到nomount状态
SQL> startup nomount;
为辅助数据库DUP创建监听,在已有的监听器LISTENER中将数据库DUP添加进来就可以了,可以在Linux使用netca和netmgr两个工具来完成,也可以在$ORACLE_HOME/netwaork/admin/listener.ora中创建如下文本:
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = ORCL) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1) (SID_NAME = ORCL) ) (SID_DESC = (GLOBAL_DBNAME = DUP) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1) (SID_NAME = DUP) ) ) LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.159.155)(PORT = 1521)) )修改$ORACLE_HOME/network/admin/tnsnames.ora
ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.159.155)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL) ) ) DUP = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.159.155)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DUP) ) )配置完上述两个文件后,记得将监听进程LISTENER启动起来
$ lsnrctl start
因为我们要使用rman连接源数据库,所以必须将源数据库启动到mount或open状态。
将ORACLE_SID切换为ORCL后
sql> startup
需要使用源数据库的备份来创建辅助数据库,使用rman连接到ORCL数据库上,使用list backup查看是否有备份,保险起见,可以重新做个全备。
使用rman连接到源数据库和辅助数据库上
$ rman target sys/xxxxx@orcl auxiliary sys/orcl@dup
然后执行如下命令进行复制
run {
allocate channel c1 device type disk;
duplicate target database to dup;
}
命令执行完毕后就可以连接到辅助数据库进行操作了。
参考文献:
《涂抹Oracle》
原文地址:http://blog.csdn.net/tom555cat/article/details/45567219