RMAN duplicate On Windows7

数据库版本:Oracle Database 10g Enterprise Edition Release 10.2.0.3.0

操作系统:win7

ORACLE_BASE=D:ORACLE

ORACLE_HOME=D:oracleproduct10.2.0db10g

前提:Oracle 10g软件已经安装完毕,已经具备一个主库;

1、设置环境变量

C:>set oracle_sid=dupdb

2、建立目录

mkdir D:oracleadmindupdbadump

mkdir D:oracleadmindupdbcdump

mkdir D:oracleadmindupdbbdump

mkdir D:oracleadmindupdbudump

3、在windows 通过oradim创建Oracle实例

C:>oradim -new -sid dupdb

实例已创建。

[@more@]

3、创建密码文件

C:>orapwd file=D:oracleproduct10.2.0db10gdatabasePWDdupdb.ora password=dupdb entries=5

4、通过文本编辑器在D:oracleproduct10.2.0db10gdatabase目录下创建名为initdupdb.ora的初始化参数文件,具体内容如下:
*.db_name='dupdb'
*.control_files='D:oracleoradatadupdbcontrol01.ctl','D:oracleoradatadupdbcontrol02.ctl','D:oracleoradatadupdbcontrol03.ctl'
*.user_dump_dest='D:oracleadmindupdbudump'
*.audit_file_dest='D:oracleadmindupdbadump'
*.background_dump_dest='D:oracleadmindupdbbdump'
*.core_dump_dest='D:oracleadmindupdbcdump'
*.pga_aggregate_target=149946368
*.sga_target=450887680
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
db_file_name_convert=('D:oracleoradatakuqlan','D:oracleoradatadupdb')
log_file_name_convert=('D:oracleoradatakuqlan','D:oracleoradatadupdb')


5、启动实例到nomount到状态,并形成spfile(CREATE SPFILE FROM PFILE=auxiliary_instance_pfile;)

C:>set oracle_sid=dupdb
C:>sqlplus / as sysdba
SQL> create spfile from pfile;
SQL> shutdown immediate;
SQL> startup nomount;
SQL>

6、网络配置,实现两个实例的可达性
cd D:oracleproduct10.2.0db10gnetworkADMIN>
编辑listener.ora和tnsname.ora
listener.ora
# listener.ora Network Configuration File: D:oracleproduct10.2.0db10gNETWORKADMINlistener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:oracleproduct10.2.0db10g)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = kuqlan)
(ORACLE_HOME = D:oracleproduct10.2.0db10g)
(SID_NAME = kuqlan)
)
(SID_DESC =
(GLOBAL_DBNAME = dupdb)
(ORACLE_HOME = D:oracleproduct10.2.0db10g)
(SID_NAME = dupdb)
)
)

LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = XJNT-OSC-YSP)(PORT = 1521))
)


--tnsnames.ora文件内容:
kuqlan =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = xjnt-osc-ysp)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = kuqlan)
)
)

dupdb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = xjnt-osc-ysp)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = dupdb)
)
)

验证网络配置是否正确:
C:UsersAdministrator>lsnrctl stop
C:UsersAdministrator>lsnrctl start
C:UsersAdministrator>sqlplus /nolog
SQL*Plus: Release 10.2.0.3.0 - Production on 星期二 5月 2
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
SQL> conn sys/dupdb@dupdb as sysdba;
已连接。
SQL> conn sys/kuqlan@kuqlan as sysdba;
已连接到空闲例程。
C:UsersAdministrator>rman target sys/kuqlan@kuqlan auxiliary sys/dupdb@dupdb
恢复管理器: Release 10.2.0.3.0 - Production on 星期二 5月 22 11:15:33 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
已连接到目标数据库 (未启动)
已连接到辅助数据库: DUPDB (未装载)
RMAN>


7、将主库(target database)改为archive log 模式
C:>set oracle_sid=kuqlan
C:>sqlplus / as sysdba
SQL> startup mount
SQL> alter database archivelog;
SQL>

8、备份主库(target database)

C:UsersAdministrator>rman target /
RMAN> backup database
2> format 'F:rmanfulldb_%U'
3> plus archivelog format 'F:rmanarch_%d_%T_%s';
RMAN>


9. 备份和归档日志的传送,因在同一台机子,因此不用传送。

10. 通过RMAN对主库进行dupdblicate

C:UsersAdministrator>rman target sys/kuqlan@kuqlan auxiliary sys/dupdb@dupdb
恢复管理器: Release 10.2.0.3.0 - Production on 星期二 5月 22 11:15:33 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
已连接到目标数据库 (未启动)
已连接到辅助数据库: DUPDB (未装载)

RMAN>run
{
ALLOCATE AUXILIARY CHANNEL aux1 DEVICE TYPE DISK;
DUPLICATE TARGET DATABASE TO dupdb
LOGFILE GROUP 1 ('D:oracleoradatadupdbREDO1.log') SIZE 5M,
GROUP 2 ('D:oracleoradatadupdbREDO2.log') SIZE 5M,
GROUP 3 ('D:oracleoradatadupdbREDO3.log') SIZE 5M
NOFILENAMECHECK;
}


duplicate过程中出现的错误及参考命令:


错误1:

启动 restore 于 23-5月 -12

通道 aux1: 正在开始恢复数据文件备份集
通道 aux1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到D:ORACLEORADATADUPDBSYSTEM01.DBF
正将数据文件00002恢复到D:ORACLEORADATADUPDBUNDOTBS01.DBF
正将数据文件00003恢复到D:ORACLEORADATADUPDBSYSAUX01.DBF
正将数据文件00004恢复到D:ORACLEPRODUCT10.2.0DB10GRDBMSADMINUSERS01.DBF
通道 aux1: 正在读取备份段 F:RMANFULLDB_0PNBMQV8_1_1

故障转移到上一个备份
RMAN>

因主库为手工建立的,在创建用户表空间是不小心指错位置,而这个位置跟初始化参数文件的db_file_name_convert参数内容不一致导致的;
处理方法为删除users表空间后重建到正确的目录,然后对主库重新进行全备份,然后再进行duplicate,users表空间重建过程如下:

SQL> conn sys/kuqlan@kuqlan as sysdba
已连接。
SQL> drop tablespace users including contents and datafiles;
表空间已删除。
SQL> CREATE TABLESPACE users LOGGING
2 DATAFILE 'D:oracleoradatakuqlanusers01.dbf'
3 SIZE 25M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED
4 EXTENT MANAGEMENT LOCAL;

表空间已创建。

错误2:
释放的通道: aux1

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: Duplicate Db 命令 (在 05/23/2012 12:18:43 上) 失败
RMAN-06136: 来自辅助数据库的 ORACLE 错误: ORA-01503: CREATE CONTROLFILE 失败
ORA-01130: 数据库文件版本 10.2.0.3.0 与 ORACLE 版本 10.2.0.0.0 不兼容
ORA-01110: 数据文件 1: 'D:ORACLEORADATADUPDBSYSTEM01.DBF'

是因为被duplicate数据库的初始化文件里的没有*.compatible='10.2.0.3.0'参数,而主库上有这个参数导致的。

错误3:
SQL> create spfile from pfile;
create spfile from pfile
*
第 1 行出现错误:
ORA-00600: internal error code, arguments: [kspsetpao1], [462], [415], [*],
[user_dump_dest], [27], [], []

查看原因发现参数文件的core_dump_dest='D:oracleadmindupdbcdump' 少了一个单引号

参考的命令:


删除过期时效的备份片
crosscheck backup
list expired backup
delete expired backup;

删除无效arc
crossecheck archivelog all
list expired archivelog all
delete expired archivelog all

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/18841027/viewspace-1058322/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/18841027/viewspace-1058322/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值