首页 > 其他分享 >如何搭建一个 Data Guard 环境

如何搭建一个 Data Guard 环境

时间:2023-07-25 16:33:04浏览次数:45  
标签:www cn name Guard cndba http Data select 搭建


 

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

 

 

一.  服务器设置

1.1 硬盘的规划

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

不同的RAID 对IOPS 是有影响的。

 

1.2 将硬盘挂载到服务器上

       这块参考我的Blog:

       Linux 下挂载硬盘的 方法

       http://www.cndba.cn/dave/article/683

 

二. 安装DB

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

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

 

2.1 安装DB 软件

       具体步骤参考BLog:

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

      

      

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

      

 

2.2 升级DB 软件

       具体步骤参考Blog:

       linux平台下oracle从10.2.0.1升级到10.2.0.4

       http://www.cndba.cn/Dave/article/1252

 

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

 

2.3  在主库DBCA创建实例

       在我的Blog有说明:

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

       http://www.cndba.cn/Dave/article/1463

 

在这里简单的说一下:

(1)redo 文件默认是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 理论知识

      

 

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

      

 

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

 

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

 

 

四. 后续的调整

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

 

4.1 修改数据文件

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

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

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

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

 

4.2 参数修改

(1) 修改undo_retention

       undo_retention 只是指定undo 数据的过期时间,默认是900s,15分钟。建议改成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天。 可以将该参数设置为0到365之间的任意值。

 

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 参数说明

      

 

       这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://www.cndba.cn/Dave/article/1476

 

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

http://www.cndba.cn/Dave/article/1060

 

如何 搭建 RMAN 备份平台

http://www.cndba.cn/Dave/article/407

 

 

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

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

参考:

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

       http://www.cndba.cn/Dave/article/869

 

 

七. 部署其他的监控脚本

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

 

7.1  alert log 按天存放

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

       Oracle alert log 按天 存放 脚本

       http://www.cndba.cn/Dave/article/1416

 

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 归档地  ('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 其他监控脚本

参考:

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

http://www.cndba.cn/Dave/article/1242

 

 

八. 导入数据

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

 

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

       Oracle Sequence Cache 参数说明

       http://www.cndba.cn/Dave/article/1567

 

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

 

 

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

http://www.cndba.cn/Dave/article/1043



 

 

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

       (1)备份重于一切

       (2)责任重于一切

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

 

 

 

 

 

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


Blog: http://www.cndba.cn/dave


标签:www,cn,name,Guard,cndba,http,Data,select,搭建
From: https://blog.51cto.com/cndba/6846608

相关文章

  • DataFrame随机选行+纵向拼接
    Dataframe随机选行(1)dataframe实例:city_data={'city':['beijing','shanghai','xining','dalian','xian','chongqing'],'location':['north','south&#......
  • Nfs 共享存储搭建
    Nfs共享存储搭建为了实现不同操作系统中的数据共享,我们一般会搭建一些用于文件共享的服务器,nfs服务器就是其中一种,它实现的是linux与linux之间的共享。今天我将把如何在linux系统搭建nfs服务器的步骤分享出来,供大家参考。 介绍NFS就是NetworkFileSystem的缩写,它最大的功能......
  • Rsync 备份服务搭建
    Rsync备份服务搭建目录Rsync备份服务搭建一.前言二.rsync和sersync2.1rsync基本语法2.2本地文件传输2.3ssh远程文件传输2.4基于服务远程主机文件传输三.部署rsync3.1项目要求3.2环境准备3.3搭建服务端rsync3.3搭建客户端rsync四.部署sersync4.1环境准备......
  • 直播平台搭建源码,Fragment 显示 隐藏 监听
    直播平台搭建源码,Fragment显示隐藏监听 @OverridepublicvoidonHiddenChanged(booleanhidden){super.onHiddenChanged(hidden);if(!hidden){updateUserinfo();}}@OverridepublicvoidsetUserVisibleHint(booleanisVisibleToUser){super.setUserVisibleHint(isVisibl......
  • DataFrame筛选多行和多列
    Dataframe筛选多行在实际数据筛选的时候,有时候需要选择多行,例如,有一个列表数据,需要在Dataframe里筛选,某列中在列表数据中的行。在这种情况下可以使用isin语法。具体如下:obj_df=df[df['obj_col'].isin(obj_list)]#筛选的行non_obj_df=df[~df['obj_col'].isin(obj_list)]......
  • json 包 转字符串为dict json.loads(data_str)
    importjson##假设有一个JSON对象#data={#"name":"John",#"age":30,#"city":"NewYork"#}###将JSON对象转换为字符串#json_str=json.dumps(data)##print(json_str)#str转json类型是字典data_......
  • 解决 datetime数据在DataGridView里不显示秒的问题
    1.选择要编辑的列》外观》DefaultCellStyle2.CellStyle生成器》行为》Format》三个点3.选择日期时间》选择需要的时间格式 ......
  • Databend 开源周报第 103 期
    Databend是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn。What'sOnInDatabend探索Databend本周新进展,遇到更贴近你心意的Databend。创建网络策略网络策略(NetworkPolicies)是一组用于管理......
  • JavaWeb--环境搭建(idea,tomcat)到跑测试中我犯下的滔天大罪
    1.在网上copy时路径没有写对点击查看代码<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation......
  • 搭建k8s集群
    一、k8smaster部署Master节点上会运行的组件:etcd,kube-apiserver,kube-controller-manager,kuctl,kubeadm.kubelet,kube-proxy,flannel,docker Kubeadm,官方k8s一键部署工具Flannel,网络插件,确保节点间能够互相通信 环境初始化: 1)hosts解析cat>>/etc/hosts <<EOF0.......