DataGuard之DG环境搭建

DG 环境搭建

1.设置归档模式

DG环境的搭建必须要把数据库启动到归档模式,并且为了避免开发人员使用nologging语句,我们还要把数据库设置为force logging。

查看数据库是否运行在归档模式:

#su  - oracle

$sqlplus / as sysdba

SQL>archive log list;

如图所示,数据库运行在非归档模式,下面我们开始操作,把数据库修改为归档模式:首先关闭数据库

SQL>shutdown immediate;

启动数据库到mount状态下

SQL>startup mount;

SQL>select open_mode from v$database;

(查询结果必须是MOUNTED哦,如果输出的是其它方式,证明操作有误,请重新关闭数据库进行操作)

把数据库修改为归档模式并打开数据库:

SQL>alter database archivelog;

SQL>alter database open;

SQL>archive log list;

图中可以看到我们数据库已经运行在归档模式了,其中Archive destination就是归档日志存放的路径,稍后我们会修改下存放路径。

数据库打开后,我们需要把数据库设为force logging:

SQL>alter database force logging;

SQL> select name,log_mode,force_logging from v$database;

2.添加standby 日志

standby logfile的数量和大小均要与redo logfile相同

查询主库当前redo logfile的数量

SQL> select thread#,group#,members,bytes/1024/1024 from v$log;

从图中可以看到我们主库有三组大小为50M的redo logfile,故我们也需要创建同样数量和大小的standby logfile:

SQL>alter database add standby logfile group 11('/data/oradata/ocrl/redo/redo11_stb01.log') size 50M;

SQL>alter database add standby logfile group 12('/data/oradata/ocrl/redo/redo12_stb01.log') size 50M;

SQL>alter database add standby logfile group 13 ('/data/oradata/ocrl/redo/redo13_stb01.log')size 50M;

SQL>select group#,thread#,sequence#,archived,status from v$standby_log;


3.设置数据库口令文件的使用模式

执行以下命令查看remote_login_passwordfile的值是否EXCLUSIVE

SQL>show parameter remote_login_passwordfile

如果不是,执行以下命令进行设置,并且重启数据库,使其生效:

SQL>alter system set remote_login_passwordfile=EXCLUSIVE scope=spfile;

SQL>shutdown immediate;

SQL>startup;

4.参数设置

DG的搭建需要修改许多数据库的参数,并且部分参数主备库之间有点区别,这需要各位在配置过程细心一点。

a)主库参数设置

SQL>show parameter db_unique_name

SQL>alter system set log_archive_config='dg_config=(ocrl,ocrls)' scope=spfile;

其中dg_config填写的是主备库的db_unique_name。

设置归档日志的存放位置:

SQL>alter system set log_archive_dest_1='LOCATION=/data/oradata/ocrl/archivelogvalid_for=(all_logfiles,all_roles) db_unique_name=ocrl' scope=spfile;

SQL> alter system set log_archive_dest_2='SERVICE=ocrls ASYNCVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ocrls' scope=spfile;

注:第一个ocrls是tnsname.ora的连接名,第二个ocrls是DB_UNIQUE_NAME

启用设置的日志路径:

SQL>alter system set log_archive_dest_state_1=enable scope=spfile;

SQL>alter system set log_archive_dest_state_2=enable scope=spfile;

设置归档日志进程的最大数量(视实际情况调整):

SQL>alter system set log_archive_max_processes=30 scope=both;

设置standby库从哪个数据库获取归档日志(只对standby库有效,在主库上设置是为了在故障切换后,主库可以成为备库使用):

SQL>alter system set fal_server=ocrlsscope=both;

设置文件管理模式,此项设置为自动,不然在主库创建数据文件后,备库不会自动创建:

SQL>alter system set standby_file_management=auto scope=spfile;

启用OMF功能:

SQL> alter system set db_create_file_dest='/data/oradata/ocrl/datafile' scope=spfile;

如果主备库文件的存放路径不同,还需要设置以下两个参数(需要重启数据库生效):

SQL> alter system set db_file_name_convert='/data/oradata/ocrls/datafile','/data/oradata/ocrl/datafile','/data/oradata/ocrls/tempfile','/data/oradata/ocrl/tempfile' scope=spfile;

SQL> alter system set log_file_name_convert='/data/oradata/ocrls/redo','/data/oradata/ocrl/redo' scope=spfile;

这步路径的先后顺序在主备库上的设置是不一样的,大家要注意!

b)备库参数设置

完成了以上步骤后,通过以下命令生成一个pfile文件给备库使用:

SQL>create pfile  from spfile;

打开生成的文件,修改部分参数,具体如下:

*.audit_file_dest='/u01/app/oracle/admin/ocrls/adump'

*.audit_trail='db'

*.compatible='12.1.0.2.0'

*.control_files='/data/oradata/ocrls/control/control01.ctl','/data/oradata/ocrls/control/control02.ctl'#Restore Controlfile

*.db_block_size=8192

*.db_create_file_dest='/data/oradata/ocrls/datafile'

*.db_domain=''

*.db_file_name_convert='/data/oradata/ocrl/datafile','/data/oradata/ocrls/datafile','/data/oradata/ocrl/tempfile','/data/oradata/ocrls/tempfile'

*.db_name='ocrl'//(这个保持跟主库一样,不能修改)

*.db_unique_name='ocrls' //(设置备库的名字)

*. fal_server=ocrl

*.db_recovery_file_dest_size=10737418240

*.db_recovery_file_dest='/data/oradata/ocrls/flashback'

*.diagnostic_dest='/u01/app/oracle'

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

*.log_archive_config='dg_config=(ocrl,ocrls)'

*.log_archive_dest_1='LOCATION=/data/oradata/ocrls/archivelog valid_for=(all_logfiles,all_roles) db_unique_name=ocrls'

*.log_archive_dest_2='SERVICE=ocrl ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ocrl'

*.log_archive_dest_state_1='ENABLE'

*.log_archive_dest_state_2='ENABLE'

*.log_archive_format='%t_%s_%r.arc'

*.log_archive_max_processes=30

*.log_file_name_convert='/data/oradata/ocrl/redo','/data/oradata/ocrls/redo'

*.memory_target=718m

*.open_cursors=300

*.processes=300

*.remote_login_passwordfile='EXCLUSIVE'

*.standby_file_management='AUTO'

*.undo_tablespace='UNDOTBS1'

(配置参数的时候要注意,有些地方跟主库的不一样哦)

c)密码文件配置

密码文件是创建DG不可缺少的一部分,主库的密码文件一般在$ORACLE_HOME/dbs,命名格式是:orapw+db_unique_name

上图是主库的密码文件,如果不存在此文件,我们可以通过以下命令生成一个:

#su - oracle

$cd $ORACLE_HOME/dbs

$orapwdfile=orapwocrl password=oracle

我们将密码文件和刚才修改好的pfile一起拷贝到备库的$ORACLE_HOME/dbs目录下,并重命名密码文件的名字:

主库上copy到备库的方法

备库上修改密码文件名和参数文件

5.listener.ora与tnsnames.ora配置

这两个文件均在$ORACLE_HOME/network/admin目录下,如果没有,可以自行创建一下

a)备库配置

listener.ora内容如下:

LISTENER=

  (DESCRIPTION_LIST =

    (DESCRIPTION =

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

      (ADDRESS = (PROTOCOL = IPC)(KEY =EXTPROC1521))

    )

  )

SID_LIST_LISTENER=

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = ocrls)

      (ORACLE_HOME =/u01/app/oracle/product/12.1.0/db_1)

      (SID_NAME = ocrls)

    )

   )

tnsname.ora内容如下:

ocrls =

  (DESCRIPTION =

    (ADDRESS_LIST =

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

    )

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME =ocrls)

    )

  )

重启一下监听:

$lsnrctl stop

$lsnrctl start

b)主库配置

listener.ora内容如下:

LISTENER=

  (DESCRIPTION_LIST =

    (DESCRIPTION =

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

      (ADDRESS = (PROTOCOL = IPC)(KEY =EXTPROC1521))

    )

  )

SID_LIST_LISTENER=

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = ocrls)

      (ORACLE_HOME =/u01/app/oracle/product/12.1.0/db_1)

      (SID_NAME = ocrls)

    )

   )

tnsname.ora内容如下:

ocrl =

  (DESCRIPTION =

    (ADDRESS_LIST =

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

    )

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME =ocrl)

    )

  )

 

ocrls =

  (DESCRIPTION =

    (ADDRESS_LIST =

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

    )

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME =ocrls)

    )

  )

执行以下命令重启监听,使配置生效:

$lsnrctl stop

$lsnrctl start

做完以上配置后,在主备库上执行以下命令,确保两个主机之间网络相通:

$tnsping ocrl

$tnsping ocrls

主库上执行:


备库上执行

6.目录创建

参数和网络配置好后,我们需要为备库dump文件创建相应的目录(对照主库$ORACLE_BASE/admin):

ocrls:/home/oracle@standby>mkdir -p $ORACLE_BASE/admin/ocrls/adump

ocrls:/home/oracle@standby>mkdir -p $ORACLE_BASE/admin/ocrls/dpdump

为数据库文件创建目录(就是之前db_file_name_convert和log_file_name_convert的目录)

ocrls:/data/oradata/ocrls@standby>mkdir -p/data/oradata/ocrls/redo/

ocrls:/data/oradata/ocrls@standby>mkdir -p/data/oradata/ocrls/datafile/

ocrls:/data/oradata/ocrls@standby>mkdir -p /data/oradata/ocrls/control/

7.RMAN复制创建standby库

准备工作都完成了,那我们可以开始standby库的创建了。

注:以下操作在备库完成

a)文件复制

先,我们使用之前修改的pfile把备库启动到nomount状态,生成spfile:

$echo $ORACLE_SID (确认SID是否我们设置的)

SQL> startup nomount pfile='/u01/app/oracle/product/12.1.0/db_1/dbs/initocrls.ora'

SQL> create spfile from pfile;

SQL>shutdown immediate;

SQL>exit;

从spfile启动

复制数据文件,在备库上操作

ocrls:/home/oracle@standby>rman target sys/oracle@ocrl auxiliary sys/oracle@ocrls

确认我们已经连接上主库和备库后,执行以下命令:

RMAN> duplicate target database for standby from active database;

命令执行完后,可以看到主库在开始复制文件到备库中

耐心等待任务的完成,如果中间有错误导致异常退出,需要根据错误信息进行分析。

以下表示执行成功:

复制完成后,打开数据库开启实时同步:

 SQL> alter database open;

SQL> alter database recover managed standby database using current logfile

disconnect from session;

查看数据库状态

登陆到主库

$sqlplus / as sysdba

SQL>select database_rolefrom v$database;

登录到备库:

$sqlplus / as sysdba

SQL>select database_rolefrom v$database;

检查归档日志是否能正常传输(日志的序号必须是一样的):

主库

SQL> selectSEQUENCE#, FIRST_TIME, NEXT_TIME, APPLIED, ARCHIVED from V$ARCHIVED_LOG;

备库

SQL> selectSEQUENCE#, FIRST_TIME, NEXT_TIME, APPLIED, ARCHIVED from V$ARCHIVED_LOG;

b)切换日志测试

主库

SQL>alter system switch logfile;

SQL>select SEQUENCE#, FIRST_TIME, NEXT_TIME, APPLIED, ARCHIVED from V$ARCHIVED_LOG;

备库

SQL> select max(sequence#)from v$archived_log;

这样,我们的DG已经配置成功了!

 

转载于:https://www.cnblogs.com/shiyu520/p/8259509.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354288.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

a算法解决八数码问题_javascript,八皇后问题解决

八皇后问题 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。 该问题是国际西洋棋棋手马克斯贝瑟尔于1848年提出: 在88格的国际象棋上摆放八个皇后,使其不能互相攻击, 即:任意两个皇后都不能处于…

CentOS6.9部署zabbix3.0监控系统

环境: [rootredis ~]# uname -a Linux redis 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux [rootredis ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [rootredis ~]# getenforce Disabled [rootredis …

输出整形变量语句_Python合集之Python变量

在上一节的合集中,我们了解了Python的保留字与标识符,本节我们将进一步了解一下Python中关于变量的问题。变量严格意义上来讲应该称之为“名称”,也可以理解为标签。在Python中,不需要先声明变量名及其数据类型,直接赋…

activemq 连接_ActiveMQ网络连接器

activemq 连接这篇文章对我以及对ActiveMQ的网络连接器的工作方式可能感兴趣的任何ActiveMQ贡献者都适用。 我最近花了一些时间查看代码,并认为最好画一些快速的图表来帮助我记住我学到的知识,并在将来发现问题时帮助将来确定在哪里进行调试。 如果我输入…

如何让fragment刷新界面_快速实现android版抖音主界面的心得

原文作者:DK_BurNIng如何快速确定竞品某个界面的实现方式?当你收到产品一个需求是模仿某个竞品且时间很短没有过多时间给你调研技术方案的时候,如何尽快确定这个功能的技术方案呢? 这里我给出我自己的一个小窍门,可以避…

使用JBoss Cool Store的终极云零售指南

我们一直在讨论为什么应用程序开发人员在App Dev Cloud Stack系列中不能再忽略其堆栈了。 带有JBoss Cool Store的App Dev Cloud 我们从头到尾讨论了各个层,但尚未为您提供除Red Hat Container Development Kit(CDK)之外的任何应用程序开发…

02.Python 3.6.4下载与安装

02.Python 3.6.4下载与安装 https://www.python.org/downloads/release/python-364/ Windows x86-64可执行文件安装程序视窗对于AMD64 / EM64T / x64,不是安腾处理器bee5746dc6ece6ab49573a9f54b5d0a131684744SIG我下载的是这个: https://www.python.or…

2018年1月 常用的linux命令

项目中经常用到的Linux命令 (注意:linux命令要小写哦!) (1)、ls 显示当前目录下的文件 (2)、vi vim 进入编辑器,可以选择你要编辑的文档,一般我们将项目打…

javafx2_JavaFX 2 GameTutorial第4部分

javafx2介绍 这是与JavaFX 2游戏教程相关的六个部分系列的第四部分。 如果您错过了第1部分 , 第2部分或第3部分 ,我建议您在开始本教程之前仔细阅读它们。 回顾一下,在第3部分中,我为您提供了许多经典街机风格游戏以及所使用的不同…

vue项目 乐橙云 轻应用直播SDK imouplayer.js

官网案例:https://open.imoulife.com/book/light/sdk.html 文档: https://open.imou.com/developDoc/31 1,下载 对应的资源 https://open.imoulife.com/book/readme/upload.html 2,引入资源 2.1 把下载的资源(static&#xff0c…

jmx 复用 jmx_JMX:一些入门说明

jmx 复用 jmxJMX(Java管理扩展)是一种J2SE技术,可以管理和监视Java应用程序。 基本思想是实现一组管理对象,并将实现注册到平台服务器,在平台服务器上,可以使用一组连接器或适配器从本地或远程调用这些实现…

git 上下载的项目在本地安装依赖时报错 Could not resolve dependency

安装依赖时报错:无法安装依赖 看报错里面的提示:this command with --force, or --legacy-peer-deps –force 会无视冲突,并强制获取远端npm库资源,即使本地有资源也会覆盖掉;–legacy-peer-deps:安装时…

python_fullstack基础(十一)-常用模块

python常用模块 re模块 一、正则表达式 在线测试工具 http://tool.chinaz.com/regex/ 1、字符组 : [字符组] 在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[]表示 字符分为很多类,比如数字、字母、标点等等。 假如你现在…

npm 安装依赖遇到的问题

npm npm的服务器位于国外可能会影响安装 cnpm 淘宝团队做的国内镜像 // 安装 cnpm npm install cnpm -g --registryhttps://registry.npm.taobao.org // 查看版本 cnpm -v // 查 npm 的源 npm config get registry一、cnpm -v 在 cmd 中能识别,但是 VsCode 无法识别…

maven 父maven_Maven的鸟瞰图

maven 父maven我们每天要做的一件事是使用Maven通过发出诸如mvn install之类的构建命令来构建我们的项目。 然后,Maven查看我们项目的配置文件(亲切地称为POM),神奇地找出要执行的操作,并且,嘿,…

mysql断网_断网的情况上如何访问本机的mysql

断网的情况下怎么访问本机的mysql我发现把网络断掉后mysql就不能访问了。使用phpmyadmin(http://localhost/phpmyadmin/index.php?)访问,输入用户名和密码后点击登陆,就会出现“#2002 Cannot log in to the MySQL server”错误。使用命令行登陆&#xf…

Py IO model

事件驱动模型 上节的问题: 协程:遇到IO操作就切换。 但什么时候切回去呢?怎么确定IO操作完了? 很多程序员可能会考虑使用“线程池”或“连接池”。“线程池”旨在减少创建和销毁线程的频率,其维持一定合理数量的线程&a…

Fiddler 扒取微信小程序的图片

安装 Fiddler http://www.downza.cn/soft/234727.html Tools-options配置 如果无法抓取到PC微信小程序 解决办法: 打开小程序,任务管理器找到小程序所在位置,删除文件内容 一般路径为\Tencent\WeChat\XPlugin\Plugins\WMPFRuntime 删除…

JLBH – Java延迟基准线束介绍

在这篇文章中: 什么是JLBH 我们为什么写JLBH JMH和JLBH之间的区别 快速入门指南 什么是JLBH? JLBH是可用于测量Java程序中的延迟的工具。 它具有以下功能: 旨在运行比微型基准测试更大的代码。 适用于使用异步活动(如生产者…

mysql 5.7 mts_mysql5.7 中启用MTS后error log中大量Note日志分析

mysql5.7,启用基于logical_clock的多线程复制,发现error日志增长很快,查看日志发现大量关于多线程复制的Note级别日志。1234567891011121314152018-07-03T03:22:01.63837108:00 8941 [Note] Multi-threaded slave statistics for channel : seconds elapsed 298; e…