注册
记录一次数据目录满了的分析处理过程
专栏/技术分享/ 文章详情 /

记录一次数据目录满了的分析处理过程

LHX 2023/11/28 1444 0 0
摘要

前言:在数据库目录规划时,数据库安装路径和数据文件存储的物理路径是必须要提前规划好的,并且需要定期对其进行巡检,数据库安装目录下的log目录中日志文件是我们需要特别关注的,很多报错、告警信息都被记录在里面;数据存储路径中,用于存放数据库所需的各类物理文件,因此对磁盘空间需求较高,现场经常由于巡检不及时造成各类问题,其中数据盘被占满十分常见,本次主要介绍数据盘被占满的恢复思路及实际操作。

数据盘被占满时数据库无法提供服务,如何解决我们有两种思路,一是将数据盘中的部分文件挪到新的文件存储路径中,但经常由于现场无其他挂载磁盘或其他盘容量较小,迁移的文件过小也无法保障后续的数据库使用;二是想办法启动数据库,将部分历史数据压缩迁移走或将无用的备份数据删除,这点要提前与客户确认。这两点都需要先将数据库服务器数据盘释放出一定空间。

1.jpg

在空间释放前,我们需要知道数据目录下我们需要挪移走哪些文件,如何挪移。大家都知道DM数据库启动所需文件和Oracle十分类似,其必要的物理文件有:参数文件、控制文件、数据文件、联机日志文件,默认情况下均存放在数据目录下。
2.jpg
其中控制文件和参数文件较小,及时挪移走也无法释放较大空间。
本次处理过程中发现数据文件均较大,每个都超过了其他盘的剩余容量,因此我们把迁移的对象放在了联机日志文件上。

经查看发现联机日志文件DAMENG01.log DAMENG02.log大小均为2G,我们现将日志文件挪到其他dmdba有权限的目录下,然后修改控制文件中的日志文件存储路径,让数据库在启动时能够识别到挪移走到日志文件。

如果是现网环境,进行操作期间为避免业务干扰,最好将dm.ini中数据库端口参数进行修改,防止业务连库。

一切准备就绪后,此时就要用的我们达梦的dmctlcvt工具,对控制文件内容进行修改。
3.jpg

具体步骤为:先将cm.ctl参数文件转换为可读取的文本文件,修改其文本文件,再利用修改后的文本文件重新生成cm.ctl控制文件。(这一步记得备份之前的控制文件或者将之前的文件mv,以防修改出问题。)其对应步骤分别为途中的
TYPE=1

具体操作示例如下

##利用控制文件,生成文本文件
./dmctlcvt TYPE=1 SRC=/dbdata/data/DAMENG/dm.ctl DEST=/dbdata/dmct1125.txt
##修改DAMENG*.log路径为新目录路径,
##原有配置为fil_hath=/dbdata/data/DAMENG/DAMENGO3.log,可在vi编辑器中fil_hath=/dbdata/data/DAMENG/DAMENGO3.log直接搜索DAMENG02.log
vi /dbdata/dmct1125.txt
/dbbak/DAMENG02.log
/dbbak/DAMENG03.log
##挪移两个联机日志文件到/dbbak路径下
cd /dbdata/data/DAMENG/
mv DAMENG02.log DAMENG03.log /dbbak/
##将原有控制文件改名
mv /dbdata/data/DAMENG/dm.ctl /dbdata/data/DAMENG/dm.ctldm.ctl_bak1125
##利用新生成对的文本文件重新生成控制文件
./dmctlcvt TYPE=2 SRC=/dbdata/dmct1125.txt DEST=/dbdata/data/DAMENG/dm.ctl
##启动数据库
/etc/init.d/dmserverd start

4.jpg

6.jpg

5.jpg

在数据库可以正常启动后,最好做一次数据库全备。
数据库能够使用后,可以与客户沟通,如何将库内历史数据迁移走或删除,之后再还原dm.ini内的数据库端口参数,数据库即可恢复使用。

达梦社区地址 https://eco.dameng.com

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服