zoukankan      html  css  js  c++  java
  • 如何搭建一个 Data Guard 环境

     

           Blog里零零散散的讲了一些DB 维护的东西,比较杂,也比较散。 这里就Oracle Data Guard 这块做一个小结。 主要是流程上的东西。 做个参考,以后装DG,照这个流程走就ok了。  

     

     

    .  服务器设置

    1.1 硬盘的规划

           根据自己的业务量来规划硬盘。 我上周搭建的DG,用了4SAS 硬盘。 单盘300G1.5w/s 这个IOPS 大概在150M/s 是个估算值。 做了RAID1.

    不同的RAID IOPS 是有影响的。

     

    1.2 将硬盘挂载到服务器上

           这块参考我的Blog

           Linux 下挂载硬盘的 方法

           http://blog.csdn.net/tianlesoftware/archive/2010/06/02/5642883.aspx

     

    . 安装DB

           这部分包括2块,安装DB 软件和升级。 如果是10g的话,可以先将DB升级到10.2.0.5 升级的原因是为了避免某些bug

           先安装软件,升级,升级完在用DBCA 创建实例。 这样比安装DB 和创建实例之后升级要简单点。

     

    2.1 安装DB 软件

           具体步骤参考BLog

           32 位系统,参考: linux平台下oracle数据库安装

           http://blog.csdn.net/tianlesoftware/archive/2009/10/23/4718218.aspx

          

           64 位系统参考:64 linux 平台下Oracle 安装文档

           http://blog.csdn.net/tianlesoftware/archive/2010/12/08/6062816.aspx

     

    2.2 升级DB 软件

           具体步骤参考Blog

           linux平台下oracle10.2.0.1升级到10.2.0.4

           http://blog.csdn.net/tianlesoftware/archive/2009/10/27/4733475.aspx

     

           其实,升级的步骤,在升级包的readme.html 里有详细的说明,可以照那个步骤来。

     

    2.3  在主库DBCA创建实例

           在我的Blog有说明:

           如何搭建一个数据库服务器平台

           http://blog.csdn.net/tianlesoftware/archive/2010/05/17/5602291.aspx

     

    在这里简单的说一下:

    1redo 文件默认是50M,改成100M

    2)每个redo group里改成2 redo logfile 大小100M

    3)检查一下字符集:ZHS16GBK

    4)设置SGA,PGA 大小。

           OLTP 系统一般的规则是:

                  SGA=内存*80%*80%

                  PGA=内存*80%*20%

     

    . 搭建DG 环境

           这块内容参考BLog

           Oracle Data Guard 理论知识

           http://blog.csdn.net/tianlesoftware/archive/2010/04/22/5514082.aspx

     

           Oracle Data Guard Linux 平台 Physical Standby 搭建实例

           http://blog.csdn.net/tianlesoftware/archive/2010/04/30/5547565.aspx

     

           在这里补充一点, 在我装的2DG上都遇到一个问题。 就是主库的sys 用户密码会改变。 怀疑和安装过程中copy 密码文件的过程有关。因为找不到其他原因了。 所以安装之后,用原来的sys密码连接一下。 如果不能使用,赶紧重新设置一下。然后在copy到备库。 不然在客户端就不能用sys用户登陆了。  

     

           如果是现在有DG,不知道sys用户密码。 我在测试环境下测试过,在不停DG的情况下,直接修改sys用户密码,然后copy到备库。这样是可以使用的。 生产库上没有做过。

     

     

    . 后续的调整

           在这部分,主要是修改一些参数和数据文件的变动。

     

    4.1 修改数据文件

           SQL 命令,或者用Toad 都可以。

    1)将SYSTEM,SYSAUX 2个系统表空间增加到1G,并设置为自动增长,每次10M

    2UNDO 表空间,设成32G4*8G 或者16G2*8G)。关闭自动扩展。

    3TEMP 表空间,设成32G4*8G 或者16G2*8G)。关闭自动扩展。

     

    4.2 参数修改

    1 修改undo_retention

           undo_retention 只是指定undo 数据的过期时间,默认是900s15分钟。建议改成10800s,即3个小时。

     

    SQL> alter system set undo_retention=10800 scope=both;

    系统已更改。

     

    2)修改sessions processes 参数

    SQL> alter system set sessions=2000 scope=spfile;

    系统已更改。

    SQL> alter system set processes=1000 scope=spfile;

    系统已更改。

     

    3)修改CONTROL_FILE_RECORD_KEEP_TIME 参数

           该参数设置控制文件中存储备份记录的时间,在用RMAN的时候会涉及到这个参数。 备份记录包括完全的数据库备份记录,以及指定的数据文件,控制文件,参数文件和归档目录的备份记录。数据库参数CONTROL_FILE_RECORD_KEEP_TIME以天为单位(默认值为7天),因此在默认情况下,Oracle 会将RMAN备份和恢复记录保存7天。 可以将该参数设置为0365之间的任意值。

     

    SQL> alter system set control_file_record_keep_time=14;

    系统已更改。

     

    4)设置open_links_per_instance open_links 参数

           关于这2个参数的说明,参考Blog

           open_links_per_instance open_links 参数说明

           http://blog.csdn.net/tianlesoftware/archive/2010/12/22/6090729.aspx

     

           2个参数修改之后,需要重启才能生效,所以,在安装DB的时候,就把这个参数修改了。 默认值是4,如果用到话就太小了。 所以在安装的时候,就给修改了。 修改建议值:100

     

           SQL> alter system set open_links=100 scope=spfile;

           系统已更改。

     

    .  部署RMAN 备份

           在部署脚本之前,记得修改2个参数:

     

    RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;

    RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

    配置DG主库RMAN 归档文件的删除策略:

    RMAN> configure archivelog deletion policy to applied on standby;

     

    参考:

    Nocatalog 下的RMAN 增量备份 shell脚本

    http://blog.csdn.net/tianlesoftware/archive/2011/01/26/6164931.aspx

     

    Linux 平台下 RMAN 全备 增量备份 shell 脚本

    http://blog.csdn.net/tianlesoftware/archive/2010/07/16/5740630.aspx

     

    如何 搭建 RMAN 备份平台

    http://blog.csdn.net/tianlesoftware/archive/2010/07/16/5740896.aspx

     

     

    . 在备库部署删除归档文件脚本

           DG 备库的归档文件不能自动删除。 需要使用脚本来删除。

    参考:

           Oracle Data Guard 备库 归档文件 删除脚本

           http://blog.csdn.net/tianlesoftware/archive/2011/02/19/6194498.aspx

     

     

    . 部署其他的监控脚本

           这部分监控如CPU,磁盘空间,表空间使用率。 alert log 日志等。 以前有个shell 的脚本,可以监控这些。 最近在整理一个Python的监控脚本。

     

    7.1  alert log 按天存放

           这样做主要还是方便查看alert log 参考:

           Oracle alert log 按天 存放 脚本

           http://blog.csdn.net/tianlesoftware/archive/2011/02/20/6195742.aspx

     

    7.2 以前弄的一个监控DG的批处理脚本

           每天早上上班运行下,DG 的情况就能清楚的显示出来了。 省事很多。 后来懒的运行批处理命令,改成每天定时发到邮箱了。

     

    Check.sql

    conn sys/PWD@SID as sysdba

    host title 数据库日常检查

    column dest_name format a30

    column destination format a20

    column MEMBER format a45

    column 归档地 format a20

    column TABLESPACE_NAME format a10

    column FREE_RATE format a10

    host cls

    prompt **************************** ************************************;

    select instance_name 实例名,version 版本,status 状态,database_status 数据库状态 from v$instance;

    prompt **************************** 数据库状态 *************************************;

    select name,log_mode 归档模式,open_mode 打开模式 from v$database;

    prompt **************************** 控制文件状态 ***********************************;

    column name format a40

    select status,name from v$controlfile;

    prompt **************************** 日志文件状态 ***********************************;

    select GROUP#,status,type,member from v$logfile;

     

    prompt***************************** 归档目的地状态 *********************************;

    select dest_name ,status 状态,database_mode 数据库模式,destination 归档地 from v$archive_dest_status where dest_id in  ('1','2');

    set heading off;

    select '************数据库已连续运行 '|| round(a.atime-b.startup_time)||' '||'*******************************************' from(select sysdate atime from dual) a,v$instance b;

    set heading on;

    prompt*****************************     *************************************;

    select sessions_current 当前会话数,sessions_highwater 实例最高值 from v$license;

    prompt********************** 表空间监控(FREE_RATE小于10%为异常) ********************;

    select a.tablespace_name, round(a.total_size) "total_size(MB)",

    round(a.total_size)-round(b.free_size,3) "used_size(MB)",

    round(b.free_size,3) "free_size(MB)", round(b.free_size/total_size*100,2)||'%' free_rate

    from ( select tablespace_name, sum(bytes)/1024/1024 total_size

           from dba_data_files

           group by tablespace_name ) a,

           ( select tablespace_name, sum(bytes)/1024/1024 free_size

             from dba_free_space

             group by tablespace_name ) b

           where a.tablespace_name = b.tablespace_name(+);

    prompt **************************** 表空间OFFLINE(显示为空正常) ********************;

    select tablespace_name 表空间名,status 状态 from dba_tablespaces where status='OFFLINE';

    prompt **************************** SEQUENCE同步数 *********************************;

    select max(sequence#)from v$log_history;

    CONN sys/PWD@SID_ST as sysdba;

    prompt **************************** 备库SEQUENCE同步数 *****************************;

    select max(sequence#)from v$log_history;

    prompt **************************** 备库日志未应用(显示为空正常) *******************;

    select sequence#,applied from v$archived_log where applied='NO' and sequence#>2453;

    prompt **************************** 备库日志应用(显示最近十个日志) *****************;

    select * from(select sequence#,applied from v$archived_log order by sequence# desc) where rownum<=10;

    set time on

    disconnect

     

    Check.bat

    sqlplus /nolog @check.sql

     

     

    7.3 其他监控脚本

    参考:

    8DBA最常用的监控Oracle数据库的常用shell脚本

    http://blog.csdn.net/tianlesoftware/archive/2009/11/10/4792798.aspx

     

     

    . 导入数据

           用逻辑导出导入就可以了。 在导入之前建好表空间,注意:数据和索引分别存放在不同的表空间。 在建用户。最后导入数据。

     

           对于某些系统(如移动的BOSS计费系统),在建sequence的时候,注意下sequence cache 大小。默认值是20. 一般是够用的。

           Oracle Sequence Cache 参数说明

           http://blog.csdn.net/tianlesoftware/archive/2010/11/08/5995051.aspx

     

           导入的过程也会产生归档文件,只需要在主库导入即可。 备库会自动同步。 如果数据量大的话,这个同步过程会比较慢。 因为imp 会产生大量的归档文件。

     

     

    Oracle Data Guard 主库 归档文件 删除策略

    http://blog.csdn.net/tianlesoftware/archive/2011/03/07/6227965.aspx


     

     

           DG 的东西就这么多了。 最后3句话:

           1)备份重于一切

           2)责任重于一切

           3DBA要胆大心细,遇事不慌

     

     

     

     

     

    ------------------------------------------------------------------------------

    Blog http://blog.csdn.net/tianlesoftware

    网上资源: http://tianlesoftware.download.csdn.net

    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx

    DBA1 群:62697716(); DBA2 群:62697977()

    DBA3 群:62697850   DBA 超级群:63306533;    

    聊天 群:40132017

    --加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请


    道森Oracle,国内最早、最大的网络语音培训机构,我们提供专业、优质的Oracle技术培训和服务! 我们的官方网站:http://www.daosenoracle.com 官方淘宝店:http://daosenpx.taobao.com/
  • 相关阅读:
    MySQL数据库的主从同步
    学习Java必看的Java书籍(高清中文最新版附下载链接)
    servlet重点知识总结
    JUnit & JMockit单元测试
    mongodb重点知识总结
    Quartz学习总结
    IDEA使用总结
    bat脚本知识总结
    linux shell脚本相关知识
    SpringMVC重点知识总结
  • 原文地址:https://www.cnblogs.com/tianlesoftware/p/3609796.html
Copyright © 2011-2022 走看看