失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 在linux看数据库表空间 Linux平台达梦数据库V7之表空间管理

在linux看数据库表空间 Linux平台达梦数据库V7之表空间管理

时间:2023-06-11 22:17:27

相关推荐

在linux看数据库表空间 Linux平台达梦数据库V7之表空间管理

表空间如果发生损坏(表空间还原失败,或者数据文件丢失或损坏)的情况下,允许将表空间切换为 CORRUPT 状态,并删除损坏的表空间,如果表空间上定义有对象,需要先将所有对象删除,再删除表空间。

2.4.1 修改表空间名

可修改已存在的由用户创建的表空间的名称。比如可修改 bookshop 表空间名为books。

ALTER TABLESPACE bookshop RENAME TO books;

2.4.2 修改表空间状态

用户表空间有联机和脱机两种状态。系统表空间、回滚表空间、重做日志表空间和临时文件表空间不允许脱机。设置表空间状态为脱机状态时,如果该表空间有未提交的事务,则脱机失败报错。脱机后可对表空间的数据进行备份。例如修改 bookshop 表空间状态为脱机。

ALTER TABLESPACE bookshop OFFLINE;

修改 bookshop 表空间状态为联机。

ALTER TABLESPACE bookshop ONLINE;

注意:MPP 环境下,可能发现节点间的表空间不一致情况,如:EP01 为 ONLINE 状态,EP02 为 OFFLINE 状态,这个时候,如论执行 ONLINE 还是 OFFLINE 都是报错。需要用户介入才可解决问题。用户LOCAL方式登录实例 , 并 执 行SP_SET_SE$$ION_LOCAL_TYPE(1),使得该会话可以执行 DDL 操作,再执行 ONLINE 或者 OFFLINE 即可。

2.4.3 修改表空间数据缓冲区

用户表空间可以切换使用的数据缓冲区,系统表空间、回滚表空间、重做日志表空间和临时文件表空间不允许修改数据缓冲区。可以使用的数据缓冲区有 NORMAL 和 KEEP。表空间修改成功后,并不会立即生效,而是需要服务器重启。缓冲池名 KEEP 是达梦的保留关键字,使用时必须加双引号。例如将 bookshop 表空间绑定到 KEEP 缓冲区。

ALTER TABLESPACE bookshop CACHE= "KEEP";

2.4.4 指定数据文件的扩展属性

参考2.2扩展表空间中指定数据文件的扩展属性的说明。

2.4.5 修改数据文件的路径

可以修改用户表空间中已存在数据文件的路径,待修改的数据文件所在表空间必须处于脱机状态并且只可修改用户创建的表空间中文件的路径。如修改 bookshop 表空间中文件book.dbf 的路径为 e:\ book.dbf。

ALTER TABLESPACE bookshop RENAME DATAFILE 'd:\book.dbf' TO 'e:\book.dbf';

2.4.6 查询表空间与数据文件对应关系

可以通过查询动态视图 V$TABLESPACE 得到系统中所有表空间的信息,通过查询动态视图 V$DATAFILE 得到系统中所有数据文件的信息。将两个动态视图以表空间 ID 为连接条件,通过以下查询可以得到表空间上对应的数据文件。

SELECT ts.NAME, df.PATH FROM V$TABLESPACE AS ts, V$DATAFILE AS df WHERE ts.ID = df.GROUP_ID;

2.4.7 表空间文件失效检查

LINUX 操作系统中,被进程打开的文件仍可以在 OS 系统中被删除,因此存在 DM7 数据文件可能被误删的风险。如果数据文件被删除,DM7 系统能够及时检测出来,并立刻停止对其继续使用并通知用户。

在 dm.ini 中参数 FIL_CHECK_INTERVAL 的值指定 DM7 系统检查数据文件是否仍存在的时间间隔。将其设为 0 表示不进行检查。

也可以通过系统过程 SP_FILE_SYS_CHECK()来手动的进行检查。

系统一旦检测出某个表空间内的数据文件被删除,则与该表空间所有的操作都将会失败,并报错该表空间内有数据文件被删除。

表空间恢复失效文件的检查

语法格式

SP_FILE_SYS_CHECK ();

语句功能

在 LINUX 操作系统下,检查是否有数据文件被删除。

使用说明

该过程只在 LINUX 下有效。

举例说明

SP_FILE_SYS_CHECK ();

2.4.8 表空间失效文件恢复

LINUX 系统中被删除的文件,只要其句柄没有被关闭,可以在/pr0c//fd 中找到其对应的文件副本。其中指打开该文件的进程 id。

利用该方法,结合 OS 命令,DM7 提供失效文件的恢复方案如下:

1、 调用系统过程 SP_TABLESPACE_PREPARE_RECOVER(tablespace_name)准备进行恢复;

2、 如果使用过程中 DM 报错表空间数据文件被删除,通过操作系统的 ps 命令找到当前dmserver 的 PID:ps –ef|grepdmserver;

3、 使用操作系统 ls 命令查看被删除文件对应的副本:ls /pr0c//fd–l,会发现被删除的文件后有(deleted)字样;

4、 使 用 操 作 系 统 的 cp 命 令 将 文 件 复 制 到 原 位 置cpbak_fildata_file_path_dir;

5、 复制成功后,调用系统过程 SP_TABLESPACE_RECOVER(ts_name)完成表空间失效文件的恢复。

注意,要保证数据文件正确修复,需要保证在 SP_TABLESPACE_PREPARE_RECOVER后进行数据文件的复制。

1)表空间恢复失效文件的准备

语法格式

SP_TABLESPACE_PREPARE_RECOVER();

语句功能

在 LINUX 操作系统下,如果出现了正在使用数据文件被删除的情况,该过程完成失效文件恢复的准备工作。

使用说明

该过程只在 LINUX 下有效。

举例说明

SP_TABLESPACE_PREPARE_RECOVER('MAIN');

2)表空间失效文件的恢复

语法格式

SP_TABLESPACE_RECOVER();

语句功能

在 LINUX 操作系统下,如果出现了正在使用数据文件被删除的情况,在调用了恢复准备的 SP_TABLESPACE_PREPARE_RECOVER 及在 OS 系统内完成了数据文件的复制后,调用该过程完成文件的恢复工作。表空间失效文件恢复的详细步骤可查阅系统管理员手册。

使用说明

如果觉得《在linux看数据库表空间 Linux平台达梦数据库V7之表空间管理》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。