ORACLE 10G DATA GUARD
准备环境vmwareworkstation 8.0+centos 4.8+oracle 10g10.2.0.5
两台服务器系统都是CentOS4.8,虚拟机网络方式NAT。
IP(primary) : 192.168.10.2
IP(standby) : 192.168.10.3
主库有oracle软件和oracle数据库
备库有oracle软件
一、配置两台服务器的监听。
下面写出主库的监听及服务名的配置。
[oracle@primaryadmin]$ more listener.ora
# listener.ora Network Configuration File:/opt/oracle/network/admin/listener.or
a
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /opt/oracle)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = primary)
(ORACLE_HOME = /opt/oracle)
(SID_NAME = ora10g)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = primary)(PORT= 1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
[oracle@primaryadmin]$ more tnsnames.ora
# tnsnames.ora Network Configuration File:/opt/oracle/network/admin/tnsnames.or
a
# Generated by Oracle configuration tools.
PRIMARY = ------------TNS名称,指向主库。
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.2)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = primary) ---与监听里面的GLOBAL_DBNAME一致。
)
)
STANDBY = --------------TNS名称,指向备库。
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.3)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = standby)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
二、主库相关操作
SQL>show parameter service_name
NAME TYPE VALUE
----------------------------------------------- ------------------------------
service_names string primary
SQL>alter database force logging;
SQL>shtudown immediate
SQL>startup mount
SQL>alter database create standby controlfile as '$ORACLE_HOME/dbs/standby01.ctl';
Databasealtered.------创建standby控制文件。
SQL>shutdown immediate
SQL>create pfile from spfile; ----创建pfile文件,并修改。
三、修改参数及传输数据。
[oracle@primary~]$ cd $ORACLE_HOME/dbs
[oracle@primarydbs]$ vi initora10g.ora 添加参数
#DGCONFIG
log_archive_dest_2='SERVICE=standby VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)' ----这个参数至关重要,SERVICE写上备库的TNS别名。
log_archive_dest_state_1=enable
log_archive_dest_state_2=enable
log_archive_format='%t_%s_%r.arc'
log_archive_max_processes=2
fal_server=standby -----备库的TNS别名
fal_client=primary -----主库的TNS别名
db_unique_name=primary
传输主库的数据文件,归档日志文件,pfile文件,密码文件,standby控制文件到备库。
Scp –r/opt/oradata/ora10g/* 192.168.10.3:/opt/oradata/ora10g ---传输数据文件
Scp –r/opt/arch/* 192.168.10.3:/opt/arch ---传输归档日志文件
Scp –r/opt/oracle/dbs/standb.ctl 192.168.10.3:/opt/oracle/dbs ---传输standby控制文件
四、备库相关设置
修改备库的pfile文件。
将DG CONFIG的部分修改如下
#DGCONFIG
log_archive_dest_state_1=enable
log_archive_dest_2='SERVICE=primaryVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)'
log_archive_dest_state_2=enable
log_archive_format='%t_%s_%r.arc'
log_archive_max_processes=2
fal_server=primary
fal_client=standby
db_unique_name=standby
生成备库的控制文件
[oracle@standbydbs]$ cp standby.ctl /opt/oradata/ora10g/
[oracle@standbydbs]$ cd /opt/oradata/ora10g/
用standby控制文件作为备库的控制文件
[oracle@standbyora10g]$ mv standby.ctl control01.ctl
五、启动主备库
主备库两边都创建spfile
Createspfile from pfile;
主库到open
备库到nomount
在备库执行:alter database mount standby database; //改变数据库模式
alter database recover managed standby database disconnect fromsession;//开始接收redo数据
在备库执行archive log list;查看归档序列号。
到主库执行日志切换。
再到备库查看归档日志序列号。
从切换日志得出的效果是日志可以传送过来。
六、主库插入一些测试数据,备库查看。
Create table dg (idint,name varchar2(10));
Insert into dgvalues(0,’hell dg’);
Insert into dgvalues(1,’oracle’);
Insert into dgvalues(2,’shit dg’);
Commit;
Alter system switchlogfile;
/
/
到备库执行:select sequence#,first_time,next_time from v$archived_log order bysequence#;
执行:selectsequence#,applied from v$archived_log order by sequence#;
其中appled值为YES表示接收完毕。
执行:alter database recover managed standby database cancel;//在10g中必须这样做
执行:alter database open read only;
查看数据
GLOBAL_DBNAME
Purpose:Identifies the global database name of the database, a name comprised of thedatabase name and database domain. You can obtain the GLOBAL_DBNAME value fromthe SERVICE_NAMES parameter in the initialization parameter file. Thisparameter must be embedded under SID_DESC and should match the value of theSERVICE_NAMES parameter.