达梦数据库之表空间管理

  1. 创建表空间
    ● 语法格式
# 创建表空间的SQL命令格式
create tablespace 表空间名 <数据文件子句>[<数据页缓存池子句>][<存储加密子句>];

# 各子句具体语法
datafile 数据文件位置 # 指定数据文件位置
size 文件大小    # 指定数据文件初始大小
mirror 文件路径  # 指定数据文件镜像(可选)
next 扩展大小    # 指定每次扩展的大小(可选)
maxsize 最大大小 # 指定最大扩展大小(可选)
cache 缓冲池名   # 指定数据也缓冲池(可选,默认值为normal)
encrypt with 加密算法 by 加密密码 # 指定加密的算法与密码 (可选,默认不加密)

# 新建表空间SQL语句部分参数说明
表空间名 # 表空间名最大长度为128字节
文件路径 # 指定新生成的数据文件在系统下的路径和新数据文件名
文件大小 # 指明新增数据文件的大小(单位为MB),取值范围为4096*页大小~2147483647页大小.
mirror # 数据文件镜像,用于在数据文件出现损坏时替代数据文件进行服务,后接<文件路径>.
  • 实例
# 创建一个名为ts1的表空间,包含一个数据文件ts1.dbf,初始大小为128MB
SQL> create tablespace ts1 datafile '/dm/data/testdb/ts1.dbf' size 128;
# 文件大小的默认单位为MB.

# 创建一个名为ts2的表空间,包含两个数据文件,其中ts201.dbf文件的初始大小为64MB,每次扩展2MB,最大扩展至512MB;ts202.dbf文件的初始大小为128MB,不能自动扩展
SQL> create tablespace ts2 datafile '/dm/data/testdb/ts201.dbf' size 64 autoextend on next 2 maxsize 512, '/dm/data/testdb/test202.dbf' size 128 autoextend off;
# 一个逻辑意义上的表空间可以包含磁盘上的多个物理数据文件.
# 在创建表空间时,除了一些必要的参数外,其它参数默认即可.
# 一个表空间最多可以拥有256个数据文件.
  1. 查询表空间
# 查询所有表空间
SQL> select tablespace_name,file_name,autoextensible from dba_data_files;

LINEID     TABLESPACE_NAME FILE_NAME                  AUTOEXTENSIBLE
---------- --------------- -------------------------- --------------
1          TS1             /dm/data/testdb/ts1.dbf    YES
2          SYSTEM          /dm/data/testdb/SYSTEM.DBF YES
3          ROLL            /dm/data/testdb/ROLL.DBF   YES
4          TS2             /dm/data/testdb/ts201.dbf  YES
5          TS2             /dm/data/testdb/ts202.dbf  NO
6          TEMP            /dm/data/testdb/TEMP.DBF   YES
7          MAIN            /dm/data/testdb/MAIN.DBF   YES

# 查询ts2表空间
SQL> select file_name,autoextensible from dba_data_files where tablespace_name='TS2';

LINEID     FILE_NAME                   AUTOEXTENSIBLE
---------- --------------------------- --------------
1          /dm/data/testdb/ts201.dbf   YES
2          /dm/data/testdb/test202.dbf NO
  1. 修改表空间
    ● 语法格式
# 修改表空间的SQL语句格式
alter tablespace 表空间名 [online | offline | <表空间重命名子句> | <数据文件重命名子句> | <增加数据文件子句> | <修改文件大小子句> | <修改文件自动扩展子句> | <数据页缓冲池子句> ];

# 子句说明
rename to <表空间> # 表空间重命名子句
rename datafile <文件路径> to <文件路径> # 数据文件重命名子句
add <数据文件子句> # 增加数据文件子句
resize datafile <文件路径> to <文件大小>        # 修改文件大小子句
datafile <文件路径> [<自动扩展子句>] # 修改文件自动扩展子句

# 修改表空间的SQL语句的作用
通过这条SQL命令,可设置表空间脱机或联机,可修改表空间的名称,可修改数据文件的名称,可增加数据文件,可修改数据文件的大小,还可修改数据文件的自动扩展特性等.
  • 实例
# 为ts2表空间增加数据文件ts203.dbf,大小为64MB
SQL> alter tablespace ts2 add datafile '/dm/data/testdb/ts203.dbf' size 64;

# 修改ts2表空间数据文件ts203.dbf的大小为128MB
SQL> alter tablespace ts2 resize datafile '/dm/data/testdb/ts203.dbf' to 128;

# 重命名ts2表空间数据文件ts203.dbf为ts213.dbf(在重命名数据文件时,必须先将数据文件设置为离线状态,然后才能重命名文件)
SQL> alter tablespace ts2 offline; # 设置数据文件离线
SQL> alter tablespace ts2 rename datafile '/dm/data/testdb/ts203.dbf' to '/dm/data/testdb/ts213.dbf'; # 修改数据文件名
SQL> alter tablespace ts2 online; # 设置数据文件在线

# 修改ts2表空间数据文件ts213.dbf为自动扩展,每次扩展6MB,最大可扩展至2048MB
SQL> alter tablespace ts2 datafile '/dm/data/testdb/ts213.dbf' autoextend on next 6 maxsize 2048;

# 删除ts2表空间数据文件ts213.dbf
SQL> alter tablespace ts2 drop datafile '/dm/data/testdb/ts213.dbf';

# 将ts2表空间重命名为ts_2
SQL> alter tablespace ts2 rename to ts_2;

# 修改ts_2表空间缓冲池名称为KEEP
SQL> alter tablespace ts_2 cache="KEEP";

● 修改表空间注意事项

  1. 修改表空间的用户必须具有修改表空间的权限,一般登录具有DBA权限的用户账户进行创建、修改和删除等表空间管理活动.
  2. 在修改表空间数据文件大小时,修改后的文件大小必须大于原文件的大小.
  3. 若表空间有未提交事务,则表空间不能修改为offline状态.
  4. 在重命名表空间数据文件时,表空间必须处于offline状态,在表空间修改成功后再将表空间修改为online状态.
  1. 删除表空间
    ● 实例
# 删除表空间ts1
SQL> drop tablespace ts1;

# 删除temp表空间
SQL> drop tablespace temp;
drop tablespace temp;
[-3418]:Error in line: 1
System tablespace [TEMP] can not be dropped. # 系统表空间[TEMP]不能被删除
used time: 0.181(ms). Execute id is 0.
# 这说明删除表空间是有限制的,数据库在安装过程中创建的表空间system和temp等不允许被删除;若表空间中已存在数据对象,则该表空间页不允许被删除.
  • 删除表空间注意事项
  1. system、rlog、roll和temp等表空间不允许被删除.
  2. 删除表空间的用户必须具有删除表空间的权限,一般登录具有DBA权限的用户账户进行创建、修改、删除等表空间管理活动.
  3. 系统在处于syspend或mount状态时不允许删除表空间、系统只有在处于open状态下才运行删除表空间.
  4. 若表空间中存放了数据对象,则不允许删除表空间;若确实要删除表空间,则必须先删除表空间中的数据对象.
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值