DM7数据库表空间管理

DM7数据库表空间管理

  • 表空间管理

表空间是数据库的逻辑存储空间,在数据库中开辟一个空间用于存放数据对象,一个数据库由多个表空间构成。表空间与数据文件的关系:表空间是由一个或多个数据文件构成的。用户创建表空间时,可以自行定义存放位置以及表空间大小。表空间分为五类:系统表空间、临时表空间、ROLL表空间、默认表空间(MAIN),huge表空间。表空间与用户的关系:用户对应一个默认表空间,可以通过查询语句查出用户对应的默认表空间。

  1. 查询表空间信息

    下面SQL是查询数据库所有表空间名称与状态的语句。

SQL> select tablespace_name,status from dba_tablespaces;

DM7数据库表空间管理

  • System :数据字典和全局的系统数据。
  • ROLL:存放了数据库运行过程中产生的回滚记录。
  • Temp:临时表空间
  • Main:数据库默认的表空间,存储普通数据,创建数据对象时,如果不指定存储位置,默认存放在该表空间。
  • HMAIN:huge表空间

也可以用下面这种方法进行查看。

  1. SQL> select name from v$tablespace
  2. SQL> union
  3. SQL> select name from v$huge_tablespace;

DM7数据库表空间管理

 

  1. 数据文件

存储表空间的数据文件可通过dba_data_files进行查询。

SQL>select file_name,tablespace_name,bytes,blocks,status from dba_data_files;

DM7数据库表空间管理

  1. 创建表空间

创建表空间的语法格式 CREATE TABLESPACE <表空间名> <数据文件子句>[<数据页缓冲池子句>][<存储加密子句>] <数据文件子句> ::= DATAFILE <文件说明项>{,<文件说明项>} <文件说明项> ::= <文件路径> [ MIRROR <文件路径>] SIZE <文件大小>[<自动扩展子句>] <自动扩展子句> ::= AUTOEXTEND <ON [<每次扩展大小子句>][<最大大小子句> |OFF>  <每次扩展大小子句> ::= NEXT <扩展大小> <最大大小子句> ::= MAXSIZE <文件最大大小> <数据页缓冲池子句> ::= CACHE = <缓冲池名> <存储加密子句> ::= ENCRYPT WITH <加密算法> [[BY] <加密密码>] 参数 1. <表空间名> 表空间的名称,表空间名称最大长度128字节; 2. <文件路径> 指明新生成的数据文件在操作系统下的路径+新数据文件名。数据文 件的存放路径符合DM安装路径的规则,且该路径必须是已经存在的; 3. MIRROR 数据文件镜像,用于在数据文件出现损坏时替代数据文件进行服务。 MIRROR数据文件的<文件路径>必须是绝对路径。MIRROR 要使用数据文件镜像, 必须在建库时开启页校验的参数page_check。 4. <文件大小> 整数值,指明新增数据文件的大小(单位MB),取值范围4096*页大 小~2147483647*页大小; 5. <缓冲池名> 系统数据页缓冲池名NORMAL或KEEP。缓冲池名KEEP是达梦的保 留关键字,使用时必须加双引号; 6. <加密算法> 可通过查看动态视图V$CIPHERS获取算法名; 7. <加密密码> 最大长度128字节,若未指定,由DM随机生成。

语句功能 供具有权限的用户创建表空间。

使用说明

1. 表空间名在服务器中必须唯一;

2. 一个表空间中,数据文件和镜像文件一起不能超过256个;

3. 如果全库已经加密,就不再支持表空间加密。

实例一:

创建一个表空间,初始50M,每次扩展1M,最大300M

SQL>create tablespace tmr datafile '/dm7/data/DM_HBL/tmr_01.dbf' size 50 autoextend on next 1 maxsize 300;

SQL>select name from v$tablespace;

DM7数据库表空间管理

实例二:

创建一个表空间,初始50M,表空间由2个数据文件组成,分别存储到不同的磁盘上,每次扩展1M,每个数据文件最大150M。

SQL> create tablespace tmr1 datafile '/dm7/data/DM_HBL/tmr_02.dbf' size 50 autoextend on next 1 maxsize 150,'/dm7/data/tmr/tmr_03.dbf' size 50 autoextend on next 1 maxsize 150;

SQL>select name from v$tablespace;

SQL> select tablespace_name,file_name,bytes  from dba_data_files where tablespace_name like 'TMR%';

DM7数据库表空间管理

  1. 表空间维护

表空间不足,如何去维护表空间,如何新增表空间数据文件,如何扩容表空间,如何修改表空间数据文件大小。

ALTER TABLESPACE <表空间名> [ONLINE|OFFLINE|CORRUPT|<表空间重命名子句>|<数据 文件重命名子句>|<增加数据文件子句>|<修改文件大小子句>|<修改文件自动扩展子句>|<数据页缓冲 池子句> <表空间重命名子句> ::= RENAME TO <表空间名> <数据文件重命名子句>::= RENAME DATAFILE <文件路径>{,<文件路径>} TO <文件路径>{,< 文件路径>} <增加数据文件子句> ::= ADD <数据文件子句> <数据文件子句>见上一节表空间定义语句 <修改文件大小子句> ::= RESIZE DATAFILE <文件路径> TO <文件大小> <修改文件自动扩展子句> ::= DATAFILE <文件路径>{,<文件路径>}[<自动扩展子句>]

参数

 1. <表空间名>  表空间的名称;

 2. <文件路径>  指明数据文件在操作系统下的路径+新数据文件名。数据文件的存放路径符合DM安装路径的规则,且该路径必须是已经存在的;

 3. <文件大小>  整数值,指明新增数据文件的大小(单位MB);

 4. <缓冲池名>  系统数据页缓冲池名NORMAL或KEEP。

使用说明

 1. 不论 dm.ini 的 DDL_AUTO_COMMIT 设置为自动提交还是非自动提交,ALTER TABLESPACE操作都会被自动提交;

 2. 修改表空间数据文件大小时,其大小必须大于自身大小;

 3. 如果表空间有未提交事务时,表空间不能修改为OFFLINE状态;

 4. 重命名表空间数据文件时,表空间必须处于OFFLINE状态,修改成功后再将表空 间修改为ONLINE状态;

 5. 表空间如果发生损坏(表空间还原失败,或者数据文件丢失或损坏)的情况下,允 许将表空间切换为CORRUPT状态,并删除损坏的表空间,如果表空间上定义有对象,需要先将所有对象删除,再删除表空间。

扩容表空间大小,增加数据文件。

SQL> alter tablespace tmr add datafile '/dm7/data/DM_HBL/tmr_04.dbf' size 50 autoextend on maxsize 300;

SQL> alter tablespace tmr add datafile '/dm7/data/DM_HBL/tmr_05.dbf' size 50 autoextend on maxsize 300;

DM7数据库表空间管理

SQL> select file_name,status,tablespace_name from dba_data_files;

 

DM7数据库表空间管理

查看表空间的状态:

SQL> select tablespace_name,status from dba_tablespaces;

其中status的属性值如下所示:

0: ---online

1:---offline

DM7数据库表空间管理

注意:system,roll,temp 不能offline;

实例1:更换TMR的存储位置。

表空间offline

SQL> alter tablespace TMR offline;

修改存储位置:

    SQL>.alter tablespace tmr rename datafile '/dm7/data/DM_HBL/tmr_01.dbf' to '/dm7/data/tmr/tmr_01.dbf';

表空间online

SQL> alter tablespace TMR online;

实例2将表空间TMR1名字修改为TMR01。

SQL> alter tablespace tmr1 rename to tmr01;

实例3修改表空间tmr02中数据文件tmr_02_01.dbf的大小为600m。

SQL> alter tablespace tmr02 resize datafile '/dm7/data/DM_HBL/tmr_02_01.dbf' to 600;

 

 

  1. 删除表空间

删除表空间。

语法格式 DROP TABLESPACE <表空间名>

语句功能  供具有权限的用户删除表空间。

SQL> drop tablespace tbs1;

SQL> drop tablespace tmr;

使用说明 1. SYSTEM、RLOG、ROLL和TEMP表空间不允许删除; 2. 系统处于 SUSPEND 或 MOUNT 状态时不允许删除表空间,系统只有处于 OPEN 状 态下才允许删除表空间;3. 如果表空间存有数据,不允许直接删除。

DM7数据库表空间管理

  1. 表空间失效文件管理

表空间恢复失效文件的检查

语法格式 SP_FILE_SYS_CHECK ();

在LINUX操作系统下,检查是否有数据文件被删除。该过程只在LINUX下有效。

表空间恢复失效文件的准备

语法格式 SP_TABLESPACE_PREPARE_RECOVER(<表空间名>);

在 LINUX 操作系统下,如果出现了正在使用数据文件被删除的情况,该过程完成失效 文件恢复的准备工作。该过程只在LINUX下有效。

表空间失效文件的恢复

语法格式 SP_TABLESPACE_RECOVER(<表空间名>); 语句功能 在 LINUX 操作系统下,如果出现了正在使用数据文件被删除的情况,在调用了恢复准备的SP_TABLESPACE_PREPARE_RECOVER及在OS系统内完成了数据文件的复制后,调用该过程完成文件的恢复工作。表空间失效文件恢复的详细步骤可查阅系统管理员手册。

1. 该过程只在LINUX下有效; 2. 在SP_TABLESPACE_PREPARE_RECOVER及在OS系统内完成了数据文件的复制后调用。