数据库版本: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/