oracle11g dataguard 完全手册.docx

上传人:b****0 文档编号:12484816 上传时间:2023-04-19 格式:DOCX 页数:34 大小:34.05KB
下载 相关 举报
oracle11g dataguard 完全手册.docx_第1页
第1页 / 共34页
oracle11g dataguard 完全手册.docx_第2页
第2页 / 共34页
oracle11g dataguard 完全手册.docx_第3页
第3页 / 共34页
oracle11g dataguard 完全手册.docx_第4页
第4页 / 共34页
oracle11g dataguard 完全手册.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

oracle11g dataguard 完全手册.docx

《oracle11g dataguard 完全手册.docx》由会员分享,可在线阅读,更多相关《oracle11g dataguard 完全手册.docx(34页珍藏版)》请在冰豆网上搜索。

oracle11g dataguard 完全手册.docx

oracle11gdataguard完全手册

oracle11gdataguard完全手册

一、前言:

  网络上关于dataguard的配置文章很多,但是很多打着oracle11g的文章实际都是只能在910上运行,比如FAL_CLIENT在11g中已经废弃,但是现在网络上的文章都是没有标注这一点。

而且对于具体含义语焉不详对于新手只能知其然而不知其所以然。

这篇文章我就想让像我这样的人对于dataguard配置不仅仅知道怎么配置,还要知道为什么需要这样配置,这样的效果才是最好的。

 这篇文章不仅仅是记录如何配置,还介绍了为什么是这样,以及注意要点,我希望这个文章可以作为进行dataguard配置的一个参考手册。

二、前提

1.主库是归档模式:

 如果我们不清楚为什么是归档模式,那我们就应该也不会清楚dataguard是用来做什么的。

透过很多修饰的官方语言,我们需要明确DG(dataguard简称,后同)实际上的作用就是用来高可用。

而实现原理就是从主库获取数据到从库,在主库发生异常的时候,从库接管主库,完成身份的变化。

可以一个主库,最多9个从库。

同时分为逻辑standby和物理standby这里我们讨论的是物理standby.

  一旦创建并配置成standby后,dg负责传输primary数据库redodata到standby数据库,standby数据库通过应用接收到的redodata保持与primary数据库的事务一致。

  这下清楚了吧,需要保证主从库一致,需要传输archivelog和redolog到从库,如果不是归档模式无法保证主从库的数据一致。

2.从库只需要安装数据库软件,数据从主库传输后完成。

3.很多人说11g有了activedataguard(ADG),逻辑standby实际上已经没什么用处了。

4.主从库硬件最好一致。

oracle数据库版本需要一致。

 

(1)内存检查项:

    #grepMemTotal/proc/meminfo

    交换分区检查项:

如果内存在1-2G,swap是1.5倍;2-16G,1倍;超过16G,设置为16G即可。

    #grepSwapTotal/proc/meminfo

    查看共享内存大小:

    #df-h/dev/shm

  

(2)查看系统处理器架构,与oracle安装包一致

    #uname-m

  (3)空间空间/tmp必须大于1G

    #df-h/tmp

5.配置环境数据库用户必须有sysdba权限

6.后面的环境:

主库192.168.215.101数据库实例名:

orcl       db_unique_name:

orcl

             从库192.168.215.102数据库实例名:

orcl      db_unique_name:

orcldg

三、配置

1.判断DG是否已经安装:

 select*fromv$optionwhereparameter='OracleDataGuard';

 如果是true表示已经安装可以配置,否则需要安装相应组件。

2.设置主库为强制记录日志。

 默认情况下数据库操作会记录redolog,但是在一些特定的情况下可以使用nologging来不生成redo信息

 

(1)表的批量INSERT(通过/*+APPEND*/提示使用“直接路径插入“。

或采用SQL*Loader直接路径加载)。

表数据不生成redo,但是所有索引修改会生成redo(尽管表不生成日志,但这个表上的索引却会生成redo!

)。

 

 

(2)LOB操作(对大对象的更新不必生成日志)。

 

 (3)通过CREATETABLEASSELECT创建表

 (4)各种ALTERTABLE操作,如MOVE和SPLIT

 (5)在一些表迁移和表空间迁移中,可以使用altertableanologging;或者altertablespacesnknologging;在操作完成后再修改回logging状态。

 这里需要多说一句,如果你使用nologging导入大批量数据,以后对这些数据的修改会在redo或者archivelog中,但是基准的数据是没有的,所以一旦介质损坏是无法完全恢复的,必须在使用nologging完成切换回logging后,做一次全备或者0级备份。

  

(1)强制记录日志:

sql>alterdatabaseforcelogging;

  

(2)检查状态(YEs为强制):

sql>selectname,force_loggingfromv$database;

  (3)如果需要在主库添加或者删除数据文件时,这些文件也会在备份添加或删除,使用如下:

     sql>altersystemsetstandy_file_management='AUTO';

     默认此参数是manual手工方式sql>showparameterstandby

 

 3.创建standbylogfiles(备用日志文件)

  从库使用standbylogfiles来保存从主库接收到的重做日志。

既然主要是从库在使用,那为什么需要在主库上也建立

  standbylogfiles?

原因主要由两个:

一是主库可能转换为备库,而备库是需要有standbylogfiles的二是如果主库

  建立了standbylogfiles那备库会自动建立。

   建立standby如要注意以下几点:

  <1>standbylogfiles的大小和redologfiles一样。

     查询redologfiles文件大小(默认50M,3个):

selectgroup#,bytes/1024/1024asMfromv$log

  <2>一般而言,standbyredo日志文件组数要比primary数据库的onlineredo日志文件组数至少多一个。

     推荐standbyredo日志组数量基于primary数据库的线程数(这里的线程数可以理解为rac结构中的rac

     节点数)。

     有一个推荐的公式可以做参考:

(每线程的日志组数+1)*最大线程数

     假设现在节点是1个,则=(3+1)*1=4

     如果是双节点      则=(3+1)*2=8

     这里我们创建4个standbylogfile:

     另:

不建议组号group#紧挨着redo,因为后续redo有可能调整,这里我们从建立从11到14的standbylogfile

     

1

2

3

4

5

6

7

8

#cd$ORACLE_BASE/oradata/orcl/

#mkdirdg

#chownoracle:

dbadg

sql>alter database add standbylogfilegroup  11'/opt/oracle/oradata/orcl/dg/standby11.log' size 50M;

sql>alter database add standbylogfilegroup  12'/opt/oracle/oradata/orcl/dg/standby12.log' size 50M;

sql>alter database add standbylogfilegroup  13'/opt/oracle/oradata/orcl/dg/standby13.log' size 50M;

sql>alter database add standbylogfilegroup  14'/opt/oracle/oradata/orcl/dg/standby14.log' size 50M;

 

  4.密码文件和控制文件的创建传输

    

(1)一般数据库默认就有密码文件,存放在$ORACLE_HOME/dbs/orapwSID 这里为orapworcl

       如果没有sql>orapwdfile=$ORACLE_HOME/dbs/orapworclpassword=oracle

    

(2)检查REMOTE_LOGIN_PASSWORDFILE值是否为EXCLUSIVE

       sql>showparameterREMOTE_LOGIN_PASSWORDFILE

 如果值不是EXCLUSIVE,则:

altersystemsetremote_login_passwordfile=exclusivescope=spfile;

    (3)密码文件需要scp到从库

       #scporapworcl **************.215.102:

/opt/oracle/11.2/dbs 提示输入yes 

    (4)控制文件:

       11g的控制文件一共两份,内容一样,一份在$ORACLE_BASE/oradata/orcl/control01.ctl

 一份在/opt/oracle/flash_recovery_area/orcl/control02.ctl

 生成standby控制文件:

1

2

3

4

sql>shutdownimmediate

sql>startupmount

sql>alter database create standbycontrolfileas '/tmp/standby_control01.ctl';

sql>startupopen;

 

 然后在备库建立对应的目录,并授权

 mkdirorcl---chownoracle:

oinstall(或dba)orcl

scpcontrol01.ctloracle@192.168.215.102:

/opt/oracle/oradata/orcl

scpcontrol02.ctloracle@192.168.215.102:

/opt/oracle/flash_recovery_area/orcl/

 

     

    5.db_name和db_unique_name

     默认db_name和db_unique_name和实例名是一致的,这里是orcl

     需要注意在DG中主库和从库的db_unique_name是不能一致的,需要区分开的。

     这里我们设置主库的db_unique_name为orcl,从库为orcldg

     sql>showparameterdb_unique_name

     设置:

altersystemsetdb_unique_name=orclscope=spfile;

     --注意虽然默认db_unique_name和db_name是一致的,但是需要显式设置,否则在spfile中没有此参数

    

   6.闪回数据库:

     强烈建议开启数据库闪回功能。

闪回允许你将数据库还原到以前的某一时间点。

当发生故障转移时,这个功能非常有用,

     它能让你将老的主库闪回到故障前,然后将其转换为备库。

如果没有启用闪回功能,你就必须重建备库,意味着要再复制一次数据文件。

     除了这个好处,闪回还能在某些情况下让你避免从备份恢复数据。

     

(1)快速恢复区(Flash/FastRecoveryArea),默认是配置的,但是需要确认这个区域的磁盘够大,至少300G以上(默认3G)

      sql>showparameterdb_recovery_file_dest

      可以修改位置:

sql>altersystemsetdb_recovery_file_dest='新路径';

      更改大小:

sql>altersystemsetdb_recovery_file_dest_size=400G;

     

(2)查看是否启用,默认是不开启的

      sql>selectflashback_onfromv$database;

      开启:

sql>alterdatabaseflashbackon;

      如果你碰到ORA-01153报错,那一定是在备库进行此操作。

你需要先取消重做日志应用,启用闪回日志,然后重新启用日志应用。

      在主库启用闪回日志,不会同步备库也启用。

你必须手动在主库和备库上均启用闪回日志。

      如果不启用闪回日志,当出现故障转移时,你将需要完全重新开始创建一个备库。

   7.SQL*NET设置

      

(1)配置主库的监听

        虽然可以通过netca来进行配置,但是除了这个默认的外,我们还需要一个静态注册SID_LIST_LISTENER,如果没有此从参数而且

 dataguard启动顺序不正确,主库会报PING[ARC1]:

Heartbeatfailedtoconnecttostandby'***'.Erroris12514导致归档无法完成

 配置如下

 

SID_LIST_LISTENER=

     (SID_LIST=

  (SID_DESC=

      (GLOBAL_DBNAME=orcl)

      (ORACLE_HOME=/opt/oracle/11.2)

      (SID_NAME=orcl)

  )

     )

          LISTENER=

   (DESCRIPTION_LIST=

     (DESCRIPTION=

       (ADDRESS=(PROTOCOL=TCP)(HOST=primaryDB)(PORT=1521))

     )

   )

  

 

 

#vi$ORACLE_HOME/network/admin/listener.ora加入上面的内容

       

(2)配置tnsnames

       #vi$ORACLE_HOME/network/admin/tnsnames.ora

ORCL=

   (DESCRIPTION=

     (ADDRESS_LIST=

       (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.215.101)(PORT=1521))

     )

     (CONNECT_DATA=

       (SERVICE_NAME=orcl)

     )

   )

 

 ORCLDG=

   (DESCRIPTION=

     (ADDRESS_LIST=

       (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.215.102)(PORT=1521))

     )

     (CONNECT_DATA=

       (SERVICE_NAME=orcldg)

     )

   )

 

     

    (3)传输到备库并修改listener.ora和tnsnames.ora

  

scp$ORACLE_HOME/network/admin/listener.ora**************.215.102:

/opt/oracle/11.2/network/admin/

scp$ORACLE_HOME/network/admin/tnsnames.ora**************.215.102:

/opt/oracle/11.2/network/admin/

--listener.ora:

SID_LIST_LISTENER

(SID_LIST=

(SID_DESC=

(GLOBAL_DBNAME=orcldg)

(ORACLE_HOME=/opt/oracle/11.2)

(SID_NAME=orcl)

 

LISTENER=

(DESCRIPTION_LIST=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=TCP)(HOST=standbyDB)(PORT=1521))

 

  tnsnames.ora:

不需要修改

 

       8.重做日志传输配置

         

(1)配置归档日志位置:

 查询已经设置的归档路径sql:

archiveloglist或者showparameterlog_archive_dest_1

sql>alter systemset log_archive_dest_1='LOCATION=/opt/oracle/oradata/orcl/archive1valid_for=(all_logfiles,primary_role)db_unique_name=orcl' scope=spfile;

 

    还可以使用快速恢复区作为归档目录,如LOCATION=use_db_recovery_file_dest

    官方文档里说使用valid_for=(online_logfiles,all_roles),这将导致备库无法归档备用日志文件,因为它们不是在线日志。

    但如果使用all_logfiles选项,主备库将都能归档在线以及备用日志。

    如果你想在备库进行备份,并同时备份归档日志的话,必须使用all_logfiles。

   

         

(2)配置重做日志到备份库:

sql>alter systemset log_archive_dest_2='SERVICE=orcldglgwrsyncvalid_for=(online_logfile,primary_role)  

               db_unique_name=orcldg';

   

  (3)要注意STANDBY_ARCHIVE_DEST参数不需要,已经被官方弃用。

设置此参数后启动数据库,只会报ORA-32004:

 

    obsoleteordeprecatedparameter(s)specifiedforRDBMSinstance错。

 9.配置FAL_SERVER

   这个参数指定当日志传输出现问题时,备库到哪里去找缺少的归档日志。

它用在备库接收的到的重做日志间有缺口的时候。

   这种情况会发生在日志传输出现中断时,比如你需要对备库进行维护操作。

在备库维护期间,没有日志传输过来,这时缺口就出现了。

   设置了这个参数,备库就会主动去寻找那些缺少的日志,并要求主库进行传输。

   你是主库,就填写:

     fal_server=从库

   从库上就反过来:

      fal_server=主库

          注意:

FAL_CLIENT在11g中已经废弃,虽然可以配置但是已经不起作用了。

   sql>altersystemsetFAL_SERVER='orcldg';

   10.DataGuard配置里的另外一个库的名字

    sql>altersystemsetlog_archive_config='dg_config=(orcl,orcldg)';

  以上的办法是我们采用altersystem的方式在线修改,还有一种比较方便的办法(但是容易出错,所以方便和安全什么时候都不可兼得)

  sql>createpfilefromspfile;

  #手工修改pfile

  sql>createspfilefrompfile;

  然后用pfile生成spfile同时传输pfile到从库修改后生成spfile

  注意手工增加:

  *.log_archive_dest_state_1=enable

  *.log_archive_dest_state_2=enable

  

viinitorcl.ora

orcl.__db_cache_size=180355072

orcl.__java_pool_size=4194304

orcl.__large_pool_size=4194304

orcl.__oracle_base='/opt/oracle'#ORACLE_BASEset from environment

orcl.__pga_aggregate_target=264241152

orcl.__sga_target=494927872

orcl.__shared_io_pool_size=0

orcl.__shared_pool_size=289406976

orcl.__streams_pool_size=8388608

*.audit_file_dest='/opt/oracle/admin/orcl/adump'

*.audit_trail='db'

*.compatible='11.2.0.0.0'

*.control_files='/opt/oracle/oradata/orcl/control01.ctl','/opt/oracle/flash_recovery_area/orcl/control02.ctl'#RestoreControlfile

*.db_block_size=8192

*.db_domain=''

*.db_name='orcl'

*.db_recovery_file_dest='/opt/oracle/flash_recovery_area'

*.db_recovery_file_dest_size=4039114752

*.diagnostic_dest='/opt/oracle'

*.dispatchers='(PROTOCOL=TCP)(SERVICE=orclXDB)'

*.fal_server='orcldg'

*.job_queue_processes=1000

*.log_archive_config='dg_config=(orcl,orcldg)'

*.log_archive_dest_1='LOCATION=/opt/oracle/oradata/orcl/archive1valid_for=(all_logfiles,primary_role)db_unique_name=orcl'

*.log_archive_dest_2='SERVICE=orcldglgwrsyncvalid_for=(online_logfile,primary_role)db_unique_name=orcldg'

*.log_archive_format='orcl_%t_%s_%r.dbf'

*.memory_target=756023296

*.open_curso

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1