登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

飞哥的技术博客

世上无难事,只怕有心人!

 
 
 

日志

 
 
 
 

一步一步学DataGuard(9)物理standby之高级管理2 - 无名扫把 - CSDN博客  

2009-05-25 16:36:48|  分类: Oracle |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 一步一步学DataGuard(9)物理standby之高级管理2收藏

某些情况下,primary数据库的某些改动会自动通过redo数据传播到standby数据库,因此不需要在standby数据库做额外的操作,而某些情况,则需要你手工调整。

l  ALTER DATABASE ENABLE|DISABLE THREAD 语句(主要针对rac环境,目前基本已废弃,因为ENABLE|DISABLE INSTANCE子句完全能够实现类似功能)

不过需要注意一点,如果数据文件是从其它数据库复制而来(比如通过tts),则不管STANDBY_FILE_MANAGEMENT参数值如何设置,都必须同时复制到standby数据库,并注意要修改standby数据库的控制文件。

1) .STANDBY_FILE_MANAGEMENT设置为AUTO,增加及删除表空间和数据文件

SQL> show parameter standby_file

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

standby_file_management              string      AUTO

SQL> create tablespace mytmp datafile 'e:\ora10g\oradata\jssweb\mytmp01.dbf' size 20m;

SQL> select name from v$datafile;

-----------------------------------------------

E:\ORA10G\ORADATA\JSSWEB\SYSTEM01.DBF

E:\ORA10G\ORADATA\JSSWEB\UNDOTBS01.DBF

E:\ORA10G\ORADATA\JSSWEB\SYSAUX01.DBF

E:\ORA10G\ORADATA\JSSWEB\USERS01.DBF

E:\ORA10G\ORADATA\JSSWEB\WEBTBS01.DBF

E:\ORA10G\ORADATA\JSSWEB\MYTMP01.DBF

SQL> alter system switch logfile;

SQL> select name from v$datafile;

----------------------------------------------------

E:\ORA10G\ORADATA\JSSPDG\SYSTEM01.DBF

E:\ORA10G\ORADATA\JSSPDG\UNDOTBS01.DBF

E:\ORA10G\ORADATA\JSSPDG\SYSAUX01.DBF

E:\ORA10G\ORADATA\JSSPDG\USERS01.DBF

E:\ORA10G\ORADATA\JSSPDG\WEBTBS01.DBF

E:\ORA10G\ORADATA\JSSPDG\MYTMP01.DBF

SQL> select name from v$tablespace;

------------------------------

SQL> drop tablespace mytmp including contents and datafiles;

SQL> select name from v$datafile;

--------------------------------------------------

E:\ORA10G\ORADATA\JSSWEB\SYSTEM01.DBF

E:\ORA10G\ORADATA\JSSWEB\UNDOTBS01.DBF

E:\ORA10G\ORADATA\JSSWEB\SYSAUX01.DBF

E:\ORA10G\ORADATA\JSSWEB\USERS01.DBF

E:\ORA10G\ORADATA\JSSWEB\WEBTBS01.DBF

SQL> alter system switch logfile;

SQL> select name from v$datafile;

--------------------------------------------------

E:\ORA10G\ORADATA\JSSPDG\SYSTEM01.DBF

E:\ORA10G\ORADATA\JSSPDG\UNDOTBS01.DBF

E:\ORA10G\ORADATA\JSSPDG\SYSAUX01.DBF

E:\ORA10G\ORADATA\JSSPDG\USERS01.DBF

E:\ORA10G\ORADATA\JSSPDG\WEBTBS01.DBF

SQL> select name from v$tablespace;

------------------------------

得出结论,对于初始化参数STANDBY_FILE_MANAGMENT设置为auto的话,对于表空间和数据文件的操作完全无须dba手工干预,primary和standby都能很好的处理。

2) .STANDBY_FILE_MANAGEMENT设置为MANUAL,增加及删除表空间和数据文件

SQL> create tablespace mytmp datafile 'e:\ora10g\oradata\jssweb\mytmp01.dbf' size 20m;

SQL> select name from v$datafile;

-----------------------------------------------

E:\ORA10G\ORADATA\JSSWEB\SYSTEM01.DBF

E:\ORA10G\ORADATA\JSSWEB\UNDOTBS01.DBF

E:\ORA10G\ORADATA\JSSWEB\SYSAUX01.DBF

E:\ORA10G\ORADATA\JSSWEB\USERS01.DBF

E:\ORA10G\ORADATA\JSSWEB\WEBTBS01.DBF

E:\ORA10G\ORADATA\JSSWEB\MYTMP01.DBF

SQL> alter system switch logfile;

SQL> select name from v$datafile;

----------------------------------------------------

E:\ORA10G\ORADATA\JSSPDG\SYSTEM01.DBF

E:\ORA10G\ORADATA\JSSPDG\UNDOTBS01.DBF

E:\ORA10G\ORADATA\JSSPDG\SYSAUX01.DBF

E:\ORA10G\ORADATA\JSSPDG\USERS01.DBF

E:\ORA10G\ORADATA\JSSPDG\WEBTBS01.DBF

E:\ORA10G\PRODUCT\10.2.0\DB_1\DATABASE\UNNAMED00006

SQL> select name from v$tablespace;

------------------------------

SQL> alter database create datafile 'E:\ORA10G\PRODUCT\10.2.0\DB_1\DATABASE\UNNAMED00006'

 2  as 'E:\ora10g\oradata\jsspdg\mytmp01.dbf' ;

SQL> drop tablespace mytmp including contents and datafiles;

SQL> select name from v$datafile;

--------------------------------------------------

E:\ORA10G\ORADATA\JSSWEB\SYSTEM01.DBF

E:\ORA10G\ORADATA\JSSWEB\UNDOTBS01.DBF

E:\ORA10G\ORADATA\JSSWEB\SYSAUX01.DBF

E:\ORA10G\ORADATA\JSSWEB\USERS01.DBF

E:\ORA10G\ORADATA\JSSWEB\WEBTBS01.DBF

SQL> alter system switch logfile;

SQL> select name from v$datafile;

----------------------------------------------------

E:\ORA10G\ORADATA\JSSPDG\SYSTEM01.DBF

E:\ORA10G\ORADATA\JSSPDG\UNDOTBS01.DBF

E:\ORA10G\ORADATA\JSSPDG\SYSAUX01.DBF

E:\ORA10G\ORADATA\JSSPDG\USERS01.DBF

E:\ORA10G\ORADATA\JSSPDG\WEBTBS01.DBF

E:\ORA10G\PRODUCT\10.2.0\DB_1\DATABASE\UNNAMED00006

SQL> select name from v$tablespace;

------------------------------

File #6 added to control file as 'UNNAMED00006' because

the parameter STANDBY_FILE_MANAGEMENT is set to MANUAL

The file should be manually created to continue.

Errors with log E:\ORA10G\ORADATA\JSSPDG\LOG1_753_641301252.ARC

MRP0: Background Media Recovery terminated with error 1274

这下明白了,为什么有个UNNAMED00006的数据文件,也晓得为啥standby数据库没能删除新加的表空间了吧,原来是后台的redo应用被停掉了,重启redo应用再来看看:

SQL> alter database recover managed standby database disconnect from session;

SQL> select name from v$datafile;

----------------------------------------------

E:\ORA10G\ORADATA\JSSPDG\SYSTEM01.DBF

E:\ORA10G\ORADATA\JSSPDG\UNDOTBS01.DBF

E:\ORA10G\ORADATA\JSSPDG\SYSAUX01.DBF

E:\ORA10G\ORADATA\JSSPDG\USERS01.DBF

E:\ORA10G\ORADATA\JSSPDG\WEBTBS01.DBF

注意,既使你在primary数据库执行删除时加上了including子句,在standby数据库仍然只会将表空间和数据文件从数据字典中删除,你还需要手工删除表空间涉及的数据文件。

再次得出结论,初始化参数STANDBY_FILE_MANAGMENT设置为manual的话,对于表空间和数据文件的操作必须有dba手工介入,你肯定会问,这太麻烦了,那我干脆配置dg的时候直接把初始化参数设置为auto不就好了嘛,en,你想的很好,不过三思需要提醒你地是,如果你的存储采用文件系统,那当然没有问题,但是如果采用了裸设备,你就必须将该参数设置为manual。

如果primary数据库重命令了一个或多个数据文件,该项修改并不会自动传播到standby数据库。因为此,如果你想让standby和数据文件与primary保持一致,那你也只能自己手工操作了。这会儿就算STANDBY_FILE_MANAGEMENT也帮不上忙啦,不管它是auto还是manual。

SQL> alter tablespace webtbs offline;

SQL> alter tablespace webtbs rename datafile

  2  'E:\ORA10G\ORADATA\JSSWEB\WEBTBS01.DBF' to

  3  'E:\ORA10G\ORADATA\JSSWEB\TBSWEB01.DBF';

SQL> alter tablespace webtbs online;

SQL> alter database recover managed standby database cancel;

SQL> shutdown immediate

Total System Global Area  167772160 bytes

Fixed Size                  1289484 bytes

Variable Size             150995700 bytes

Database Buffers            8388608 bytes

Redo Buffers                7098368 bytes

SQL> alter database rename file

  2  'E:\ORA10G\ORADATA\JSSPDG\WEBTBS01.DBF' to

  3  'E:\ORA10G\ORADATA\JSSPDG\TBSWEB01.DBF';

SQL> alter database recover managed standby database disconnect from session;

SQL> alter system switch logfile;

数据库调优时极有可能会涉及到重置日志文件大小或增加删除日志组等操作,基本上这种操作不会传播到standby数据库,也不会影响到standby数据库的运行,但是如果你不注意其中的关系,造成的影响可能会很深远,

比如,我们假设我们的一台primary数据库拥有5组online redo文件,standby数据库拥有2组,当你执行switch over之后,新的primary执行归档的频率会比standby高的多,因此,当你在primary数据库增加或移除online redologs时,一定记的手工同步一相standby数据库中相关的设置。

这就是我们前面提到的standby redologs与online redologs之间的关系,即保证standby redologs比online redologs要至少多一组。

操作的过程很简单(总不会复杂过添加删除数据文件),这里就不演示了,需要你注意的就是在standby做操作前务必将STANDBY_FILE_MANAGEMENT设置为MANUAL。

一步一步学DataGuard(9)物理standby之高级管理2 - 无名扫把 - CSDN博客 - yangzhongfei - 中飞博客



引文来源  一步一步学DataGuard(9)物理standby之高级管理2 - 无名扫把 - CSDN博客
  评论这张
 
阅读(257)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018