本篇博客流程图:

一、测试需求及参数说明

二、测试环境进行相关测试

三、问题总结

一、测试需求及参数说明

1.1测试需求说明

  1.  

DG切换

  1.  

切换前,数据库版本12.2.0.1,主库rac两节点,备一rac两节点,备二single单实例。

  1.  

需求,更换主机,使用dg进行迁移;

  1.  

切换后,新主库rac两节点,新备一rac两节点,新备二single单实例。

  1.  

切换后,由于对convert参数理解不够,dg正常切换成功,但是convert参数在新的备库未修改,留坑,本次出于学习目的,进行测试参数。

  1.  
  1.  

1.2切换中遇到的问题进行总结:

  1.  

1.主库两个实例,应用停业务后,在主库第二个实例kill LOCAL=NO远程进程后,主库存活的实例一,查询数据库切换状态异常,Alert日志发现为主库像远程备库传输的进程被kill,通过手工切换归档重置进程连接;
2.主库查询切换状态异常,发现dest远程传输归档进程异常,发现存在一个远程归档传输参数指向一个废弃的dg(已于客户确认),后对该参数设置null后,主库切换状态恢复正常;
3.在切换前,对RAC环境备库(切换后新主库),配置远程归档参数,使用scope=spfile,DG备库环境切换过程中无重启动作,最终导致切换后DG连通性不正常,重新配置参数后恢复正常;
(对于主库来说,DG切换角色为物理备库,主库会shutdown,但是对于备库环境,不受影响)
4.在切换后,新的备库环境rac,配置db convert转换参数,设置错误,参数设置不当,导致db nomount无法启动;
解决方式:create pfile='/tmp/pfile.ora' from spfile;
vi 编辑pfile,配置正确的参数后;
create spfile=' 修改前spfile完整路径.123213123' from pfile='/tmp/pfile.ora';报错
RAC环境,生成最新的spfile文件,不要加后缀数字;
create spfile='+DATA/xxx/spfile.ora' from pfile='/tmp/pfile.ora'; 即可
5)在修改db convert参数完毕后,重启备库open,需要介质恢复,金华姐说这是正常现象,mount状态打开media recovery ,后面再重新启动到open就可以了。#此处自己留坑#

  1.  
  2. 1.3参数说明
    standby_file_management
  3. db_create_file_dest
  4. DB_FILE_NAME_CONVERTLOG_FILE_NAME_CONVERT
  5.  
  6. standby_file_management
  7. STANDBY_FILE_MANAGEMENT = { MANUAL | AUTO }
  8. 启用自动备用文件管理后,将在备用数据库上复制主数据库上的操作系统文件添加和删除。STANDBY_FILE_MANAGEMENT仅适用于物理备用数据库。
  9. 如果备用数据库与主数据库位于同一系统上,请确保主系统和备用系统不指向相同的文件。
  10.  
  11. db_create_file_dest
  12. DB_CREATE_FILE_DEST = directory | disk group
  13. 如果将文件系统目录指定为默认位置,则该目录必须已存在; Oracle不会创建它。该目录必须具有允许Oracle在其中创建文件的适当权限。Oracle为文件生成唯一的名称,因此创建的文件是Oracle托管文件。
  14.  
  15. DB_FILE_NAME_CONVERT
  16. 对于创建重复数据库以进行恢复非常有用。它将主数据库上的新数据文件的文件名转换为备用数据库上的文件名。
  17. DB_FILE_NAME_CONVERT = 'string1' , 'string2' , 'string3' , 'string4' , ...
  18. 主,备,主,备
  19. 如果将数据文件添加到主数据库,则必须将相应的文件添加到备用数据库。更新备用数据库时,此参数将主数据库上的数据文件名转换为备用数据库上的数据文件名。备用数据库上的文件必须存在且可写,否则恢复过程将因错误而停止。

二、测试环境进行相关测试

  1. 测试一、备库未配置任何数据文件创建参数,主库创建数据文件
  2. .主备同步,备库存在于主库完全相同的路径
  3. .主库创建数据文件,切换日志
  4. SQL> create tablespace t1 datafile '/picclife/app/oracle/oradata/orcla/t1.dbf' size 1m;
  5. SQL> alter system switch logfile;
  6. 主库参数:
  7. db_create_file_dest Null
  8.  
  9. .查询备库应用情况
  10. Errors in file /picclife/app/oracle/diag/rdbms/orclb/orclb/trace/orclb_m000_3879.trc:
  11. ORA-: data file : '/picclife/app/oracle/product/12.2.0/db_1/dbs/UNNAMED00005'
  12. ORA-: error in identifying file '/picclife/app/oracle/product/12.2.0/db_1/dbs/UNNAMED00005'
  13. ORA-: unable to obtain file status
  14. --17T03::44.412366-:
  15. Errors in file /picclife/app/oracle/diag/rdbms/orclb/orclb/trace/orclb_mrp0_3575.trc:
  16. ORA-: cannot add data file that was originally created as '/picclife/app/oracle/oradata/orcla/t1.dbf'
  17. Recovery interrupted!
  18. --17T03::44.758843-:
  19.  
  20. 备库参数
  21. db_create_file_dest Null
  22. standby_file_management MANUAL
  23. log_file_name_convert Null
  24.  
  25. 备库处理
  26. SQL> select name from v$datafile where name like '%UNNAME%'
  27. NAME
  28. -----------------------------------------------------------------
  29. alter database create datafile '/picclife/app/oracle/product/12.2.0/db_1/dbs/UNNAMED00005'
  30. as '/picclife/app/oracle/oradata/oracdg/t1.dbf';
  31. recover managed standby database disconnect from session;
  32.  
  33. .删除数据文件(测试)
  34. 主库
  35. drop tablespace t1 including contents and datafiles;
  36. 备库,同样能删除数据文件记录,但无法级联删除操作系统中的数据文件
  37. orclb:/picclife/app/oracle/oradata/oracdg$ ls -lrt
  38. -rw-r----- oracle oinstall Mar : t1.dbf
  39.  
  40. 测试二、备库配置standby_file_management=AUTO时,主库创建数据文件
  41.  
  42. 2.1 备库有与主库一样的路径且有权限访问
  43. 备库:
  44. SQL> alter system set standby_file_management=auto;
  45.  
  46. 主库,创建数据文件,切换归档日志
  47. SQL> create tablespace t1 datafile '/picclife/app/oracle/oradata/orcla/t1.dbf' size 1m;
  48. SQL> alter system switch logfile;
  49.  
  50. 备库,日志:
  51. Existing file may be overwritten
  52. Recovery created file /picclife/app/oracle/oradata/orcla/t1.dbf
  53. Successfully added datafile to media recovery
  54. Datafile #: '/picclife/app/oracle/oradata/orcla/t1.dbf'
  55. --17T04::53.261481-:
  56.  
  57. 备库,根据参数,自动创建数据文件,且与主库路径相同。
  58. drop tablespace t1 including contents and datafiles;
  59. alter system switch logfile;
  60.  
  61. 2.2 备库有与主库路径不同
  62. 将备库与主库文件路径相同的目录,mv该名称
  63. orclb:/picclife/app/oracle/oradata$ mv orcla orcla.bak
  64. 主库,创建数据文件,切换归档日志
  65. SQL> create tablespace t1 datafile '/picclife/app/oracle/oradata/orcla/t1.dbf' size 1m;
  66. SQL> alter system switch logfile;
  67. 备库
  68. orclb:/picclife/app/oracle/oradata$ ls
  69. oracdg orcla orcla.bak
  70. orclb:/picclife/app/oracle/oradata$ cd orcla
  71. orclb:/picclife/app/oracle/oradata/orcla$ ls -lrt
  72. total
  73. -rw-r----- oracle oinstall Mar : t1.dbf
  74. 数据文件还是正常创建了,并且oracle自动创建了该路径!!!
  75.  
  76. 2.3 调整版本,将备库与主库相同的文件路径orcla路径属组修改为root:root
  77. 主库,还原测试环境
  78. drop tablespace t1 including contents and datafiles;
  79. alter system switch logfile;
  80. 备库修改文件属组:
  81. [root@orclb oradata]# chown root.root orcla
  82. 主库,创建数据文件,切换归档日志
  83. SQL> create tablespace t1 datafile '/picclife/app/oracle/oradata/orcla/t1.dbf' size 1m;
  84. SQL> alter system switch logfile;
  85.  
  86. 备库:报错信息复现
  87. Errors in file /picclife/app/oracle/diag/rdbms/orclb/orclb/trace/orclb_m000_6001.trc:
  88. ORA-: data file : '/picclife/app/oracle/product/12.2.0/db_1/dbs/UNNAMED00005'
  89. ORA-: error in identifying file '/picclife/app/oracle/product/12.2.0/db_1/dbs/UNNAMED00005'
  90. ORA-: unable to obtain file status
  91. Linux-x86_64 Error: : No such file or directory
  92. Additional information:
  93.  
  94. 备库处理
  95. SQL> alter system set standby_file_management=manual;
  96. alter database create datafile '/picclife/app/oracle/product/12.2.0/db_1/dbs/UNNAMED00005'
  97. as '/picclife/app/oracle/oradata/oracdg/t1.dbf';
  98. SQL> alter system set standby_file_management=auto;
  99. recover managed standby database disconnect from session;
  100. 主库,还原测试环境
  101. drop tablespace t1 including contents and datafiles;
  102. alter system switch logfile;
  103.  
  104. 测试三、备库配置auto参数,且配置convert转换参数时
  105. 备库
  106. SQL> alter system set db_file_name_convert='/picclife/app/oracle/oradata/orcla/','/picclife/app/oracle/oradata/oracdg/' scope=spfile;
  107. SQL> startup mount;
  108. recover managed standby database disconnect from session;
  109.  
  110. 主库创建数据文件,切换日志
  111. SQL> create tablespace t1 datafile '/picclife/app/oracle/oradata/orcla/t1.dbf' size 1m;
  112. SQL> alter system switch logfile;
  113.  
  114. 备库自动创建该文件:正常情况
  115. SQL> select name from v$datafile;
  116. NAME
  117. ------------------------------------------------------------------------------------------------------------------------
  118. /picclife/app/oracle/oradata/oracdg/data2etsh9v3.dbf
  119. /picclife/app/oracle/oradata/oracdg/data2gtsha10.dbf
  120. /picclife/app/oracle/oradata/oracdg/data2ftsha07.dbf
  121. /picclife/app/oracle/oradata/oracdg/data2htsha1q.dbf
  122. /picclife/app/oracle/oradata/oracdg/t1.dbf
  123.  
  124. 测试四、当dg切换后,修改convert参数后,dg能否保持正常转换。
  125. 切换前:主库orcla,一备orclb,二备orclc;
  126. 切换后:主库orclb,一备orcla,二备orclc;
  127.  
  128. 切换前:
  129. 主库数据文件路径,及参数设置
  130.  
  131. SQL> select name from v$datafile union select name from v$tempfile;
  132. NAME
  133. ----------------------------------------------------------------
  134. /picclife/app/oracle/oradata/orcla/sysaux01.dbf
  135.  
  136. db_unique_name orcla
  137. db_file_name_convert Null
  138. standby_file_management --全部设置为auto
  139.  
  140. 1
  141. /picclife/app/oracle/oradata/oracdg/
  142.  
  143. db_unique_name orclb
  144. db_file_name_convert
  145. /picclife/app/oracle/oradata/orcla/, /picclife/app/oracle/oradata/oracdg/
  146.  
  147. 2
  148. /picclife/app/oracle/oradata/dg2/
  149.  
  150. db_unique_name orclc
  151. /picclife/app/oracle/oradata/orcla/, /picclife/app/oracle/oradata/dg2/
  152.  
  153. 原主库
  154. SQL> select dbid,name, database_role,open_mode,SWITCHOVER_STATUS,FLASHBACK_ON,PROTECTION_MODE,FORCE_LOGGING from v$database;
  155. DBID NAME DATABASE_ROLE OPEN_MODE SWITCHOVER_STAT FLASH PROTECTION_MODE FORCE_LOGG
  156. ----------- ---------- ---------------------- ---------- --------------- ----- ---------------------------------------- ----------
  157. ORCLA PRIMARY READ WRITE TO STANDBY NO MAXIMUM PERFORMANCE YES
  158.  
  159. SQL> select dest_id,error from v$archive_dest;
  160.  
  161. DEST_ID ERROR
  162. ---------- -----------------------------------------------------------------
  163.  
  164. 原主库:切换为物理备库
  165. SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;
  166. SQL> startup mount;
  167. SQL> select dbid,name, database_role,open_mode,SWITCHOVER_STATUS,FLASHBACK_ON,PROTECTION_MODE,FORCE_LOGGING from v$database;
  168. DBID NAME DATABASE_ROLE OPEN_MODE SWITCHOVER_STAT FLASH PROTECTION_MODE FORCE_LOGG
  169. ----------- ---------- ---------------------- ---------- --------------- ----- ---------------------------------------- ----------
  170. ORCLA PHYSICAL STANDBY MOUNTED RECOVERY NEEDED NO MAXIMUM PERFORMANCE YES
  171.  
  172. 1/
  173. SQL> select dbid,name, database_role,open_mode,SWITCHOVER_STATUS,FLASHBACK_ON,PROTECTION_MODE,FORCE_LOGGING from v$database;
  174.  
  175. DBID NAME DATABASE_ROLE OPEN_MODE SWITCHOVER_STAT FLASH PROTECTION_MODE FORCE_LOGG
  176. ----------- ---------- ---------------------- ---------- --------------- ----- ---------------------------------------- ----------
  177. ORCLA PHYSICAL STANDBY READ ONLY TO PRIMARY NO MAXIMUM PERFORMANCE YES
  178. WITH APPLY
  179.  
  180. 1切换为主库
  181. ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
  182.  
  183. 新主库修改远程归档参数:
  184. alter system set log_archive_dest_2='SERVICE=primaryorcla LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcla';
  185. alter system set log_archive_dest_3='SERVICE=adgc LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orclc';
  186. SQL> alter database open;
  187. SQL> alter system switch logfile;
  188.  
  189. 1备修改参数:
  190. SQL> alter system set fal_client=primaryorcla;
  191. SQL> alter system set fal_server=adgb;
  192. SQL> recover managed standby database disconnect from session;
  193. SQL> alter system set db_file_name_convert='/picclife/app/oracle/oradata/oracdg/','/picclife/app/oracle/oradata/orcla/' scope=spfile;
  194. recover managed standby database disconnect from session;
  195.  
  196. 重启库,无异常
  197.  
  198. 2备修改参数:
  199. SQL> alter system set fal_server=adgb;
  200.  
  201. db_file_name_convert /picclife/app/oracle/oradata/orcla/, /picclife/app/oracle/oradata/dg2/
  202. SQL> alter system set db_file_name_convert='/picclife/app/oracle/oradata/oracdg/','/picclife/app/oracle/oradata/dg2/' scope=spfile;
  203. SQL> select name from v$datafile;
  204.  
  205. NAME
  206. ----------------------------------------------------------------
  207. /picclife/app/oracle/oradata/dg2/system01.dbf
  208. /picclife/app/oracle/oradata/dg2/sysaux01.dbf
  209. /picclife/app/oracle/oradata/dg2/undotbs01.dbf
  210. /picclife/app/oracle/oradata/dg2/users01.dbf
  211. /picclife/app/oracle/oradata/dg2/t1.dbf
  212. SQL> alter database open;
  213. Database altered.
  214. recover managed standby database disconnect from session;
  215.  
  216. --
  217. 主库,还原测试环境
  218. drop tablespace t1 including contents and datafiles;
  219. alter system switch logfile;
  220. 主库创建数据文件,切换日志
  221. SQL> create tablespace t1 datafile '/picclife/app/oracle/oradata/oracdg/t1.dbf' size 1m;
  222. SQL> alter system switch logfile;
  223.  
  224. 备库查询一切正常,未发现DG备库切换后,修改convert参数导致的数据文件目录不正确现象。

三、问题总结

  1. 总结:
  2. .如果备库没有配置standby_file_management=auto参数,则主库创建数据文件,备库接受应用日志后会报错且mrp进程停止应用
  3. .如果备库与主库路径不同,且备库无法创建与主库相同的路径存放文件,则报错且mrp进程停止应用
  4. .配置正确的转换参数+auto参数,则主库创建数据文件,备库能相应进行转换
  5. .dg切换后,配置正确的convert参数,无异常。
    5.今后如果还存在dg切换,需要提前查询name路径,及配置正确的convert转换参数

DG_数据文件转换参数测试的更多相关文章

  1. Spark2 加载保存文件,数据文件转换成数据框dataframe

    hadoop fs -put /home/wangxiao/data/ml/Affairs.csv /datafile/wangxiao/ hadoop fs -ls -R /datafiledrwx ...

  2. 【数据预处理】TIMIT语料库WAV文件转换

    1 问题描述 这两天复现代码.先构造数据集,纯净语音.不同噪声.不同SNR的混合语音.其中纯净语音由两部分组成,IEEE corpus和TIMIT. 一开始我用MATLAB中的audioread读取音 ...

  3. asm和file system之间数据文件的转换

    How to move a datafile from a file system to ASMMoving a datafile from the file system can be achive ...

  4. U盘存放大于4G数据文件且无须格式化U盘的解决方法

    现在优盘的容量越来越大了,价格越来越便宜,可是它也有个缺点,因为它默认的文件系统是"FAT32",这种文件系统最大只能保存4G的文件,超过4G的文件就不能保存在优盘上了,这样就不能 ...

  5. ORACLE 移动数据文件 控制文件 重做日志文件

    ORACLE数据库有时候需要对存储进行调整,增加分区.IO调优等等,此时需要移动数据文件.重做日志文件.控制文件等等,下文结合例子总结一下这方面的知识点. 进行数据文件.重做日志文件.控制文件的迁移前 ...

  6. bbed的使用--查看数据文件信息 & sid信息

    1.得到文件的块大小和数据块个数 在Linux和Unix上,oracle提供了一个小工具dbfsize用于查看文件块大小 (可以参看[ID:360032.1]How to detect and fix ...

  7. nodejs将PDF文件转换成txt文本,并利用python处理转换后的文本文件

    目前公司Web服务端的开发是用Nodejs,所以开发功能的话首先使用Nodejs,这也是为什么不直接用python转换的原因. 由于node对文本的处理(提取所需信息)的能力不强,类似于npm上的包: ...

  8. (四) 一起学 Unix 环境高级编程(APUE) 之 系统数据文件和信息

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  9. 15个最好的PDF转word的在线转换器,将PDF文件转换成doc文件

    PDF是一种文件格式,包含文本,图像,数据等,这是独立于操作系统的文件类型.它是一个开放的标准,压缩,另一方面DOC文件和矢量图形是由微软文字处理文件.该文件格式将纯文本格式转换为格式化文档.它支持几 ...

随机推荐

  1. Bugku-CTF之输入密码查看flag

    Day14 输入密码查看flag http://123.206.87.240:8002/baopo/    

  2. How to use “cat” command on “find” command's output?

    You can do this with find alone using the -exec action: find /location -size 1033c -exec cat {} + {} ...

  3. (转载)Unity_3DText穿透场景物体解决

    在unity的3D物体下有一个3DText 物体.这个物体可以在空间坐标中显示文本文字. 如下图: 这个3D Text在场景中的显示会出现穿透3D物体的现象.如图:本来这个hello world 的文 ...

  4. 微信端修改title

    function setTitle(t) { document.title = t; var i = document.createElement('iframe'); i.src = "i ...

  5. elementUI

    开始学习elementUI了. 怎么可以快速的学习一个UI框架,是我们的值得思考的事情. 博客,重点,记忆. <el-button @click="visible = true&quo ...

  6. guxh的python笔记八:特殊方法

     1,类的特殊方法  新建一个类,本章内容中的特殊方法如果不创建类或新增方法,默认使用的就是下面的类: class Foo: """this is Foo"&q ...

  7. linux存储管理之磁盘阵列

    磁盘阵列 RAID ====================================================================================RAID:廉 ...

  8. js里面关于日期转换的问题

    我们拿到一个日期字符串:"2017-09-03",我们用new Date("2017-09-03")去转换成日期格式的时候,发现在火狐会报错,是因为火狐不支持这 ...

  9. POJ-3233 Matrix Power Series 矩阵A^1+A^2+A^3...求和转化

    S(k)=A^1+A^2...+A^k. 保利求解就超时了,我们考虑一下当k为偶数的情况,A^1+A^2+A^3+A^4...+A^k,取其中前一半A^1+A^2...A^k/2,后一半提取公共矩阵A ...

  10. python实现http get请求

    接口请求方式为get请求,如下图抓包查看 Python实现脚本请求接口并以中文打印接口返回的数据 import urllib.parse import urllib.request url = &qu ...