Oracle 11G 表空間

  1. 查詢表空間信息

    1.1: 查詢數據字典視圖DBA_TABLESPACES獲取數據庫中個表空間的名稱,狀態,管理方式,區的分配方式,段的管理方式,表空間類型等基本信息。

SELECT TABLESPACE_NAME,STATUS,EXTENT_MANAGEMENT,
ALLOCATION_TYPE,SEGMENT_SPACE_MANAGEMENT,CONTENTS
FROM DBA_TABLESPACES;

  Result:


      1.2:查詢數據字典視圖DBA_FREE_SPACE,獲取數據庫中各個表空間空閒的統計信息:

SELECT TABLESPACE_NAME"TABLESPACE",FILE_ID,
COUNT(*)"PIECES",MAX(blocks)"MAXIMUM",MIN(blocks)"MINIMUM",
AVG(blocks)"AVERAGE", SUM(blocks)"TOTAL"
FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME,FILE_ID;

        1.3:查詢數據字典視圖DBA_TEMP_FREE_SPACE,獲取臨時表空間的表空間使用信息:

SELECT * FROM DBA_TEMP_FREE_SPACE

2.創建表空間

CREATE TABLESPACE語法:

CREATE [BIGFILE|SMALLFILE] [TEMPORARY|UNDO] TABLESPACE tbs_name

DATAFILE|TEMPFILE path/filename SIZE integer [K|M] [REUSE]

    [AUTOEXTEND [OFF|ON] NEXT integer [K|M]

    MAXSIZE [UNLIMITED|integer [K|M]]

[TABLESPACE GROUP tablespace_group_name]

[EXTENT MANAGEMENT DICTIONARY|LOCAL]

[AUTOALLOCATE|UNIFORM SIZE integer [K|M]]


2.1 創建一個本地管理的永久表空間TBS1,區、段採用自動管理:

CREATE TABLESPACE TBS1 DATAFILE
'/usr/oracle/app/product/11.2.0/dbhome_1/dbs/TBS1_1.DBF' size 50M;

2.2 創建一個本地管理的永久表空間TBS2,區採用定製分配,大小爲512k,段採用自動管理。

CREATE TABLESPACE TBS2 DATAFILE
'/usr/oracle/app/product/11.2.0/dbhome_1/dbs/TBS2_1.DBF' SIZE 50M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 512K;

2.3 創建一個本地管理的永久表空間TBS4,區採用定製分配方式,大小爲512K,段採用手動管理:

CREATE TABLESPACE TBS4 DATAFILE
'/usr/oracle/app/product/11.2.0/dbhome_1/dbs/TBS4_1.DBF' SIZE 50M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 512K
SEGMENT SPACE MANAGEMENT MANUAL;

2.4 創建一個索引表空間INDX,存儲所有索引信息,表空間文件自動擴展每次5M,最大爲100M:

CREATE TABLESPACE INDX DATAFILE
'/usr/oracle/app/product/11.2.0/dbhome_1/dbs/INDX_1.DBF' SIZE 50M
AUTOEXTEND ON NEXT 5M MAXSIZE 100M;

2.5 創建一個TBS5表空間,第一個區10M,第二個區爲10M,後續10%增長

CREATE TABLESPACE TBS5 DATAFILE
'/usr/oracle/app/product/11.2.0/dbhome_1/dbs/TBS5_1.DBF' SIZE 50M
DEFAULT STORAGE(INITIAL 10M NEXT 10M PCTINCREASE 10)
SEGMENT SPACE MANAGEMENT MANUAL;

3. 創建大文件表空間

    3.1 查詢數據庫默認創建大文件還是小文件的表空間:

SELECT PROPERTY_NAME,PROPERTY_VALUE
FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME='DEFAULT_TBS_TYPE';

    3.2 創建一個大文件表空間BIGTBS1:

CREATE BIGFILE TABLESPACE BIGTBS1 DATAFILE
'/usr/oracle/app/product/11.2.0/dbhome_1/dbs/BIGTBS1_1.DBF' SIZE 50M
AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO;

    3.3 大文件表空間信息查詢:

SELECT T.NAME TBSNAME,RFILE#,D.NAME FNAME
FROM V$TABLESPACE T,V$DATAFILE D
WHERE T.TS#=D.TS# AND T.NAME='BIGTBS1'

    3.4 創建非標準塊表空間

ALTER SYSTEM SET DB_16K_CACHE_SIZE=16384;
CREATE TABLESPACE TBS16
DATAFILE '/usr/oracle/app/product/11.2.0/dbhome_1/dbs/TBS16_1.DBF' SIZE 60M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K BLOCKSIZE 16K;
SELECT TABLESPACE_NAME,BLOCK_SIZE FROM DBA_TABLESPACES;

4. 維護表空間

    4.1 增加表空間文件

ALTER TABLESPACE TBS1 
ADD DATAFILE '/usr/oracle/app/product/11.2.0/dbhome_1/dbs/TBS1_2.DBF' SIZE 10M;

     4.1.2 增加TEMP表空間文件

    ALTER TABLESPACE TEMP ADD TEMPFILE
'/usr/oracle/app/product/11.2.0/dbhome_1/dbs/TEMP02.DBF' SIZE 10M;

    4.2 改變數據文件大小

ALTER DATABASE DATAFILE '/usr/oracle/app/product/11.2.0/dbhome_1/dbs/TBS1_2.DBF' RESIZE 20M;

    4.3 更改文件的擴展方式:

ALTER DATABASE DATAFILE
'/usr/oracle/app/product/11.2.0/dbhome_1/dbs/TBS2_1.DBF'
 AUTOEXTEND ON NEXT 5M MAXSIZE 100M;

    4.5 刪除表空間文件:

ALTER TABLESPACE TEMP
DROP TEMPFILE '/usr/oracle/app/product/11.2.0/dbhome_1/dbs/TEMP02.DBF';

普通表空間只要將TEMPFILE換成DATAFILE即可



5. 設置默認表空間:

    5.1 查看當前默認表空間:

  

  SELECT PROPERTY_NAME,PROPERTY_VALUE FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME IN ('DEFAULT_PERMANENT_TABLESPACE','DEFAULT_TEMP_TABLESPACE');

    5.2 設置默認表空間:

    ALTER DATABASE DEFAULT TABLESPACE TBS1;

    5.2.1 設置默認臨時表空間:

    ALTER DATABASE DEFAULT TEMPORARY TABLESPACE tablespace_name;

6. 管理臨時表空間

創建臨時表空間與創建普通表空間語法差不多,如創建一個    TEMP2臨時表空間:

CREATE TEMPORARY TABLESPACE TEMP2 TEMPFILE
'/usr/oracle/app/product/11.2.0/dbhome_1/dbs/temp2_1.DBF' SIZE 20M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 2M;

可以在create與temporary之間加入BIGFILE創建大文件臨時表空間(CREATE BIGFILE TEMPORARY ...)


    6.1 臨時表空間組:

CREATE TEMPORARY TABLESPACE TEMP4 TEMPFILE 
'/usr/oracle/app/product/11.2.0/dbhome_1/dbs/TEMP4_1.DBF' SIZE 20M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 2M
TABLESPACE GROUP TEMP_GROUP1;

    可以使用alter tablespace語句將臨時表空加入組或者從表空間租移除

ALTER TABLESPACE TEMP2 TABLESPACE GROUP TEMP_GROUP1;
ALTER TABLESPACE TEMP4 TABLESPACE GROUP '';
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP_GROUP1;

    6.2 收縮臨時表空間:

ALTER TABLESPACE temp SHRINK SPACE;
ALTER TABLESPACE TEMP2 SHRINK TEMPFILE '/usr/oracle/app/product/11.2.0/dbhome_1/dbs/temp2_1.DBF';

7 undo表空間

    7.1 創建undo表空間:

    CREATE UNDO TABLESPACE UNDOTBS2
DATAFILE '/usr/oracle/app/product/11.2.0/dbhome_1/dbs/UNDOTBS2_1.DBF' SIZE 20M
AUTOEXTEND ON NEXT 2M MAXSIZE 100M;

    增加undo表空間文件與普通表空間做法一樣

切換undo表空間:

ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS2;


    7.2 UNDO信息保留時間設置:

通過初始化參數UNDO_RETENTION設置回退信息的最短保留時間,單位爲妙。

show parameter UNDO
可以查出當前UNDO_RETENTION的設置,修改默認值:

ALTER SYSTEM SET UNDO_RETENTION=1800;

再啓用undo表空間的RETENTION GUARANTEE特性確保UNDO信息至少保留UNDO_RETENTION指定的時間。

ALTER TABLESPACE UNDOTBS2 RETENTION GUARANTEE;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章