[20190225]测试如何使用dg快速主库.txt
--//测试主库破坏的情况下,如何通过dg快速主库.
1.环境:
SYS@book> @ ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
SCOTT@book> create table t as select rownum id,sysdate cdate from dual ;
Table created.
--//dg日志应用正常.检查略.
--//关闭主库,删除里面全部数据文件,日志以及控制文件略.
2.开始恢复:
--//从备库拷贝文件(注停止关闭备库),日志以及控制文件到主库:
$ scp -r /mnt/ramdisk/book/* oracle@192.168.100.78:/mnt/ramdisk/book/
*/
control01.ctl 100% 10MB 10.2MB/s 00:00
control02.ctl 100% 10MB 10.2MB/s 00:00
example01.dbf 100% 346MB 34.6MB/s 00:10
redo01.log 100% 50MB 25.0MB/s 00:02
redo02.log 100% 50MB 50.0MB/s 00:01
redo03.log 100% 50MB 25.0MB/s 00:02
redostb01.log 100% 50MB 50.0MB/s 00:01
redostb02.log 100% 50MB 25.0MB/s 00:02
redostb03.log 100% 50MB 50.0MB/s 00:01
redostb04.log 100% 50MB 25.0MB/s 00:02
sugar01.dbf 100% 10MB 10.0MB/s 00:00
sysaux01.dbf 100% 940MB 36.2MB/s 00:26
system01.dbf 100% 760MB 34.6MB/s 00:22
tea01.dbf 100% 40MB 40.0MB/s 00:01
temp01.dbf 100% 414MB 34.5MB/s 00:12
undotbs01.dbf 100% 865MB 34.6MB/s 00:25
users01.dbf 100% 128MB 32.0MB/s 00:04
--//这样拷贝需要,00+00+10+02+01+02+01+02+01+02+00+26+22+01+12+25+04 = 111秒上下.可以使用tar+pigz
--//我的测试环境机器太老,没有安装pigz.使用gzip代替.
$ cd /mnt/ramdisk
--//$ tar cf - book -I gzip | ssh oracle@192.168.100.78 tar xvf - -I gzip -C /mnt/ramdisk
$ time tar cf - book --use-compress-program gzip | ssh oracle@192.168.100.78 tar xvf - --use-compress-program gzip -C /mnt/ramdisk
...
real 4m28.948s
user 4m26.345s
sys 0m23.483s
--//这样更慢...一些新版本的tar支持-I参数代替--use-compress-program.
--//使用tar注意几点: 1.路径问题, 2.-f参数后面一定要跟文件名,我这里使用管道使用-.前面不要忘记了.
--//我以前犯过一个严重错误tar cf *,不小心忘记加入-,导致*展开的第一个文件破坏了.还好破坏的是控制文件还有1个备份...
--//恢复参数文件以及口令文件略.
3.继续:
--//主库:
SYS@book> startup mount
ORACLE instance started.
Total System Global Area 643084288 bytes
Fixed Size 2255872 bytes
Variable Size 205521920 bytes
Database Buffers 427819008 bytes
Redo Buffers 7487488 bytes
Database mounted.
SYS@book> alter database recover managed standby database finish;
Database altered.
SYS@book> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
Database altered.
--//现在已经转化为主库.
SYS@book> select name,db_unique_name,database_role,flashback_on from v$database;
NAME DB_UNIQUE_NAME DATABASE_ROLE FLASHBACK_ON
-------------------- ------------------------------ ---------------- ------------------
BOOK book PRIMARY NO
--//注意检查FLASHBACK_ON=No,有一些dg打开FLASHBACK功能,建议关闭它在主库.
SYS@book> alter database open ;
Database altered.
--//检查:
SYS@book> insert into scott.t select 2,sysdate from dual ;
1 row created.
SYS@book> commit ;
Commit complete.
SYS@book> select * from scott.t;
ID CDATE
---------- -------------------
1 2019-02-25 10:26:16
2 2019-02-25 11:00:16
--//到备库检查:
SYS@bookdg> startup
ORACLE instance started.
Total System Global Area 634732544 bytes
Fixed Size 2255792 bytes
Variable Size 197133392 bytes
Database Buffers 427819008 bytes
Redo Buffers 7524352 bytes
Database mounted.
Database opened.
SYS@bookdg> alter database recover managed standby database using current logfile disconnect ;
Database altered.
SYS@bookdg> select * from scott.t;
ID CDATE
---------- -------------------
1 2019-02-25 10:26:16
2 2019-02-25 11:00:16
--//OK,备库也能正常应用日志...
--//写这个文档的目的,主要提供给别人对于采用文件系统的数据库环境,一般db_file_name_convert,log_file_name_convert两边都一样
--//的环境,如何快速恢复的一个方法.一般备库正常接收日志的情况下,主库硬件异常的情况下,这样恢复比较简单.
--//当然,可能遇到一些特殊情况就不好说了.^_^.
--//另外大家还可以参考 http://blog.itpub.net/267265/viewspace-2134343/ => [20170227]快速重建dg测试环境.txt