达梦数据库——DM8表空间管理

所有的数据都存储在表空间中。

一、管理表空间

(一)表空间介绍

DM默认预定义的表空间:SYSTEM/ROLL/MAIN/TEMP/HMAIN。

SYSTEM:系统表空间,存放数据字典等信息,包括表、字典、视图等对象的定义、权限信息等。

ROLL:回滚表空间,存放回滚页,数据库中的DML操作都会生成redo和undo日志,undo信息存入ROLL表空间。

MAIN:用户默认表空间。当创建用户时,如果未指定用户的默认空间,则MAIN为其默认表空间。

TEMP:临时表空间。存放临时表数据,当大量数据需要排序时,也占用临时表空间。空间大小由TEMP_SIZE参数决定。

HMAIN:HUGE表的默认表空间(HTS表空间)。

(二)临时表空间信息查看

SQL> select id,name,type,value,sys_value,file_value from v$parameter where name like 'TEMP%';

行号     ID          NAME             TYPE      VALUE           SYS_VALUE       FILE_VALUE     
---------- ----------- ---------------- --------- --------------- --------------- ---------------
1          5           TEMP_PATH        READ ONLY /dm8/data/DM_HE /dm8/data/DM_HE /dm8/data/DM_HE
2          305         TEMP_SIZE        IN FILE   10              10              10
3          306         TEMP_SPACE_LIMIT SYS       0               0               0

已用时间: 3.229(毫秒). 执行号:1313.

TEMP_PATH:临时表空间路径。

TEMP_SIZE:临时表空间初始大小。

TEMP_SPACE_LIMIT:临时表空间的大小限制,0表示 不限制。

这些参数同样可以使用4种方法修改。

(三)收缩临时表空间

1、重启数据库,TEMP表空间数据文件会自动重建。

2、在线收缩临时表空间,使用SP_TRUNC_TS_FILE函数。

​ 可通过视图v$ifun_arg查看函数的参数,如下所示:

SQL> select name ,id from v$ifun where name like 'SP_TRUNC%';          

行号     NAME             ID         
---------- ---------------- -----------
1          SP_TRUNC_TS_FILE 1298

已用时间: 3.321(毫秒). 执行号:1317.
SQL> select * from v$ifun_arg where id=1298;

行号     ID          NAME    SEQ         DATA_TYPE        LEN         PREC        IO_TYPE COMMENT$
---------- ----------- ------- ----------- ---------------- ----------- ----------- ------- --------
1          1298        RVAL    -1          UNKNOWN DATATYPE 0           0           RETURN  NULL
2          1298        TS_ID   0           INTEGER          4           0           IN      NULL
3          1298        FILE_ID 1           INTEGER          4           0           IN      NULL
4          1298        TO_SIZE 2           INTEGER          4           0           IN      NULL

已用时间: 1.441(毫秒). 执行号:1318.

(四)表空间大小规定

DM数据文件大小,最小值不能低于页大小的4096倍,最大值为页大小的2的31次方减1。

如:页大小是8K,最小值将不能低于32MB,最大值为16TB-1。

如果设置的大小不符合以上规则,系统会提示错误。

SQL> create tablespace tbs datafile 'TBS01.DBF' size 30;
create tablespace tbs datafile 'TBS01.DBF' size 30;1 行附近出现错误[-2410]:数据文件[TBS01.DBF]大小无效.
已用时间: 0.448(毫秒). 执行号:0.

(五)表空间特别说明

SYSTEM/ROLL/TEMP表空间不能脱机。

系统预定义的表空间不能删除。

表空间脱机后,该表空间内的数据将不能读写。

SQL> alter tablespace tbs offline;
操作已执行
已用时间: 94.735(毫秒). 执行号:1327.
SQL> select * from t_test;
select * from t_test;
[-3408]:表空间[TBS]处于脱机状态.
已用时间: 0.500(毫秒). 执行号:0.
alter tablespace tbs rename to dmtbs; --表空间重命名
drop tablespace tbs; --删除表空间

二、管理数据文件

(一)修改表空间

alter tablespace tbs add datafile 'TBS01.DBF' SIZE 32 AUTOEXTEND ON NEXT 2 MAXSIZE 20480;
alter tablespace tbs datafile 'TBS01.DBF' AUTOEXTEND off;
alter tablespace tbs RESIZE DATAFILE 'TBS01.DBF' TO 128;

(二)迁移表空间数据文件

alter tablespace tbs offline;
alter tablespace tbs rename datafile 'TBS01.DBF' TO '/dm8/TBS/TBS02.DBF';
alter tablespace tbs online;

(三)管理重做日志文件

联机重做日志,存放redo信息。默认是两个重做日志文件,循环使用,不断覆盖。

DM数据库联机日志自动切换,不能手动切换。

相关数据字典:

select * from v$rlogfile;
select * from v$rlog;    -- cur_file表示正在使用的日志

修改联机日志文件大小:

alter database RESIZE LOGFILE '/dm8/data/DM/DM01.log' TO 300;
alter database RESIZE LOGFILE '/dm8/data/DM/DM02.log' TO 300;

添加联机日志文件:

alter DATABASE ADD LOGFILE '/dm8/data/DM/DM03.log' SIZE 300;

修改联机日志文件路径——迁移日志文件:

alter database mount;
alter database RENAME LOFILE 'DM01.log' TO '/dm8/data/DM/DM01.log';
alter database RENAME LOFILE 'DM02.log' TO '/dm8/data/DM/DM02.log';
alter database RENAME LOFILE 'DM03.log' TO '/dm8/data/DM/DM03.log';
alter database open;

(四)归档管理

默认情况下,DM未开户归档。

归档是对redo的归档。归档的目的是使用数据故障时可以恢复到故障前一刻,或者恢复到指定的时间点或者指定LSN。

1、开启归档的方法:
SQL> ALTER DATABASE MOUNT;
操作已执行
已用时间: 365.020(毫秒). 执行号:0.
SQL> ALTER DATABASE ARCHIVELOG;
操作已执行
已用时间: 3.296(毫秒). 执行号:0.
SQL> SELECT ARCH_MODE FROM V$DATABASE;

行号     ARCH_MODE
---------- ---------
1          Y

已用时间: 0.744(毫秒). 执行号:1330.
SQL> ALTER DATABASE ADD ARCHIVELOG 'TYPE=LOCAL,DEST=/dm8/arch,file_size=64,space_limit=2014';
操作已执行
已用时间: 1.522(毫秒). 执行号:0.
SQL> alter database open;
操作已执行
已用时间: 398.345(毫秒). 执行号:0.
SQL> select * from v$dm_arch_ini;
2、关闭归档方法:
SQL> alter database mount;
操作已执行
已用时间: 358.715(毫秒). 执行号:0.
SQL> alter database noarchivelog;
操作已执行
已用时间: 34.895(毫秒). 执行号:0.
SQL> alter database delete archivelog 'type=local,dest=/dm8/arch';
操作已执行
已用时间: 0.542(毫秒). 执行号:0.
SQL> alter database open;
操作已执行
已用时间: 353.121(毫秒). 执行号:0.
SQL> select arch_mode from v$database;

行号     ARCH_MODE
---------- ---------
1          N

已用时间: 0.696(毫秒). 执行号:1332.
3、修改配置文件(dm.ini和dmarch.ini)

在dmarch.ini文件中添加如下 配置:

[ARCHIVE_LOCAL1]
    ARCH_TYPE = LOCAL
    ARCH_DEST = /dm8/arch
    ARCH_FILE_SIZE = 64
    ARCH_SPACE_LIMIT = 10240
    ARCH_FLUSH_BUF_SIZE = 0

在dm.ini文件中修改arch_ini的值:

ARCH_INI = 1

数据库自动完成归档的切换, DM支持手工切换归档。

alter SYSTEM ARCHIVE LOG CURRENT;
alter SYSTEM SWITCH LOGFILE;
alter DATABASE ARCHIVELOG CURRENT;

删除归档 日志:

select * from v$ifun where name like 'SF_ARCHIVELOG%';
SF_ARCHIVELOG_DELETE_BEFORE_LSN
SF_ARCHIVELOG_DELETE_BEFORE_TIME(sysdate-7);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值