测试数据库重启报如下的错:
[dmdba@dsc3 bin]$ ./DmServiceDMSERVER start
Starting DmServiceDMSERVER: ./DmServiceDMSERVER: line 413: 2834 Floating point exception(core dumped) eval exec "\"$EXEC_PROG_FULL_PATH\"" "$STARTUP_PARAMS" -noconsole $TMP_START_MODE > "$SERVICE_LOG_FILE" 2>&1
[ FAILED ]
file dm.key not found, use default license!
version info: develop
DM Database Server x64 V8 1-2-38-21.07.09-143359-10018-ENT startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2022-07-09
file lsn: 24388
ndct db load finished
查看日志
2021-11-10 09:58:22.421 [FATAL] database P0000002834 T0000000000000002834 fil_io try to R file(5, 0) beyond size. path:/dmdata/DAMENG/hiv_01.dbf size:16 offset:16
2021-11-10 09:58:22.421 [FATAL] database P0000002834 T0000000000000002834 code = -2, dm_sys_halt now!!!
2021-11-10 09:58:22.421 [INFO] database P0000002834 T0000000000000002834 total 2 rfil opened!
从日志发现,表空间/dmdata/DAMENG/hiv_01.dbf出现了问题,导致数据库启动校验数据库一致性时出错。
在数据库没有备份的情况恢复数据库
1.将控制文件转换成文本文件
切换到数据安装路径 ,执行 ./dmctlcvt help 可以查看到 dmctlcvt 工具的具体情况,如下所示:
[dmdba@dsc3 bin]$ ./dmctlcvt help
DMCTLCVT V8
格式: ./dmctlcvt KEYWORD=value
注意: 控制文件名称必须指定为dm.ctl、dmmpp.ctl、dss.ctl
关键字 说明
--------------------------------------------------------------------------------
TYPE 1 转换控制文件为文本文件(源文件路径中控制文件名称必须是dm.ctl或dmmpp.ctl或dss.ctl)
2 转换文本文件为控制文件(目标文件路径中控制文件名称必须是dm.ctl或dmmpp.ctl或dss.ctl)
SRC 源文件路径
DEST 目标文件路径
DCR_INI dmdcr.ini文件路径
DFS_INI dmdfs.ini文件路径
HELP 打印帮助信息
示例:
./dmctlcvt TYPE=1 SRC=/opt/dmdbms/data/dameng/dm.ctl DEST=/opt/dmdbms/data/dameng/dmctl.txt
./dmctlcvt TYPE=2 SRC=/opt/dmdbms/data/dameng/dmctl.txt DEST=/opt/dmdbms/data/dameng/dm.ctl
转化控制文件为文本文件
[dmdba@dsc3 bin]$ ./dmctlcvt TYPE=1 SRC=/dmdata/DAMENG/dm.ctl
DEST=/dmdata/DAMENG/dmctl.txt
DMCTLCVT V8
convert ctl to txt success!
在文本文件中删除hiv表空间的路径信息:
[dmdba@dsc3 bin]$ ./DmServiceDMSERVER start
Starting DmServiceDMSERVER: [ OK ]
[dmdba@dsc3 bin]$
已用时间: 17.339(毫秒). 执行号:0.
SQL> alter tablespace hiv add datafile '/dmdata/DAMENG/hiv_02.dbf' size 512 autoextend on;
操作已执行
已用时间: 24.455(毫秒). 执行号:601.
SQL>
SQL>
SQL> select path from v$datafile;
行号 PATH
---------- -------------------------
1 /dmdata/DAMENG/SYSTEM.DBF
2 /dmdata/DAMENG/ROLL.DBF
3 /dmdata/DAMENG/TEMP.DBF
4 /dmdata/DAMENG/MAIN.DBF
5 /dmdata/DAMENG/MAIN.DBF
6 /dmdata/DAMENG/hiv_02.dbf
6 rows got
已用时间: 0.439(毫秒). 执行号:602.
SQL>
使用user1用户,测试在hiv表空间建表,插入数据。
[dmdba@dsc3 bin]$ ./disql user1/user11234
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.168(ms)
disql V8
SQL> desc t1;
行号 NAME TYPE$ NULLABLE
---------- ---- ----------- --------
1 ID INTEGER Y
2 NAME VARCHAR(40) Y
3 AGE INTEGER Y
已用时间: 64.130(毫秒). 执行号:700.
SQL>
SQL> insert into t1 values(1,'CHENLINLONG',20);
连接丢失
在表空间写入数据时,导致数据服务宕机,数据库中任然存在不一致问题。
继续处理存在的问题
查看用户默认的表空间
SQL> select username,default_tablespace from dba_users;
行号 USERNAME DEFAULT_TABLESPACE
---------- ---------- ------------------
1 SYSSSO SYSTEM
2 USER1 HIV
3 SYSDBA MAIN
4 SYS SYSTEM
5 SYSAUDITOR SYSTEM
已用时间: 24.271(毫秒). 执行号:503.
删除hiv表空间上对应的用户及hiv表空间
SQL> drop user user1 cascade;
SQL> drop tablespace hiv;
重新创建hiv表空间 及创建用户等
SQL> create tablespace hiv datafile '/dmdata/DAMENG/hiv_01.dbf' size 512 autoextend on;
操作已执行
已用时间: 48.577(毫秒). 执行号:508.
SQL>
重新创建用户,并指定用户默认表空间为hiv
SQL> create user user1 identified by user11234 default tablespace hiv;
操作已执行
已用时间: 19.690(毫秒). 执行号:509.
SQL>
使用user1用户,测试在hiv表空间建表,插入数据。
[dmdba@dsc3 bin]$ ./disql user1/user11234
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 2.719(ms)
disql V8
SQL> create table t1(id int,name varchar(40),age int);
操作已执行
已用时间: 29.895(毫秒). 执行号:600.
SQL> insert into t1 values(1,'XIANMING',20);
影响行数 1
已用时间: 3.766(毫秒). 执行号:601.
SQL> select * from t1;
行号 ID NAME AGE
---------- ----------- -------- -----------
1 1 XIANMING 20
已用时间: 1.901(毫秒). 执行号:602.
SQL> commit;
操作已执行
已用时间: 1.158(毫秒). 执行号:603.
SQL>
表空间损坏问题处理完成,但是这样操作会造成数据丢失,数据丢失是企业不能接受的,因此,数据备份,是dba的重中之重。
更多资讯请上达梦技术社区了解:https://eco.dameng.com