oracle11g dataguard
1. 主库必须处于 归档模式
必须设置数据库强制归档,否则复制到备库有块损坏
=====================================================================
1. 确定数据库25是否处于归档模式
SQL> select name,log_mode from v$database;
NAME LOG_MODE
--------- ------------
ORCL ARCHIVELOG
2. 查看数据库是否强制记录日志
SQL> SELECT FORCE_LOGGING FROM V$DATABASE;
FOR
---
NO
强制主库写日志
ALTER DATABASE FORCE LOGGING;
--强制不写日志
ALTER DATABASE no force logging;
3. 修改主库和备库 监听
--主库
[root@centos7db1 admin]# more listener.ora
# listener.ora Network Configuration File: /home/oracle/database/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=orcl)
(SID_NAME=orcl)
(ORACLE_HOME=/home/oracle/database/product/11.2.0/db_1)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.10.25)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /home/oracle/database
--备库
[oracle@centos7db2 admin]$ more listener.ora
# listener.ora Network Configuration File: /home/oracle/database/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=orcl2)
(SID_NAME=orcl)
(ORACLE_HOME=/home/oracle/database/product/11.2.0/db_1)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.10.26)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /home/oracle/database
4. 修改tns
[root@centos7db1 admin]# more tnsnames.ora
# tnsnames.ora Network Configuration File: /home/oracle/database/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.10.25)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
ORCL2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.10.26)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl2)
)
)
5. 修改主库参数
修改在线日志文件大小,防止在复制的时候日志文件频繁切换
alter database add logfile group 4 '/home/oracle/database/oradata/orcl/redo04.log' size 1024M;
alter database add logfile group 5 '/home/oracle/database/oradata/orcl/redo05.log' size 1024M;
alter system switch logfile;
alter system checkpoint;
select group#, status from v$log;
alter database drop logfile group 1;
alter database drop logfile group 2;
alter database drop logfile group 3;
alter database add logfile group 1 '/home/oracle/database/oradata/orcl/redo01.log' size 1024M;
alter database add logfile group 2 '/home/oracle/database/oradata/orcl/redo02.log' size 1024M;
alter database add logfile group 3 '/home/oracle/database/oradata/orcl/redo03.log' size 1024M;
alter database drop logfile group 4;
alter database drop logfile group 5;
=======================主库操作====================================================================
关闭主库
sqlplus / as sysdba
shutdown immediate;
emctl stop dbconsole
lsnrctl stop
全部物理备份
--仅打包,不压缩
tar -cvf /home/oracle/database20160601.tar /home/oracle/database
--启动数据库修改参数
sqlplus / as sysdba
startup;
下边开始配置DG
-- log_archive_max_processes默认为2 修改为4
--查询数据库发现已经是4 了就不修改了
SQL> show parameter log_archive_max_processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_max_processes integer 4
--------------------------------------------------
--alter system set log_archive_max_processes=4;
--------------------------------------------------
--修改db_unique_name
alter system set db_unique_name='orcl' scope=spfile;
--修改 日志归档配置
alter system set log_archive_config='DG_CONFIG=(orcl,orcl2)';
--修改 备用数据库模式 :同步复制 确认
alter system set log_archive_dest_2='SERVICE=orcl2 LGWR SYNC REOPEN=30 NET_TIMEOUT=20 valid_for=(online_logfile,primary_role) db_unique_name=orcl2' ;
--fetch archive log client
alter system set fal_client='orcl';
--fetch archive log server
alter system set fal_server='orcl2';
--文件管理方式
alter system set standby_file_management=auto;
-- 备用日志文件组 比在线日志多一组
alter database add standby logfile group 7 '/home/oracle/database/oradata/orcl/standby07.log' size 1024M;
alter database add standby logfile group 8 '/home/oracle/database/oradata/orcl/standby08.log' size 1024M;
alter database add standby logfile group 9 '/home/oracle/database/oradata/orcl/standby09.log' size 1024M;
alter database add standby logfile group 10 '/home/oracle/database/oradata/orcl/standby10.log' size 1024M;
--关闭
shutdown immediate
--重启
startup
--创建初始化参数文件
create pfile='/home/oracle/database/product/11.2.0/db_1/dbs/initorcl.ora' from spfile;
--查看主库 保护模式
select db_unique_name,protection_mode,protection_level from v$database;
--设置主库 为最大可用性模式
alter database set standby database to maximize availability;
======================================备库操作=======================================
见 本机 dataguard 目录
sqlplus / as sysdba
shutdown immediate;
lsnrctl stop;
emctl stop dbconsole;
解压文件从服务器备份的安装后文件,但是不需要数据
--删除日志文件和数据文件 因为要用rman 来备份数据库
rm -rf /home/oracle/database/admin/orcl/adump/
rm -rf /home/oracle/database/admin/orcl/pfile
rm -rf /home/oracle/database/admin/orcl/dpdump
rm -rf /home/oracle/database/oradata/orcl/
rm -rf /home/oracle/database/fast_recovery_area/orcl/
rm -rf /home/oracle/database/fast_recovery_area/ORCL/
rm -rf /home/oracle/database/product/11.2.0/db_1/dbs
--重建库的时候需要删除之前的归档
rm -rf /home/oracle/database/fast_recovery_area/ORCL2/archivelog
rm -rf /home/oracle/database/fast_recovery_area/ORCL2/onlinelog
--------------------------------------------------
修改主库的initORCL.ora 文件 注意不要修改db_name
出现 是因为目录不存在
必须保证 oradata/orcl 目录存在
fast_recovery_area/orcl 也必须存在
启动监听
lsnrctl start;
--创建密码文件 否则rman 无法登录
orapwd file=$ORACLE_HOME/dbs/orapworcl password='password' entries=5
sqlplus /nolog
conn /as sysdba
--启动到nomount
startup nomount
--进入rman orcl2 是备库 ,orcl 是主库
--在出现 PLS-00201:identifier 'DBMS_RCVCAT.GETDBID' must be declared 这个错误时加上 nocatalog 参数
rman target sys/'password'@orcl auxiliary sys/'password'@orcl2 nocatalog
--rman 复制数据库,得关闭防火墙 否则可能连接不上
duplicate target database for standby nofilenamecheck from active database;
复制完成后 设置备库开始应用日志
conn /as sysdba
--打开数据库
alter database open;
--开始应用日志 如果没有复制数据 请启动数据复制
alter database recover managed standby database using current logfile disconnect from session;
--查看备用日志文件
select status from v$standby_log;
dataguard 日常维护技巧
http://wenku.baidu.com/link?url=SiFzMIknwFRh3yvGrm3juCHGgrvtXaHfdc2XzasRf7eRdeXhSoY3zY-zZ8fG7DPFfFXMckrV-JDfbyYQrhkKr_2E2yABCPEdEKb294jBwqi
------------------------------------------------
------------------------------------------20161223-故障排除 不复制----------------
密码过期造成的 权限不足 而且备库空间不足
主库到备库的redo传输需要通过密码文件中的sys用户密码来进行认证,如果在主库配置了其它的sysdba用户也可以,但问题是主库的redo传输是通过密码文件像sys一样的用户来作为认证基础的,一旦主库加密后的密码和备库不一致,那么redo传输就会有麻烦。
如果需要保证dataguard的可持续性,如果主库存在任何密码文件的变更,我们必须从主库拷贝密码文件到备库
SELECT * FROM V$DATAGUARD_STATUS ORDER BY TIMESTAMP desc
主库 错误 PING[ARC2]: Heartbeat failed to connect to standby 'orcl2'. Error is 1031.
ora 1031 错误是权限不足
登录备库的时候
备库错误:
主库密码
备库
直接修改备库的过期策略是修改不了的
解决方法 把主库的密码文件 拷贝到备库
/home/oracle/database/product/11.2.0/db_1/dbs
orapworcl
-------------------------------------------
dgmgrl dataguard 管理
tnsping orcl2 --查看tns 是否通
ora 19809 错误 归档日志满
备库
备库的归档日志满
--查询备库 归档日志
SELECT * FROM v$recovery_file_dest;
在备库上
rman target/
DELETE NOPROMPT ARCHIVELOG UNTIL TIME "TO_DATE('2017-05-01','YYYY-MM-DD')";
删除后必须要验证 然后删除否则数据库中占用记录不会修改
2)命令>crosscheck archivelog all;
3)命令>delete NOPROMPT expired archivelog all;
一定要注意主库的归档日志不能满 否则也不能复制到备库,原因不明
------------------------------------------------------------
--备库 standby archive log 满
验证复制时候正确
dbv file='/home/oracle/database/oradata/orcl/bworg01.dbf'
dbv file='/home/oracle/database/oradata/orcl/CHECKROLL01'
在dbv 验证备库文件的时候,发现数据库老有以下错误,备库的块损坏
原因:
DBV-00201: Block, DBA number, marked corrupt for invalid redo application
Cause: The block was marked corrupt by the Oracle database server for invalid redo application, ex: media recovery of a NOLOGGING object or direct loaded data.
Action: If the block is not currently allocated to a database object, then no action is required. If the block is allocated,
then the object will need to be rebuilt, or data to be reloaded.
仔细想了下:日志应用?咦?这不是只用在dataguard等软件才需要么,进一步询问。
果然是在搭建dataguard,在上面的Cause信息中NOLOGGING关键字中,并且在网上查找了下信息。
明白了是他没有开启force logging。之后开启数据库的force logging就好了。
alter database force logging ;
查询主库25,发现确实没有强制归档,最好主备库 都开启强制归档
下面将oracle数据库设置为30分钟内没进行归档的话,就强制其归档:
alter system set archive_lag_target=1800;
备库的归档日志也会满
重做传输服务 Redo Transport Service
主数据库的LGWR 将重做数据写入到自己的 ORL(online redo log)中一个独立的DataGruard进程从SGA的重做缓存区读取信息,交由OracleNet服务传输到
备份数据库 这个进程叫 Log Network Server (LNS),有3个备库就有3个LNS
在备库端 由LNS 传输的重做记录在备用数据库由另一个进程 Remote File Server (RFS) 接收,RFS 在备用数据库上接收重做数据,然后写入备用重做
日志(Standy Redo log SRL)文件中。
备库端:介质恢复协调器(Media Recovery Coordinator)MRP0 管理恢复会话按SCN 顺序合并来自多个实例的重做数据(在使用RAC的情况下),然后应用进程
(pr00 pr01...)读取数据块 组装数据
dataguard 维护
--查看恢复和错误信息
SELECT * FROM V$DATAGUARD_STATUS ORDER BY TIMESTAMP desc
创建dblink
create public database link
to_25 connect to BWORG identified by "password" using 'BWIE_25';
--备库查看RFS接收日志和MRP应用日志同步主库情况
select process, sequence#, status, delay_mins from v$managed_standby;
--查看日志接收状态
select REGISTRAR,CREATOR,THREAD#,APPLIED,sequence#,first_change#,next_change#, COMPLETION_TIME from v$archived_log;
--备库查看已经应用的redo
select thread#,sequence#,first_change#,next_change# from v$log_history;
主、备库查看是否有gap
select status,gap_status from v$archive_dest_status where dest_id=2;
--备库查看
select * from v$archive_gap;
查看备库 接收的最大日志
select sequence#
from v$archived_log
where recid = (select max(recid) from v$archived_log);
查看主库的日志
select sequence#,status from v$log;
查看恢复区大小
select name,space_limit,space_used,number_of_files from v$recovery_file_dest;
alter system set db_recovery_file_dest_size=200G scope=both;
物理DG要实现实时同步:在最大性能的模式下,是可以的。
先停用日志同步:
alter database recover managed standby database cancel;
实时同步: 每次断电重启后 需要 现在备库执行恢复数据同步 然后在主库 执行 alter system switch logfile;
启用备库同步
alter database recover managed standby database using current logfile disconnect from session;
日志同步:只有在主库日志文件切换后才同步
alter databse recover managed standby databse disconnect from session;
日志同步的模式,就是要把日志传动DG后,才能更新数据,日志不归档时,数据是不同步到物理DG的。
搜索
使用图形化界面管理GridControl和DataGuard - Secooler.pdf
oracle db_name,sid20150810.docx
data Guard可以以只读的方式打开数据库,但此时Media Recovery利用日志进行数据同步的过程就停止了,如果物理备用数据库处于恢复的过程中数据库就不能打开查询,也就是说日志应用和只读打开两个状态是互斥的。
Oracle 11g 中推出的Active Data Guard功能解决了这个矛盾,在利用日志恢复数据的同时可以用只读的方式打开数据库,用户可以在备用数据库上进行查询、报表等操作,这类似逻辑Data Guard备用数据库的功能(查询功能方面),但是,数据同步的效率更高、对硬件的资源要求更低。这样可以更大程度地发挥物理备用数据库的硬件资源的效能。
http://ylw6006.blog.51cto.com/470441/841815/
1. DB_NAME 表示数据库名称,DB_NAME 会保持在数据文件头、控制文件、REDO文件里,所以更改DB_NAME不能仅仅修改spfile ,还需要用nid 来进行更改,并且更改后还需要手工做些工作,使其生效。
DB_NAME 最长 8 个字符。
2. 在 DG下,主库和物理从库的 DB_NAME 是一致的,主库和物理从库的DB_UNIQUE_NAME 不同,DB_UNIQUE_NAME 用于标识主从库。
修改 DB_UNIQUE_NAME 需要修改 spfile 并重启数据库;
由于 DB_NAME 记录在数据文件头、控制文件、REDO文件里,所以修改 DB_NAME 一般有两种方式:
(1)备份控制文件到trace,修改 spfile,重启数据库,resetlogs 打开数据库
(2)或者通过 nid 命令修改
DB_NAME 数据库名称,也就是数据库的名字标示。这里,数据库里可能有多个实例,比如RAC里的多节点,这多个节点是不同的实例
,但是却有相同的名字,他们的 DB_NAME是相同的但是Instance_name是不同的。DB_NAME会保持在数据文件头里
,所以更改DB_NAME不能仅仅修改parameter,还需要用nid 来进行更改,并且更改后还需要手工做些工作,是其生效。
3. SID:System Identifier
The SID identifies the instance's shared memory on a host, but may not uniquely distinguish this instance
from other instances
doc上把sid解释为在host上用sid来标示实例的共享内存的,可见sid主要是和os打交道的。
sid可以通过如下语句在库中查询: select instance_name from v$instance;
----------------------------------
主库
alter database force logging;
alter system set db_unique_name='orcl1' scope=spfile;
alter system set log_archive_config='DG_CONFIG=(orcl1,orcl2)';
alter system set log_archive_dest_2='SERVICE=orcl2 lgwr sync valid_for=(online_logfile,primary_role) db_unique_name=orcl2';
alter system set fal_client='orcl1';
alter system set fal_server='orcl2';
alter system set standby_file_management=auto;
alter database add standby logfile group 4 '/home/oracle/database/oradata/orcl/standby04.log' size 50M;
alter database add standby logfile group 5 '/home/oracle/database/oradata/orcl/standby05.log' size 50M;
alter database add standby logfile group 6 '/home/oracle/database/oradata/orcl/standby06.log' size 50M;
alter database add standby logfile group 7 '/home/oracle/database/oradata/orcl/standby07.log' size 50M;
shutdown immediate;
startup;
create pfile from spfile;
备库
[oracle@bogon1 admin]$ rman target sys/123456@orcl1 auxiliary sys/123456@orcl2
Recovery Manager: Release 11.2.0.3.0 - Production on Tue May 10 20:48:22 2016
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (DBID=1439208389)
connected to auxiliary database: ORCL (not mounted)
RMAN> duplicate target database for standby nofilenamecheck from active database;
oracle11g dataguard相关推荐
- oracle11g dataguard完全手册3-failover active dataguard(完)
五.failover 一般情况下执行failover都是主库已经game over.故障转移将备库转换为主库,但不把原主库(有故障,无法正常工作)切换为备库.当故障转移发生后,你必 ...
- oracle11g dataguard物理备库搭建
Dataguard 环境: 操作系统:Redhat6.4 Primary数据库: IP 地址:192.168.1.122 数据库SID:ora11g DB_UNIQUE_NAME:ora11g_pri ...
- oracle11g增加备库,oracle11g dataguard物理备库搭建(关闭主库cp数据文件到备库)
Dataguard 环境: 操作系统:Redhat6.4 Primary数据库: IP 地址:192.168.1.122 数据库SID:ora11g DB_UNIQUE_NAME:ora11g_pri ...
- oracle11g dataguard安装实施
Oracle DataGuard 实施 1.环境准备 1.1 修改主备机hosts文件 vi /etc/hosts 128.160.11.84 wang 128.160.11.218 dg2 ...
- oracle11g dataguard windows,Oracle11g 搭建DataGuard(笔记)
本文参考网络部分资料编写,作为参考笔记 环境: WINDOWS2003+Oralcle11.2.0.1 建议使用 虚拟机来模拟,这样主备两边的环境完全一样. 假设主库的机器名为PRIMARY , IP ...
- oracle主备库查询,oracle11g dataguard 备库数据同步的检查方法
概述: 一.环境 主库: ip地址:192.168.122.203 oracle根目录:/data/db/oracle SID:qyq 数据文件路径/data/db/oracle/oradata/qy ...
- 微软云 azure 数据迁移之oracle11g dataguard
背景,将本地的oracle数据迁移到微软云azure云上面的oracle服务器. 1,复制本地的rman备份集到微软云azure的oracle服务器上 scp -r -P56922 2016-02-0 ...
- oracle11g dataguard中standby库文件坏块的修复过程
**问题描述: ** 机房断电了,所以primary和standby库都是直接断电,然后我都设置了开机自启动oracle,所以第二天我来看的时候,primary和standby都启动了,归档日志也传输 ...
- oracle11g dataguard 线上维护问题记录
1,问题汇总1: 主备切换问题 SQL> select switchover_status from v$database; SWITCHOVER_STATUS ---------------- ...
- oracle 12c手册chm,oracle11g中文手册chm
文档-oracle11g-物理DG日常巡检手册_计算机软件及应用_IT/计算机_专业资料.文件编号: ORACLE11g Dataguard 物理 Standby 日常巡检操作手册编写:___ 校对: ...
最新文章
- junit配合catubuter统计单元测试的代码覆盖率
- elementui table 不显示表头_不懂就问 || 单晶XRD第二期课后答疑出炉啦!!
- 汇编中ah,al,ax;es,cs,ds,ss;
- iBATIS.NET 学习笔记(八)
- runtime—新手必学
- 计算几何模板(kuangbin)
- MiniUSB管脚接口引脚定义
- 计算机网络---网络编程套接字(一)
- vue中的浏览量_vue项目中使用百度统计
- usb计算机连接文件,学习两种方式使用USB在计算机之间传输文件!
- 极好的六个开源数据挖掘工具
- 10大必看的经典恐怖漫画
- 趣图:道高一尺,魔高一丈
- “牵一发而动全身”——我用观察者模式简单模拟吃鸡
- Python - 装机系列30 AMD4650g+华擎A520+光威内存条3200MHZ频率设置
- 936烙铁芯发热芯型号判断
- 明朝那些事 当年明月
- 软件测试师具备的素质_软件测试工程师的所需要的职业素养是什么?
- Received disconnect from xxx.xxx.xxx port 22:2: Too many authentication failures for git
- idea debug下断点没有对勾的问题
热门文章
- Windows Server 2016 实现跨域、跨林之间的访问
- Flash地址空间的数据读取——STM32
- 微信小程序——mock.js模拟后台交互
- VCL界面开发工具!DevExpress VCL v19.2.5全新出发
- Github开源项目总结
- Lucas–Kanade method(LK光流法)
- 耐心看完,越到后面越精彩
- c# 中通快递对接_C# .net实现中通快递单号查询 快递鸟API接口
- PAT 乙级1068 万绿丛中一点红(20 分)
- 离散元 python_开源离散元软件YADE的安装与编译(基于ubuntu18.04) | 望天博客