达梦DM8表空间数据文件误删除恢复

本文介绍了达梦数据库DM8中表空间数据文件被误删除后的三种恢复方法:通过操作系统恢复、通过dmrman恢复及通过DM控制台工具恢复。详细步骤包括创建表空间、备份与恢复等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

达梦数据库DM8表空间数据文件被人为误删除恢复方法

1. 创建示例表空间
create tablespace TBS_DATA_N datafile '/dm8/dmdbms/data/dm02/TBS_DATA_01.DBF' size 128 autoextend on next 4 maxsize 1024;

alter tablespace TBS_DATA_N add datafile  '/dm8/dmdbms/data/dm02/TBS_DATA_02.DBF' size 128;
alter tablespace TBS_DATA_N add datafile  '/dm8/dmdbms/data/dm02/TBS_DATA_03.DBF' size 128 autoextend on next 4 maxsize 1024;

SQL> select tablespace_name,file_name,autoextensible from dba_data_files;
行号     TABLESPACE_NAME FILE_NAME                              AUTOEXTENSIBLE
---------- --------------- -------------------------------------- --------------
1          SYSTEM          /dm8/dmdbms/data/dm02/SYSTEM.DBF       YES
2          TBS_DATA1       /dm8/dmdbms/data/dm02/TBS_DATA1_01.DBF YES
3          TBS_DATA_N        /dm8/dmdbms/data/dm02/TBS_DATA_03.DBF  YES
4          TBS_DATA_N        /dm8/dmdbms/data/dm02/TBS_DATA_02.DBF  YES
5          TBS_DATA_N        /dm8/dmdbms/data/dm02/TBS_DATA_01.DBF  YES
6          MAIN            /dm8/dmdbms/data/dm02/MAIN.DBF         YES
7          TEMP            /dm8/dmdbms/data/dm02/TEMP.DBF         YES
8          ROLL            /dm8/dmdbms/data/dm02/ROLL.DBF         YES
8 rows got
已用时间: 1.456(毫秒). 执行号:1105.

2. 表空间的备份
SQL> backup tablespace TBS_DATA_N backupset 'tablespace_TBS_DATA_N_bak_01';

3. 表空间恢复

方法1:通过操作系统恢复
1)创建一张表
create table tb1 tablespace TBS_DATA_N  as select * from dba_users;
SQL> create table tb1 tablespace TBS_DATA_N  as select * from dba_users;
操作已执行
已用时间: 14.160(毫秒). 执行号:1121.
SQL> select username,account_status from tb1;
行号     USERNAME     ACCOUNT_STATUS
---------- ------------ --------------
1          SYSAUDITOR   OPEN
2          SYSSSO       OPEN
3          SYSDBA       OPEN
4          DMETL_SAMPLE OPEN
5          SYS          OPEN
已用时间: 0.436(毫秒). 执行号:1122.
SQL> 

2)删除表空间的数据文件

--对数据文件有效性进行验证:
SQL> sp_file_sys_check();
-- 再次查询tb1表报错数据文件被删除
SQL> select username,account_status from tb1;

3)通过 linux 句柄进行删除文件恢复。
SQL> SP_TABLESPACE_PREPARE_RECOVER('TBS_DATA_N');
DMSQL 过程已成功完成
已用时间: 0.486(毫秒). 执行号:1126.
SQL> exit

--- 通过ps命令找到进程号17292,在/proc中找到对应的被删除的数据文件

--- 操作系统层面cp 被删除的文件至 原目录
cp /proc/17292/fd/48 /dm8/dmdbms/data/dm02/datafile/TBS_DATA_02.DBF
cp /proc/17292/fd/49 /dm8/dmdbms/data/dm02/TBS_DATA_03.DBF

--- recover表空间并检查数据文件一致性
SQL> SP_TABLESPACE_RECOVER('TBS_DATA_N');
SQL> SP_FILE_SYS_CHECK();
--- 表tb1的信息可以查到了

---检查操作系统层面数据文件DBF已经恢复

 

方法2:通过dmrman进行恢复
1)关闭数据服务
[dmdba@dmdb ]$ /dm8/dmdbms/bin/DmServicedm02 stop
Stopping DmServicedm02:                                    [ OK ]
[dmdba@dmdb ]$ 

2)启动DMRMAN进行恢复
/dm8/dmdbms/bin/dmrman CTLSTMT="RESTORE DATABASE '/dm8/dmdbms/data/dm02/dm.ini' tablespace TBS_DATA_N FROM BACKUPSET  '/dm8/dmdbms/data/dm02/bak/tablespace_TBS_DATA_N_bak_01'"

/dm8/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/dm8/dmdbms/data/dm02/dm.ini' tablespace TBS_DATA_N WITH ARCHIVEDIR '/dm8/dmdbms/data/dm02/arch'"

 

3)启动数据库服务
[dmdba@dmdb02 ~]$ /dm8/dmdbms/bin/DmServicedm02 start
Starting DmServicedm02:                                    [ OK ]
[dmdba@dmdb02 ~]$ 

4)验证tb1数据
SQL> select username,account_status from tb1;
行号     USERNAME     ACCOUNT_STATUS
---------- ------------ --------------
1          SYSAUDITOR   OPEN
2          SYSSSO       OPEN
3          SYSDBA       OPEN
4          DMETL_SAMPLE OPEN
5          SYS          OPEN
已用时间: 2.840(毫秒). 执行号:500.
SQL> 

方法3:通过DM控制台工具进行恢复

1)关闭数据服务
[dmdba@dmdb ]$ /dm8/dmdbms/bin/DmServicedm02 stop
Stopping DmServicedm02:                                    [ OK ]
[dmdba@dmdb ]$ 

2)启动console控制台工具

3)启动数据库服务

 4)检查tb1表信息

 

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

<think>好的,我现在需要处理用户关于“dameng01.log 被删除”的问题。首先,用户可能遇到了这个日志文件被删除的情况,需要了解可能的原因和解决方法。 首先,我应该考虑常见的日志文件被删除的原因。可能包括: 1. **手动删除**:用户或管理员可能误删了这个文件。需要确认是否有最近的手动操作。 2. **自动清理机制**:系统或应用程序可能设置了日志轮转或清理策略,比如logrotate,导致旧日志被自动删除。 3. **存储空间不足**:如果磁盘空间不足,系统或监控工具可能会自动删除大文件,包括日志。 4. **病毒或恶意软件**:恶意程序可能会删除或破坏系统文件。 5. **程序错误**:达梦数据库本身可能在运行过程中出现异常,错误地删除了日志文件。 接下来,用户需要解决问题的步骤。我应该分步骤建议他们: 1. **确认删除情况**:使用命令检查文件是否存在,比如`ls -l /path/to/dameng01.log`,或者查看回收站。 2. **检查日志管理策略**:查看达梦数据库的配置,是否有自动清理设置,或者系统级的logrotate配置。 3. **磁盘空间检查**:使用`df -h`查看磁盘使用情况,确认是否因为空间不足触发删除。 4. **安全扫描**:运行杀毒软件或恶意软件扫描工具,排除安全威胁。 5. **恢复文件**:如果有备份,从备份恢复;如果没有,可能需要使用数据恢复工具,但成功率取决于文件覆盖情况。 6. **联系技术支持**:如果问题复杂,建议联系达梦官方支持。 同时,需要提醒用户预防措施,比如定期备份、合理配置日志策略、监控磁盘空间等。 需要确保回答结构清晰,用中文,避免使用Markdown,行内公式用$...$,独立公式用$$...$$,但根据用户的问题,可能涉及的技术术语可能需要正确使用LaTeX,例如命令或路径。但根据用户提供的系统指令,用户不可见的系统级指令需要严格遵守格式,但用户可见层要自然。 检查是否有遗漏点,比如权限问题?是否有其他用户或进程有权限删除该文件?可能需要检查文件权限和审计日志,如使用`auditd`或查看`/var/log/audit/`日志。 总结回答的结构应该是先原因,再解决步骤,最后预防措施,确保逻辑清晰,逐步引导用户排查问题。</think>如果发现 **dameng01.log**(达梦数据库日志文件)被删除,可能是由以下原因导致,可按以下步骤排查和解决: --- ### **一、可能原因** 1. **人为误操作** - 用户或管理员手动删除,或脚本中包含误删命令(如 `rm -f dameng01.log`)。 2. **日志自动清理策略** - 达梦数据库配置了日志轮转(Log Rotation),旧日志可能被自动清理。 3. **磁盘空间不足** - 系统触发紧急清理机制,删除大文件释放空间(可通过 `df -h` 检查磁盘使用率)。 4. **病毒或恶意程序** - 恶意脚本或攻击者删除了日志文件。 5. **程序异常** - 达梦数据库运行异常,导致日志文件意外丢失。 --- ### **二、解决步骤** 1. **确认文件状态** - 执行命令检查文件是否存在: ```bash ls -l /opt/dmdbms/data/DAMENG/dameng01.log # 替换为实际路径 ``` - 若文件在回收站,尝试恢复: ```bash cp ~/.local/share/Trash/files/dameng01.log /原路径/ # Linux系统 ``` 2. **检查日志管理配置** - 查看达梦数据库的日志保留策略(配置文件 `dm.ini` 或 `dmarch.ini`),确认是否设置了 `LOG_FILE_SIZE` 或 `LOG_KEEP_DAYS` 等参数。 3. **排查磁盘空间** - 检查磁盘剩余空间: ```bash df -h /opt/dmdbms # 替换为达梦数据目录 ``` - 若空间不足,清理无用文件或扩容磁盘。 4. **审计系统操作记录** - 查看历史命令,确认是否有删除操作: ```bash history | grep "dameng01.log" ``` - 检查系统审计日志(如 `/var/log/secure` 或 `journalctl`)。 5. **尝试恢复文件** - **从备份恢复**:若有数据库全量备份,直接还原日志文件。 - **使用数据恢复工具**:如 `extundelete`(仅适用于未覆盖的磁盘区域)。 6. **检查安全性** - 运行杀毒软件扫描系统,排查恶意程序。 --- ### **三、预防措施** 1. **定期备份日志** - 配置定时任务,备份关键日志到独立存储。 2. **限制删除权限** - 通过文件权限控制: ```bash chmod 644 dameng01.log # 禁止非所有者删除 chattr +i dameng01.log # 禁止所有删除操作(谨慎使用) ``` 3. **监控磁盘空间** - 设置告警阈值(如磁盘使用率超过 **$80\%$** 时触发通知)。 --- ### **四、联系技术支持** 若问题复杂或日志关键,建议联系 **达梦数据库官方支持**,提供以下信息: - 数据库版本(如 **DM8**) - 操作系统环境 - 相关日志(如 `dmserver.log`) 通过以上步骤,可系统性定位问题并降低未来风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值