全部博文(389)
分类: Oracle
2014-11-27 17:14:43
Oracle DataGuard Far Sync Instance配置
Far Sync Instance(以下简单FSI)是Oracle 12C DataGuard(以下简称DG)的一个新特性,FSI的作用是一个日志中转站.
在以前的版本中主库的日志直接转发到备库上,通过引入FSI后,主库转发日志到FSI上,再由FSI转发到备库上。通过该功
能可以实现减轻主库的压力,比如主库和FSI之间可以配置成sync affrim模式,再由FSI和备库配成async模式.而主库可以
和FSI位置很近,减少到远端的备库的延迟等等各种好处.FSI需要Active Dataguard的单独许可.
在原来已经配置好的一个主备环境中,在加入一个FSI,使用FSI来转发日志.FSI只有控制文件和Standby Redolog,没有自
己的数据文件
1, 在主库上创建一个控制文件用来做为FSI的控制文件
SQL> alter database create far sync instance controlfile as '/home/oracle/controlfar.ctl';
Database altered.
SQL> create pfile='/home/oracle/far.ora' from spfile;
File created.
2,在FSI的机器上,定义一个far实例,该实例充当FSI
[oracle@fsi ~]$ export ORACLE_SID=far
[oracle@fsi ~]$ cd $ORACLE_HOME/dbs
[oracle@fsi dbs]$ cp orapwsys orapwfar --拷贝原主库的密码文件到FSI的机器上
3,在fsi的机器上,对far实例进行静态注册
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = far)
(ORACLE_HOME = /u01/app/oracle/product/12.1/db_1)
(SID_NAME = far)
)
)
4,在主库上增加一个到far的TNS条目
far =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.245.101)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = far)
)
)
5,修改far的参数,启动mount实例,然后增加STANDBY LOGFILE
*.compatible='12.1.0.0.0'
enable_pluggable_database=true
*.control_files='/u01/app/oracle/far/controlfar.ctl'
*.db_block_size=8192
*.db_create_file_dest='/u01/app/oracle/oradata'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=sysXDB)'
*.log_archive_dest_1='location=/u01/app/oracle/archfar valid_for=(ALL_LOGFILES,ALL_ROLES) db_unique_name=far'
*.log_archive_dest_2='service=dgtt valid_for=(standby_logfiles,standby_role) db_unique_name=dgtt'
*.sga_target=460m
*.open_cursors=300
*.processes=500
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=555
db_unique_name=far
db_name=sys
fal_server='sys'
log_archive_config='DG_CONFIG=(dgtt,far,sys)'
SQL> startup pfile='/home/oracle/far.ora' mount force;
ORACLE instance started.
Total System Global Area 480182272 bytes
Fixed Size 2289784 bytes
Variable Size 373297032 bytes
Database Buffers 96468992 bytes
Redo Buffers 8126464 bytes
Database mounted.
SQL> create spfile from pfile='/home/oracle/far.ora';
File created.
SQL> startup mount force
SQL> alter database add standby logfile group 4 '/home/oracle/4.log' size 50m;
SQL> alter database add standby logfile group 5 '/home/oracle/5.log' size 50m;
仅测试目的放到/home/oracle目录下
6,修改主库参数设置
SQL> alter system set log_archive_config='DG_CONFIG=(far,sys,dgtt)';
SQL> alter system set log_archive_dest_2='service=far valid_for=(online_logfiles,primary_role) db_unique_name=far';
System altered.
7,在备库上修改参数
SQL> alter system set log_archive_config='DG_CONFIG=(far,sys,dgtt)';
System altered.
到此使用FSI来中继日志传输的配置已经完成,在主库上模拟日志切换,可以发现主,FSI,备库中的alert.log中都有反映。当我们
手动关闭FSI后,发现在主库和备库的alert.log报错,在主库上模拟日志切换,发现已经不能传到备库上去了,证明我们的FSI的配
置已经实现了。