通过RENAME解救空间紧缺的DG系统

简介:

周日为了挽救主库USERS表空间不足临时扩了20G表空间,导致DG库的/bak/datafile/目录不足。 日志应用到扩表空间的归档就崩溃,同时更悲剧的是空间不足导致SYSTEM表空间写入也发生了异常。 对于该问题首先想到系统级别扩容,通过系统级别的resize2fs经过确认无法扩容。通过分区合并由于没有相邻的分区也无法进行,只有采用ORACLE层面的方式。我们的DG系统因为空间紧缺数据文件写到了两个不同的文件夹,既然数据可以写到两个目录,肯定可以写到三个目录,会不会是控制文件里有定义,马上创建了PFILE,但从PFILE里面没有发现有用的数据文件重定向信息,又查找资料,发现了救命的RENAME命令,通过RENAME命令解决了数据文件迁移的问题。

 

  1.      
  2. 文件系统              容量  已用 可用 已用% 挂载点 
  3. /dev/sda3              19G  470M   18G   3% / 
  4. /dev/sda12            125G  105G   14G  89% /bak 
  5. /dev/sda10            9.5G  151M  8.9G   2% /tmp 
  6. /dev/sda9             9.5G  318M  8.7G   4% /var 
  7. /dev/sda8              19G  173M   18G   1% /opt 
  8. /dev/sda7              19G  4.0G   14G  23% /weblogic 
  9. /dev/sda2              48G  4.0G   41G   9% /usr 
  10. /dev/sda6              48G   28G   18G  61% /home 
  11. /dev/sda5              95G   76G   15G  85% /u01 
  12. /dev/sda1             1.9G   42M  1.8G   3% /boot 
  13. tmpfs                 3.9G     0  3.9G   0% /dev/shm 
  14. [root@L-DB-163-18 datafile]# umount /weblogic 
  15. [root@L-DB-163-18 datafile]# df -h 
  16. 文件系统              容量  已用 可用 已用% 挂载点 
  17. /dev/sda3              19G  470M   18G   3% / 
  18. /dev/sda12            125G  105G   14G  89% /bak 
  19. /dev/sda10            9.5G  151M  8.9G   2% /tmp 
  20. /dev/sda9             9.5G  318M  8.7G   4% /var 
  21. /dev/sda8              19G  173M   18G   1% /opt 
  22. /dev/sda2              48G  4.0G   41G   9% /usr 
  23. /dev/sda6              48G   28G   18G  61% /home 
  24. /dev/sda5              95G   76G   15G  85% /u01 
  25. /dev/sda1             1.9G   42M  1.8G   3% /boot 
  26. tmpfs                 3.9G     0  3.9G   0% /dev/shm 
  27.  
  28. [root@L-DB-163-18 datafile]# e2fsck -f /dev/sda12 
  29. e2fsck 1.39 (29-May-2006) 
  30. Pass 1: Checking inodes, blocks, and sizes 
  31. Pass 2: Checking directory structure 
  32. Pass 3: Checking directory connectivity 
  33. Pass 4: Checking reference counts 
  34. Pass 5: Checking group summary information 
  35. /bak: 24/33718272 files (12.5% non-contiguous), 28482930/33714402 blocks 
  36. [root@L-DB-163-18 datafile]# resize2fs /dev/sda12 128G; 
  37. resize2fs 1.39 (29-May-2006) 
  38. Filesystem at /dev/sda12 is mounted on /bak; on-line resizing required 
  39. Performing an on-line resize of /dev/sda12 to 33554432 (4k) blocks. 
  40. The filesystem on /dev/sda12 is now 33554432 blocks long. 
  41. 空间不够,通过UNMOUNT其他文件系统扩容需要的文件系统后来仔细研究了下确实是不行的。 
  42. 必须从分区层面进行,尝试fdisk /dev/sda\d\7\w删除了无用的分区,研究分区合并也行不通, 
  43. 因为sda12相邻的分区没有可用空间,从分区层面扩容无法成行, 
  44.  
  45. 在数据库层面原本可以通过OPEN数据库把数据文件重命名的动作由于SYSTEM表空间未完全写完一个事物而无法OPEN, 
  46. RENAME操作报错,具体如下。 
  47. SQL> alter tablespace TEMP rename datafile '/bak/datafile/temp01.dbf' to '/usr/datafile/temp01.dbf'
  48. alter tablespace TEMP rename datafile '/bak/datafile/temp01.dbf' to '/usr/datafile/temp01.dbf' 
  49. ERROR at line 1: 
  50. ORA-01109: database not open 
  51.   
  52. SQL> alter database open read only
  53. alter database open read only 
  54. ERROR at line 1: 
  55. ORA-16004: backup database requires recovery 
  56. ORA-01196: file 1 is inconsistent due to a failed media recovery session 
  57. ORA-01110: data file 1: '/bak/datafile/system01.dbf' 
  58.  
  59.     按照常理,DG数据库可以在MOUNT下执行RENAME操作,但试了很多次却不行。 
  60. 再仔细一看报错信息,居然有如下提示ORA-01275: Operation RENAME is not allowed if standby file management is automatic. 
  61. SQL> startup nomount; 
  62. ORACLE instance started. 
  63.   
  64. Total System Global Area 4596957184 bytes 
  65. Fixed Size                  2090048 bytes 
  66. Variable Size             838863808 bytes 
  67. Database Buffers         3741319168 bytes 
  68. Redo Buffers               14684160 bytes 
  69. SQL> alter database mount standby database
  70.   
  71. Database altered. 
  72.   
  73. SQL> alter database rename file '/bak/datafile/namin_data.dbf' to '/usr/datafile/namin_data.dbf'
  74. alter database rename file '/bak/datafile/namin_data.dbf' to '/usr/datafile/namin_data.dbf' 
  75. ERROR at line 1: 
  76. ORA-01511: error in renaming log/data files 
  77. ORA-01275: Operation RENAME is not allowed if standby file management is 
  78. automatic. 
  79. 上ORACLE查了下,在DG模式下文件有两种管理方式(show parameter standby可以查),自动和手动管理,如果是自动管理,是没法重命名的, 
  80. 马上尝试改成手动模式。 
  81.  
  82. SQL>  show parameter standby 
  83.   
  84. NAME                                 TYPE        VALUE 
  85. ------------------------------------ ----------- ------------------------------ 
  86. standby_archive_dest                 string      ?/dbs/arch 
  87. standby_file_management              string      AUTO 
  88. SQL> alter system set standby_file_management=MANUAL; 
  89.   
  90. System altered. 
  91.   
  92. SQL> show parameter standby 
  93.   
  94. NAME                                 TYPE        VALUE 
  95. ------------------------------------ ----------- ------------------------------ 
  96. standby_archive_dest                 string      ?/dbs/arch 
  97. standby_file_management              string      MANUAL 
  98. SQL> alter database rename file '/bak/datafile/namin_data.dbf' to '/usr/datafile/namin_data.dbf'
  99.   
  100. Database altered. 
  101.   
  102. SQL> alter database rename file '/bak/datafile/temp01.dbf' to '/usr/datafile/temp01.dbf'
  103.   
  104. Database altered. 
  105. 至此更改文件路径成功,数据文件已经定向到了新的路径/usr/datafile/。 
  106. 再此药注意的是重命名前必须把文件原封不动的拷贝过去,否则会报如下错误。 
  107. SQL> alter database rename file '/bak/datafile/sysaux01.dbf' to '/usr/datafile/sysaux01.dbf'
  108. alter database rename file '/bak/datafile/sysaux01.dbf' to '/usr/datafile/sysaux01.dbf' 
  109. ERROR at line 1: 
  110. ORA-01511: error in renaming log/data files 
  111. ORA-01141: error renaming data file 3 - new file '/usr/datafile/sysaux01.dbf'not found 
  112. ORA-01110: data file 3: '/bak/datafile/sysaux01.dbf' 
  113. ORA-27037: unable to obtain file status 
  114. Linux-x86_64 Error: 2: No such file or directory 
  115. Additional information: 3 
  116.  
  117. 这下空间有了,事情就好办了,只要/bak/datafile/下有20G以上的空间,应用了USERS表空间扩容的归档。 
  118. 其余就是很好操作的事情。归档日志满可以把已经应用的归档给删除掉,如果不小心把未应用的归档删除了怎么办, 
  119. 也不用慌,如果用了ASM,可以用RMAN从主库提取归档,然后FTP给DG,如果用普通文件系统,那么直接FTP。 
  120. EG: 
  121. RMAN> copy archivelog '+DATA/log/archivelog/2_5585_697238176.dbf' to '/u01/rman/2_5585_697238176.dbf'

 本文转自zylhsy 51CTO博客,原文链接:http://blog.51cto.com/yunlongzheng/578456,如需转载请自行联系原作者

相关文章
|
存储 SQL 分布式计算
Parquet与ORC高性能列式存储
Parquet与ORC高性能列式存储
1081 0
Parquet与ORC高性能列式存储
|
JavaScript 前端开发
JS如何配合input框实现模糊搜索
JS如何配合input框实现模糊搜索
424 2
|
存储 C++ 容器
C++ 第九节——map/set(用法+底层原理+模拟实现)
们需要知道的是,Map和Set的底层都是红黑树。
1193 1
C++ 第九节——map/set(用法+底层原理+模拟实现)
|
Windows
Multisim 14直流稳压电源的设计
Multisim 14直流稳压电源的设计
401 1
|
存储 运维 资源调度
云资源的使用规范是什么?
【5月更文挑战第9天】云资源的使用规范是什么?
467 1
|
小程序 JavaScript Java
基于微信小程序的加油站服务管理系统设计与实现(源码+lw+部署文档+讲解等)
基于微信小程序的加油站服务管理系统设计与实现(源码+lw+部署文档+讲解等)
358 0
|
负载均衡 监控 安全
介绍grpc
gRPC(gRPC Remote Procedure Call)是一种高性能、开源的远程过程调用(RPC)框架,最初由Google开发并开源。它基于HTTP/2协议传输,使用Protocol Buffers(ProtoBuf)作为默认的序列化机制,支持多种编程语言,并提供了强大的功能和特性。
|
监控 安全 API
如何防止短信盗刷产生资损
日常使用的云资源中,如果由于客户API对外设计不合理、AK/SK暴露等原因,可能导致资源出现被盗刷的情况并导致资损,本文梳理针对短信服务的防盗刷的能力,以及配套的安全管理策略。短信计费模式:可参考https://help.aliyun.com/document_detail/44340.htmlht...
446 0
如何防止短信盗刷产生资损
|
前端开发 JavaScript Java
基于springboot乡村民宿系统
该系统框架后端采用springboot框架,前端使用vue、css、js等,系统界面美观,功能全面,含有参考论文。乡村民宿系统分为前台用户浏览预定和后台信息管理两个子系统,其中前台预订系统主要有乡村民宿浏览模块,乡村景点推荐模块,在线留言模块,购物车模块,搜索模块五个子模块;后台管理系统主要有房源管理、用户管理、订单管理、景点信息管理等功能。
基于springboot乡村民宿系统
|
XML 运维 Dubbo
Dubbo3 源码解读-宋小生-14:Dubbo配置加载全解析
> 完整电子书下载地址: https://developer.aliyun.com/ebook/7894 > Dubbo3 已经全面取代 HSF2 成为阿里的下一代服务框架,2022 双十一基于 Dubbo3 首次实现了关键业务不停推、不降级的全面用户体验提升,从技术上,大幅提高研发与运维效率的同时地址推送等关键资源利用率提升超 40%,基于三位一体的开源中间件体系打造了阿里在云上的单元化最佳实
492 0
Dubbo3 源码解读-宋小生-14:Dubbo配置加载全解析