Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3303663
  • 博文数量: 631
  • 博客积分: 10716
  • 博客等级: 上将
  • 技术积分: 8397
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-01 22:35
文章分类

全部博文(631)

文章存档

2020年(2)

2019年(22)

2018年(4)

2017年(37)

2016年(22)

2015年(1)

2013年(12)

2012年(20)

2011年(19)

2010年(20)

2009年(282)

2008年(190)

分类: Oracle

2017-04-25 08:25:01

  1. 一、rac主库配置  
  2. 1.1、db_name、db_unique_name、instance_name、service_name  
  3. db_name:数据库名,多节点的数据库名相同,实例名不相同  
  4. db_unique_name:HA的应用,它不同于db_name,dg中要求主从库db_name相同;db_unique_name直接决定了service_name,即服务名  
  5. 创建数据库时会指定全局数据库名和sid,sid直接决定了instance_name;监听中global_name和db_name可以不同  
  6.   
  7. rac主库:db_name=amondbsdb_unique_name=amondbs_primaryORACLE_SID=amondbs1,amondbs2,service=amondbs_pri_ser  
  8. 单实例备库:db_name=amondbsdb_unique_name=amondbs_standbyORACLE_SID=amondbs_phydbservice=amondbs_sta_ser  
  9.   
  10. rac的数据库名相同,但是实例名不同,实例名(instance_name)来源于ORACLE_SID;默认本地服务名也称为动态注册监听默认服务名(service_names,也可以通过lsnrctl status查看)来源于db_unique_name、db_name;配置连接字符串时connect_data配置的service_name,service_name其实就是service_names的值  
  11.   
  12. (0)修改db_unique_name和ORACLE_SID后,会自动创建$ORACLE_BASE/diag/rdbms/db_unique_name/ORACLE_SID/trace  
  13. (1)密码文件是以实例名为标识,即ORACLE_SID,与db_unique_name无关  
  14. (2)执行backup archivelog all将当前重做日志切换并归档,然后再做备份归档  
  15. (3)静态注册中的sid_name:数据库运行的实例名,必须和instance_name相同;global_dbname:可以是任意值,配置tns时service_name跟它相同  
  16. (4)一个instance_name可以对应多个service_name  
  17. (5)oracle用户安装oracle数据库,指定Global Database Name不会自动填充,它的值默认就是db_name、db_unique_name的值  
  18.   
  19. 1.2、rac主库必须置为归档模式  
  20. root@node1.localdomain[+ASM1]/root$crsctl start crs  
  21. oracle@node1.localdomain[amondbs1]/home/oracle$sqlplus / as sysdba  
  22. SQL> select name,open_mode,log_mode,force_logging from gv$database;  
  23.   
  24. NAME      OPEN_MODE            LOG_MODE     FOR  
  25. --------- -------------------- ------------ ---  
  26. AMONDBS   READ WRITE           ARCHIVELOG   YES  
  27. AMONDBS   READ WRITE           ARCHIVELOG   YES  
  28.   
  29. alter database archivelog;  
  30. alter database force logging;  
  31.   
  32. 1.3、rac主库必须置为force logging模式  
  33. SQL> select inst_id,name,log_mode,force_logging from gv$database;  
  34.   
  35.    INST_ID NAME      LOG_MODE     FOR  
  36. ---------- --------- ------------ ---  
  37.          1 AMONDBS   ARCHIVELOG   YES  
  38.          2 AMONDBS   ARCHIVELOG   YES  
  39.   
  40. SQL> alter database force logging;  
  41.   
  42. 1.4、rac主库执行rman全备尤其是控制文件  
  43. oracle@node1.localdomain[amondbs1]/oracle$mkdir /oracle/rman_backup  
  44. RMAN>   
  45. run  
  46. {delete noprompt obsolete;  
  47. allocate channel c1 type disk MAXPIECESIZE 1G;  
  48. allocate channel c2 type disk MAXPIECESIZE 1G;  
  49. backup AS COMPRESSED BACKUPSET filesperset 2 format '/oracle/rman_backup/db_full_%T_%d_%t_%s_%p' database;  
  50. backup AS COMPRESSED BACKUPSET format '/oracle/rman_backup/arch_full_%T_%d_%t_%s_%p' archivelog all delete input;  
  51. backup current controlfile for standby format '/oracle/rman_backup/ctl_standby_%T_%d_%t_%s_%p';  
  52. release channel c1;  
  53. release channel c2;  
  54. }  
  55.   
  56. 1.5、rac主库创建从库的初始化参数文件到全备目录init+sid  
  57. SQL> show parameter pfile  
  58. SQL> create pfile='/oracle/rman_backup/initamondbs_phydb.ora' from spfile='+DATADG/amondbs/spfileamondbs.ora';  ##spfile应该指定磁盘组的spfile初始化参数文件  
  59.   
  60. 1.6、rac主库修改双节点共享的初始化参数文件,spfile是共享的,每个节点的pfile有指向spfile的路径  
  61. SQL> select name from v$datafile;  
  62.   
  63. NAME  
  64. --------------------------------------------------------------------------------  
  65. +DATADG/system01.dbf  
  66. +DATADG/sysaux01.dbf  
  67. +DATADG/undotbs101.dbf  
  68. +DATADG/undotbs201.dbf  
  69. +DATADG/users.dbf  
  70. +DATADG/testtbs01  
  71.   
  72. SQL> shutdown immediate;  
  73.   
  74. ##通过共享的spfile产生pfile,修改rac所有节点的参数,dg配置说明了*/oradata/db_unique_name创建目录  
  75. *.db_name='amondbs'  
  76. *.db_unique_name='amondbs_primary'  
  77. *.log_archive_config='dg_config=(amondbs_primary,amondbs_standby)'    
  78. *.log_archive_dest_2='service=amondbs_sta_ser lgwr async affirm valid_for=(online_logfiles,primary_role) db_unique_name=amondbs_standby'  
  79. *.log_archive_dest_state_1=enable  
  80. *.log_archive_dest_state_2=defer  
  81. *.remote_login_passwordfile='EXCLUSIVE'  
  82. *.db_file_name_convert='/home/oracle/oracle/oradata/amondbs_standby','+DATADG/amondbs/datafile'  ##standby库oracle用户创建$ORACLE_BASE/oradata  
  83. *.log_file_name_convert='/home/oracle/oracle/oradata/amondbs_standby','+DATADG/amondbs'  
  84. *.fal_server=amondbs_standby  
  85. *.standby_file_managent=auto  
  86. 还有角色切换后新角色的配置  
  87.   
  88. ##rac单个节点生成spfile即可  
  89. ##关闭双节点数据库shutdown,启动后竟然使用修改的单节点pfile启动数据库,因为create pfile改变了SPFILE=,所以必须create spfile创建双节点共享的初始化参数文件、修改pfile  
  90. SQL> create spfile='+DATADG/amondbs/spfileamondbs.ora' from pfile='/oracle/rman_backup/initamondbs_phydb.ora';  
  91. oracle@node1.localdomain[amondbs1]/oracle/db11g_11.2.0.4/dbs$vi initamondbs1.ora  
  92. SPFILE='+DATADG/amondbs/spfileamondbs.ora'  
  93. SQL> startup    
  94. SQL> alter system set log_archive_dest_state_2=defer sid='*' scope=both;     
  95.   
  96. ##此时服务名不再是默认的服务名,@amondbs_primary时报错,如果配置tnsnames,service_name根据db_unique_name  
  97. oracle@node1.localdomain[amondbs1]/oracle/db11g_11.2.0.4/dbs$lsnrctl status  
  98. Service "+ASM" has 1 instance(s).  
  99.   Instance "+ASM1", status READY, has 1 handler(s) for this service...  
  100. Service "amondbs_primary" has 1 instance(s).  
  101.   Instance "amondbs1", status READY, has 1 handler(s) for this service...  
  102.   
  103. root@node1.localdomain[+ASM1]/root$sqlplus sys/a@amondbs_primary as sysdba  
  104.   
  105. SQL*Plus: Release 11.2.0.4.0 Production on Fri Aug 15 10:58:25 2014  
  106.   
  107. Copyright (c) 1982, 2013, Oracle.  All rights reserved.  
  108.   
  109. ERROR:  
  110. ORA-12154: TNS:could not resolve the connect identifier specified  
  111.   
  112.   
  113. 注意:  
  114. (1)rac主库的*.db_unique_name='amondbs_primary'最好不要设置,保持默认避免scan listener起不来,因为tnsnames.ora中配置的服务名是amondbs;db_unique_name和tns服务名必须保持相同  
  115. (2)SQL> alter system set log_archive_dest_2='service=amondbs_sta_ser lgwr sync affirm valid_for=(online_logfiles,primary_role) db_unique_name=amondbs_standby' sid='*' scope=both;  
  116.   
  117. 1.6、rac主库修改口令文件,使双节点sys用户口令相同,dg从库的sys口令与双节点sys口令相同  
  118. sqlplus sys/123456@192.168.0.31:1521/amondbs_primary as sysdba  
  119.   
  120. 1.7、rac主库配置tnsname.ora资料库,即配置amondbs_pri_ser、amondbs_sta_ser服务名,需要改双节点  
  121. ##rac主库配置tnsname.ora资料库后,记得使用tnsping测试网络是否可用  
  122. oracle@node1.localdomain[amondbs1]/home/oracle$vi $ORACLE_HOME/network/admin/tnsnames.ora  
  123. # tnsnames.ora Network Configuration File: /oracle/db11g_11.2.0.4/network/admin/tnsnames.ora  
  124. # Generated by Oracle configuration tools.  
  125. amondbs_pri_ser =  
  126.         (DESCRIPTION =  
  127.                 (ADDRESS_LIST =  
  128.                      (LOAD_BALANCE = on)  
  129.                    (FAILOVER = on)  
  130.                    (ADDRESS = (PROTOCOL = tcp)(HOST = 192.168.0.4)(PORT=1521))  
  131.                    (ADDRESS = (PROTOCOL = tcp)(HOST = 192.168.0.6)(PORT=1521))  
  132.                 )  
  133.                 (CONNECT_DATA =  
  134.                         (SERVICE_NAME = amondbs_primary)  
  135.                         (FAILOVER_MODE = (METHOD = basic)(TYPE = select)(DELAY = 5)(RETRIES = 3))  
  136.                 )  
  137.         )  
  138.   
  139. amondbs_sta_ser =  
  140.         (DESCRIPTION =  
  141.                 (ADDRESS_LIST =  
  142.                         (ADDRESS = (PROTOCOL = tcp)(HOST = 192.168.0.11)(PORT = 1521))  
  143.                 )  
  144.                 (CONNECT_DATA =  
  145.                         (SERVER = dedicated)  
  146.                         (SERVICE_NAME = amondbs_standby)  
  147.                 )  
  148.         )  
  149.   
  150. ###测试一下  
  151. sqlplus system/123456@amondbs_pri_ser  
  152.   
  153. 1.8、为主库添加standby redo,以便主库切换为从库后使用;跟从库创建的standby redo 线程、日志组相同;路径取log_file_name_convert  
  154. alter database add standby logfile thread 1 group 5 ('+DATADG/amondbs/standbyredo01.log') size 50m,  
  155. group 6 ('+DATADG/amondbs/standbyredo02.log') size 50m,  
  156. group 7 ('+DATADG/amondbs/standbyredo03.log') size 50m;  
  157. alter database add standby logfile thread 2 group 8 ('+DATADG/amondbs/standbyredo04.log') size 50m,  
  158. group 9 ('+DATADG/amondbs/standbyredo05.log') size 50m,  
  159. group 10 ('+DATADG/amondbs/standbyredo06.log') size 50m;  
  160.   
  161. SQL> select * from v$logfile;  
  162.   
  163.     GROUP# STATUS  TYPE    MEMBER                                             IS_  
  164. ---------- ------- ------- -------------------------------------------------- ---  
  165.          1         ONLINE  +DATADG/amondbs/redo01.log                         NO  
  166.          2         ONLINE  +DATADG/amondbs/redo02.log                         NO  
  167.          3         ONLINE  +DATADG/amondbs/redo03.log                         NO  
  168.          4         ONLINE  +DATADG/amondbs/redo04.log                         NO  
  169.          5         STANDBY +DATADG/amondbs/standbyredo01.log                  NO  
  170.          6         STANDBY +DATADG/amondbs/standbyredo02.log                  NO  
  171.          7         STANDBY +DATADG/amondbs/standbyredo03.log                  NO  
  172.          8         STANDBY +DATADG/amondbs/standbyredo04.log                  NO  
  173.          9         STANDBY +DATADG/amondbs/standbyredo05.log                  NO  
  174.         10         STANDBY +DATADG/amondbs/standbyredo06.log                  NO  
  175.   
  176.   
  177.   
  178.   
  179. 注意:  
  180. (1)如果指定了db_unique_name,创建$ORACLE_BASE/diag/rdbms/db_unique_name目录/sid;$ORACLE_BASE/diag/rdbms/amondbs_standby/amondbs_phydb  
  181.   
  182.   
  183. 二、standby从库配置  
  184. 注意:主库和从库的SID都是amondbs,与db_unique_name不同  
  185.   
  186. 1.1、oracle用户创建目录  
  187. $ mkdir -p $ORACLE_BASE/oradata/amondbs_standby  ##db_unique_name  
  188. $ mkdir -p $ORACLE_BASE/fast_recovery_area  
  189. $ mkdir /home/oracle/oracle/admin/amondbs_standby/adump  
  190. $ mkdir /home/oracle/oracle/archivelog  
  191.   
  192. 1.2、将rac主库的备份拷贝到从库  
  193.   
  194. 1.3、从库修改初始化参数文件->启动oracle  
  195. 在$ORACLE_HOME/dbs创建一个临时pfile,然后create spfile会自动生成带有sid的spfile  
  196. *.audit_file_dest='/home/oracle/oracle/admin/amondbs_standby/adump'  
  197. *.audit_trail='DB'  
  198. *.cluster_database=false  
  199. *.compatible='11.2.0.4.0'  
  200. *.control_files='/home/oracle/oracle/oradata/amondbs_standby/control01.ctl','/home/oracle/oracle/oradata/amondbs_standby/control02.ctl'  
  201. *.db_block_size=8192  
  202. *.db_domain=''  
  203. *.db_recovery_file_dest='/home/oracle/oracle/fast_recovery_area'  
  204. *.db_recovery_file_dest_size=6005194752  
  205. *.diagnostic_dest='/home/oracle/oracle/'  ##oracle基础目录  
  206. *.event=''  
  207. *.log_archive_format='%t_%s_%r.dbf'  
  208. *.memory_target=400000000  
  209. *.open_cursors=300  
  210. *.processes=150  
  211. *.undo_management='auto'  
  212. *.undo_tablespace='undotbs1'  
  213. *.db_name='amondbs'  
  214. *.db_unique_name='amondbs_standby'  
  215. *.log_archive_config='dg_config=(amondbs_primary,amondbs_standby)'  
  216. *.log_archive_dest_1='LOCATION=/home/oracle/oracle/archivelog'  
  217. *.log_archive_dest_2='service=amondbs_pri_ser lgwr async affirm valid_for=(online_logfiles,primary_role) db_unique_name=amondbs_primary'  
  218. *.log_archive_dest_state_1=enable  
  219. *.log_archive_dest_state_2=enable  
  220. *.remote_login_passwordfile='EXCLUSIVE'  
  221. *.db_file_name_convert='+DATADG/amondbs/datafile','/home/oracle/oracle/oradata/amondbs_standby'  
  222. *.log_file_name_convert='+DATADG/amondbs','/home/oracle/oracle/oradata/amondbs_standby'  
  223. *.fal_server=amondbs_primary  
  224. *.standby_file_managent=auto  
  225.   
  226. SQL> create spfile from pfile  
  227. 1.4、创建监听  
  228. $ lsnrctl status  ##没有监听  
  229. 动态监听  
  230. $ lsnrctl status  
  231.   
  232. LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 15-JAN-2016 11:10:58  
  233.   
  234. Copyright (c) 1991, 2013, Oracle.  All rights reserved.  
  235.   
  236. Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))  
  237. STATUS of the LISTENER  
  238. ------------------------  
  239. Alias                     LISTENER  
  240. Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production  
  241. Start Date                15-JAN-2016 11:10:15  
  242. Uptime                    0 days 0 hr. 0 min. 42 sec  
  243. Trace Level               off  
  244. Security                  ON: Local OS Authentication  
  245. SNMP                      OFF  
  246. Listener Log File         /home/oracle/oracle/diag/tnslsnr/dataguard/listener/alert/log.xml  
  247. Listening Endpoints Summary...  
  248.   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=dataguard)(PORT=1521)))  
  249. Services Summary...  
  250. Service "amondbs_standby" has 1 instance(s).  
  251.   Instance "amondbs", status READY, has 1 handler(s) for this service...  
  252. The command completed successfully  
  253.   
  254. 本机tnsping成功,其他机器tnsping报错:TNS-12543: TNS:destination host unreachable,本机的防火墙在开着  
  255.   
  256. 配置listener.ora  
  257. LISTENER =  
  258.   (DESCRIPTION_LIST =  
  259.     (DESCRIPTION =  
  260.       ##(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))  
  261.       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.51)(PORT = 1521))  
  262.     )  
  263.   )  
  264.   
  265. ADR_BASE_LISTENER = /home/oracle/oracle  
  266.   
  267. ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON   
  268. #####仍然存在动态监听,可以远程使用sys登录  
  269. $ lsnrctl status  
  270.   
  271. LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 15-JAN-2016 13:09:44  
  272.   
  273. Copyright (c) 1991, 2013, Oracle.  All rights reserved.  
  274.   
  275. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.51)(PORT=1521)))  
  276. STATUS of the LISTENER  
  277. ------------------------  
  278. Alias                     LISTENER  
  279. Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production  
  280. Start Date                15-JAN-2016 13:07:56  
  281. Uptime                    0 days 0 hr. 1 min. 48 sec  
  282. Trace Level               off  
  283. Security                  ON: Local OS Authentication  
  284. SNMP                      OFF  
  285. Listener Parameter File   /home/oracle/oracle/product/11g/network/admin/listener.ora  
  286. Listener Log File         /home/oracle/oracle/diag/tnslsnr/dataguard/listener/alert/log.xml  
  287. Listening Endpoints Summary...  
  288.   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.51)(PORT=1521)))  
  289. Services Summary...  
  290. Service "amondbs_standby" has 1 instance(s).  
  291.   Instance "amondbs", status READY, has 1 handler(s) for this service...  
  292. The command completed successfully  
  293.   
  294. 配置listener.ora,加SID_LIST,动态监听和静态监听同时存在    
  295.   
  296. $ lsnrctl start  
  297. #######使用tnsping进行测试  
  298. $ vi $ORACLE_HOME/network/admin/tnsnames.ora  
  299. amondbs_pri_ser =  
  300.         (DESCRIPTION =  
  301.                 (ADDRESS_LIST =  
  302.                    (LOAD_BALANCE = on)  
  303.                    (FAILOVER = on)  
  304.                    (ADDRESS = (PROTOCOL = tcp)(HOST = 192.168.0.31)(PORT=1521))  
  305.                    (ADDRESS = (PROTOCOL = tcp)(HOST = 192.168.0.41)(PORT=1521))  
  306.                 )  
  307.                 (CONNECT_DATA =  
  308.                         (SERVICE_NAME = amondbs_primary)  
  309.                         (FAILOVER_MODE = (METHOD = basic)(TYPE = select)(DELAY = 5)(RETRIES = 3))  
  310.                 )  
  311.         )  
  312.   
  313. amondbs_sta_ser =  
  314.         (DESCRIPTION =  
  315.                 (ADDRESS_LIST =  
  316.                         (ADDRESS = (PROTOCOL = tcp)(HOST = 192.168.0.51)(PORT = 1521))  
  317.                 )  
  318.                 (CONNECT_DATA =  
  319.                         (SERVER = dedicated)  
  320.                         (SERVICE_NAME = amondbs_standby)  
  321.                 )  
  322.         )  
  323.   
  324. 1.5、备库创建密码文件和主库相同  
  325. orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=123456 entries=10 force=yes  
  326.   
  327. 最好把主库的密码文件拷贝到从库,重命名为orapw<sid>  
  328. sqlplus sys/123456@amondbs_sta_ser as sysdba从主库可以连接,但是system不能连接,原因:sys使用控制文件认证,普通用户使用数据文件认证,这不是使用  
  329. 静态注册的一个原因  
  330.   
  331. 1.6、从库启动到nomount,sqlplus后根据ORACLE_SID找对应pfile,然后启动,根据ORACLE_SID切换到不同的实例  
  332. 注意将主库rman的备份拷贝到从库的同一目录,不然备份是过期的,执行set newname报错ORA-01180: can not create datafile 1  
  333. $sqlplus / as sysdba  
  334. SQL> startup nomount  
  335.   
  336. rman target /  
  337. RMAN> restore standby controlfile from '/oracle/rman_backup/ctl_standby_20160115_AMONDBS_901207070_50_1';   
  338. output file name=/home/oracle/oracle/oradata/amondbs_standby/control01.ctl  
  339. output file name=/home/oracle/oracle/oradata/amondbs_standby/control02.ctl  
  340. RMAN> alter database mount;  
  341. RMAN> list backup;  
  342. List of Backup Sets  
  343. ===================  
  344. BS Key  Type LV Size       Device Type Elapsed Time Completion Time  
  345. ------- ---- -- ---------- ----------- ------------ ---------------  
  346. 42      Full    15.28M     DISK        00:00:14     15-JAN-16        
  347.         BP Key: 42   Status: AVAILABLE  Compressed: YES  Tag: TAG20160115T151616  
  348.         Piece Name: /oracle/rman_backup/db_full_20160115_AMONDBS_901206977_43_1  
  349.   
  350. RMAN> restore database;  
  351.   
  352. Starting restore at 15-JAN-16  
  353. Starting implicit crosscheck backup at 15-JAN-16  
  354. allocated channel: ORA_DISK_1  
  355. channel ORA_DISK_1: SID=19 device type=DISK  
  356. Crosschecked 8 objects  
  357. Finished implicit crosscheck backup at 15-JAN-16  
  358.   
  359. Starting implicit crosscheck copy at 15-JAN-16  
  360. using channel ORA_DISK_1  
  361. Finished implicit crosscheck copy at 15-JAN-16  
  362.   
  363. searching for all files in the recovery area  
  364. cataloging files...  
  365. no files cataloged  
  366.   
  367. using channel ORA_DISK_1  
  368.   
  369. channel ORA_DISK_1: starting datafile backup set restore  
  370. channel ORA_DISK_1: specifying datafile(s) to restore from backup set  
  371. channel ORA_DISK_1: restoring datafile 00002 to /home/oracle/oracle/oradata/amondbs_standby/sysaux.261.900422621  
  372. channel ORA_DISK_1: restoring datafile 00005 to /home/oracle/oracle/oradata/amondbs_standby/users.265.900422741  
  373. channel ORA_DISK_1: reading from backup piece /oracle/rman_backup/db_full_20160115_AMONDBS_901206977_43_1  
  374. channel ORA_DISK_1: piece handle=/oracle/rman_backup/db_full_20160115_AMONDBS_901206977_43_1 tag=TAG20160115T151616  
  375. channel ORA_DISK_1: restored backup piece 1  
  376. channel ORA_DISK_1: restore complete, elapsed time: 00:00:25  
  377. channel ORA_DISK_1: starting datafile backup set restore  
  378. channel ORA_DISK_1: specifying datafile(s) to restore from backup set  
  379. channel ORA_DISK_1: restoring datafile 00003 to /home/oracle/oracle/oradata/amondbs_standby/undotbs1.262.900422677  
  380. channel ORA_DISK_1: restoring datafile 00004 to /home/oracle/oracle/oradata/amondbs_standby/undotbs2.264.900422721  
  381. channel ORA_DISK_1: reading from backup piece /oracle/rman_backup/db_full_20160115_AMONDBS_901206994_44_1  
  382. channel ORA_DISK_1: piece handle=/oracle/rman_backup/db_full_20160115_AMONDBS_901206994_44_1 tag=TAG20160115T151616  
  383. channel ORA_DISK_1: restored backup piece 1  
  384. channel ORA_DISK_1: restore complete, elapsed time: 00:00:15  
  385. channel ORA_DISK_1: starting datafile backup set restore  
  386. channel ORA_DISK_1: specifying datafile(s) to restore from backup set  
  387. channel ORA_DISK_1: restoring datafile 00001 to /home/oracle/oracle/oradata/amondbs_standby/system.260.900422559  
  388. channel ORA_DISK_1: reading from backup piece /oracle/rman_backup/db_full_20160115_AMONDBS_901206977_42_1  
  389. channel ORA_DISK_1: piece handle=/oracle/rman_backup/db_full_20160115_AMONDBS_901206977_42_1 tag=TAG20160115T151616  
  390. channel ORA_DISK_1: restored backup piece 1  
  391. channel ORA_DISK_1: restore complete, elapsed time: 00:00:35  
  392.   
  393. 1.9、接受日志信息,这里没有创建standby logfile,所以接受的是归档日志  
  394. SQL> ALTER SYSTEM SET log_archive_dest_state_2=enable SCOPE=BOTH SID='*';  
  395. 此时主节点数据库alert日志如下:  
  396. ******************************************************************  
  397. LGWR: Setting 'active' archival for destination LOG_ARCHIVE_DEST_2  
  398. ******************************************************************  
  399. ALTER SYSTEM SET log_archive_dest_state_2='ENABLE' SCOPE=BOTH SID='*';  
  400. Fri Jan 15 16:43:10 2016  
  401. Archived Log entry 65 added for thread 1 sequence 42 ID 0x235d93c2 dest 1:  
  402.   
  403. 此时从库数据库alert日志如下:  
  404. Fri Jan 15 16:42:53 2016  
  405. Using STANDBY_ARCHIVE_DEST parameter default value as /home/oracle/oracle/archivelog  
  406. Fri Jan 15 16:42:55 2016  
  407. Primary database is in MAXIMUM PERFORMANCE mode  
  408. RFS[1]: Assigned to RFS process 4966  
  409. RFS[1]: No standby redo logfiles created  
  410. RFS[1]: Opened log for thread 1 sequence 43 dbid 593350850 branch 900422530  
  411. Fri Jan 15 16:42:57 2016  
  412. RFS[2]: Assigned to RFS process 4970  
  413. RFS[2]: Opened log for thread 2 sequence 24 dbid 593350850 branch 900422530  
  414. Fri Jan 15 16:42:58 2016  
  415. RFS[3]: Assigned to RFS process 4972  
  416. RFS[3]: Opened log for thread 2 sequence 22 dbid 593350850 branch 900422530  
  417. Fri Jan 15 16:42:59 2016  
  418. RFS[4]: Assigned to RFS process 4968  
  419. RFS[4]: Opened log for thread 2 sequence 23 dbid 593350850 branch 900422530  
  420. Archived Log entry 1 added for thread 2 sequence 24 rlc 900422530 ID 0x235d93c2 dest 2:  
  421. Archived Log entry 2 added for thread 2 sequence 22 rlc 900422530 ID 0x235d93c2 dest 2:  
  422. Archived Log entry 3 added for thread 2 sequence 23 rlc 900422530 ID 0x235d93c2 dest 2:  
  423. Fri Jan 15 16:43:00 2016  
  424. RFS[5]: Assigned to RFS process 4974  
  425. RFS[5]: Opened log for thread 1 sequence 41 dbid 593350850 branch 900422530  
  426. Archived Log entry 4 added for thread 1 sequence 41 rlc 900422530 ID 0x235d93c2 dest 2:  
  427. Fri Jan 15 16:43:08 2016  
  428. Primary database is in MAXIMUM PERFORMANCE mode  
  429. RFS[6]: Assigned to RFS process 4978  
  430. RFS[6]: No standby redo logfiles created  
  431. RFS[6]: Opened log for thread 2 sequence 26 dbid 593350850 branch 900422530  
  432. Fri Jan 15 16:43:11 2016  
  433. RFS[7]: Assigned to RFS process 4982  
  434. RFS[7]: Opened log for thread 1 sequence 42 dbid 593350850 branch 900422530  
  435. Fri Jan 15 16:43:11 2016  
  436. RFS[8]: Assigned to RFS process 4984  
  437. RFS[8]: Opened log for thread 2 sequence 25 dbid 593350850 branch 900422530  
  438. Archived Log entry 5 added for thread 1 sequence 42 rlc 900422530 ID 0x235d93c2 dest 2:  
  439. Archived Log entry 6 added for thread 2 sequence 25 rlc 900422530 ID 0x235d93c2 dest 2:  
  440.   
  441.   
  442. 1.9、启用redo应用  
  443. SQL> alter database recover managed standby database disconnect from session;  
  444.   
  445. #####正常信息:如果删除归档目录的日志,执行redo应用时,FAL会从主库fetch日志  
  446. ##Media Recovery Log /home/oracle/oracle/archivelog/2_22_900422530.dbf  
  447. ##Error opening /home/oracle/oracle/archivelog/2_22_900422530.dbf  
  448. ##Attempting refetch  
  449. ##Media Recovery Waiting for thread 2 sequence 22  
  450. ##Fetching gap sequence in thread 2, gap sequence 22-22  
  451. ##FS[15]: Allowing overwrite of partial archivelog for thread 2 sequence 22  
  452.   
  453. SQL> alter database recover managed standby database cancel;  
  454. SQL> alter database open;  ##可以打开数据库,之前打不开,ORA-10458: standby database requires recovery  
  455. SQL> select open_mode,log_mode from v$database;  ###控制文件是standby  
  456.   
  457. OPEN_MODE            LOG_MODE  
  458. -------------------- ------------  
  459. READ ONLY            ARCHIVELOG  
  460.   
  461. 1.10、打开日志应用后,从库MRP启动,创建了online redo   
  462. #MRP0 started with pid=30, OS id=5258   
  463. #MRP0: Background Managed Standby Recovery process started (amondbs)  
  464. #Serial Media Recovery started  
  465. #Managed Standby Recovery not using Real Time Apply  
  466. #Waiting for all non-current ORLs to be archived...  
  467. #All non-current ORLs have been archived.  
  468. #Errors in file /home/oracle/oracle/diag/rdbms/amondbs_standby/amondbs/trace/amondbs_mrp0_5258.trc:  
  469. #ORA-00313: open failed for members of log group 1 of thread 1  
  470. #ORA-00312: online log 1 thread 1: '/home/oracle/oracle/oradata/amondbs_standby/redo01.log'  
  471. #ORA-27037: unable to obtain file status  
  472. #Linux-x86_64 Error: 2: No such file or directory  
  473. #Additional information: 3  
  474. #Clearing online redo logfile 1 /home/oracle/oracle/oradata/amondbs_standby/redo01.log  
  475. #Clearing online log 1 of thread 1 sequence number 45  
  476.   
  477. SQL> select group#,members,thread#,sequence#,bytes/1024/1024,status,archived from v$log;  
  478.   
  479.     GROUP#    MEMBERS    THREAD#  SEQUENCE# BYTES/1024/1024 STATUS           ARC  
  480. ---------- ---------- ---------- ---------- --------------- ---------------- ---  
  481.          1          1          1         45              50 CLEARING         YES  
  482.          2          1          1         46              50 CURRENT          YES  
  483.          3          1          2         29              50 CURRENT          YES  
  484.          4          1          2         28              50 CLEARING         YES  
  485.   
  486. 1.11、创建standby日志,创建的大小要和主库online redo保持一致  
  487. 创建的原则:  
  488. ① Standby Redo Log 的文件大小与主库 online redo log 文件大小相同  
  489. ② Standby Redo Log 日志文件组的个数依照下面的原则进行计算:  
  490. Standby redo log组数公式 >= (每个instance日志组个数+1)*instance个数  
  491. 例如在我的环境中,只有一个节点,这个节点有三组redo,所以Standby redo log组数公式>=(3+1)*1  == 4所以需要创建4组Standby redo log  
  492. ③ 每一日志组为了安全起见,可以做多路镜像  
  493.   
  494. 从库创建standby redo日志--------  
  495. alter database add standby logfile thread 1 group 5 size 50m,group 6 size 50m,group 7 size 50m;  ##默认创建到db_recovery_file_dest  
  496. alter database drop standby logfile group 5,group 6,group 7;  
  497.   
  498. SQL> alter database add standby logfile thread 1 group 5 ('/home/oracle/oracle/oradata/amondbs_standby/standbyredo01.log') size 50m,group 6 ('/home/oracle/oracle/oradata/amondbs_standby/standbyredo02.log') size 50m,group 7 ('/home/oracle/oracle/oradata/amondbs_standby/standbyredo03.log') size 50m;  
  499. SQL> alter database add standby logfile thread 2 group 8 ('/home/oracle/oracle/oradata/amondbs_standby/standbyredo04.log') size 50m,group 9 ('/home/oracle/oracle/oradata/amondbs_standby/standbyredo05.log') size 50m,group 10 ('/home/oracle/oracle/oradata/amondbs_standby/standbyredo06.log') size 50m;  
  500.   
  501. SQL> select group#,thread#,sequence#,bytes/1024/1024,status,archived from v$standby_log;  
  502.   
  503.     GROUP#    THREAD#  SEQUENCE# BYTES/1024/1024 STATUS     ARC  
  504. ---------- ---------- ---------- --------------- ---------- ---  
  505.          5          1          0              50 UNASSIGNED YES  
  506.          6          1          0              50 UNASSIGNED YES  
  507.          7          1          0              50 UNASSIGNED YES  
  508.          8          2          0              50 UNASSIGNED YES  
  509.          9          2          0              50 UNASSIGNED YES  
  510.         10          2          0              50 UNASSIGNED YES  
  511.   
  512. 主库,主库的日志信息-------------  
  513. SQL> select group#,members,thread#,sequence#,bytes/1024/1024,status,archived from v$log;  
  514.   
  515. SQL> select group#,members,thread#,sequence#,bytes/1024/1024,status,archived from v$log;  
  516.   
  517.     GROUP#    MEMBERS    THREAD#  SEQUENCE# BYTES/1024/1024 STATUS           ARC  
  518. ---------- ---------- ---------- ---------- --------------- ---------------- ---  
  519.          1          1          1         45              50 INACTIVE         YES  
  520.          2          1          1         46              50 CURRENT          NO  
  521.          3          1          2         29              50 CURRENT          NO  
  522.          4          1          2         28              50 INACTIVE         YES  
  523.   
  524. SQL> alter system archive log current;  
  525. SQL> select group#,members,thread#,sequence#,bytes/1024/1024,status,archived from v$log;  
  526.   
  527.     GROUP#    MEMBERS    THREAD#  SEQUENCE# BYTES/1024/1024 STATUS           ARC  
  528. ---------- ---------- ---------- ---------- --------------- ---------------- ---  
  529.          1          1          1         47              50 CURRENT          NO  
  530.          2          1          1         46              50 ACTIVE           YES  
  531.          3          1          2         29              50 ACTIVE           YES  
  532.          4          1          2         30              50 CURRENT          NO  
  533. 从库####  
  534. SQL> select group#,thread#,sequence#,bytes/1024/1024,status,archived from v$standby_log;  
  535.   
  536.     GROUP#    THREAD#  SEQUENCE# BYTES/1024/1024 STATUS     ARC  
  537. ---------- ---------- ---------- --------------- ---------- ---  
  538.          5          1         47              50 ACTIVE     YES  
  539.          6          1          0              50 UNASSIGNED YES  
  540.          7          1          0              50 UNASSIGNED YES  
  541.          8          2         30              50 ACTIVE     YES  
  542.          9          2          0              50 UNASSIGNED YES  
  543.         10          2          0              50 UNASSIGNED YES  
  544.   
  545. SQL> alter system archive log current;  
  546. SQL> select group#,members,thread#,sequence#,bytes/1024/1024,status,archived from v$log;  
  547.   
  548.     GROUP#    MEMBERS    THREAD#  SEQUENCE# BYTES/1024/1024 STATUS           ARC  
  549. ---------- ---------- ---------- ---------- --------------- ---------------- ---  
  550.          1          1          1         47              50 ACTIVE           YES  
  551.          2          1          1         48              50 CURRENT          NO  
  552.          3          1          2         31              50 CURRENT          NO  
  553.          4          1          2         30              50 ACTIVE           YES  
  554.   
  555. 从库####  
  556. SQL> select group#,thread#,sequence#,bytes/1024/1024,status,archived from v$standby_log;  
  557.   
  558.     GROUP#    THREAD#  SEQUENCE# BYTES/1024/1024 STATUS     ARC  
  559. ---------- ---------- ---------- --------------- ---------- ---  
  560.          5          1         48              50 ACTIVE     YES  
  561.          6          1          0              50 UNASSIGNED YES  
  562.          7          1          0              50 UNASSIGNED YES  
  563.          8          2         31              50 ACTIVE     YES  
  564.          9          2          0              50 UNASSIGNED YES  
  565.         10          2          0              50 UNASSIGNED YES  
  566. 总结:主库的current online redo和standby库的active状态的standby redo 日志序列号相同,证明redo传输服务启用了实时传输。  
  567.   
  568. 1.12、备库实时应用redo  
  569. 11gR2开始,物理standby数据库在open状态也能应用日志,称为active dataguard  
  570. SQL> alter database recover managed standby database using current logfile disconnect from session; ##启动MRPn进程,进行real time apply,通过读取standby redo 进行恢复  
  571.   
  572. SQL> select dbid,switchover_status,db_unique_name,database_role,open_mode,current_scn from v$database;  
  573.   
  574.       DBID SWITCHOVER_STATUS    DB_UNIQUE_NAME                 DATABASE_ROLE    OPEN_MODE            CURRENT_SCN  
  575. ---------- -------------------- ------------------------------ ---------------- -------------------- -----------  
  576.  593350850 NOT ALLOWED          amondbs_standby                PHYSICAL STANDBY READ ONLY WITH APPLY      637067  
  577.   
  578. 1.13、创建表空间测试文件同步  
  579. 主库操作创建表空间,从库验证-----  
  580. set line 200  
  581. col FILE_NAME for a50  
  582. select tablespace_name,file_name,bytes/1024/1024 as total_space from dba_data_files;  
  583.   
  584. TABLESPACE_NAME                FILE_NAME                                          TOTAL_SPACE  
  585. ------------------------------ -------------------------------------------------- -----------  
  586. SYSTEM                         +DATADG/amondbs/datafile/system.260.900422559              700  
  587. SYSAUX                         +DATADG/amondbs/datafile/sysaux.261.900422621              600  
  588. UNDOTBS1                       +DATADG/amondbs/datafile/undotbs1.262.900422677            200  
  589. UNDOTBS2                       +DATADG/amondbs/datafile/undotbs2.264.900422721            200  
  590. USERS                          +DATADG/amondbs/datafile/users.265.900422741                 5  
  591.   
  592. create tablespace cuishoutest    
  593.   datafile '+DATADG/amondbs/datafile/cuishoutest01.dbf' size 100m  
  594.   autoextend on next 1m maxsize unlimited  
  595.   logging  
  596.   extent management local autoallocate   
  597.   blocksize 8k  
  598.   segment space management auto  
  599.   flashback on;  
  600.   
  601. 主库操作删除表空间,从库验证----  
  602. drop tablespace cuishoutest including contents and datafiles;  
  603.   
  604. 1.14、测试dataguard switchover功能  
  605. ####检查从库是否归档模式、force logging模式----  
  606. select name,open_mode,log_mode,force_logging from gv$database;  
  607.   
  608. NAME                                                                                                 OPEN_MODE            LOG_MODE     FOR  
  609. ---------------------------------------------------------------------------------------------------- -------------------- ------------ ---  
  610. AMONDBS                                                                                              READ ONLY WITH APPLY ARCHIVELOG   YES  
  611.   
  612.   
  613. ####关闭日志传输  
  614. SQL> alter system set log_archive_dest_state_2=defer scope=both;  
  615.   
  616. (1)停止rac节点2  
  617. SQL> select thread#,inst_id,instance_name,status from gv$instance;  
  618.   
  619.    THREAD#    INST_ID INSTANCE_NAME    STATUS  
  620. ---------- ---------- ---------------- ------------  
  621.          2          2 amondbs2         OPEN  
  622.          1          1 amondbs1         OPEN  
  623.   
  624. SQL> select dbid,inst_id,switchover_status,db_unique_name,protection_mode,database_role,force_logging,open_mode,current_scn from gv$database;  
  625.   
  626.       DBID    INST_ID SWITCHOVER_STATUS    DB_UNIQUE_NAME                 PROTECTION_MODE      DATABASE_ROLE    FOR OPEN_MODE            CURRENT_SCN  
  627. ---------- ---------- -------------------- ------------------------------ -------------------- ---------------- --- -------------------- -----------  
  628.  593350850          2 SESSIONS ACTIVE      amondbs_primary                MAXIMUM PERFORMANCE  PRIMARY          YES READ WRITE                649547  
  629.  593350850          1 SESSIONS ACTIVE      amondbs_primary                MAXIMUM PERFORMANCE  PRIMARY          YES READ WRITE                649547  
  630.    
  631. (2)rac节点1切换为从库  
  632. SQL> show parameter instance_name   
  633. SQL> select dbid,inst_id,switchover_status,db_unique_name,protection_mode,database_role,force_logging,open_mode,current_scn from gv$database;  
  634.   
  635.       DBID    INST_ID SWITCHOVER_STATUS    DB_UNIQUE_NAME                 PROTECTION_MODE      DATABASE_ROLE    FOR OPEN_MODE            CURRENT_SCN  
  636. ---------- ---------- -------------------- ------------------------------ -------------------- ---------------- --- -------------------- -----------  
  637.  593350850          1 TO STANDBY           amondbs_primary                MAXIMUM PERFORMANCE  PRIMARY          YES READ WRITE                650442  
  638.   
  639. ###主库切为从库,同时关闭实例,需要启动,open后数据库处于read only  
  640. SQL> alter database commit to switchover to physical standby with session shutdown;  
  641.   
  642. SQL> startup  
  643. Physical standby database opened for read only access.  
  644.   
  645. SQL> select dbid,inst_id,switchover_status,db_unique_name,protection_mode,database_role,force_logging,open_mode,current_scn from gv$database;  
  646.   
  647.       DBID    INST_ID SWITCHOVER_STATUS    DB_UNIQUE_NAME                 PROTECTION_MODE      DATABASE_ROLE    FOR OPEN_MODE            CURRENT_SCN  
  648. ---------- ---------- -------------------- ------------------------------ -------------------- ---------------- --- -------------------- -----------  
  649.  593350850          1 TO PRIMARY           amondbs_primary                MAXIMUM PERFORMANCE  PHYSICAL STANDBY YES READ ONLY                 670661  
  650.   
  651. (3)从库切换为主库,此时单节点主库只使用线程1的日志组  
  652. SQL> select dbid,inst_id,switchover_status,db_unique_name,protection_mode,database_role,force_logging,open_mode,current_scn from gv$database;  
  653.   
  654.       DBID    INST_ID SWITCHOVER_STATUS    DB_UNIQUE_NAME                 PROTECTION_MODE      DATABASE_ROLE    FOR OPEN_MODE            CURRENT_SCN  
  655. ---------- ---------- -------------------- ------------------------------ -------------------- ---------------- --- -------------------- -----------  
  656.  593350850          1 TO PRIMARY           amondbs_standby                MAXIMUM PERFORMANCE  PHYSICAL STANDBY YES READ ONLY WITH APPLY      670661  
  657.   
  658.   
  659. SQL> alter database commit to switchover to primary;  
  660. ######数据库和切换后的主库不一致,打开日志应用  
  661. *  
  662. ERROR at line 1:  
  663. ORA-16139: media recovery required  
  664. Database not available for switchover  
  665.   Incomplete recovery SCN:0:670662 archive SCN:0:690868  
  666. Database not available for switchover  
  667.   Incomplete recovery SCN:0:670662 archive SCN:0:690868  
  668.   
  669. SQL> alter database recover managed standby database using current logfile disconnect from session;   
  670.   
  671. #####不cancel日志应用,直接切换  
  672. SQL> alter database commit to switchover to primary;  
  673. Role Change: Canceling MRP - no more redo to apply  
  674. MRP0: Background Media Recovery process shutdown (amondbs)  
  675. Backup controlfile written to trace file /home/oracle/oracle/diag/rdbms/amondbs_standby/amondbs/trace/amondbs_ora_6312.trc  
  676. SwitchOver after complete recovery through change 690868  
  677. Online log /home/oracle/oracle/oradata/amondbs_standby/redo01.log: Thread 1 Group 1 was previously cleared  
  678. Online log /home/oracle/oracle/oradata/amondbs_standby/redo02.log: Thread 1 Group 2 was previously cleared  
  679. Online log /home/oracle/oracle/oradata/amondbs_standby/redo03.log: Thread 2 Group 3 was previously cleared  
  680. Online log /home/oracle/oracle/oradata/amondbs_standby/redo04.log: Thread 2 Group 4 was previously cleared  
  681. Standby became primary SCN: 690866  
  682.   
  683. SQL> select dbid,inst_id,switchover_status,db_unique_name,protection_mode,database_role,force_logging,open_mode,current_scn from gv$database;  
  684.   
  685.       DBID    INST_ID SWITCHOVER_STATUS    DB_UNIQUE_NAME                 PROTECTION_MODE      DATABASE_ROLE    FOR OPEN_MODE            CURRENT_SCN  
  686. ---------- ---------- -------------------- ------------------------------ -------------------- ---------------- --- -------------------- -----------  
  687.  593350850          1 NOT ALLOWED          amondbs_standby                MAXIMUM PERFORMANCE  PRIMARY          YES MOUNTED                        0  
  688.   
  689. SQL> alter database open;  
  690.   
  691. SQL> select dbid,inst_id,switchover_status,db_unique_name,protection_mode,database_role,force_logging,open_mode,current_scn from gv$database;  
  692.   
  693.       DBID    INST_ID SWITCHOVER_STATUS    DB_UNIQUE_NAME                 PROTECTION_MODE      DATABASE_ROLE    FOR OPEN_MODE            CURRENT_SCN  
  694. ---------- ---------- -------------------- ------------------------------ -------------------- ---------------- --- -------------------- -----------  
  695.  593350850          1 NOT ALLOWED          amondbs_standby                MAXIMUM PERFORMANCE  PRIMARY          YES READ WRITE                691176  
  696.   
  697. (4)open rac节点2  
  698. SQL> startup  
  699.   
  700. SQL> select dbid,inst_id,switchover_status,db_unique_name,protection_mode,database_role,force_logging,open_mode,current_scn from gv$database;  
  701.   
  702.       DBID    INST_ID SWITCHOVER_STATUS    DB_UNIQUE_NAME                 PROTECTION_MODE      DATABASE_ROLE    FOR OPEN_MODE            CURRENT_SCN  
  703. ---------- ---------- -------------------- ------------------------------ -------------------- ---------------- --- -------------------- -----------  
  704.  593350850          1 SESSIONS ACTIVE      amondbs_primary                MAXIMUM PERFORMANCE  PHYSICAL STANDBY YES READ ONLY                 690867  
  705.  593350850          2 SESSIONS ACTIVE      amondbs_primary                MAXIMUM PERFORMANCE  PHYSICAL STANDBY YES READ ONLY                 690867  
  706.   
  707. (5)打开主库日志传输服务  
  708.  alter system set log_archive_dest_state_2=enable scope=both;  
  709.   
  710.   
  711. 总结:  
  712. (1)从库的online redo和standby redo,根据主库的对应的thread1或n online redo切换而切换  
  713. (2)主库是rac,从库是单实例,物理standby概念-物理结构相同决定了从库数据文件和redo 文件的个数及其对应的thread个数与主库相同  
  714. (3)备库是rac时,节点1和节点2对redo传输和应用有序、协调地工作  
阅读(880) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~