ORACLE 表空間筆記-20140320

mahe0207發表於2014-03-20
按資料檔案的型別,分為:
    大檔案表空間(bigfile tablespace)此為10g新增功能
    小檔案表空間(smallfile tablespace)此為建立時預設值

大檔案表空間的優點有:
    在一個表空間裡只有一個大的資料檔案,以後不需要再去管理資料檔案;
    一個大的資料檔案相當於1024個小的資料檔案,這樣一來,在一個塊大小為32K時,整個資料庫可以達到(4g*32K)128TB,不過在實際環境中還是要受到作業系統的影響;
    使用一個大的資料檔案可以代替多個小資料檔案,這樣對資料檔案的管理就少多了;
    當開啟資料庫,發生檢查點,執行DBWR程式時使用大檔案表空間會增強效能。

大檔案表空間的的需要注意有:
    要使用在ORACLE的ASM(自動儲存管理)的儲存空間或者分散(striping)儲存的LVM中,或者RAID陣列上;
    不要把大檔案表空間建立在不能分散(striping)儲存的系統上;
    不要把大檔案表空間建立在沒有空間(剩餘空間少)的磁碟組上;
    建立大檔案表空間時不推薦建立在不能擴充套件的儲存空間裡;
    大檔案表空間只支援本地管理表空間(LMT)和本地段空間管理(ASSM);
    在臨時表空間與回滾段表空間,只能用手動段空間管理;
    自動擴充套件資料檔案必須是起用的,而且最大檔案大小必須是不限制;
    系統表空間和系統輔助(SYSAUX)表空間不能使用大檔案表空間;
    每個表空間只能包含一個資料檔案。如果試圖新增新的檔案,則會報告 ora-32771 錯誤;
    在 bft 上儲存的表的 rowid 和 smallfile 表空間上的 rowid 結構有些不同的。要正確得到 rowid 資訊,dbms_rowid 包增加了一個新的引數 ts_type_in 來解決這個問題。參考這個範例:       
        sql> select dbms_rowid.rowid_block_number (rowid, bigfile) 2 from foo;
        dbms_rowid.rowid_block_number(rowid,bigfile)
            
Bigfile Tablespaces
        注意:Bigfile tablespaces are intended to be used with Automatic Storage Management (ASM) or other logical volume managers that supports striping or RAID, and dynamically extensible logical volumes.
        Avoid creating bigfile tablespaces on a system that does not support striping because of negative implications for parallel query execution and RMAN backup parallelization.
        Using bigfile tablespaces on platforms that do not support large file sizes is not recommended and can limit tablespace capacity. Refer to your operating system specific documentation for information about maximum supported file sizes.
        Creating:CREATE BIGFILE TABLESPACE bigtbs DATAFILE '/u02/oracle/data/bigtbs01.dbf' SIZE 50G...
        RESIZE:ALTER TABLESPACE bigtbs RESIZE 80G;
        AUTOEXTEND:ALTER TABLESPACE bigtbs AUTOEXTEND ON NEXT 20G;

        提高分割槽表效能的一個方法:分割槽表每個分割槽放在單獨的表空間裡,這些表空間使用同一個bigfile資料檔案,這樣在查詢跨分割槽資料或較
多資料時,不至於跨越多個資料檔案,在檢索速度上,多表空間單個資料檔案(bigfile)的分割槽表>多表空間多個資料檔案(smallfile)分割槽
表>單表空間分割槽表。

表空間命令

    本地管理表空間(LMT):
            一種比較先進的管理擴充套件(extent)的方式;
            是用bitmap來管理表空間裡的所有的extent;
            當使用本地管理表空間時是使用6個塊(從第三個到第八個)來標識整個表空間裡的每一個擴充套件(extent);
            其中的每一位(bit)來表示每個擴充套件的狀態。1為已被分配,0為可被分配。

          在本地管理表空間的方式裡可以選擇每個extent的大小是固定(Uniform)的或是自動的:在自動管理,系統一般是剛開始一個extent8個block,然後逐漸增加;
    固定大小為每個extent都是固定大小的,推薦使用。


   字典管理表空間(DMT):10G裡不能建立字典管理表空間的,只能匯入老版本的。
   字典管理表空間:這種方式是為了與之前版本相容而提供的。不推薦使用。
   10G裡是不能建立字典管理表空間的,被強制推薦,只能倒入老版本中的字典管理表空間。

    臨時表空間:
        一般用來排序和建立索引時使用;
        臨時表空間裡不存放實際的資料,所以,即使出了問題,也不需要恢復,而且,也不需要備份,因此也不需要記錄日誌;
        臨時表空間只能使是讀寫模式,而且只能為手動管理段空間模式;
        可以設定為系統預設臨時表空間。這樣,建立使用者時,沒有指定預設臨時表空間,就自動設定為系統預設臨時表空間,命令如下:
            ALTER DATABASE DEFAULT TEMPORARY TABLESPACE ;

        CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
        CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M 
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;
        CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M EXTENT MANAGEMENT LOCAL  SEGMENT SPACE MANAGEMENT AUTO;
        ALTER TABLESPACE lmtbsb ADD DATAFILE '/u02/oracle/data/lmtbsb02.dbf' SIZE 1M;

Temporary Tablespaces
        相關檢視:V$TEMPFILE  DBA_TEMP_FILES   V$DATAFILE  DBA_DATA_FILES views
        Creating:CREATE TEMPORARY TABLESPACE lmtemp TEMPFILE '/u02/oracle/data/lmtemp01.dbf' SIZE 20M REUSE 
                        EXTENT MANAGEMENT LOCAL UNIFORM SIZE 16M;
        Resizing:ALTER DATABASE TEMPFILE '/u02/oracle/data/lmtemp02.dbf' RESIZE 18M;
        Deleting:ALTER DATABASE TEMPFILE '/u02/oracle/data/lmtemp02.dbf' DROP INCLUDING DATAFILES;

        注意:臨時表空間不能設定為AUTOALLOCATE.
                  不能把本地管理的表空間變成本地管理的臨時表空間,只能使用 CREATE TEMPORARY TABLESPACE 建立一個本地管理的臨時表空間
        ALTER TABLESPACE lmtemp ADD TEMPFILE '/u02/oracle/data/lmtemp02.dbf' SIZE 18M REUSE;
        ALTER TABLESPACE lmtemp TEMPFILE OFFLINE;
        ALTER TABLESPACE lmtemp TEMPFILE ONLINE;

        不能使臨時表空間離線,可以使它的檔案離線(V$TEMPFILE)

臨時表空間組
        Creating:CREATE TEMPORARY TABLESPACE lmtemp2 TEMPFILE '/u02/oracle/data/lmtemp201.dbf' SIZE 50M TABLESPACE GROUP group1;
                        ALTER TABLESPACE lmtemp TABLESPACE GROUP group2;

        ALTER DATABASE sample DEFAULT TEMPORARY TABLESPACE group2;

離線表空間選項
        NORMAL  表空間中的資料檔案都不能離線。離線時為所有資料檔案建立檢查點,online時不需要recover。
        TEMPORARY  為online的資料檔案建立檢查點,online時只需為以前離線的資料檔案做recover。
        IMMEDIATE  必須執行在歸檔模式,所有資料檔案都不做檢查點,online時需要為所有資料檔案做recover。

只讀表空間
        可以刪除表,索引等items,不能增加修改object,可以add或modify表或欄位的描述資訊
        不能用於活躍的undo表空間和系統表空間
        ALTER TABLESPACE flights READ ONLY;
        ALTER TABLESPACE flights READ WRITE;

        Renaming Tablespaces:ALTER TABLESPACE users RENAME TO usersts;
        Dropping Tablespaces:DROP TABLESPACE users INCLUDING CONTENTS;
        DROP TABLESPACE users INCLUDING CONTENTS AND DATAFILES;

字典管理表空間遷移到本地管理表空間
        EXEC DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL ('tbs_1');
SYSTEM表空間改成本地管理
        EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL('SYSTEM');

表空間傳輸
        SELECT * FROM V$TRANSPORTABLE_PLATFORM;   --檢視可轉換的平臺
        使用限制:1.字符集一致
                          2.Beginning with Oracle Database 10g Release 2, you can transport tablespaces that contain XMLTypes, but you must use the IMP and EXP utilities,                
             not Data Pump. When using EXP, ensure that the CONSTRAINTS and TRIGGERS parameters are set to Y (the default).


       查詢表空間是否包含XMLTypes
            select distinct p.tablespace_name
            from dba_tablespaces p, 
dba_xml_tables x, dba_users u, all_all_tables t
            where
 t.table_name=x.table_name and t.tablespace_name=p.tablespace_name and x.owner=u.username

        3.源目標平臺最低支援:
        1)same platform  source(8.0) target(8.0)

        2)different database block size  source(9.0) target(9.0)
        3)different platforms   source(10.0) target(10.0)

表空間管理:本地管理  字典管理
段管理:自動 點陣圖
區:UNIFORM   AUTOALLOCATE
塊:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29437301/viewspace-1126279/,如需轉載,請註明出處,否則將追究法律責任。

相關文章