DataGuard - 物理Standby管理

来源:互联网 发布:企业怎样合理避税 知乎 编辑:程序博客网 时间:2024/04/29 07:56
DG - 物理Standby管理
================

一、Read only/write模式打开物理standby
以read only 或read write模式打开物理standby,可以转移一些查询,备份之类的操作到standby数据库,以分担一些primary的压力。

1). standby数据库处于shutdown状态
直接startup即可 。
2). standby数据库处于redo应用状态
查看redo应用是否启用:
在操作系统下: ps -ef |grep ora_mrp 有该进程表明Standby库启用了Redo应用

SQL
> select process,status from v$managed_standby;
--有MRP0进程在WAIT_FOR_LOG状态时表示启动了Redo应用。

SQL> select recovery_mode,protection_mode from v$archive_dest_status where database_mode='MOUNTED-STANDBY';
--recovery_mode为 MANAGED | MANAGED REAL TIME APPLY 就表示启用了Redo应用; 为 IDLE 时表示没有启用Redo应用。 


首先取消redo应用:
SQL> alter database recover managed standby database cancel;

SQL> alter database open

3). 从open状态再切换回redo应用,并不需要shutdown,只需启用redo应用即可
SQL> alter database recover managed standby database disconnect from session;
由于只读打开时就不能应用,虽然我们能够查询,但是查询的结果确是与primary 不同步的,这点大大降低了物理standby 做报表服务分担主库压力的可能性,对于这点呢,我们有两个解决方案:a.改用逻辑standby b. 使用oracle 11G

二、管理影响standby的primary数据库事件
      某些情况下,primary数据库的某些改动会自动通过redo数据传播到standby数据库,因此不需要在standby数据库做额外的操作,而某些情况,则需要手工调整。
下列事件会由redo传输服务及redo应用自动处理,不需要dba的干预:
alter database enable | disable thread语句
修改表空间状态(例如read-write到read-only, online到offline)
创建修改删除表空间或数据文件(前提条件:参数STANDBY_FILE_MANAGEMENT设置为AUTO)

以下事情则需要dba手工干预:
1. Standby_file_management设置为manual, 添加修改删除数据文件或表空间 
  不过需要注意一点,如果数据文件是从其它数据库复制而来,则不管Standby_file_management参数值如何设置,都必须同时复制到standby数据库,并注意要修改standby数据库的控件文件。
2. 重命名数据文件
  如果primary数据库重命名了一个或多个数据文件,该项不修改并不会自动传播到standby数据库,不管standby_file_management它是auto还是manual。
 A. SQL> alter tablespace webtbs offline; -- primary数据库操作
 B. 手工数据文件改名(操作系统) -- primary数据库操作
 C. SQL> alter tablespace webtbs rename datafile 'webtbs01.dbf' to 'tbsweb01.dbf'; 
  SQL> alter tablespace webtbs online;
 D. 暂停redo应用,并shutdown --standby数据库操作
  SQL> alter database recover managed standby database cancel;
  SQL> shutdown immediate
 E. 手工将数据文件改名 -- standby数据库操作
 F. 重启standby,修改数据文件路径(数据字典) --standby数据库操作
  SQL> startup mount
  SQL> alter database rename file 'webtbs01.dbf' to 'tbsweb01.dbf'; 
 G. 重新启动redo应用
  SQL> alter database recover managed standby database disconnect from session;
 H. 切换日志 -- primary数据库操作
  SQL> alter system switch logfile;
3. 添加或删除online redo logs

三、对open resetlogs的primary数据库standby的恢复
Standby 数据库状态
Standby 库操作
解决方法
没有应用resetlog之前的redo数据
自动应用新的redo数据
无需DBA介入
应用了resetlog之后的redo数据,
如果Standby开启了Flashback
可以应用,需DBA手工操作
1.手工flashback到应用之前
2.重启redo应用,以重新接受新的redo数据
应用了resetlog之后的redo数据,
而Standby没有开启Flashback
完全无法应用
重建物理Standby是唯一的选择

四、 监控primary/standby数据库
1. 与恢复进度相关的v$视图应用
A). 查看进程的活动状况 -- v$managed_standby
B). 确认redo应用进度 -- v$archive_dest_status
C). 检查归档文件路径及创建信息 -- v$archived_log
D). 查询归档历史 -- v$log_history
2. 与log应用相关的v$视图应用
A). 查询当前数据的基本信息 -- v$database
B). 检查应用模式 --v$archive_dest_status
C). Data guard事件 -- v$dataguard_status

五、调整物理standby log应用频率
  调整应用频率说白了就是调整IO读取能力
  1. 设置recover并行度
  SQL> alter database recover managed standby database parallel 2 disconnect form session;
  2. 加快redo应用频率
  设置初始化参数DB_BLOCK_CHECKING=FALSE
  3. 设置PARALLEL_EXECUTION_MESSAGE_SIZE
  4. 优化磁盘I/O


0 0
原创粉丝点击