达梦数据库学习(四、表空间管理)

达梦数据库学习(四、表空间管理)

 

上期回顾:

达梦数据库学习(一、linux操作系统安装及数据库安装) 

达梦数据库学习(二、管理数据库实例) 

达梦数据库学习(三、体系结构) 

 

一、数据库的物理结构和逻辑结构

        物理结构:

                 文件系统(XFS、ext4、NTFS、DMASM等

                 分析场景:文件系统(有缓存,易扩展)、裸设备(有缓存,不易扩展)

                 格式化:mkfs、format、inode、block

        逻辑结构:

                 数据库----表空间(一个或多个文件构成)----段----簇----页

                 备注:达梦数据库不支持传输表空间(达梦通过导出导入的方式来实现把一个库移到另一个库)

表空间部分需要掌握的内容:

     1、数据库默认表空间的作用

        SQL>select tablespace_name from dba_tablespaces;

        行号     TABLESPACE_NAME

---------- ---------------

1          SYSTEM                      系统表空间             存放数据字典

2          ROLL                           回滚表空间             存放回滚段

3          TEMP                          临时表空间             临时段

4          MAIN                          默认表空间           

5          BOOKSHOP                某示例库表空间

6          DMHR                         某示例库表空间

7          HMAIN                       HUGE表空间          存放列存储

        SQL>select tablespace_name,file_name from dba_data_files;

 

行号     TABLESPACE_NAME FILE_NAME                   

---------- --------------- -----------------------------

1          SYSTEM          /dm8/data/DAMENG/SYSTEM.DBF

2          DMHR            /dm8/data/DAMENG/DMHR.DBF

3          BOOKSHOP        /dm8/data/DAMENG/BOOKSHOP.DBF

4          MAIN            /dm8/data/DAMENG/MAIN.DBF

5          TEMP            /dm8/data/DAMENG/TEMP.DBF

6          ROLL            /dm8/data/DAMENG/ROLL.DBF

        SQL>select tablespace_name,BYTES/1024/1024 from dba_free_space;

                 行号     TABLESPACE_NAME BYTES/1024./1024

---------- --------------- ----------------

1          SYSTEM          17.1953125

2          DMHR            127.9375

3          BOOKSHOP        149.1015625

4          MAIN            127.5390625

5          TEMP            9.9375

6          ROLL            118.8828125

     2、创建表空间

        注意创建表空间中所有大小单位都是M,且不需要写单位

                 案例1:规划一个表空间TBS1,要求初始文件大小为31M;

        SQL>create tablespace TBS1 datafile ‘/dm8/data/DAMENG/tbs1.dbf’ size 31;

 

 

        出现错误提示“数据文件大小无效”

        为什么呢?

        SQL>select page;--查看数据库页大小;

 

 

 

        SQL>select 8192*4096/1024/1024;--32M

根据页大小算表空间单个数据文件最小大小。

这段没弄懂,但是上网查询了资料,还是不太懂。

http://blog.itpub.net/31403259/viewspace-2687231/

所以当页大小为8K时,对应数据库表空间单个数据文件最小为32M。

        SQL>create tablespace TBS1 datafile ‘/dm8/data/DAMENG/TBS1.dbf’ size 32;

 

案例2:创建一个表空间TBS2,初始大小为32M,最大大小1G

        SQL>create tablespace TBS2 datafile ‘/dm8/data/DAMENG/TBS2.dbf’ size 32 autoextend on maxsize 1024;

                 注意其中若设定最大大小的话,则需要增加自动扩展参数autoextend on

                 案例3:创建一个表空间TBS3,初始大小32M,最大1G,每次自动扩展2M

        SQL>create tablespace TBS3 datafile ‘/dm8/data/DAMENG/TBS3.dbf’ size 32 autoextend on next 2 maxsize 1024

                 案例4:规划表空间TBS4,包含2个数据文件,单个文件初始值32M,最大2G

        SQL>create tablespace TBS4 datafile ‘/dm8/data./DAMENG/TBS4_1.dbf’ size 32 autoextend on maxsize 2048,’/dm8/data/DAMENG/TBS4_2.dbf’ size 32 autoextend on maxsize 2048

                 注意其中最关键的是“,”逗号,两个数据文件之间使用“,”隔开。

                 若表空间有多个数据文件,则多个数据文件是交替使用的

                 此处不是很明白交替使用的意思,是写入一个事务数据写在1号数据文件,下个事务写在2号数据文件中?还是1号数据文件空间使用完毕后再使用2号数据文件?

      3、维护表空间

                 表空间的状态:online、offline

        SQL>select name,status$ from v$tablespace;

                 其中,0表示online,1表示offline

                 状态切换:

        SQL>alter tablespace TBS4 offline;

        SQL>alter tablespace TBS4 online;

                 注意:系统表空间、临时表空间、回滚表空间不能offline

                

                 表空间大小不足如何解决

                 一般遇到的表空间大小不足提示为“[-523]:磁盘空间不足”,该报错并不一定意味着实际物理磁盘空间不足,往往都是表空间达到了预设的最大大小。

                 处理办法:

1、  创建一个更大的表空间,使用导出导入方法将数据迁移

2、  Resize数据文件大小(有可能造成单个数据文件超大)

3、  增加数据文件(推荐此方法)

SQL>alter tablespace tbs5 add datafile ‘/dm8/data/DAMENG/tbs5_3.dbf’ size 32 autoextend on next 2 maxsize 1024;

       

        临时表空间不足

SQL>select para_name,para_value from v$dm_ini where para_name like ‘%TEMP%’;

SQL>sp_set_para_value(2,’TEMP_SIZE’,200);--调整数据库temp表空间大小200

SQL>sp_set_para_value(2,’TEMP_SPACE_LIMIT’,2048);--调整数据库表空间最大大小2048

       

        回滚表空间不足

SQL>alter tablespace roll add datafile ‘/dm8/data/DAMENG/roll1.dbf’ size 32;

--增加一个回滚表空间数据文件roll1.dbf

SQL>alter tablespace roll resize datafile ‘/dm8/data/DAMENG/roll1.dbf’ to 2048;

--调整表空间resize to

       

        系统表空间不足

SQL>alter tablespace system add datafile ‘/dm8/data/DAMENG/system1.dbf’ size 32;

--增加一个system表空间数据文件system1.dbf

 

        表空间更换存储位置(同数据库)

SQL>alter tablespace TBS1 offline;

--首先将表空间离线

SQL>alter tablespace TBS1 rename datafile ‘/dm8/data/DAMENG/TBS1.dbf’ to ‘/dm8/data/tbs1/TBS1.dbf’;

--然后将表空间转移位置,注意该语句会自动将实际物理文件拷贝至新位置

 

 

 

 

 

 

SQL>alter tablesapce TBS1 online;

--最后将表空间恢复在线

     4、删除表空间

SQL>drop tablespace TBS1;

        注意:

如果表空间存在数据,则不允许直接删除。

        如果表空间为空,可以直接删除。

        表空间的存储对象:表、索引、全文索引、用户

 

 

posted @ 2021-01-18 15:44  Mr.MoonLiu  阅读(1931)  评论(0编辑  收藏  举报