Data Guard学习物理standby高级管理(2)
时间:2019-03-18 19:14 来源:百度新闻 作者:巧天工 点击:次
SQL>select name from v$datafile; NAME ---------------------------------------------------- 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 已选择6行。 SQL>select name from v$tablespace; NAME ------------------------------ SYSTEM UNDOTBS1 SYSAUX TEMP USERS WEBTBS MYTMP 已选择7行。 可以看到,表空间和数据文件已经自动创建,你是不是奇怪为什么数据文件路径自动变成了jsspdg,赫赫,因为我们设置了db_file_name_convert嘛。 C).删除表空间 --primary数据库操作 SQL> drop tablespace mytmp including contents and datafiles; 表空间已删除。 SQL>select name from v$datafile; NAME -------------------------------------------------- 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; 系统已更改。 提示:使用including子句删除表空间时, D).验证standby数据库 --standby数据库操作 SQL>select name from v$datafile; NAME -------------------------------------------------- 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; NAME ------------------------------ SYSTEM UNDOTBS1 SYSAUX TEMP USERS WEBTBS 已选择6行。 得出结论,对于初始化参数STANDBY_FILE_MANAGMENT设置为auto的话,对于表空间和数据文件的操作完全无须dba手工干预,primary和standby都能很好的处理。 2).STANDBY_FILE_MANAGEMENT设置为MANUAL,增加及删除表空间和数据文件 A).增加新的表空间 --primary数据库操作 SQL> create tablespace mytmp datafile 'e:\ora10g\oradata\jssweb\mytmp01.dbf' size 20m; 表空间已创建。 检查刚添加的数据文件 SQL>select name from v$datafile; NAME ----------------------------------------------- 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 已选择6行。 切换日志 SQL> alter system switch logfile; 系统已更改。 B).验证standby库 --standby数据库操作 SQL>select name from v$datafile; NAME ---------------------------------------------------- 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 已选择6行。 SQL>select name from v$tablespace; NAME ------------------------------ SYSTEM UNDOTBS1 SYSAUX TEMP USERS WEBTBS MYTMP 已选择7行。 可以看到,表空间已经自动创建,但是,数据文件却被起了个怪名字,手工修改其与primary数据库保持一致,如下(注意执行命令之后手工复制数据文件到standby): SQL> alter database create datafile 'E:\ORA10G\PRODUCT\10.2.0\DB_1\DATABASE\UNNAMED00006' 2 as 'E:\ora10g\oradata\jsspdg\mytmp01.dbf'; 数据库已更改。 C).删除表空间 --primary数据库操作 SQL>drop tablespace mytmp including contents and datafiles; 表空间已删除。 SQL>select name from v$datafile; NAME -------------------------------------------------- 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; 系统已更改。 D).验证standby数据库 --standby数据库操作 SQL>select name from v$datafile; NAME ---------------------------------------------------- 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 已选择6行。 SQL>select name from v$tablespace; NAME ------------------------------ SYSTEM UNDOTBS1 SYSAUX TEMP USERS WEBTBS MYTMP 已选择7行。 呀,数据还在啊。赶紧分析分析,查看alert_jsspdg.log文件,发现如下(特别注意粗体): 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 Fri Jan 18 09:48:45 2008 这下明白了,为什么有个UNNAMED00006的数据文件,也晓得为啥standby数据库没能删除新加的表空间了吧,原来是后台的redo应用被停掉了,重启redo应用再来看看: SQL> alter database recover managed standby database disconnect from session; 数据库已更改。 SQL>select name from v$datafile; NAME ---------------------------------------------- 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。 2、重命名数据文件 如果primary数据库重命令了一个或多个数据文件,该项修改并不会自动传播到standby数据库。因为此,如果你想让standby和数据文件与primary保持一致,那你也只能自己手工操作了。这会儿就算STANDBY_FILE_MANAGEMENT也帮不上忙啦,不管它是auto还是manual。 下面通过示例做个演示: A).将重命名的数据文件所在表空间offline --primary数据库操作 SQL> alter tablespace webtbs offline; 表空间已更改。 B).手工将数据文件改名(操作系统) --primary数据库操作 方式多样,不详述。 C).通过命令修改数据字典中的数据文件路径,并online表空间 --primary数据库操作 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; 表空间已更改。 D).暂停redo应用,并shutdown --standby数据库操作 SQL> alter database recover managed standby database cancel; 数据库已更改。 SQL> shutdown immediate ORA-01109: 数据库未打开 ...... E).手工将数据文件改名(操作系统) --standby数据库操作 方式多样,不详述。 F).重启standby,修改数据文件路径(数据字典) --standby数据库操作 SQL> startup mount ORACLE 例程已经启动。 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'; 数据库已更改。 G).重新启动redo应用。 SQL> alter database recover managed standby database disconnect from session; 数据库已更改。 H).切换日志 --primary数据库操作 SQL> alter system switch logfile; 系统已更改。 峻工~~~~ 3、添加或删除Online redo logs 数据库调优时极有可能会涉及到重置日志文件大小或增加删除日志组等操作,基本上这种操作不会传播到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。 (责任编辑:波少) |
- 上一篇:18183自走棋手游专区
- 下一篇:刀塔自走棋前期双亡灵效果解析[多图]