1.表空间概述
在D数据库中,表空间是一种逻辑存储结构,数据库的对象如表、索引等在逻辑上都是存储在指定的表空间中。数据库在初始化的时候,系统会自动创建5个默认表空间,SYSTEM,MAIN,ROLL,TEMP和HMAIN表空间。
其中SYSTEM表空间是系统表空间,存储有数据字典信息,用户数据不能存放在该表空间上。ROLL,TEMP和HMAIN表空间,由系统自动维护,不需要用户干预。初始的MAIN表空间为用户默认表空间。表空间只是一种逻辑结构,对应的物理存储结构为数据文件。也即是,用户的数据是存储在表空间对应的数据文件上面。DM7数据库中,物理存储结构的数据文件后缀为DBF。
系统提供v$tablespace, v$datafile,v$dba_data_file视图查询表空间和数据文件。
SQL> select ID,NAME,STATUS$ from V$TABLESPACE;
行号 ID NAME STATUS$
---------- ----------- ------ -----------
1 0 SYSTEM 0
2 1 ROLL 0
3 3 TEMP 0
4 4 MAIN 0
已用时间: 0.372(毫秒). 执行号:6.
SQL> select GROUP_ID,PATH,CLIENT_PATH,STATUS$ from V$DATAFILE;
行号 GROUP_ID PATH CLIENT_PATH STATUS$
---------- ----------- --------------------------------------------- ----------- -----------
1 0 /home/dmdba/opt/dmdbms/data/DAMENG/SYSTEM.DBF SYSTEM.DBF 1
2 1 /home/dmdba/opt/dmdbms/data/DAMENG/ROLL.DBF ROLL.DBF 1
3 3 /home/dmdba/opt/dmdbms/data/DAMENG/TEMP.DBF TEMP.DBF 1
4 4 /home/dmdba/opt/dmdbms/data/DAMENG/MAIN.DBF MAIN.DBF 1
已用时间: 0.584(毫秒). 执行号:9.
SQL> select FILE_NAME,FILE_ID,TABLESPACE_NAME from dba_data_files;
行号 FILE_NAME FILE_ID TABLESPACE_NAME
---------- --------------------------------------------- ----------- ---------------
1 /home/dmdba/opt/dmdbms/data/DAMENG/SYSTEM.DBF 0 SYSTEM
2 /home/dmdba/opt/dmdbms/data/DAMENG/test2.dbf 1 TEST1
3 /home/dmdba/opt/dmdbms/data/DAMENG/test1.dbf 0 TEST1
4 /home/dmdba/opt/dmdbms/data/DAMENG/MAIN.DBF 0 MAIN
5 /home/dmdba/opt/dmdbms/data/DAMENG/TEMP.DBF 0 TEMP
6 /home/dmdba/opt/dmdbms/data/DAMENG/ROLL.DBF 0 ROLL
6 rows got
已用时间: 2.821(毫秒). 执行号:27.
2.表空间管理
2.1 表空间创建
- 最简洁表空间创建
SQL> create tablespace test1 datafile '/home/dmdba/opt/dmdbms/data/DAMENG/test1.dbf' size 50;
操作已执行
已用时间: 18.871(毫秒). 执行号:13.
注释:创建表空间语句,自动指定自动扩展,扩展最大大小,数据页的缓冲池名称。
- 指定非自动扩展
SQL> create tablespace test1 datafile '/home/dmdba/opt/dmdbms/data/DAMENG/test1.dbf' size 50 autoextend off;
操作已执行
已用时间: 20.360(毫秒). 执行号:15.
注释:autoextend off 关闭自动扩展。
- **指定自动扩展最大值 **
初始大小50M, 最大100M
SQL> create tablespace test1 datafile '/home/dmdba/opt/dmdbms/data/DAMENG/test1.dbf' size 50 autoextend on maxsize 100;
操作已执行
已用时间: 26.288(毫秒). 执行号:17.
- 指定表空间多个文件组成
初始大小50M, 表空间由2个数据文件组成,每次扩展5M, 每个数据文件最大100M。
SQL> create tablespace test1 datafile '/home/dmdba/opt/dmdbms/data/DAMENG/test1_01.dbf' size 50 autoextend on next 5 maxsize 100,'/home/dmdba/opt/dmdbms/data/DAMENG/test1_02.dbf' size 50 autoextend on next 5 maxsize 100;
操作已执行
已用时间: 18.760(毫秒). 执行号:19.
注释:不同的数据文件可指定新增不同的位置或者磁盘进行设置。
2.2 表空间扩展
- 新增数据文件方式
SQL> alter tablespace test1 add datafile '/home/dmdba/opt/dmdbms/data/DAMENG/test2.dbf' size 50 ;
操作已执行
已用时间: 7.712(毫秒). 执行号:24.
- resize原先数据文件大小
SQL> alter tablespace test1 resize datafile '/home/dmdba/opt/dmdbms/data/DAMENG/test1.dbf' to 100 ;
操作已执行
已用时间: 11.189(毫秒). 执行号:25.
2.3 表空间位置更改
表空间进行脱机更改数据文件位置。
- 脱机处理
SQL> alter tablespace test1 offline;
操作已执行
已用时间: 14.024(毫秒). 执行号:32.
SQL> alter tablespace test1 online;
操作已执行
已用时间: 99.821(毫秒). 执行号:28.
- 更改文件位置
SQL> alter tablespace test1 rename datafile '/home/dmdba/opt/dmdbms/data/DAMENG/test1.dbf' to '/home/dmdba/opt/dmdbms/data/test1.dbf';
操作已执行
已用时间: 945.291(毫秒). 执行号:31.
- 恢复在线
SQL> alter tablespace test1 online;
操作已执行
已用时间: 14.024(毫秒). 执行号:32.
2.4 表空间删除
删除表空间时,改表空间上必须没有数据库对象,否则会删除失败
SQL> drop tablespace test1;
操作已执行
已用时间: 107.000(毫秒). 执行号:33.