一、表空间管理
1、管理表空间
1.1 表空间的定义
表空间是数据库最大逻辑存储单元。在项目初期创建和管理表空间,搭建项目数据库环境。创建表空间是为了规划磁盘空间存放业务数据。通过Create/Alter/Drop语句创建和管理表空间。
数据库创建完成之后,默认会创建如下表空间: SYSTEM:存储数据字典信息; ROLL:存放回滚信息。
如果 SQL 查询时间过长,可能会报错“[-7120]:回滚记录版本太旧,无法获取用户记录.”。解决办法: (1)加快查询效率; (2)增大 UNDO_RETENTION 回滚段保留时长。
MAIN:用户默认表空间;如果创建用户时未指定用户默认使用的表空间,则使用MAIN 表空间。 TEMP:临时表空间;存放临时表等临时数据,创建索引,大量的排序,大表的 HASH连接占用临时表空间。
在线收缩临时表空间的方法:SP_TRUNC_TS_FILE(3,0,10);
1.2 表空间的创建
注意:数据文件的大小不能低于页大小的 4096 倍,最大不能大于页大小的 2 的 31 次方倍-1(页大小为 8k, 16T-1)
[执行语句1]:
create tablespace tbs DATAFILE 'TBS01.DBF' SIZE 30;
否则会如下报错:
数据字典
select * from DBA_TABLESPACES;
select * from v$tablespace;
select * from v$datafile;
select * from DBA_DATA_FILES;
创建表空间
create tablespace tbs DATAFILE 'TBS01.DBF' SIZE 32;
修改数据库文件扩展属性
alter tablespace tbs datafile 'TBS01.DBF' AUTOEXTEND off;
添加数据文件
alter tablespace tbs add datafile 'TBS02.DBF' SIZE 32 AUTOEXTEND off;
修改数据文件大小
alter tablespace tbs Resize DATAFILE 'TBS01.DBF' to 128;
SYSTEM、ROLL、TEMP 表空间不能脱机,因为表空间脱机后,该表空间中的表将无法读写。但是自定义表空间可以脱机。
自定义表空间支持重命名
alter tablespace tbs RENAME TO dmtbs;
可以删除空的表空间,但是不能删除系统预定义的表空间。
drop tablespace dmtbs;
DM 管理工具创建表空间
2、管理数据文件
打开数据文件的自动扩展:
alter tablespace tbs datafile '/dm8/data/TBS/TBS01.DBF' AUTOEXTEND on NEXT 4
MAXSIZE 10240;
数据文件的迁移:
alter tablespace tbs offline;
alter tablespace tbs RENAME DATAFILE 'TBS01.DBF' TO '/dm8/data/TBS/TBS01.DBF';
alter tablespace tbs RENAME DATAFILE 'TBS02.DBF' TO '/dm8/data/TBS/TBS02.DBF';
alter tablespace tbs online;
3、管理重做日志文件
重做日志文件记录 DML 修改的数据页,包含操作的数据文件号,页偏移等。重做日志包含联机日志和归档日志。达梦的联机日志默认 2 个,两个联机日志循环使用,内容不断覆盖。
重做日志用于数据库非正常关闭后的自动数据恢复
联机重做日志过小,会造成日志的频繁切换;如果过大,浪费空间,所以需要管理重做日志。
Alter database add logfile ‘XXX’size xx;–添加联机日志
Alter database resize logfile ‘XXX’ to xx; --修改联机日志大小
Alter database rename logfile ‘XXX’ to xx; --迁移联机日志
dm的联机日志只支持系统自动切换,由系统自动维护,不支持手动切换。 联机日志的迁移,数据库需要mount状态
4、归档管理
4.1 归档的定义
因为联机日志循环使用,不断覆盖。归档保存了 REDO 日志,用于数据库的还原与恢复,也可以用于日志挖掘。dm数据库在 MOUNT 状态下开归档。
select arch_mode from SYS."V$DATABASE";
select * from SYS."V$DM_ARCH_INI";
4.2 开启归档
SQL语句开启归档
alter database mount;
alter database ARCHIVELOG;
alter database add ARCHIVELOG 'type=local, dest=/dm8/arch,
file_size=64,space_limit=10240';
alter database open;
SQL语句关闭归档
alter database mount;
alter database noARCHIVELOG;
alter database delete ARCHIVELOG 'type=local, dest=/dm8/arch,
file_size=64,space_limit=10240';
alter database open;
图形化开启归档
4.修改数据库配置文件开启归档
修改dm.ini配置文件的ARCH_INI参数为1,同目录下新建dmarch.ini文件
而达梦的归档日志文件由数据自动切换,也支持手工切换。
alter system SWITCH LOGFILE;
alter SYSTEM ARCHIVE LOG CURRENT;
alter DATABASE ARCHIVELOG CURRENT;
归档数据字典:
select * from v$arch_file;
归档清理:
select * from v$ifun t where t.name like upper('sf_archive%');
SF_ARCHIVELOG_DELETE_BEFORE_LSN(3316220);
SF_ARCHIVELOG_DELETE_BEFORE_TIME(sysdate -10);
文章来源
发表评论