为了最大的降低硬件需求,此处创建的data guard处于同一台机器,但其创建过程与多机并无区别。做为演示用的示例足够了,我们分两阶段配置,分别是配置primary数据库和配置standby数据库,如下:
一、 Primary 数据库配置及相关操作
1、 确认主库处于归档模式
2、 将primary数据库置为FORCE LOGGING模式。通过下列语句:
3、 创建standby数据库控制文件
4、 创建primary数据库客户端初始化参数文件
注:主要此处修改项较多,为了方便,我们首先创建并修改pfile,然后再通过pfile重建spfile,你当然也可以通过alter system set命令直接修改spfile内容。
将该初始化参数文件复制一份,做为standby数据库的客户端初始化参数文件
修改客户端初始化参数文件,增加下列内容
DB_UNIQUE_NAME=jssweb
LOG_ARCHIVE_CONFIG=¨DG_CONFIG=(jssweb,jsspdg)¨
LOG_ARCHIVE_DEST_1=¨LOCATION=E:\ora10g\oradata\jssweb\ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=jssweb¨
LOG_ARCHIVE_DEST_2=¨SERVICE=jsspdg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=jsspdg¨
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
#-------- 配置standby角色的参数用于角色转换
FAL_SERVER=jss pdg
FAL_CLIENT=jss web
DB_FILE_NAME_CONVERT=¨oradata\jsspdg¨,¨oradata\jssweb¨
LOG_FILE_NAME_CONVERT=¨oradata\jsspdg¨,¨ oradata \jssweb¨
STANDBY_FILE_MANAGEMENT=AUTO
通过pfile重建spfile
5、 复制数据文件到standby服务器(方式多样,不详述)
注意需要复制所有数据文件,备份的控制文件及客户端初始化参数文件
6、 配置listener及net service names(方式多样,不详述)。
完之后重启listener:
E:\ora10g>lsnrctl stop
E:\ora10g>lsnrctl start
通过tnsping测试tnsnames是否正确有效:
E:\ora10g>tnsping jssweb
...
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = jss)(PORT = 1521)) (CONNECT_
DATA = (SERVER = DEDICATED) (SERVICE_NAME = jssweb)))
OK (30 毫秒)
E:\ora10g>tnsping jsspdg
...
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = jss)(PORT = 1521)) (CONNECT_
DATA = (SERVER = DEDICATED) (SERVICE_NAME = jsspdg)))
OK (10 毫秒)
二、 Standby 数据库配置及相关操作
1、 通过ORADIM创建新的OracleService
2、 创建密码文件,注意保持sys密码与primary数据库一致。
E:\ora10g>orapwd file=e:\ora10g\product\10.2.0\db_1\database\PWDjsspdg.ora password=verysafe entries=30
3、 创建目录
E:\ora10g\product\10.2.0\admin\jsspdg>mkdir adump
4、 复制文件,不做过多描述
5、 修改初始化参数文件
增加下列参数:
db_unique_name=jsspdg
LOG_ARCHIVE_CONFIG=¨DG_CONFIG=(jssweb,jsspdg)¨
DB_FILE_NAME_CONVERT=¨oradata\jssweb¨,¨oradata\jsspdg¨
LOG_FILE_NAME_CONVERT=¨oradata\jssweb¨,¨oradata\jsspdg¨
LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc
LOG_ARCHIVE_DEST_1=¨LOCATION=E:\ora10g\oradata\jsspdg\ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=jsspdg¨
LOG_ARCHIVE_DEST_STATE_1=ENABLE
#--- 下列参数用于角色切换
LOG_ARCHIVE_DEST_2=¨SERVICE=jssweb LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=jssweb¨
LOG_ARCHIVE_DEST_STATE_2=ENABLE
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
FAL_SERVER=jssweb
FAL_CLIENT=jsspdg
STANDBY_FILE_MANAGEMENT=AUTO
注意同时修改*_dest的路径。
通过该pfile创建spfile
6、 启动standby到mount
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 167772160 bytes
Fixed Size 1289484 bytes
Variable Size 62915316 bytes
Database Buffers 96468992 bytes
Redo Buffers 7098368 bytes
数据库装载完毕。
7、 启动redo应用
8、 查看同步情况
首先连接到primary数据库
SQL> show parameter instance_name;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string jssweb
SQL> alter system switch logfile;
系统已更改。
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
51
连接到standby数据库
SQL> show parameter instance_name;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string jsspdg
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
51
9、 暂停应用
通过下列语句暂停redo应用。
注意,此时只是暂时redo应用,并不是停止Standby数据库,standby仍会保持接收只不过不会再应用接收到的归档,直到你再次启动redo应用为止。
哈哈,成功鸟!现在你是不是想知道怎么把standby变成primary呢?接着往下看~~~~~~~~~
|