空间管理"/>
DM8 表空间管理
DM8 表空间管理
DM 数据库中,表空间由一个或者多个数据文件组成。DM 数据库中的所有对象在逻辑上都存放在表空间中,而物理上都存储在所属表空间的数据文件中。
在创建 DM 数据库时,会自动创建 4 个表空间:SYSTEM 表空间、ROLL 表空间、MAIN表空间和 TEMP 表空间。
-- 查看表空间信息
select
SF_GET_PARA_STRING_VALUE(1,'INSTANCE_NAME') AS INSTANCE_NAME,
a.id ,a.NAME , case when a."TYPE$" = 1 then 'DATAFILE' else'TEMPFILE' end AS TYPE,
case a."STATUS$"
when 0 then 'ONLINE'
WHEN 1 then 'OFFLINE'
when 2 then 'RES_OFFLINE'
ELSE 'CORRUPT' END AS STATUS,
round(A.MAX_SIZE * page /power(2,30),2) as MAX_SIZE_GB,
A.FILE_NUM,
round(a.TOTAL_SIZE * page/power(2,30),2) AS TOTAL_SIZE_GB ,
ROUND (a.USED_SIZE * page/power(2,30),2) as USED_SIZE_GB ,
a.CACHE
from v$tablespace a ;
创建表空间
理论上最多允许有 65535 个表空间,但用户允许创建的表空间 ID 取值范围为
0~32767,超过 32767 的只允许系统使用,ID 由系统自动分配,ID 不能重复使用,即使删除掉已有表空间,也无法重复使用已用 ID 号,也就是说只要创建 32768 次表空间后,用户将无法再创建表空间。
--创建表空间
--查看最小数据文件大小
select page * 4096 /1024 /1024 ;
--查看数据文件存放路径
select path from v$datafile ;
--安装数据文件路径创建表空间,注意路径和命名规则
create TABLESPACE <tablespace_name> datafile '....' size <大于等于最小值> autoextend on next 5 maxsize <最大值> ;
修改表空间
ALTER TABLESPACE <表空间名> [ONLINE|OFFLINE|CORRUPT|<表空间重命名子句>|<数据文件重命名子句>|<增加数据文件子句>|<修改文件大小子句>|<修改文件自动扩展子句>|<数据页缓冲池子句>]
修改表空间状态
ALTER TABLESPACE bookshop OFFLINE/online;
修改表空间名称
可修改已存在的由用户创建的表空间的名称。比如可修改 bookshop 表空间名为books。
ALTER TABLESPACE bookshop RENAME TO books;
修改表空间数据缓冲区
用户表空间可以切换使用的数据缓冲区,系统表空间、回滚表空间、重做日志表空间和
临时文件表空间不允许修改数据缓冲区。可以使用的数据缓冲区有 NORMAL 和 KEEP。表空间修改成功后,并不会立即生效,而是需要服务器重启。缓冲池名 KEEP 是达梦的保留关键字,使用时必须加双引号。例如将 bookshop 表空间绑定到 KEEP 缓冲区。
ALTER TABLESPACE bookshop CACHE= “KEEP”;
查看表空间与数据文件对应关系
SELECT ts.NAME, df.PATH FROM V$TABLESPACE AS ts, V$DATAFILE AS df WHERE ts.ID = df.GROUP_ID (+); -- v$datafile 视图无法详细offline表空间的数据文件信息.
增加一个路径为 d:\TS1_1.dbf,大小为 128M 的数据文件到表空间 TS1。
ALTER TABLESPACE TS1 ADD DATAFILE 'd:\TS1_1.dbf' SIZE 128;
修改表空间 TS1 中数据文件 d:\TS1.dbf 的大小为 200M。
ALTER TABLESPACE TS1 RESIZE DATAFILE 'd:\TS1.dbf' TO 200;
重命名表空间 TS1 的数据文件 d:\TS1.dbf 为 e:\TS1_0.dbf。
ALTER TABLESPACE TS1 OFFLINE;
ALTER TABLESPACE TS1 RENAME DATAFILE 'd:\TS1.dbf' TO 'e:\TS1_0.dbf';
ALTER TABLESPACE TS1 ONLINE;
修改表空间 TS1 的数据文件 d:\TS1.dbf 自动扩展属性为每次扩展 10M,最大文件大小为 1G。
ALTER TABLESPACE TS1 DATAFILE 'd:\TS1.dbf' AUTOEXTEND ON NEXT 10 MAXSIZE 1000;
修改表空间 TS1 缓冲池名字为 KEEP。
ALTER TABLESPACE TS1 CACHE="KEEP";
修改表空间为 CORRUPT 状态,注意只有在表空间处于 OFFLINE 状态或表空间损坏的情况下才允许使用。
ALTER TABLESPACE TS1 CORRUPT;
为表空间 TS1 添加 HUGE 数据文件路径
ALTER TABLESPACE TS1 ADD HUGE PATH 'D:\dmdbms\data\DAMENG\TS1\HUGE2';
删除表空间
只可以删除用户创建的表空间并且只能删除未使用过的表空间。删除表空间时会删除其拥有的所有数据文件。例如删除 bookshop 表空间。
DROP TABLESPACE bookshop;
---
-3412: 试图删除已经使用的表空间
查找表空间上对象的.先删除这些对象后,才能删除表.
如果表空间位某对象的默认表空间, 可以删除用户和其所有的对象. -- 删除慎重.
表空间失效文件检查
SP_FILE_SYS_CHECK (); -- 在 LINUX 操作系统下,检查是否有数据文件被删除。
表空间失效文件恢复
[dmdba@enmoedu3 ~]$ ps -ef | grep dmserver
dmdba 8908 1 0 10:11 pts/3 00:02:31 /opt/dm8/bin/dmserver path=/opt/dm8/data/PROD/dm.ini -noconsole
dmdba 20920 20851 0 16:03 pts/7 00:00:00 grep --color=auto dmserver
dmdba@enmoedu3 ~]$ cd /proc/8908/fd
[dmdba@enmoedu3 fd]$ ll
总用量 0
lr-x------ 1 dmdba dinstall 64 8月 24 15:49 0 -> /dev/null
l-wx------ 1 dmdba dinstall 64 8月 24 15:49 1 -> /opt/dm8/log/DmServiceENMO.log
lrwx------ 1 dmdba dinstall 64 8月 24 15:49 10 -> /opt/dm8/data/PROD/PROD04.log
lr-x------ 1 dmdba dinstall 64 8月 24 15:49 11 -> pipe:[71648]
l-wx------ 1 dmdba dinstall 64 8月 24 15:49 12 -> pipe:[71648]
lr-x------ 1 dmdba dinstall 64 8月 24 15:49 13 -> pipe:[71649]
l-wx------ 1 dmdba dinstall 64 8月 24 15:49 14 -> pipe:[71649]
lrwx------ 1 dmdba dinstall 64 8月 24 15:49 15 -> socket:[75263]
lrwx------ 1 dmdba dinstall 64 8月 24 15:49 16 -> /opt/dm8/data/PROD/ROLL.DBF
lrwx------ 1 dmdba dinstall 64 8月 24 15:49 17 -> /opt/dm8/data/PROD/BOOKSHOP.DBF
lrwx------ 1 dmdba dinstall 64 8月 24 15:49 18 -> /opt/dm8/data/PROD/DMHR.DBF
lrwx------ 1 dmdba dinstall 64 8月 24 15:49 19 -> /opt/dm8/data/PROD/PROD_TBS01.DBF
l-wx------ 1 dmdba dinstall 64 8月 24 15:48 2 -> /opt/dm8/log/DmServiceENMO.log
lrwx------ 1 dmdba dinstall 64 8月 24 15:49 20 -> /opt/dm8/data/PROD/PROD_TBS02.DBF
lrwx------ 1 dmdba dinstall 64 8月 24 15:49 21 -> /opt/dm8/arch/ARCHIVE_LOCAL1_0x43EF1C8F_EP0_2022-08-24_09-56-42.log
lrwx------ 1 dmdba dinstall 64 8月 24 15:49 22 -> /opt/dm8/data/PROD/MAIN.DBF (deleted)
lrwx------ 1 dmdba dinstall 64 8月 24 15:49 23 -> socket:[75367]
lrwx------ 1 dmdba dinstall 64 8月 24 15:49 24 -> socket:[279391]
lrwx------ 1 dmdba dinstall 64 8月 24 15:49 25 -> socket:[279392]
lrwx------ 1 dmdba dinstall 64 8月 24 15:49 26 -> /opt/dm8/data/PROD/TEST_TBS01.dbf
lrwx------ 1 dmdba dinstall 64 8月 24 15:49 27 -> /opt/dm8/data/PROD/TEST_IDX_TBS01.DBF
lrwx------ 1 dmdba dinstall 64 8月 24 15:49 28 -> socket:[371378]
lrwx------ 1 dmdba dinstall 64 8月 24 15:49 29 -> socket:[580573]
lrwx------ 1 dmdba dinstall 64 8月 24 15:49 3 -> socket:[71636]
lrwx------ 1 dmdba dinstall 64 8月 24 15:49 30 -> socket:[556453]
lrwx------ 1 dmdba dinstall 64 8月 24 15:49 4 -> socket:[71637]
lrwx------ 1 dmdba dinstall 64 8月 24 15:49 5 -> /opt/dm8/data/PROD/SYSTEM.DBF
lrwx------ 1 dmdba dinstall 64 8月 24 15:49 6 -> /opt/dm8/data/PROD/TEMP.DBF
lrwx------ 1 dmdba dinstall 64 8月 24 15:49 7 -> /opt/dm8/data/PROD/PROD01.log
lrwx------ 1 dmdba dinstall 64 8月 24 15:49 8 -> /opt/dm8/data/PROD/PROD02.log
lrwx------ 1 dmdba dinstall 64 8月 24 15:49 9 -> /opt/dm8/data/PROD/PROD03.log
[dmdba@enmoedu3 fd]$ cp 22 /opt/dm8/data/PROD/MAIN.DBF
[dmdba@enmoedu3 fd]$
1.准备恢复
SP_TABLESPACE_PREPARE_RECOVER('MAIN');
2.恢复
SP_TABLESPACE_RECOVER('MAIN');
更多推荐
DM8 表空间管理
发布评论