dataguard创建物理备库几个关键参数详解

来源:互联网 发布:保密局检查软件 编辑:程序博客网 时间:2024/04/25 03:50
oracle的dataguard创建其实并不难,尤其是在11G中可以用RMAN active duplicate创建standby后,
dataguard的创建变得非常的简单便捷,如果熟悉dataguard的各项参数的意义和用法后,基本上一个脚本就能完成。
下面是我总结的一些dataguard的要点和几个关键参数详解。

     要点1:listener.ora与tnsnames.ora
  listener.ora是配置静态监听的文件,下面是一个最标准的静态监听配置文件
    LISTENER =
  ( DESCRIPTION =
     (ADDRESS = (HOST = 192.168.0.88)(PROTOCOL = TCP)(PORT = 1521))
  )
   SID_LIST_LISTENER =
  ( SID_LIST =
      (SID_DESC =
         (GLOBAL_DBNAME = ceshi)
            (ORACLE_HOME=/opt/oracle/product/11.2.0)
         (SID_NAME = test)
      )
   )
  LISTENER是监听名,SID_LIST_LISTENER部分的GLOBAL_DBNAME表示向外提供的服务名(SERVICE_NAME)(可以不需要,但建议
   加上去,并且把它和SID_NAME设成一样的,这里为了方便表述,有所区别);SID_NAME是提供注册的实例名(SID或INSTANCE_NAME)。


   下面是与之对应的tnsnames.ora配置

   TESTTNS =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.88)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ceshi)或(SID=test)
      (SERVER = DEDICATED)——可有可无
    )
  )
  这里tnsname是TESTTNS,在后面需要用到,所以起个好名字好记又好区分。 
    在主备库都设好监听,配置好tns后,相互用tnsping一下对方,看能否通信。


    要点2:主库的log_archive_dest_n(n>=2)
  这是dataguard重做传输的主要参数,通常在主库上发挥作用。log_archive_dest_n参数有许多,其中log_archive_dest_1是本地
归档目的地,从log_archive_dest_2开始设置备库目的地。下面是一个简单的log_archive_dest_2示例:

log_archive_dest_2=‘service=TESTTNS LGWR ASYNC valid_for(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=test'
这里TESTTNS就是在tnsnames.ora配置的tnsname,LGWR在以前版本中有用到,现在完全可以忽视不用,这里是为了习惯ASYNC
是异步传输的意思,与之相反的是SYNC,也就是同步传输,ASYNC是默认模式,没必要非要指定它,为了理解,我们还是加上,valid_for

里面有两个参数,第一个是日志文件的值,第二个是角色值,它是一个必需的参数,可以使用默认,但强烈不建议你使用默认,如果你在设
一个备库的目的地,强烈建议你想我一样设置,它表示当归档ORL文件,并且当前数据库是主库角色时log_archive_dest_2有效;
valid_for的参数其他合法值请百度;db_unique_name的值是备库的db_unique_name,默认值是跟主库的db_unique_name,也就是说
如果主备库的db_unique_name一样,你也可以不设置,但建议还是设一下,这个db_unique_name与下面说到的log_archive_config是有
相关性的,主要是为了RAC数据库。log_archive_dest_2还有其他一些其他参数,不设置不影响使用。所以假设你要在创建dataguard备机,
上面的足够了,而且你在主(备)库设置的时候,只需要替换service和db_unique_name即可.
有了log_archive_dest_n,主库就会主动去联系备库,让备库接收归档日志。


  要点3:备库FAL_SERVER和FAL_CLIENT
前面的log_archive_dest_n,主库可以给备库传正在归档的日志,但如果备库缺少一些早些时候的归档日志怎么办?首先,主库是不会去
查备库却不缺少归档日志的,备库才会自己查,自己缺少哪些归档日志,所以这个时候备库要去主库找归档日志,那这个主库是谁?
这个时候FAL_SERVER就起作用了,它会告诉备库这个主库的tnsname,备库根据这个tnsname找到主库,并告诉主库自己缺少的归档日志。备库
告诉主库自己缺少归档日志时,会同时把FAL_CLIENT的值告诉主库,这个FAL_CLIENT的值要对应主库的tnsname.ora文件里的备库的tnsname
,这样主库就知道自己该往哪传,传哪些归档日志了。事实上如果我同时有两个甚至更多备库,其中一个备库缺少归档日志,除了去主库找外,

也可以去其他备库找,也就是说FAL_SERVER的值可以是多个,例如:FAL_SERVER='PRIMARY,STANDBY2',当然FAL_CLIENT有且只有一个。

其他参数的推荐设置:
standby_file_management='auto'——用于物理备库,表示在主库添加数据文件时,备库也同时添加
db_unique_name——数据库唯一名称,主备库一样都没关系,最好和SID一样,好记
log_archive_config——枚举所有主备库的db_unique_name,把所有主备库的db_unique_name加上去就行了
例如:log_archive_config=‘dg_config=(test,test1)'

有了上面这几个参数,基本上就足够了,前提是主备库的目录一致(数据文件目录,日志文件目录,归档日志文件目录呀都一样)。话说,做
备库不就是要一样的吗。所以做备库最好这些目录都跟主库一致。

记住3个要点和下面的3个参数,做dataguard时就会心中有数,不会这也错,那也错。在我做dataguard的过程中,99%的出错都跟上面

的设置有关系。



0 0
原创粉丝点击