辅助实例是创建副本数据库的重要一步,一般而言会有下列几个步骤,有些你已经听说了,有些,你还从未听过。。。。。。。:
一、创建辅助实例的密码文件(Create an Oracle Password File for the Auxiliary Instance)
Oracle 提供了一个创建密码文件的命令:ORAPWD。该命令有两种调用 方式 ,带参调用和不带参调用。
不带参调用时,会返回该命令的调用方式 和参数形式 。
F:\oracle>orapwd
Usage: orapwd file= password= entries= force=
where
file - name of password file (mand),
password - password for SYS (mand),
entries - maximum number of distinct DBA and force - whether to overwrite existing file (opt),OPERs (opt),
There are no spaces around the equal-to (=) character.
File 表示文件名称和路径,password表示sys用户密码,entries指定拥有sys权限的用户最大数,force表示如果文件存在是否覆盖。File和password为必填参。
该命令使用非常简单,不详述了,举示例如下:
F:\oracle> orapwd file=F:\oracle\product\10.2.0\db_1\database\PWDjssdup.ora password=verysafe:) entries=30
二、 连接到实例(Establish Oracle Net Connectivity to the Auxiliary Instance)
注意,如果是windows环境,需要首先通过ORADIM命令创建一个新的OracleService,linux环境可以跳过这一步,我是说,跳过oradim这步。本小节其它操作还是要做的。
F:\oracle> oradim -new -sid jssdup
实例已创建。
F:\oracle>set oracle_sid=jssdup
F:\oracle>sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 10月 18 17:26:03 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
已连接到空闲例程。
然后就是配置监听啦,修改tnsname.ora之类,总之就是你要能够连接到这个辅助实例上来才算了事。
三、 创建辅助实例的初始化参数文件(Create an Initialization Parameter File for the Auxiliary Instance)
由于是手工建库,相应目录也需要自己手工创建:
F:\oracle>md product\10.2.0\admin\jssdup
F:\oracle>cd product\10.2.0\admin\jssdup
F:\oracle\product\10.2.0\admin\jssdup>md adump bdump cdump dpdump pfile udump
1. 首先创建本地初始化参数文件,比着原库的pfile改改就是,内容不需要太多,DB_NAME,CONTROL_FILES两项参数为必须项。 本例中副本数据库与主库在同一台机器,所以需要注意DB_NAME不能相同。 同时还有一些其它参数,反正你就看着改吧,觉着必须的话就用上。
注意:辅助实例的 BLOCK SIZE 必须与目标库相同。如果目标库的参数文件包括DB_BLOCK_SIZE的参数,你必须指定辅助实例中该参数的值与目标库相同。如果目标库的参数文件中未指定该参数,则辅助实例的参数文件中也不必指定。
如果是复制到一个新系统或新站点的话,还需要注意各项初始化参数中的路径,必须确认该路径对于你的复制是有效的。
下面是三思操作时的示例,为了省事参数设置非常简单。实际上还可以更简单,比如只保留前6项。当然最简单的就是只保留前3项。呵呵,这就得你自己根据实际情况定了,但是需要注意第3项,虽然官方文件中并没有声明shared_pool_size为必须项,但如果该项不指定或者指定了较小值,在执行RMAN时都极可能报错,建议此处设定的值不要太小,我这里设置接近200M。
db_name=¨jssdup¨
control_files=¨F:\oracle\oradata\jssdup\control01.ctl¨,¨F:\oracle\oradata\jssdup\control02.ctl¨,¨F:\oracle\oradata\jssdup\control03.ctl¨
shared_pool_size=200000000
db_block_size=8192
db_file_name_convert=(¨F:\oracle\oradata\jssweb¨,¨F:\oracle\oradata\jssdup¨)
log_file_name_convert=(¨F:\oracle\oradata\jssweb¨,¨F:\oracle\oradata\jssdup¨)
audit_file_dest=¨F:\oracle\product\10.2.0\admin\jssdup\adump¨
background_dump_dest=¨F:\oracle\product\10.2.0\admin\jssdup\bdump¨
compatible=¨10.2.0.1.0¨
core_dump_dest=¨F:\oracle\product\10.2.0\admin\jssdup\cdump¨
user_dump_dest=¨F:\oracle\product\10.2.0\admin\jssdup\udump¨
2. 通过CREATE SPFILE命令创建服务器端初始化参数文件
这一步也并非完全必须,如果你愿意在执行duplicate命令时指定pfile参数的话呢,也可以不用创建spfile。一般情况下,除非脑袋被门挤了,没人愿意采用麻烦的方式专门自己给自己找不痛快吧。更何况spfile是做为oracle9i以来的一项进步而存在,其优势就不用多提了吧:)
四、 启动辅助实例(Start the Auxiliary Instance)
接着上一步,创建完spfile之后:
SQL> startup force nomount;
ORACLE 例程已经启动。
Total System Global Area 117440512 bytes
Fixed Size 1247588 bytes
Variable Size 58721948 bytes
Database Buffers 50331648 bytes
Redo Buffers 7139328 bytes
SQL>
重启实例以加载服务器端初始化参数文件。
由于尚无控制文件,你也只能将其启动到nomount模式 。Oracle说,千万 不要尝试去创建控制文件,或者加载到mount或open状态。
RMAN 重启辅助实例是复制操作的一部分。因此,默认情况下创建服务器端的初始化参数文件是最佳选择。哎,又回老话题上了。如果没能创建服务器端初始化参数文件的话,你就必须指定客户端初始化参数文件做为duplicate的参数。
五、 Mount 或open目标数据库(Mount or Open the Target Database)
六、 确认拥有必备的备份(Make Sure You Have the Necessary Backups and Archived Redo Logs)
七、 分配辅助通道(Allocate Auxiliary Channels if Automatic Channels Are Not Configured)
首先 运行rman连接到目标数据库和辅助实例 ( 如果有catalog的话,可以同时指定catalog ) 。如果辅助实例是通过客户端初始化参数文件启动的话,该文件在运行rman的客户端也必须存在。
F:\oracle>set oracle_sid=jssweb
### 目标数据库使用操作系统认证,所以首先设置SID
F:\oracle>rman target / auxiliary sys/verysafe:)@jssdup
恢复管理器: Release 10.2.0.1.0 - Production on 星期五 10月 19 15:03:10 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到目标数据库: JSSWEB (DBID=3402005373)
已连接到辅助数据库: JSSDUP (未装载)
RMAN>
辅助实例的事儿基本上就完了,最后一步是分配通道。如果你没有设置自动分配通道的话,那么在运行duplicate命令之前,至少要手工指定一个通道。通道是在RMAN的RUN块中指定,如下例:
RUN
{
# 手工分配通道类型为sbt:
ALLOCATE AUXILIARY CHANNEL ch1 DEVICE TYPE sbt;
# 手工分配通道类型为disk
# 通道名为自定义
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;
}
如果备份文件保存在磁盘上,分配的通道越多则速度越快,如果备份文件在磁带上,最少指定设备数量个通道。
|