達夢數據庫學習(四、表空間管理)


達夢數據庫學習(四、表空間管理)

 

上期回顧:

達夢數據庫學習(一、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;

        注意:

如果表空間存在數據,則不允許直接刪除。

        如果表空間為空,可以直接刪除。

        表空間的存儲對象:表、索引、全文索引、用戶

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM