oracle_dataGuard_11G

Wesley13
• 阅读 573

【李红】--切记_从库只安装实例_不需要 dbca 创建数据库 但是 netca 创建监听看个人喜欢,我反正是创建了。
【DataGuard_主数据库的参数配置】
1.启用 force logging 功能
SQL> select force_logging from v$database; //查看数据库有没有开启此功能 如果不是 YES 是 NO 的话执行下面一条语句。如果是的话,则不需要执行
SQL> alter database force logging;

2.启用归档
SQL> archive log list;
SQL> select log_mode from v$database;

归档有两个参数如下:
SQL> show parameter log;
文件名格式的参数:log_archive_format
SQL> alter system set log_archive_format='%t_%s_%r.arc' scope = spfile; //修改默认文件参数:log_archive_format

位置:log_archive_dest
SQL> alter system set log_archive_dest_1='location=/u02/oracle/archive'; //设置归档文件路径

SQL> shutdown immediate; //修改配置需要重启数据库实例

SQL> startup mount; //启动到 mount 状态 修改归档
SQL> alter database archivelog; //打开数据库的归档模式
SQL> alter database open; //启动数据库

3.设置主库监听
主库:
做静态监听 1522 端口
备库:
做静态监听 1522 端口

[oracle@DBprimary admin]$ pwd
/u01/app/oracle/product/11.2.0.4/db_1/network/admin

[oracle@DBprimary admin]$ ls
listener.ora samples shrept.lst tnsnames.ora
[oracle@DBprimary admin]$ vim listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0.4/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = primary.localdomain)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)

LISTENER1 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = primary.localdomain)(PORT = 1522))
)
)
)

SID_LIST_LISTENER1 =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = primary)
(SID_NAME = primary)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0.4/db_1)
)
)

ADR_BASE_LISTENER = /u01/app/oracle

[oracle@primary ~]$ lsnrctl start listener1 //启动刚刚配置的 静态监听

4.配置主库的初始化参数:
SQL> show parameter db_unique_name; //查看自己的服务名
SQL> alter system set db_unique_name = '自己要设置的服务名' scope=spfile; //修改之后需要重启数据库_根据需要,这一步可以不操作
SQL> alter system set log_archive_config='DG_CONFIG=(primary,standby)' scope=both;
SQL> show parameter log_archive_config; //查看设置的 DG_CONFIG
SQL> alter system set log_archive_dest_1='LOCATION=/u02/oracle/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=primary' scope=both;
SQL> alter system set log_archive_dest_2='SERVICE=tnsstandby LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby' scope=both;
SQL> quit;

[oracle@primary admin]$ pwd
/u01/app/oracle/product/11.2.0/db_1/network/admin

[oracle@primary admin]$ ls
listener.ora samples shrept.lst tnsnames.ora

[oracle@primary admin]$ vim tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0.4/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

PRIMARY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = primary.localdomain)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = primary)
)
)

tnsstandby =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = standby.localdomain)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = primary)
)
)

tnsprimary =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = primary.localdomain)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = primary)
)
)

[oracle@primary admin]$ sqlplus / as sysdba
SQL> show parameter db_file;
db_file_name_convert //设置这个参数:数据文件

SQL> show parameter log;
log_file_name_convert //设置这个参数:重做日志文件

SQL> select name from v$datafile; //查看数据库的数据存放路径
SQL> alter system set db_file_name_convert='/u01/app/oracle/oradata/standby','/u01/app/oracle/oradata/primary' scope = spfile; //做对望在前的绑定地址
SQL> select * from v$logfile; //查看 redo 日志
SQL> alter system set log_file_name_convert='/u01/app/oracle/oradata/standby','/u01/app/oracle/oradata/primary' scope = spfile; //做对望在前的绑定地址
SQL> show parameter standby;
SQL> alter system set standby_file_management = auto;
SQL> show parameter fal;
fal_client //这个参数可以不配置_如果要配置可以看下边的 alter
fal_server //这个参数可以不配置_如果要配置可以看下边的 alter

SQL> alter system set fal_client='tnsprimary' scope = both;
SQL> alter system set fal_server='tnsstandby' scope = both;

【DataGuard_备数据库的参数配置】
1.拷贝密码文件
主库和备库的 oracle 用户的 sys 密码必须一致。
在主库上操作:
[oracle@primary admin]$ cd $ORACLE_HOME/dbs
[oracle@primary dbs]$ pwd
/u01/app/oracle/product/11.2.0/db_1/dbs
[oracle@primary dbs]$ scp orapwprimary root@备库IP:/u01/app/oracle/product/11.2.0/db_1/dbs

在备库上操作:
[oracle@standby dbs]$ ll
total 16
-rw-rw----. 1 oracle oinstall 1544 Mar 28 15:13 hc_standby.dat
-rw-r--r--. 1 oracle oinstall 2851 May 15 2009 init.ora
-rw-r-----. 1 oracle oinstall 24 Mar 15 14:53 lkDBSTANDB
-rw-r----- 1 root root 1536 Mar 29 13:27 orapwprimary

[oracle@standby dbs]$ mv orapwprimary orapwstandby

[oracle@standby dbs]$ ll
total 16
-rw-rw----. 1 oracle oinstall 1544 Mar 28 15:13 hc_standby.dat
-rw-r--r--. 1 oracle oinstall 2851 May 15 2009 init.ora
-rw-r-----. 1 oracle oinstall 24 Mar 15 14:53 lkDBSTANDB
-rw-r----- 1 root root 1536 Mar 29 13:27 orapwstandby

[oracle@standby dbs]$ orapwd file=orapwstandby password = //或者这样设置 密码也可以
[oracle@standby dbs]$ touch initstandby.ora //创建一个启动文件,因为备库不需要 dbca 来创建数据库,所以指定给文件的形式

[oracle@primary dbs]$ strings spfileprimary.ora //在主库上操作查看这个文件

[oracle@standby dbs]$ vim initstandby.ora //编辑文件类容
db_name='primary'
db_unique_name='standby'
memory_target=1581252608
audit_file_dest='/u01/app/oracle/admin/standby/adump'
compatible='11.2.0.4.0'
control_files='/u01/app/oracle/oradata/standby/control01.ctl','/u01/app/oracle/fast_recovery_area/standby/control02.ctl'
log_archive_config='DG_CONFIG=(primary,standby)'
log_archive_dest_1='LOCATION=/u02/oracle/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=standby'
log_archive_dest_2='SERVICE=tnsprimary LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=primary'
log_archive_format='%t_%s_%r.arc'
db_file_name_convert='/u01/app/oracle/oradata/primary','/u01/app/oracle/oradata/standby'
log_file_name_convert='/u01/app/oracle/oradata/primary','/u01/app/oracle/oradata/standby'
fal_client='tnsprimary'
fal_server='tnsstandby'
standby_file_management='AUTO'

[oracle@standby ~]$ mkdir -p /u01/app/oracle/admin/standby/adump //创建目录
[oracle@standby ~]$ mkdir -p /u01/app/oracle/oradata/standby
[oracle@standby ~]$ mkdir -p /u01/oracle/archive
[oracle@standby ~]$ mkdir -p /u01/app/oracle/fast_recovery_area/standby/

2.创建实例_启动到 mount 状态
[oracle@standby dbs]$ sqlplus / as sysdba
SQL> create spfile from pfile; //创建启动文件

File created.

SQL> startup nomount; //启动到 nomount 状态
ORACLE instance started.

Total System Global Area 1586708480 bytes
Fixed Size 2253624 bytes
Variable Size 922750152 bytes
Database Buffers 654311424 bytes
Redo Buffers 7393280 bytes

SQL> show parameter spfile; //查看启动文件的路径地址_可以不看

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /u01/app/oracle/product/11.2.0
.4/db_1/dbs/spfilestandby.ora

SQL> show parameter log; //可以同过 log 日志进行查看_设置的参数

3.配置静态监听_和主库配置是一样的
重要:为什么一定要配置静态监听
nomount 状态下必须使用静态监听才能连接到实例

[oracle@Standby admin]$ cd /u01/app/oracle/product/11.2.0.4/db_1/network/admin/ //进入该目录
[oracle@Standby admin]$ vim listener.ora //编辑文件类容
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0.4/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = standby.localdomain)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)

LISTENER1 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = standby.localdomain)(PORT = 1522))
)
)
)

SID_LIST_LISTENER1 =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = primary)
(SID_NAME = standby)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0.4/db_1)
)
)

ADR_BASE_LISTENER = /u01/app/oracle

[oracle@Standby admin]$ lsnrctl start //启动监听
[oracle@Standby admin]$ lsnrctl start listener1 //启动静态监听

[oracle@Standby admin]$ sqlplus / as sysdba //进入数据库

SQL> select status from v$instance; //查看数据库处于什么样的状态

STATUS
------------
STARTED

4.tns配置
先在主库上操作_如下:
[oracle@Primary admin]$ cd /u01/app/oracle/product/11.2.0.4/db_1/network/admin
[oracle@Primary admin]$ vim tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0.4/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

PRIMARY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = primary.localdomain)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = primary)
)
)

tnsstandby =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = standby.localdomain)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = primary)
)
)

tnsprimary =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = primary.localdomain)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = primary)
)
)

后再从库上操作_如下:
[oracle@Standby admin]$ cd /u01/app/oracle/product/11.2.0.4/db_1/network/admin
[oracle@Standby admin]$ vim tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0.4/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

STANDBY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = standby.localdomain)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = standby)
)
)

tnsstandby =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = standby.localdomain)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = primary)
)
)

tnsprimary =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = primary.localdomain)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = primary)
)
)

5.测试 tns
主库_从库 都做以下操作,通过 OK 才能行
tnsping tnsprimary
tnsping tnsstandby

6.测试连接数据库
主库_从库 都做以下操作,通过 OK 才能行 在这里我就不写 备库的操作了!
[oracle@Primary admin]$ sqlplus sys/oracle@tnsprimary as sysdba //主库上操作

SQL*Plus: Release 11.2.0.4.0 Production on Sat Mar 30 12:05:05 2019

Copyright (c) 1982, 2013, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL>

[oracle@Primary admin]$ sqlplus sys/oracle@tnsstandby as sysdba //主库上操作

SQL*Plus: Release 11.2.0.4.0 Production on Sat Mar 30 12:06:44 2019

Copyright (c) 1982, 2013, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL>

【DataGuard主备库参数检查】
[oracle@Primary admin]$ sqlplus / as sysdba //主库上操作
SQL> show parameter db_unique_name; //检查 db_unique_name 是否一致
SQL> show parameter compa; //查看版本信息是否一致
SQL> show parameter log_archive_config; //查看 DG_config
SQL> show parameter log_archive_dest_1; //查看归档路径_指定详细信息
SQL> show parameter log_archive_dest_2; //查看归档路径_指定详细信息
SQL> show parameter db_file; //查看数据文件存放路径
SQL> show parameter log_file_name_convert; //查看数据LOG存放路径
SQL> show parameter log_archive_format;

[oracle@Standby admin]$ sqlplus / as sysdba //从库上操作
SQL> show parameter db_unique_name; //检查 db_unique_name 是否一致
SQL> show parameter compa; //查看版本信息是否一致
SQL> show parameter log_archive_config; //查看 DG_config
SQL> show parameter log_archive_dest_1; //查看归档路径_指定详细信息
SQL> show parameter log_archive_dest_2; //查看归档路径_指定详细信息
SQL> show parameter db_file; //查看数据文件存放路径
SQL> show parameter log_file_name_convert; //查看数据LOG存放路径
SQL> show parameter log_archive_format;

【从库操作】
[oracle@Standby ~]$ cd $ORACLE_HOME/dbs //发现 从库的 db_unique_name 是主库的 db_unique_name 需要更改
[oracle@Standby dbs]$ vim initstandby.ora //编辑文件类容 往这个文件里面插入一条新数据——如下:
db_unique_name='standby' //原有的文件内容不变,只是插入一条新的内容进去

[oracle@Standby dbs]$ sqlplus / as sysdba //进入数据库
SQL> shutdown immediate; //关闭数据库
SQL> create spfile from pfile; //重新创建启动文件_因为你修改配置了,需要重新创建一个启动文件
SQL> startup nomount; //启动到 nomount 状态下

【使用 Duplicate 创建物理 standby】 备注:主库上操作
[oracle@Primary primary]$ rman target sys/oracle@tnsprimary auxiliary sys/oracle@tnsstandby //这是第一种连接方式_下边的是第二种方式
RMAN> duplicate target database for standby from active database nofilenamecheck;

[oracle@Primary admin]$ rman target sys/oracle@tnsprimary //创建
RMAN> connect auxiliary sys/oracle@tnsstandby //连接辅助实例 备库就是辅助实例
RMAN> duplicate target database for standby from active database nofilenamecheck; //主备连接实例

到这里基本  oracle   主从结束了!
小伙伴们动起手来吧!

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这