通过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,如需转载请自行联系原作者

相关文章
|
7月前
|
SQL Oracle 关系型数据库
"揭秘!一键解锁Oracle日志清理魔法,让海量归档日志无处遁形,守护数据库健康,告别磁盘空间告急噩梦!"
【8月更文挑战第9天】随着Oracle数据库在企业应用中的普及,归档日志管理对保持数据库健康至关重要。归档日志记录所有更改,对数据恢复极为重要,但也可能迅速占用大量磁盘空间影响性能。利用Oracle提供的RMAN工具,可通过编写Shell脚本来自动清理归档日志。脚本包括设置环境变量、连接数据库、检查和删除指定时间前的日志,并记录执行情况。通过Cron作业定时运行脚本,可有效管理日志文件,确保数据库稳定运行。
186 7
|
7月前
|
存储 SQL 算法
【OceanBase】惊天大反转!启动时真的会占用95%磁盘空间?别怕!揭秘真相+实用调整技巧,手把手教你如何优雅地管理磁盘空间,让你的数据库从此告别“吃土”模式!
【8月更文挑战第15天】OceanBase是一款高性能分布式数据库,启动时并不会默认占用95%磁盘空间,这是一种误解。其设计注重资源管理,可根据业务需求动态调整空间使用。通过设置`max_disk_usage`等参数、优化表设计、定期清理数据及启用压缩等功能,可有效控制磁盘占用,确保高效利用存储资源。
226 1
|
编译器
进程4GB空间简析,PE重定位表【滴水逆向三期50笔记+作业】
进程4GB空间简析,PE重定位表【滴水逆向三期50笔记+作业】
|
存储 机器学习/深度学习 编解码
玻璃做介质,用光记录或删除数据,微软「全息云存储」来了
“用全新的视角审视全息存储这一古老的理念,并在云计算领域对其进行重新设想,在云计算领域,我们可以自由地在整个存储堆栈上进行创新,并从其他领域引入创意,使之成为一项可行的技术,这非常令人兴奋。”——Benn Thomsen,高级首席研究员。
474 0
|
SQL 数据采集 分布式计算
数据倾斜?几招把你安排的板板正正的!
数据倾斜?几招把你安排的板板正正的!
|
Oracle 关系型数据库