Oracle 表空間與數據文件

--==============================

--Oracle 表空間與數據文件

--==============================

/*

一、概念

    表空間:是一個或多個數據文件的邏輯集合

    表空間邏輯存儲對象:永久段-->如表與索引

                        臨時段-->如臨時表數據與排序段

                     回滾段-->用於事物回滾或閃回內存的撤銷數據

    表空間分類:系統表空間(systemsysaux),非系統表空間

   

    一個表空間至少包含一個數據文件,一個數據文件只能屬於一個表空間。

   

    不可或缺的幾個表空間:

    SYSTEM --->字典表空間,不能被損壞

    UNDO    --->dml,dql把數據快照到此,數據提交即消失(用於恢復)

    SYSAUX  --->10g 高併發系統繁忙時,會造成system爭用,將工具放到SYSAUX,減輕system的壓力,SYSAUX不影響系統(影響性能)

    TEMP    --->臨時數據相關的內容

    USERS   --->10g  用戶數據從system撥離出來

   

   

二、Oracle的存儲結構

    1.Schema: 用戶--->創建相關對象、表、視圖、序列、函數、存儲過程、包等

    2.邏輯結構:database數據庫--->tablespace表空間---> segment--->extent區間----> block

            邏輯結構是Oracle內部管理數據庫中對象的方式

    3.物理結構:OS  block --->datafile 物理結構通常是一系列數據文件

    4.舉例描述scott用戶創建對象的組織方式 */

   

--查看scott用戶的默認表空間及數據文件

    SQL> select USERNAME,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE                                       

      2  from dba_users

      3  where username = 'SCOTT';

 

    USERNAME                       DEFAULT_TABLESPACE             TEMPORARY_TABLESPACE

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

    SCOTT                          USERS                          TEMP

 

    SQL> col name format a50

    SQL> select t1.name,t2.name   --查看錶空間及數據文件

      2  from v$tablespace t1,v$datafile t2

      3  where t1.ts# = t2.ts#;

 

    NAME                                               NAME

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

    SYSTEM                                             /u01/app/oracle/oradata/orcl/system01.dbf

    UNDOTBS1                                           /u01/app/oracle/oradata/orcl/undotbs01.dbf

    SYSAUX                                             /u01/app/oracle/oradata/orcl/sysaux01.dbf

    USERS                                              /u01/app/oracle/oradata/orcl/users01.dbf

    EXAMPLE                                            /u01/app/oracle/oradata/orcl/example01.dbf

 

/*

    scott-->emp(table)-->數據定義(位於)-->system表空間

                      數據(位於-->user表空間(邏輯存儲)-->表段-->區間-->內存塊

                                                    -->索引段等-->區間-->內存塊

                                user表空間(物理存儲)-->user01.dbf

                                   -->採用本地管理,包含頭部信息,可用、已用等位圖信息

                                  

    databuffer緩衝區滿則調用dbwr進程將數據寫入到物理文件當中 */

    /*

 

三、創建表空間

 

    --簡要語法:

    CREATE [BIGFILE | SMALLFILE] [TEMPORARY] TABLESPACE tablespace name

    DATAFILE datafile spec | TEMPFILE tempfile spec

    [MINIMUM EXTENT minimum extent size]

    [BLOCKSIZE blocksize]

    [[COMPRESS|NOCOMPRESS] DEFAULT STORAGE (default storage clause)]

    [LOGGING|NOLOGGING]

    [FORCE LOGGING]

    [ONLINE|OFFLINE]

    [EXTENT MANAGEMENT DICTIONARY |

    LOCAL [AUTOALLOCATE|UNIFORM SIZE size]]

    [SEGMENT SPACE MANAGEMENT MANUAL|AUTO]

    [FLASHBACK ON|OFF]

   

    --創建表空間的條件

    1.具有create tablespace的權限,DBA角色具有該權限,sysdba,sysoper

    2.創建的是bigfiel ,還是smallifle  超過T 級別應考慮bigfile

    3.新建的表空間的I/O,是否會導致磁盤I/O不夠用

    4.datafile後跟的路徑應該具備寫的權限  */

   

    --查看缺省是BIGFILE 還是SMALLFILE,當缺省爲SMALLFILE,創建表空間不指定表空間類型則爲SMALLFILE

    SQL> select PROPERTY_NAME,PROPERTY_VALUE from database_properties where PROPERTY_NAME like '%TBS%';

 

    PROPERTY_NAME                  PROPERTY_VALUE

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

    DEFAULT_TBS_TYPE               SMALLFILE

   

    --修改創建表空間爲大或小表空間的默認值

    SQL> alter database set default bigfile tablespace;

 

    Database altered.

 

    SQL> select PROPERTY_NAME,PROPERTY_VALUE from database_properties where PROPERTY_NAME like '%TBS%';

 

    PROPERTY_NAME                  PROPERTY_VALUE

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

    DEFAULT_TBS_TYPE               BIGFILE

   

    --改回爲缺省值

    SQL> alter database set default smallfile tablespace;

 

    Database altered.

   

    --建議創建表空間時最好帶上[BIGFILE | SMALLFILE]參數,以免參數設置導致創建了不合理的表空間

    /*

    注意:

    大表文件(bigfile)最大可以存放個T的容量。頭文件的大小達到了G-->block,普通的頭文件大小爲M---->block

    create bigfile tablespace <> datafile <>........;

       好處:減少了數據文件的個數,管理方便,大的對象的存放得到了優化。減少了control文件的信息,控制文件定義了datafile的個數。

       bigfile只能存在一個數據文件,所以要保證分配的的磁盤具有足夠的空間。 */

      

    --演示創建表空間

    SQL> create tablespace TBS1 datafile '/u01/app/oracle/oradata/orcl/tbs1.dbf' size 100m;

 

    Tablespace created.

 

    SQL> col name format a50      

    SQL> select t1.name,t2.name

      2  from v$tablespace t1,v$datafile t2

      3  where t1.ts# = t2.ts#;

 

    NAME                                               NAME

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

    SYSTEM                                             /u01/app/oracle/oradata/orcl/system01.dbf

    UNDOTBS1                                           /u01/app/oracle/oradata/orcl/undotbs01.dbf

    SYSAUX                                             /u01/app/oracle/oradata/orcl/sysaux01.dbf

    USERS                                              /u01/app/oracle/oradata/orcl/users01.dbf

    EXAMPLE                                            /u01/app/oracle/oradata/orcl/example01.dbf

    TBS1                                               /u01/app/oracle/oradata/orcl/tbs1.dbf

   

    /*

    創建臨時表空間:

    創建臨時表空間,不能使用非標準數據塊,另臨時表空間不能存放永久對象。*/

    CREATE TMEPORARY TABLESPACE tablespace_name

    TEMPFILE '...' SIZE n

 

    CREATE TEMPORARY TABLESPACE T2 TEMPFILE '/opt/oracle/oradata/orcl/t2.dbf'

    size 100m;

    /*

    臨時表空間具有以下特徵:

       臨時數據文件不能置爲只讀

       臨時數據文件不能重命名

       監時數據文件的日誌方式總是NOLOGGING

      

    臨時表空間擴容:*/

    --(1)重置臨時文件大小

        alter database tempfile '/opt/oracle/oradata/orcl/t2.dbf' resize 150m;

 

    --(2)讓臨時文件能自動擴展

       alter database  tempfile '/opt/oracle/oradata/orcl/t2.dbf'

       autoextend on next 10m maxsize 50m;

 

    --(3)增加臨時文件

       alter tablespace t2 add tempfile '/disk8/oracle/t2b.dbf' size 50m;

 

    --查看臨時文件

       select TABLESPACE_NAME,FILE_NAME,BYTES/1024/1024 "SIZE(MB)"

       from dba_temp_files;

 

    --默認臨時表空間:

        select * from database_properties;

 

    --修改默認臨時表空間:

       ALTER DATABASE DEFAULT TEMPORARY TABLESPACE T2;

       /*

        默認臨時表空間最好要指定一下,如果沒有指定默認的臨時表空間,那麼將使用system表空間作爲排

       序區

 

       默認臨時表空間有一定的限制:

           默認臨時表空間不能刪除

           默認臨時表空間不能脫機

          

 

    獲得創建表空間的語句:*/

       SELECT dbms_metadata.get_ddl('TABLESPACE','SYSTEM') FROM dual;

 

    /*

    臨時表空間組:

       10G引入的,是一組臨時表空間,只能由臨時表空間組成。組名不能與臨時表空間同名

       臨時表空間不能顯示的創建和刪除,當把第一個臨時表空間分配給某個臨時表空間組的時候,自動創建

       臨時表空間組,將最後一個臨時表空間,刪除時,組也將自動刪除。

 

 

    創建臨時表空間組:

       1、創建臨時表空間的時候 */

        CREATE TEMPORARY TABLESPACE tablespace_name TEMPFILE '...' SIZE n

        TABLESPACE GROUP group_name;

 

        ALTER TABLESPACE tablespace_name TABLESPACE GROUP group_name;

           ALTER TABLESPACE T3 TABLESPACE GROUP TEMP_GRP;

 

    --查看臨時表空間組的信息:

       dba_tablespace_groups

 

       SELECT * FROM DBA_TABLESPACE_GROUPS;

 

    --將臨時表空間組成員移除:

       ALTER TABLESPACE tablespace_name TABLESPACE GROUP '';

 

    --可將系統默認的臨時表空間設爲臨時表空間組:

       ALTER DATABASE DEFAULT TEMPORARY TABLESPACE tablespace_name;

 

    --刪除臨時表空間:

       --將所有成員全移出去,便自動刪除

 

    --創建UNDO表空間(還原表空間):

    /*

    創建語法:*/

       CREATE UNDO TABLESPACE tablespace_name DATAFILE '...' SIZE n

 

    SQL> CREATE UNDO TABLESPACE undo2

       DATAFILE '/opt/oracle/oradata/orcl/undo2_01.dbf' SIZE 200M,

       '/opt/oracle/oradata/orcl/undo2_02.dbf' size 100m;

 

    --修改當前系統的UNDO表空間:

       ALTER SYSTEM SET UNDO_TABLESPACE=tablespace_name

 

    /* 

    UNDO表空間擴容:

       ()重置DATAFILE大小

       ()讓DATAFILEAUTOEXTEND

       ()添加數據文件

 

    刪除UNDO表空間 */

       DROP TABLESPACE tablespace_name

        /*

       注:當前的UNDO表空間不能刪除

           系統只能使用一個UNDO表空間 */

 

 

    --創建表空間的詳細語法:http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/statements_7003.htm#SQLRF01403          

   

    /*

四、表空間的管理方式:

    字典管理:oracle 8i(不包括i),只存在一種表空間的管理模式,即字典管理表空間(DMT

       DMT是指oracle的空間分配或回收是通過數據庫中的數據字典表來記錄和管理的

       用於管理的兩個數據字典表分別是:UET$used extents)FET$(freeextents)      

       其工作方式是:當建立一個新的段或者段在表空間時,oracle通過一系列的SQL語句來完成這個工作

       且和前面的兩個字典表有關,在繁忙的系統中會造成競爭和等待(另一個DMT會帶來的問題是空間碎片)

      

    本地管理(LMT):   iR2版本後成了默認的選項

       LMT在表空間的數據文件頭部加入了一個位圖區域,在其中記錄每個extent的使用狀況

       extent被使用或者被釋放,oracle會更新頭部的記錄來反映這個變化,不產生回滾信息

        因爲僅僅操作數據文件頭部的幾個數據塊,不用操作數據字典,LMTDMT要快,尤其是在繁忙的時候更明顯

 

    --查看錶空間使用的管理方式: */

    SQL> select TABLESPACE_NAME,EXTENT_MANAGEMENT,BLOCK_SIZE,STATUS,CONTENTS,FORCE_LOGGING,BIGFILE

      2  from dba_tablespaces;

 

    TABLESPACE_NAME                EXTENT_MAN BLOCK_SIZE STATUS    CONTENTS  FOR BIG

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

    SYSTEM                         LOCAL            8192 ONLINE    PERMANENT NO  NO

    UNDOTBS1                       LOCAL            8192 ONLINE    UNDO      NO  NO

    SYSAUX                         LOCAL            8192 ONLINE    PERMANENT NO  NO

    TEMP                           LOCAL            8192 ONLINE    TEMPORARY NO  NO

    USERS                          LOCAL            8192 ONLINE    PERMANENT NO  NO

    EXAMPLE                        LOCAL            8192 ONLINE    PERMANENT NO  NO

    TBS1                           LOCAL            8192 ONLINE    PERMANENT NO  NO

 

    --DMT LMT 的相互轉換

       --將字典管理的表空間轉換爲本地管理

       exec dbms_space_admin.tablespace_migrate_to_local('表空間名')    --表空間名用大寫

 

       --將本地管理的表空間轉換爲字典管理

       exec dbms_space_admin.tablespace_migrate_from_local('表空間名')

 

   

    --表空間改名:

        --必須在open狀態下,system , sysaux 不能改名

       ALTER TABLESPACE XXX RENAME TO YYY

   

         

    --表空間的擴容:

      /*

      表空間的大小由組成它的所有數據文件的大小之和來決定

      擴容的方法:*/

         --(1)重置數據文件大小

            ALTER DATABASE DATAFILE '...' | FileNo RESIZE XX

 

        --(2)設置數據文件能自動增長

           ALTER DATABASE DATAFILE '... '| FileNo AUTOEXTEND ON | OFF NEXT 20M MAXSIZE 300M;

            --查看哪些表空間爲自動增長

           SELECT FILE_NAME,TABLESPACE_NAME,AUTOEXTENSIBLE FROM dba_data_files;

          

 

       /* (3)添加數據文件

      

           增加到表空間中的數據文件不能直接從表空間中刪除,除非刪掉整個表空間

           增加數據文件將有助於均衡I/O

           一個表空間文件最多爲個,文件越多,執行一次檢查點的代價越高  */

          

           ALTER TABLESPACE tablespace_name  ADD DATAFILE '...' SIZE XX;

     

           ALTER TABLESPACE tbs2 ADD DATAFILE '/u01/app/oracle/oradata/orcl/tbs2.dbf' size 200m autoextend on ;

          

    --表空間的四種狀態:

       online

       offline

       read only

       read write

       /*

    offline

       一個表空間的正常狀態是聯機(ONLINE),有時需要將某一個表空間進行脫機,以進行數據庫維護

       如:

           在數據庫打開的狀態下移動數據文件

           在數據庫打開的情況下恢復一個表空間或數據文件

           執行表空間的脫機備份(雖然可以進行進行聯機備份)

           使數據庫某一部分不可訪問,讓其它部分能正常訪問。

 

       表空間脫機的時候,將產生檢查點事件,該表空間上的數據是不能訪問的

 

       命令:*/

       ALTER TABLESPACE tablespace_name OFFLINE;

 

       --聯機命令:

       ALTER TABLESPACE tablespace_name ONLINE;

      

       --在脫機後,有可能無法再聯機,這時要做數據的介質恢復

       ALTER DATABASE RECOVER TABLESPACE tablespace_name

       ALTER TABLESPACE tablespace_name ONLINE;

       /*

    read only:

        不能執行DML語句,可以使用的爲DDLDQL語句  */

       ALTER TABLESPACE tablespace_name READ ONLY;

   

    read write:

       ALTER TABLESPACE tablespace_name READ WRITE;

   

    --一些表空間的特殊狀態

       tablespacename            onlie            read  only

          system                  必須online       必須read write

          sysaux                  可以offline      不能read only

          undo                    不能offline      不能read only

      

    --查看錶空間的狀態

    SQL> select tablespace_name,file#,v.status,v.enabled from dba_data_files d,

      2  v$datafile v

      3  where d.file_id = v.file#;

 

    TABLESPACE_NAME                     FILE# STATUS  ENABLED

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

    SYSTEM                                  1 SYSTEM  READ WRITE

    UNDOTBS1                                2 ONLINE  READ WRITE

    SYSAUX                                  3 ONLINE  READ WRITE

    USERS                                   4 ONLINE  READ WRITE

    EXAMPLE                                 5 ONLINE  READ WRITE

    TBS1                                    6 ONLINE  READ WRITE     

   

    --幾種狀態的相互轉換的演示

    --將表空間置爲只讀

    SQL> alter tablespace users read only;

 

    Tablespace altered.

 

    SQL> update scott.emp set sal = sal + 50 where ename = 'SCOTT'; --置爲只讀後不可更新

    update scott.emp set sal = sal + 50 where ename = 'SCOTT'

               *

    ERROR at line 1:

    ORA-00372: file 4 cannot be modified at this time

    ORA-01110: data file 4: '/u01/app/oracle/oradata/orcl/users01.dbf'

 

 

    SQL> select tablespace_name,file#,v.status,v.enabled from dba_data_files d,

      2  v$datafile v

      3  where d.file_id = v.file# and tablespace_name = 'USERS';

 

    TABLESPACE_NAME                     FILE# STATUS  ENABLED

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

    USERS                                   4 ONLINE  READ ONLY

   

    --將表空間置爲脫機

    SQL> alter tablespace users offline;

 

    Tablespace altered.

 

    SQL> update scott.emp set sal = sal + 100 where ename = 'SCOTT';/*置爲脫機後不可更新*/

    update scott.emp set sal = sal + 100 where ename = 'SCOTT'

               *

    ERROR at line 1:

    ORA-00376: file 4 cannot be read at this time

    ORA-01110: data file 4: '/u01/app/oracle/oradata/orcl/users01.dbf'

   

    --將表空間置爲聯機

    SQL> alter tablespace users online;

   

    Tablespace altered.

 

    SQL> select tablespace_name,file#,v.status,v.enabled from dba_data_files d,

      2  v$datafile v

      3  where d.file_id = v.file# and tablespace_name = 'USERS';

 

    TABLESPACE_NAME                     FILE# STATUS  ENABLED

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

    USERS                                   4 ONLINE  READ ONLY

   

    --注意,readonly 狀態下的表空間可以刪除數據,僅僅是不能插入或更新數據,如下

    SQL> delete from scott.emp where ename = 'SCOTT';

 

    SQL> rollback;

 

    Rollback complete.

 

    --將表空間置爲讀寫狀態

    SQL> alter tablespace users read write;

 

    Tablespace altered

   

    --表空間數據文件的重命名或重定位

    --方法一,在open狀態下且處於archive模式:

       --1、查出數據文件位置和所屬的表空間

           select TABLESPACE_NAME,FILE_NAME,BYTES/1024/1024 "SIZE(MB)"

           from dba_data_files;

 

       --2、將數據文件所在的表空間離線

           alter tablespace uu offline;

 

       --3、在操作系統下將文件移動到另外一個位置,或重命名(建議使用cp)

           host mv /opt/oracle/oradata/orcl/tt.dbf /disk9/uu1.dbf

      

       --4、修改控制文件,將數據文件的指針重新指向到另一個位置(執行rename)

           alter tablespace uu rename datafile '/opt/oracle/oradata/orcl/tt.dbf'

           to '/disk9/uu1.dbf';

 

       --5、表空間在線

           alter tablespace uu online

      

    --方法二,不能脫機的表空間

       --1、關閉數據庫,再啓動到mount狀態

           startup mount

       --2、在操作系統下,移動或重命名文件

           host mv /opt/oracle/oradata/orcl/tt.dbf /disk9/uu1.dbf

       --3、修改控制文件

           alter database rename file '/disk8/uu.dbf' to '/disk8/uu2.dbf';

      

       --4、打開數據庫

           alter database open;

    /* 

    刪除表空間:   

       意味着表空間和數據文件的信息從數據庫中刪除,同時也應該將相應的操作系統文件刪除

       不能刪除的表空間

           系統表空間

           有活動回滾段的表空間

           默認臨時/永久表空間

       命令:  */

           DROP TABLESPACE tablespace_name [INCLUDING CONTENTS [AND DATAFILES]]

               INCLUDING CONTENTS                -- 刪除表空間及所有段

              INCLUDING CONTENTS [AND DATAFILES] --刪除表空間、所有段、數據文件、同時刪除系統中的物理文件

             

    --限制某個用戶對錶空間的使用:

    ALTER USER user_name QUOTA n ON tablespace_name;

 

    ALTER USER scott QUOTA 10m on UU;

    --取消限制

    ALTER USER user_name QUOTA UNLIMITED ON tablespace_name;

 

    GRANT UNLIMITED TABLESPACE TO user_name;

 

    --單個數據文件離線:

       --1、查看有哪些數據文件

           SELECT name FROM v$datafile;

 

       --2、離線

           ALTER DATABASE DATAFILE '...' OFFLINE;

      

       --3、在線  

           ALTER DATABASE DATAFILE '... ' ONLINE

 

       --  有可能提示要進行介質恢復:

           RECOVER DATAFILE '...'

 

           ALTER DATABASE RECOVER TABLESPACE tablespace_name;

 

       --  之後再將文件再線

 

    --重命名數據文件(同前面移動數據文件一樣)

 

   --獲取表空間和數據文件信息

       --表空間信息

           dba_tablespaces

           v$tablespace

       --數據文件信息

           dba_data_files

           v$datafile

       --臨時數據文件信息

           dba_temp_files

           v$tempfile

      

    --查看系統默認的表空間及臨時表空間:  

       SQL> select PROPERTY_NAME,PROPERTY_VALUE from database_properties

       2  where PROPERTY_NAME like 'DEFAULT%';

 

    --修改改系統的默認表空間:

       SQL>ALTER DATABASE DEFAULT TABLESPACE tablespace_name

 

    --修改系統的默認臨時表空間:

       SQL>ALTER DATABASE DEFAULT TEMPORARY TABLESPACE tablespace_name

 

    --查看用戶默認表空間:

       SQL>select USERNAME,USER_ID,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE from dba_users;

 

    --修改用戶默認表空間:

       SQL>ALTER USER user_name DEFAULT TABLESPACE tablespace_name

      

    --查看錶空間的使用情況:

       dba_data_files;

       dba_free_space;

          

       --例:查每個表空間的剩餘空間

       SQL> select tablespace_name,sum(bytes/1024/1024)

         2  from dba_free_space group by tablespace_name;   

    /*

五、數據文件

    數據文件是數據庫中最重要的一個要求,是所有的數據庫內容存放的地方

    datafile是按照表空間爲組織單位,表空間的構成是按照段區塊爲層次---數據文件的邏輯結構

    datafile就是表空間的物理文件。

    datafile中的內容是通過dbwrdata buffer cache中的dirty buffer data 寫入的

    dbwr觸發:

        ckpt觸發,dirty buffer 到一定量的時候,data buffer caceh 的內存空間快用完了

       查詢空閒內存空間超時,表空間offline/read only,表的drop, truncate 開始執備份表空間的時候 */

      

    --查看數據文件

    SQL> select file# ,name,status,enabled,bytes/1024/1024 M from v$datafile;

 

        FILE# NAME                                               STATUS  ENABLED             M

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

            1 /u01/app/oracle/oradata/orcl/system01.dbf          SYSTEM  READ WRITE        490

            2 /u01/app/oracle/oradata/orcl/undotbs01.dbf         ONLINE  READ WRITE         30

            3 /u01/app/oracle/oradata/orcl/sysaux01.dbf          ONLINE  READ WRITE        250

            4 /u01/app/oracle/oradata/orcl/users01.dbf           ONLINE  READ WRITE          5

            5 /u01/app/oracle/oradata/orcl/example01.dbf         ONLINE  READ WRITE        100

            6 /u01/app/oracle/oradata/orcl/tbs1_1.dbf            ONLINE  READ WRITE        100

            7 /u01/app/oracle/oradata/orcl/tbs1_2.dbf            ONLINE  READ WRITE         60

            

    SQL> select tablespace_name,file_name,user_bytes/1024/1024 M from dba_data_files;

 

    TABLESPACE_NAME                FILE_NAME                                                        M

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

    USERS01                        /u01/app/oracle/oradata/orcl/users01.dbf                    4.9375

    SYSAUX                         /u01/app/oracle/oradata/orcl/sysaux01.dbf                 249.9375

    UNDOTBS1                       /u01/app/oracle/oradata/orcl/undotbs01.dbf                 29.9375

    SYSTEM                         /u01/app/oracle/oradata/orcl/system01.dbf                 489.9375

    EXAMPLE                        /u01/app/oracle/oradata/orcl/example01.dbf                 99.9375

    TBS1                           /u01/app/oracle/oradata/orcl/tbs1_1.dbf                    99.9375

    TBS1                           /u01/app/oracle/oradata/orcl/tbs1_2.dbf                    59.9375

 

    --數據文件的增加與刪除

    --TBS1增加一個數據文件

    SQL> alter tablespace tbs1 add datafile '/u01/app/oracle/oradata/orcl/tbs1_3.dbf' size 10m autoextend on;

    --還有一種創建表空間時不指定大小,而是重用一個存在的dbf要用resue參數,reuse 是把原有的結構拿來用,裏面的數據是用不了的,因爲早都沒有了。

   

    --刪表空間中的數據文件,g以後的版本才用以下功能,在之前版本的就只能把表空間給幹掉。

    SQL> alter tablespace tbs1 drop datafile '/u01/app/oracle/oradata/orcl/tbs1_3.dbf';

   

    --有數據的數據文件不能刪。第一個不能刪,如果要刪就把表空間幹掉,數據文件中有數據寫入的文件也不能刪除,如下

    SQL> alter tablespace tbs1 drop datafile 7;  --7v$datafile中的file#.

    alter tablespace tbs1 drop datafile 7

    *

    ERROR at line 1:

    ORA-03262: the file is non-empty

   

    /*

    數據文件的日誌記錄

       只有temp表空間是nologing  別的都是logging

        日誌記錄的幾種模式   

           nologin          並不是不記錄日誌而是記錄的很少

           logging          正常記錄日誌信息

           force logging    記錄的日誌比logging還詳細記錄信息非常多  用於DG data guard 容災的情況 */

    SQL> select tablespace_name ,logging,force_logging from dba_tablespaces;

 

    TABLESPACE_NAME                LOGGING   FOR

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

    SYSTEM                         LOGGING   NO

    UNDOTBS1                       LOGGING   NO

    SYSAUX                         LOGGING   NO

    TEMP                           NOLOGGING NO

    USERS01                        LOGGING   NO

    EXAMPLE                        NOLOGGING NO

    TBS1                           LOGGING   NO

   

    --修改表空間中日誌文件記錄的方式

       SQL> alter tablespace tablespace_name nologging | logging | force logging;

   

    SQL> alter tablespace example logging;

 

    Tablespace altered.

 

    SQL> alter tablespace tbs1 force logging;

 

    Tablespace altered.

 

    SQL> select tablespace_name ,logging,force_logging from dba_tablespaces;

 

    TABLESPACE_NAME                LOGGING   FOR

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

    SYSTEM                         LOGGING   NO

    UNDOTBS1                       LOGGING   NO

    SYSAUX                         LOGGING   NO

    TEMP                           NOLOGGING NO

    USERS01                        LOGGING   NO

    EXAMPLE                        LOGGING   NO

    TBS1                           LOGGING   YES

   

    /*

六、更多*/

 

Oracle 數據庫實例啓動關閉過程

 

Oracle 10g SGA 的自動化管理

 

使用OEM,SQL*Plus,iSQL*Plus 管理Oracle實例

 

Oracle實例和Oracle數據庫(Oracle體系結構)

 

SQL 基礎-->常用函數

 

SQL基礎-->過濾和排序

 

SQL 基礎-->SELECT 查詢

發佈了43 篇原創文章 · 獲贊 7 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章