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相关推荐

  1. oracle11g dataguard完全手册3-failover active dataguard(完)

    五.failover           一般情况下执行failover都是主库已经game over.故障转移将备库转换为主库,但不把原主库(有故障,无法正常工作)切换为备库.当故障转移发生后,你必 ...

  2. oracle11g dataguard物理备库搭建

    Dataguard 环境: 操作系统:Redhat6.4 Primary数据库: IP 地址:192.168.1.122 数据库SID:ora11g DB_UNIQUE_NAME:ora11g_pri ...

  3. oracle11g增加备库,oracle11g dataguard物理备库搭建(关闭主库cp数据文件到备库)

    Dataguard 环境: 操作系统:Redhat6.4 Primary数据库: IP 地址:192.168.1.122 数据库SID:ora11g DB_UNIQUE_NAME:ora11g_pri ...

  4. oracle11g dataguard安装实施

    Oracle DataGuard 实施 1.环境准备 1.1 修改主备机hosts文件 vi /etc/hosts 128.160.11.84    wang 128.160.11.218  dg2 ...

  5. oracle11g dataguard windows,Oracle11g 搭建DataGuard(笔记)

    本文参考网络部分资料编写,作为参考笔记 环境: WINDOWS2003+Oralcle11.2.0.1 建议使用 虚拟机来模拟,这样主备两边的环境完全一样. 假设主库的机器名为PRIMARY , IP ...

  6. oracle主备库查询,oracle11g dataguard 备库数据同步的检查方法

    概述: 一.环境 主库: ip地址:192.168.122.203 oracle根目录:/data/db/oracle SID:qyq 数据文件路径/data/db/oracle/oradata/qy ...

  7. 微软云 azure 数据迁移之oracle11g dataguard

    背景,将本地的oracle数据迁移到微软云azure云上面的oracle服务器. 1,复制本地的rman备份集到微软云azure的oracle服务器上 scp -r -P56922 2016-02-0 ...

  8. oracle11g dataguard中standby库文件坏块的修复过程

    **问题描述: ** 机房断电了,所以primary和standby库都是直接断电,然后我都设置了开机自启动oracle,所以第二天我来看的时候,primary和standby都启动了,归档日志也传输 ...

  9. oracle11g dataguard 线上维护问题记录

    1,问题汇总1: 主备切换问题 SQL> select switchover_status from v$database; SWITCHOVER_STATUS ---------------- ...

  10. oracle 12c手册chm,oracle11g中文手册chm

    文档-oracle11g-物理DG日常巡检手册_计算机软件及应用_IT/计算机_专业资料.文件编号: ORACLE11g Dataguard 物理 Standby 日常巡检操作手册编写:___ 校对: ...

最新文章

  1. junit配合catubuter统计单元测试的代码覆盖率
  2. elementui table 不显示表头_不懂就问 || 单晶XRD第二期课后答疑出炉啦!!
  3. 汇编中ah,al,ax;es,cs,ds,ss;
  4. iBATIS.NET 学习笔记(八)
  5. runtime—新手必学
  6. 计算几何模板(kuangbin)
  7. MiniUSB管脚接口引脚定义
  8. 计算机网络---网络编程套接字(一)
  9. vue中的浏览量_vue项目中使用百度统计
  10. usb计算机连接文件,学习两种方式使用USB在计算机之间传输文件!
  11. 极好的六个开源数据挖掘工具
  12. 10大必看的经典恐怖漫画
  13. 趣图:道高一尺,魔高一丈
  14. “牵一发而动全身”——我用观察者模式简单模拟吃鸡
  15. Python - 装机系列30 AMD4650g+华擎A520+光威内存条3200MHZ频率设置
  16. 936烙铁芯发热芯型号判断
  17. 明朝那些事 当年明月
  18. 软件测试师具备的素质_软件测试工程师的所需要的职业素养是什么?
  19. Received disconnect from xxx.xxx.xxx port 22:2: Too many authentication failures for git
  20. idea debug下断点没有对勾的问题

热门文章

  1. Windows Server 2016 实现跨域、跨林之间的访问
  2. Flash地址空间的数据读取——STM32
  3. 微信小程序——mock.js模拟后台交互
  4. VCL界面开发工具!DevExpress VCL v19.2.5全新出发
  5. Github开源项目总结
  6. Lucas–Kanade method(LK光流法)
  7. 耐心看完,越到后面越精彩
  8. c# 中通快递对接_C# .net实现中通快递单号查询 快递鸟API接口
  9. PAT 乙级1068 万绿丛中一点红(20 分)
  10. 离散元 python_开源离散元软件YADE的安装与编译(基于ubuntu18.04) | 望天博客