DataGuard中db_file_name_convert和standby_file_management参数

+++++++++
总结论: |
+++++++++
在DataGuar备库,没有特殊情况一定要将standby_file_management参数设为AUTO,并且设置db_file_name_convert和log_file_name_convert的值。

若standby_file_management=MANUAL,即使主备库数据文件路径一致,主库添加数据文件,备库也不会自动添加,必须手动完成。
若standby_file_management=AUTO,主库添加数据文件,备库会根据db_file_name_convert参数自动将数据文件创建到正确路径。

db_file_name_convert和log_file_name_convert的作用:
主库库路径不相同的情况,备库会根据这两个参数将数据文件和redo文件创建到正确位置。

 

  1. 实验一:
  2. standby_file_management=AUTO,但是未配置db_file_name_convert参数。
  3. 且dg主备库数据文件路径相同。
  4. @Standby:
  5. SQL> create pfile from spfile;
  6. SQL> shutdown immediate
  7.  
  8. 去掉参数文件中db_file_name_convert参数
  9. *.db_file_name_convert='/u01/app/oradata/dg/','/u01/app/oradata/dg/'
  10. *.log_file_name_convert='/u01/app/oradata/dg/','/u01/app/oradata/dg/'
  11.  
  12. 用pfile启动数据库到mount
  13. startup mount pfile='?/dbs/initdg.ora';
  14. SQL> show parameter convert
  15. NAME TYPE VALUE
  16. ------------------------------------ ----------- ------------------------------
  17. db_file_name_convert string
  18. log_file_name_convert string
  19.  
  20. SQL> show parameter standby_file_management 
  21. NAME TYPE VALUE
  22. ------------------------------------ ----------- ------------------------------
  23. standby_file_management string AUTO
  24.  
  25.  
  26. 开启实时日志应用
  27. ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION; 
  28.  
  29. @Primary
  30. 添加datafile
  31. alter tablespace add_dbf add datafile '/u01/app/oradata/dg/add_dbf02.dbf' size 500m;
  32.  
  33. SQL> select name from v$datafile;
  34. NAME
  35. ------------------------------------------------------------
  36. /u01/app/oradata/dg/system01.dbf
  37. /u01/app/oradata/dg/sysaux01.dbf
  38. /u01/app/oradata/dg/undotbs01.dbf
  39. /u01/app/oradata/dg/users01.dbf
  40. /u01/app/oradata/dg/add_dbf01.dbf
  41. /u01/app/oradata/dg/add_dbf02.dbf     <---正常添加
  42.  
  43. @Standby
  44. 查看添加数据文件是否同步到备库
  45. SQL> select name from v$datafile;
  46. NAME
  47. --------------------------------------------------------------------------------
  48. /u01/app/oradata/dg/system01.dbf
  49. /u01/app/oradata/dg/sysaux01.dbf
  50. /u01/app/oradata/dg/undotbs01.dbf
  51. /u01/app/oradata/dg/users01.dbf
  52. /u01/app/oradata/dg/add_dbf01.dbf
  53. /u01/app/oradata/dg/add_dbf02.dbf     <----备库同样添加成功
  54.  
  55. alert日志记录
  56. Mon Jul 22 07:42:48 2013
  57. Recovery created file /u01/app/oradata/dg/add_dbf02.dbf
  58. Successfully added datafile 8 to media recovery
  59. Datafile #8: '/u01/app/oradata/dg/add_dbf02.dbf'
  60.  
  61.  
  62. 小结:主备库数据文件保存路径相同,standby_file_management=AUTO,未设置db_file_name_convert参数。主库添加数据文件,备库会自动创建数据文件。
  63.  
  64.  
  65.  
  66. 实验二:standby_file_management=manual,但是未配置db_file_name_convert参数。
  67. 且dg主备库数据文件路径相同。
  68. @Standby:
  69. 修改为MANUAL
  70. SQL> alter system set standby_file_management='MANUAL';
  71.  
  72. SQL> show parameter standby_file_management
  73. NAME TYPE VALUE
  74. ------------------------------------ ----------- ------------------------------
  75. standby_file_management string MANUAL
  76.  
  77. @Primay
  78. 创建数据文件
  79. SQL> alter tablespace add_dbf add datafile '/u01/app/oradata/dg/add_dbf03.dbf' size 500m;
  80.  
  81. SQL> select name from v$datafile;
  82. NAME
  83. ----------------------------------------
  84. /u01/app/oradata/dg/system01.dbf
  85. /u01/app/oradata/dg/sysaux01.dbf
  86. /u01/app/oradata/dg/undotbs01.dbf
  87. /u01/app/oradata/dg/users01.dbf
  88. /u01/app/oradata/dg/add_dbf01.dbf
  89. /u01/app/oradata/dg/add_dbf02.dbf
  90. /u01/app/oradata/dg/add_dbf03.dbf     <-----主库新增数据文件
  91.  
  92. @Standby
  93. SQL> select name from v$datafile;
  94. NAME
  95. --------------------------------------------------------------------------------
  96. /u01/app/oradata/dg/system01.dbf
  97. /u01/app/oradata/dg/sysaux01.dbf
  98. /u01/app/oradata/dg/undotbs01.dbf
  99. /u01/app/oradata/dg/users01.dbf
  100. /u01/app/oradata/dg/add_dbf01.dbf
  101. /u01/app/oradata/dg/add_dbf02.dbf
  102. /u01/app/product/11.1.0/db_1/dbs/UNNAMED00009     <-------备库会自动创建数据文件,但是和主库添加的数据文件不同。
  103.  
  104. $ ll /u01/app/product/11.1.0/db_1/dbs/UNNAMED00009
  105. ls: /u01/app/product/11.1.0/db_1/dbs/UNNAMED00009: 没有那个文件或目录
  106.  
  107. alert日志显示:新增的数据文件只是记录到控制文件,但是该数据文件并没有真实创建。需要手动创建。并且MRP进程宕掉了。
  108. File #9 added to control file as 'UNNAMED00009' because
  109. the parameter STANDBY_FILE_MANAGEMENT is set to MANUAL
  110. The file should be manually created to continue.
  111. MRP0: Background Media Recovery terminated with error 1274
  112. Errors in file /u01/app/diag/rdbms/node2/dg/trace/dg_mrp0_28531.trc:
  113. ORA-01274: cannot add datafile '/u01/app/oradata/dg/add_dbf03.dbf' - file could not be created
  114. Managed Standby Recovery not using Real Time Apply
  115. Recovery 
  116. Recovered data files to a consistent state at change 1688193
  117. Errors in file /u01/app/diag/rdbms/node2/dg/trace/dg_mrp0_28531.trc:
  118. ORA-01274: cannot add datafile '/u01/app/oradata/dg/add_dbf03.dbf' - file could not be created
  119. MRP0: Background Media Recovery process shutdown (dg)
  120.  
  121. 用下面的将错误新增数据文件转换到正确位置,并恢复MRP进程
  122. SQL> alter database create datafile '/u01/app/product/11.1.0/db_1/dbs/UNNAMED00009' as '/u01/app/oradata/dg/add_dbf03.dbf';
  123. Database altered.
  124.  
  125. SQL> select name from v$datafile;
  126. NAME
  127. --------------------------------------------------------------------------------
  128. /u01/app/oradata/dg/system01.dbf
  129. /u01/app/oradata/dg/sysaux01.dbf
  130. /u01/app/oradata/dg/undotbs01.dbf
  131. /u01/app/oradata/dg/users01.dbf
  132. /u01/app/oradata/dg/add_dbf01.dbf
  133. /u01/app/oradata/dg/add_dbf02.dbf
  134. /u01/app/oradata/dg/add_dbf03.dbf     <--恢复正常
  135.  
  136. ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;     
  137.  
  138. 小结:主备库数据文件保存路径相同,standby_file_management=MANUAL,未设置db_file_name_convert参数。
  139.  主库添加数据文件,备库不能自动创建数据文件。
  140.  控制件会记录新增数据文件的信息,不过不会真实创建它,v$datafile视图可以看到新增数据文件信息。
  141.  
  142.  
  143. 实验三:standby_file_management=AUTO,但是未配置db_file_name_convert参数。
  144. DG主备库数据文件路径不相同。 
  145. @Standby
  146. SQL> show parameter standby_file_management
  147. NAME TYPE VALUE
  148. ------------------------------------ ----------- ------------------------------
  149. standby_file_management string AUTO
  150.  
  151. SQL> show parameter convert
  152. NAME TYPE VALUE
  153. ------------------------------------ ----------- ------------------------------
  154. db_file_name_convert string
  155. log_file_name_convert string     
  156.  
  157. SQL> select name from v$datafile;
  158. NAME
  159. --------------------------------------------------------------------------------
  160. /u01/app/node2/system01.dbf
  161. /u01/app/node2/sysaux01.dbf
  162. /u01/app/node2/undotbs01.dbf
  163. /u01/app/node2/users01.dbf
  164. /u01/app/node2/add_dbf01.dbf
  165. /u01/app/node2/add_dbf02.dbf
  166. /u01/app/node2/add_dbf03.dbf
  167.  
  168. @Pirmay
  169. SQL> select name from v$datafile;
  170. NAME
  171. ----------------------------------------
  172. /u01/app/oradata/dg/system01.dbf
  173. /u01/app/oradata/dg/sysaux01.dbf
  174. /u01/app/oradata/dg/undotbs01.dbf
  175. /u01/app/oradata/dg/users01.dbf
  176. /u01/app/oradata/dg/add_dbf01.dbf
  177. /u01/app/oradata/dg/add_dbf02.dbf
  178. /u01/app/oradata/dg/add_dbf03.dbf
  179.  
  180. 添加数据文件
  181. SQL> alter tablespace add_dbf add datafile '/u01/app/oradata/dg/add_dbf04.dbf' size 500m;
  182.  
  183. SQL> select name from v$datafile;
  184. NAME
  185. ----------------------------------------
  186. /u01/app/oradata/dg/system01.dbf
  187. /u01/app/oradata/dg/sysaux01.dbf
  188. /u01/app/oradata/dg/undotbs01.dbf
  189. /u01/app/oradata/dg/users01.dbf
  190. /u01/app/oradata/dg/add_dbf01.dbf
  191. /u01/app/oradata/dg/add_dbf02.dbf
  192. /u01/app/oradata/dg/add_dbf03.dbf
  193. /u01/app/oradata/dg/add_dbf04.dbf     <---添加成功
  194.  
  195. @Standby
  196. SQL> select name from v$datafile;
  197. NAME
  198. --------------------------------------------------------------------------------
  199. /u01/app/node2/system01.dbf
  200. /u01/app/node2/sysaux01.dbf
  201. /u01/app/node2/undotbs01.dbf
  202. /u01/app/node2/users01.dbf
  203. /u01/app/node2/add_dbf01.dbf
  204. /u01/app/node2/add_dbf02.dbf
  205. /u01/app/node2/add_dbf03.dbf
  206. /u01/app/oradata/dg/add_dbf04.dbf     <----备库也添加成功,但是创建路径却是和主库一致的路径,而不是备库默认的路径。
  207.  
  208. 由于备库存在和主库一致的路径,删掉该路径,重做这个实验
  209.  
  210. @Primary
  211. 主库删掉add_dbf04.dbf
  212. SQL> alter tablespace add_dbf drop datafile 10;
  213.  
  214. @Standby
  215. 删除路径
  216. $ pwd
  217. /u01/app/oradata
  218. $ rm dg -rf
  219.  
  220. @Priary
  221. 添加数据文件
  222. SQL> alter tablespace add_dbf add datafile '/u01/app/oradata/dg/add_dbf04.dbf' size 500m;
  223.  
  224. SQL> select name from v$datafile;
  225. NAME
  226. ------------------------------------------------------------
  227. /u01/app/oradata/dg/system01.dbf
  228. /u01/app/oradata/dg/sysaux01.dbf
  229. /u01/app/oradata/dg/undotbs01.dbf
  230. /u01/app/oradata/dg/users01.dbf
  231. /u01/app/oradata/dg/add_dbf01.dbf
  232. /u01/app/oradata/dg/add_dbf02.dbf
  233. /u01/app/oradata/dg/add_dbf03.dbf
  234. /u01/app/oradata/dg/add_dbf04.dbf    <--成功
  235.  
  236. @Standby
  237. SQL> select name from v$datafile;
  238. NAME
  239. --------------------------------------------------------------------------------
  240. /u01/app/node2/system01.dbf
  241. /u01/app/node2/sysaux01.dbf
  242. /u01/app/node2/undotbs01.dbf
  243. /u01/app/node2/users01.dbf
  244. /u01/app/node2/add_dbf01.dbf
  245. /u01/app/node2/add_dbf02.dbf
  246. /u01/app/node2/add_dbf03.dbf
  247. /u01/app/product/11.1.0/db_1/dbs/UNNAMED00010     <-----未成功
  248.  
  249. 小结:主备库数据文件保存路径相同,standby_file_management=AUTO,未设置db_file_name_convert参数。
  250.  主库添加数据文件,如果没有和主库一致的数据文件路径,那么备库不能自动创建数据文件。
  251.  控制件会记录新增数据文件的信息,不过不会真实创建它,v$datafile视图可以看到新增数据文件信息。

你可能感兴趣的:(Oracle)