搭建DG(data guard),及搭建过程中遇到的一些小问题
一.准备工作:主库:虚拟机名称host06 主机名:host06 IP:192.168.100.60 db_name&SID:ENMO db_unique_name:PROD 存储:文件系统
备库:虚拟机名称:host07 主机名:host07 IP:192.168.100.70 db_name&SID:ENMO db_unique_name:SBDB 存储:文件系统
二.主库:
1.数据库归档并强制生成日志
[oracle@host06 ~]$ sqlplus / as sysdba
SQL> select status from v$instance;
SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination /u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Oldest online log sequence 4
Current log sequence 6
SQL> shutdown immediate;
SQL> alter database archivelog;
SQL> alter database force logging;
SQL> alter database open;
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Oldest online log sequence 4
Next log sequence to archive 6
Current log sequence 6
SQL> select force_logging from v$database;
FOR
---
YES
2.主库创建 standby logfile,原则是最大日志组数+1
SQL> select group#,member from v$logfile; 查看日志组数
SQL> select group#,bytes/1024/1024 as size_m from v$log; 查看日志组大小
SQL> alter database add standby logfile group 4 ('/u01/app/oracle/oradata/ENMO/standby_redo04.log') size 50m; 创建standby logfile
SQL> alter database add standby logfile group 5 ('/u01/app/oracle/oradata/ENMO/standby_redo05.log') size 50m;
SQL> alter database add standby logfile group 6 ('/u01/app/oracle/oradata/ENMO/standby_redo06.log') size 50m;
SQL> alter database add standby logfile group 7 ('/u01/app/oracle/oradata/ENMO/standby_redo07.log') size 50m;
3.查看添加的日志组
SQL> select group#,sequence#,bytes,status from v$standby_log;
GROUP# SEQUENCE# BYTES STATUS
---------- ---------- ---------- ----------
4 0 52428800 UNASSIGNED
5 0 52428800 UNASSIGNED
6 0 52428800 UNASSIGNED
7 0 52428800 UNASSIGNED
SQL> select group#,type,member from v$logfile;
4.主库查看当前参数文件
SQL> host
[oracle@host06 ~]$ cd $ORACLE_HOME/dbs
[oracle@host06 dbs]$ ls
hc_ENMO.dat init.ora lkENMO orapwENMO spfileENMO.ora
5.生成pfile文件并修改
SQL> create pfile from spfile;
File created.
SQL> host
[oracle@host06 ~]$ cd $ORACLE_HOME/dbs
[oracle@host06 dbs]$ ls
hc_ENMO.dat initENMO.ora init.ora lkENMO orapwENMO spfileENMO.ora
[oracle@host06 dbs]$ vi initENMO.ora
追加如下内容
db_unique_name=PROD
log_archive_format=%t_%s_%r.arc
log_archive_config='DG_CONFIG=(PROD,SBDB)'
LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/oracle/FRA
VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PROD'
LOG_ARCHIVE_DEST_2='SERVICE=ENMO70 LGWR SYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=SBDB'
log_archive_dest_state_1=ENABLE
log_archive_dest_state_2=ENABLE
LOG_ARCHIVE_MAX_PROCESSES=4
## Paraneters which using for switch over from Primary to Standby.
fal_server=ENMO70
standby_file_management=AUTO
db_file_name_convert='ENMO','ENMO'
log_file_name_convert='ENMO','ENMO'
6.通过pfile重新生成spfile并启动数据库
SQL> shutdown immediate;
SQL> create spfile from pfile;
SQL> startup
SQL> show parameter name;
7.主库配置tnsnames(注:数据库service_name默认与db_unique_name相同)
[oracle@host06 dbs]$ cd $ORACLE_HOME/network/admin
[oracle@host06 admin]$ ls
listener.ora samples shrept.lst
[oracle@host06 admin]$ vi tnsnames.ora
ENMO60 =
(DESCRIPTION =
(ADDESS_LIST =
(ADDERSS = (PROTOCOL = TCP)(HOST = 192.168.100.60)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = PROD)
)
)
ENMO70 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.70)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = SBDB)
)
)
8.主库 拷贝相关文件至备库
找到主库文件所在目录
[oracle@host06 admin]$ cd $ORACLE_HOME/dbs
[oracle@host06 dbs]$ ls
hc_ENMO.dat initENMO.ora init.ora lkENMO lkPROD orapwENMO spfileEN
拷贝密码文件
[oracle@host06 dbs]$ scp orapwENMO oracle@192.168.100.70:$ORACLE_HOME/dbs/orapwENMO
拷贝pfile参数文件
[oracle@host06 dbs]$ scp initENMO.ora oracle@192.168.100.70:$ORACLE_HOME/dbs/initENMO.ora
拷贝tnsnames配置文件
[oracle@host06 dbs]$ scp $ORACLE_HOME/network/admin/tnsnames.ora oracle@192.168.100.70:$ORACLE_HOME/network/admin/tnsnames.ora
二.备库
1.备库创建静态监听并启动
[oracle@host07 admin]$ cd $ORACLE_HOME/dbs
[oracle@host07 dbs]$ ls
initENMO.ora init.ora orapwENMO
[oracle@host07 dbs]$ vi initENMO.ora
因为主库备库的DB_NAME和SID相同,所以只需改如下参数(已加粗)即可
db_unique_name=SBDB
log_archive_format=%t_%s_%r.arc
log_archive_config='DG_CONFIG=(PROD,SBDB)'
LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/oracle/FRA
VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=SBDB'
LOG_ARCHIVE_DEST_2='SERVICE=SBDB60 LGWR SYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PROD'
log_archive_dest_state_1=ENABLE
log_archive_dest_state_2=ENABLE
LOG_ARCHIVE_MAX_PROCESSES=4
## Paraneters which using for switch over from Primary to Standby.
fal_server=SBDB60
standby_file_management=AUTO
db_file_name_convert='ENMO','ENMO'
"initENMO.ora" 38L, 1415C written
2.按照参数创建文件目录
[oracle@host07 dbs]$ mkdir -p /u01/app/oracle/admin/ENMO/adump
[oracle@host07 dbs]$ mkdir -p /u01/app/oracle/oradata/ENMO/
[oracle@host07 dbs]$ mkdir -p /u01/app/oracle/FRA
3.备库通过pfile生成spfile并启动数据库至nomount
[oracle@host07 dbs]$ echo $ORACLE_SID
SQL> create spfile from pfile;
SQL> startup nomount;
三.在主库操作,用RMAN auxiliary恢复数据库
[oracle@host06 dbs]$ rman target sys/oracle@enmo60 auxiliary sys/oracle@enmo70
Recovery Manager: Release 11.2.0.4.0 - Production on Tue May 2 02:47:05 2017
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00554: initialization of internal recovery manager package failed
RMAN-04005: error from target database:
ORA-12533: TNS:illegal ADDRESS parameters
加粗部分报错说明 tnsnames.ora 的 ‘ADDRESS ’写错了
action:cd $ORACLE_HOME/network/admin
vi tnsnames.ora
注:修改完毕一定要在主库和备库都重新启动一下监听(lsnrctl stop lsnrctl start)
4.再次执行连接rman的命令
[oracle@host06 dbs]$ rman target sys/oracle@enmo60 auxiliary sys/oracle@enmo70
5.连接成功
Recovery Manager: Release 11.2.0.4.0 - Production on Tue May 2 03:29:19 2017
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: ENMO (DBID=784235869)
connected to auxiliary database: ENMO (not mounted)
6.执行恢复命令
RMAN> duplicate target database for standby from active database dorecover nofilenamecheck;
四。在备库应用日志同步数据
[oracle@host07 dbs]$ sqlplus / as sysdba
SQL> select database_role,open_mode from v$database;
DATABASE_ROLE OPEN_MODE
---------------- --------------------
PHYSICAL STANDBY MOUNTED
SQL> alter database recover managed standby database using current logfile disconnect from session;
五。启库
开启备库应用日志之后没取消应用日志,直接启库,报错
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-10456: cannot open standby database; media recovery session may be in
progress
备库取消应用日志,启库
SQL> alter database recover managed standby database cancel;
Database altered.
SQL> alter database open;
Database altered.
六。做快照
切换物理备库为snapshot standby,报错
SQL> alter database convert to snapshot standby;
alter database convert to snapshot standby
*
ERROR at line 1:
ORA-38784: Cannot create restore point 'SNAPSHOT_STANDBY_REQUIRED_05/02/2017
04:43:13'.
ORA-38786: Recovery area is not enabled.
解决办法:(1)SQL> show parameter recovery;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string
db_recovery_file_dest_size big integer 0
recovery_parallelism integer 0
SQL> alter system set db_recovery_file_dest='/u01/recovery';
alter system set db_recovery_file_dest='/u01/recovery'
(2)SQL> alter system set db_recovery_file_dest_size=3G;
(3) 创建一个目录用于存放快速恢复区
[oracle@host07 ~]$ cd /u01
[oracle@host07 u01]$ mkdir recovery
(4)SQL> alter system set db_recovery_file_dest='/u01/recovery';
解决完报错就可以执行快照
SQL> alter database convert to snapshot standby;
七:查看快照信息(可以查看alert日志,会发现数据库创建了一个guaranteed restore point,确保我们切回主备,可应用日志)
SQL> show parameter user_dump;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
user_dump_dest string /u01/app/oracle/diag/rdbms/sbd
b/ENMO/trace
[oracle@host07 u01]$ cd /u01/app/oracle/diag/rdbms/sbdb/ENMO/trace
[oracle@host07 trace]$ tail -100f alert_ENMO.log
alter database convert to snapshot standby
Starting background process RVWR
Tue May 02 04:47:40 2017
RVWR started with pid=28, OS id=24152
Allocated 3981120 bytes in shared pool for flashback generation buffer
Created guaranteed restore point SNAPSHOT_STANDBY_REQUIRED_05/02/2017 04:47:40
Killing 3 processes with pids 24140,24144,24148 (all RFS) in order to disallow current and future RFS connections. Requested by OS process 24071
All dispatchers and shared servers shutdown
八。查看备库数据库状态,并从快照状态恢复至物理状态
SQL> select database_role,open_mode from v$database;
DATABASE_ROLE OPEN_MODE
---------------- --------------------
SNAPSHOT STANDBY MOUNTED
报错
SQL> alter database convert to physical standby;
alter database convert to physical standby
*
ERROR at line 1:
ORA-16433: The database must be opened in read/write mode.
解决:SQL> alter database open;
Database altered.
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ WRITE
SQL> select database_role,open_mode from v$database;
DATABASE_ROLE OPEN_MODE
---------------- --------------------
SNAPSHOT STANDBY READ WRITE
SQL> shutdown immediate
SQL> startup mount; SQL> alter database convert to physical standby;SQL> select status from v$instance;
STATUS
------------
STARTED
切换完成后需要重启到mount应用日志
SQL> shutdown immediate;
SQL> startup mount; SQL> alter database recover managed standby database using current logfile disconnect from session;SQL> select database_role,open_mode from v$database;
DATABASE_ROLE OPEN_MODE
---------------- --------------------
PHYSICAL STANDBY MOUNTED
搭建DG(data guard),及搭建过程中遇到的一些小问题的更多相关文章
- Oracle data guard 10g 搭建
Oracle data guard 10g 搭建 1系统常规参数检查 硬盘 [root@localhost ~]# df -h 内核 [root@localhost ~]# uname -a [roo ...
- 一步一步搭建 Oracle Data Guard
前言 为什么要写前言,因为我要吐槽一下.作为一个Java后端,搭建Oracle Data Guard真的是一件,嗯,既不专业也不擅长的事情,然而,为什么还是要我来弄? 因为DBA出差了,我们这边急着要 ...
- thinkphp 使用过程中遇到的一个小函数
1.实现导出Excel文件,并在导出的文件中显示图片 //导出 public function push(){ $goods_list=M('Dajia')->select(); $data = ...
- js:使用js过程中遇到的一个小问题
在一个作业中使用了js,函数A调用函数B.当A和B中均含有变量i的时候,相关操作结果可能会出错. 将B中的i替换为j(j不存在于A中)后,结果正确. 目前考虑原因是两个变量i有相关性(或者说实际上就是 ...
- AdminIII连接linux Postgresql过程中的几个小问题
1.postgresql.conf主配置文件中要配置postgresql绑定的IP,如果不设置,可能只绑定本地闭环地址:127.0.0.1,可以设定为0.0.0.0:就包括了一切IPv4地址 2.pg ...
- Fiddler使用过程中容易忽略的小技巧
fiddler的基本使用,在之前的一篇博文中有详细介绍,可参见Fiddler抓包工具使用详解,今天来分享几个容易忽略的小技巧. 1.ios机装了证书,依然抓不到包 近期总被同事问及ios机装了证书,但 ...
- Filebeat和logstash 使用过程中遇到的一些小问题记录
一.filebeat 收集软链文件日志 1.1.场景 由于我们新部署的Nginx 日志都是采用的软链的形式. lrwxrwxrwx 1 root root 72 Apr 6 00:00 jy.baid ...
- flowplayer+flashhls使用过程中发现的一些小问题
flashls里边有好几套代码,主要看生成路径,其中flowplayer用了flashls.swc,flashls.swc使用的代码在这里:/src/org/mangui/hls,所以要注意,当搜索代 ...
- [Oracle维护工程师手记]Data Guard Broker中改属性是否需要两侧分别执行?
Data Guard Broker中改属性是否需要两侧分别执行? Data Guard Broker有一些属性,可以通过 show configuration 看到.我有时会想,这些个属性,是否是分别 ...
随机推荐
- 基于虹软人脸识别,实现RTMP直播推流追踪视频中所有人脸信息(C#)
前言 大家应该都知道几个很常见的例子,比如在张学友的演唱会,在安检通道检票时,通过人像识别系统成功识别捉了好多在逃人员,被称为逃犯克星:人行横道不遵守交通规则闯红灯的路人被人脸识别系统抓拍放在大屏上以 ...
- [刷题] 75 Sort Colors
要求 给只有0 1 2三个元素的数组排序 思路 方法1:遍历数组,利用辅助数组保存三个元素的个数,再写入(遍历两遍) 辅助数组有三个元素,对应0 1 2的个数 方法2:模拟三路快排,遍历一遍完成排序 ...
- CentOS 7系统中的时间日期设置
修改 CentOS 7系统中的时间日期设置 timedatectl set-ntp no timedatectl timedatectl set-time 2022-06-04 timedatectl ...
- Rsync忽略文件夹或目录
使用Rsync同步的时候往往会要求对某个文件夹或者文件进行忽略,客户端可以使用--exclude参数来实现对,目录或者文件的忽略 rsync -rltvz --port=873 --exclude & ...
- Msf--控制 Android手机
|>>>中华人民共和国网络安全法<<<|警告:请勿用于非法用途,后果自负! 0.环境 虚拟机 KaliLinux 手机 Redmi 6A 同一局域网下 1.查看控制 ...
- tail -n 10 /etc/passwd
# tail -n 10 /etc/passwdrpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologinchrony:x:992:987::/ ...
- VMware(Caps Lock键)切换大小写作用失效的Bug的解决办法
前言 第一种情况是:进入VMware虚拟机的时候,即使按了Capslock键开启大写,灯虽然亮了,但是,打出来的字母还是小写,没有有任何的效果,根本不能转换成大写. 只有按Shift+字母才能输入大写 ...
- Linux 操作系统(三) 添加用户、切换用户、删除用户
以下命令均已在 Kali Linux 验证. 1.添加用户 --1-- useradd -m username //username 代表你所添加的用户名 --2-- passw ...
- 057.Python前端Django模型ORM多表查询
一 基于对象的查询 1.1 一对多查询 设计路由 from django.contrib import admin from django.urls import path from app01 im ...
- numpy tile()函数
tile(A,B)即在B的方向上,重复A 直接举栗子: A=[1,2] tile(A,2) 此时B=(2) ,B的方向仅包含列方向,将A在列方向上重复一次,得出结果如图1所示 图1-将A在列方向重 ...