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,一经查实,立即删除!

相关文章

关于抢红包的_关于抢红包的话题800字作文

随着互联网的发展,一些习惯正在我们身边悄悄形成。例如:抢红包,今天学习啦小编为大家精心挑选了关于抢红包的话题800字作文,希望能够很好的帮助到大家。关于抢红包的话题800字作文篇1红包,装得下钞票,却载不动细腻的亲…

uView(Tabbar 底部导航栏)

&#xff08;一&#xff09;第一种方式 1&#xff0c;每个菜单页面都要 “首页” “发布” “我的” 每个页面都要 <template><view>首页<u-tabbar:list"tabBar" change"changeEvent()" bg-color"rgb(51, 61, 73)"active-colo…

了解有关JDK9紧凑弦乐的信息(视频回顾Charlie Hunt)

JDK 9引入了一个称为紧凑字符串的新功能。 鉴于Java程序中普遍存在字符串&#xff0c;我认为这是一个非常重要的更改&#xff0c;所有Java开发人员都必须理解。 在此视频中&#xff0c;查理亨特&#xff08;Charlie Hunt&#xff09;解释了此新功能的历史和实现。 该视频实际上…

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

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

vue项目中使用mock(二)

一&#xff0c;安装&#xff1a; npm install mockjs --save-dev目录&#xff1a; src 同级目录下新建 mock 文件夹 下 新建 mock.js 和 tags.js 文件 二&#xff0c;main.js 中导入&#xff1a; require(/mock/mock.js)三&#xff0c;mock.js 文件&#xff1a; const Moc…

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

环境&#xff1a; [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变量

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

FormData使用方法详解

FormData的主要用途有两个&#xff1a; 1、将form表单元素的name与value进行组合&#xff0c;实现表单数据的序列化&#xff0c;从而减少表单元素的拼接&#xff0c;提高工作效率。 2、异步上传文件 一、创建formData对象 1、创建一个空对象&#xff1a; //通过FormData构造函…

IKVM:java代码c#调用

在工作中遇到对接java接口&#xff0c;涉及到java加密或签名问题&#xff0c;.net无法实。就将java代码编辑为dll给.net调用 注&#xff1a;这里只做简单java代码处理&#xff0c;不涉及到复杂的java包 java文件处理&#xff1a; 第一步:简单java代码 package com.zht;//c#命名…

activemq 连接_ActiveMQ网络连接器

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

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

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

js的深浅拷贝( 赋值后原值被覆盖的问题 )

1&#xff0c;浅拷贝&#xff08; 浅拷贝会复制所有引用对象的指针&#xff0c;而不是具体的值 &#xff09; 复制对象的所有属性都不是引用类型时&#xff0c;就可以使用浅拷贝 浅拷贝方式&#xff1a; Object.assign() [].slice()2&#xff0c;深拷贝&#xff08; 复制一个…

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

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

02.Python 3.6.4下载与安装

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

根据浏览器navigator区分PC端还是移动端,区分操作系统,区分浏览器型号

1&#xff0c;区分PC端还是移动端 methods:{_isMobile() {let flag navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)return flag;}, }, m…

mysql 用户授权_mysql添加、删除用户和授权用户

MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束):1.新建用户1.1 登录MYSQL&#xff1a;>mysql -u root -p>密码1.2 创建用户&#xff1a;mysql> insert into mysql.user(Host,User,Password) values("localhos…

2018年1月 常用的linux命令

项目中经常用到的Linux命令 &#xff08;注意&#xff1a;linux命令要小写哦&#xff01;&#xff09; &#xff08;1&#xff09;、ls 显示当前目录下的文件 &#xff08;2&#xff09;、vi vim 进入编辑器&#xff0c;可以选择你要编辑的文档&#xff0c;一般我们将项目打…

vue-element-admin中 vuex 的使用

vue-element-admin 中 vuex 是模块化的。 登录流程 1&#xff0c;HTTP 配置&#xff08;utils/request.js&#xff09; 2&#xff0c;API 配置&#xff08;api/user.js&#xff09; import request from /utils/requestexport function login(username, password) {return …

javafx2_JavaFX 2 GameTutorial第4部分

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

mysql 实体类_Mysql生成实体类

-- 查询数据表结构SELECTCONCAT(‘"e.‘,SUBSTRING(COLUMN_NAME,1),‘,"‘),COLUMN_NAME,‘,‘,COLUMN_TYPE,column_commentFROMINFORMATION_SCHEMA.COLUMNSWHERE table_schema ‘xcb‘and table_name ‘t_product‘;-- 生成Java实体类SELECTCONCAT(‘Column(name&…