辅助实例是创建副本数据库的重要一步,一般而言会有下列几个步骤
一、创建辅助实例的密码文件
orapwd file=$\database\PWDjssdup.ora password=oracle entries=30
二、连接实例
注意,windows环境需要先通过ORADIM命令创建一个新的OracleService, Linux环境可以跳过这一步,其它操作还是要继续。
oradim -new -sid jssdup
然后配置监听,修改tnsname.ora。总之能够连接上辅助实例就可以了。
三、创建辅助实例的初始化参数文件
1. 手工创建相应目录
2. 创建本地初始化参数文件并修改参数
在源数据库生成pfile
SQL> create pfile='D:\learnoracle\pfile.ora' from spfile;
用记事打开并更改相应的参数。并添加以下两参数:
db_file_name_convert='oradata\jssweb','oradata\jssdup'
log_file_name_convert='oradata\jssweb','oradata\jssdup'
3. 在辅助数据库中创建初始化参数文件-在primary数据库生成的pfile基础上修改
SQL> create spfile from pfile='D:\learnoracle\pfile.ora';
4. 启动辅助实例
接着上一步创建完spfile之后:
SQL> startup force nomount;
5. 确保源数据库处于mount或open的状态
6. 确认拥有必备的备份
7. 分配辅助通道
首先运行rman连接到目标数据库和辅助实例
set oracle_sid=orcl
rman target/ auxiliary sys/oracle@jssdup
这里可能会出现如下的错误信息:
Recovery Manager: Release 11.1.0.6.0 - Production on Wed Nov 7 01:45:35 2007 Copyright (c) 1982, 2007, Oracle. All rights reserved. connected to target database: ORA11G (DBID=4026820313) RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-00554: initialization of internal recovery manager package failed RMAN-04006: error from auxiliary database: ORA-12528: TNS:listener: all appropriate instances are blocking new connections
造成这个问题的原因是,实例虽然启动,但是没有注册到监听。实例是通过PMON进程注册到监听上的,而PMON进程需要在MOUNT状态下才会启动。因此造成了上面的错误。
Oracle给出了两种解决方案,一种方法是对AUXILIARY数据库直接使用/,对TARGET数据库通过网络访问。
a. rman target sys/oracle@orcl auxiliary /
b. 为AUXILIARY数据库设置静态监听
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = jssdup) (ORACLE_HOME = /data/oracle/product/11.1) ) )
启动正常后分配通道。如下例:
RMAN>RUN
{
ALLOCATE AUXILIARY CHANNEL aux1 DEVICE TYPE DISK;
ALLOCATE AUXILIARY CHANNEL aux2 DEVICE TYPE DISK;
ALLOCATE AUXILIARY CHANNEL aux3 DEVICE TYPE DISK;
DUPLICATE TARGET DATABASE TO jssdup;
release channel aux1;
release channel aux2;
release channel aux3;
}
执行到这一步辅助实例就已创建完成了:)
删除辅助数据库
-只须通过dbca即可