目录
所有的数据都存储在表空间中。
一、管理表空间
(一)表空间介绍
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);