kxbin
          成功留給有準備的人
          posts - 10,  comments - 35,  trackbacks - 0

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

          --Oracle 表空間與數(shù)據(jù)文件

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

          /*

          一、概念

              表空間:是一個或多個數(shù)據(jù)文件的邏輯集合

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

                                  臨時段-->如臨時表數(shù)據(jù)與排序段

                               回滾段-->用于事物回滾或閃回內(nèi)存的撤銷數(shù)據(jù)

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

             

              一個表空間至少包含一個數(shù)據(jù)文件,一個數(shù)據(jù)文件只能屬于一個表空間。

             

              不可或缺的幾個表空間:

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

              UNDO    --->dml,dql把數(shù)據(jù)快照到此,數(shù)據(jù)提交即消失(用于恢復(fù))

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

              TEMP    --->臨時數(shù)據(jù)相關(guān)的內(nèi)容

              USERS   --->10g  用戶數(shù)據(jù)從system撥離出來

             

             

          二、Oracle的存儲結(jié)構(gòu)

              1.Schema: 用戶--->創(chuàng)建相關(guān)對象、表、視圖、序列、函數(shù)、存儲過程、包等

              2.邏輯結(jié)構(gòu):database數(shù)據(jù)庫--->tablespace表空間---> segment--->extent區(qū)間----> block

                      邏輯結(jié)構(gòu)是Oracle內(nèi)部管理數(shù)據(jù)庫中對象的方式

              3.物理結(jié)構(gòu):OS  block --->datafile 物理結(jié)構(gòu)通常是一系列數(shù)據(jù)文件

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

             

          --查看scott用戶的默認表空間及數(shù)據(jù)文件

              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   --查看表空間及數(shù)據(jù)文件

                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)-->數(shù)據(jù)定義(位于)-->system表空間

                                數(shù)據(jù)(位于)  -->user表空間(邏輯存儲)-->表段-->區(qū)間-->內(nèi)存塊

                                                              -->索引段等-->區(qū)間-->內(nèi)存塊

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

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

                                            

              當(dāng)databuffer緩沖區(qū)滿則調(diào)用dbwr進程將數(shù)據(jù)寫入到物理文件當(dāng)中 */

              /*

           

          三、創(chuàng)建表空間

           

              --簡要語法:

              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]

             

              --創(chuàng)建表空間的條件

              1.具有create tablespace的權(quán)限,DBA角色具有該權(quán)限,sysdba,sysoper

              2.創(chuàng)建的是bigfiel ,還是smallifle  超過級別應(yīng)考慮bigfile

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

              4.datafile后跟的路徑應(yīng)該具備寫的權(quán)限  */

             

              --查看缺省是BIGFILE 還是SMALLFILE,當(dāng)缺省為SMALLFILE,創(chuàng)建表空間不指定表空間類型則為SMALLFILE

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

           

              PROPERTY_NAME                  PROPERTY_VALUE

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

              DEFAULT_TBS_TYPE               SMALLFILE

             

              --修改創(chuàng)建表空間為大或小表空間的默認值

              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.

             

              --建議創(chuàng)建表空間時最好帶上[BIGFILE | SMALLFILE]參數(shù),以免參數(shù)設(shè)置導(dǎo)致創(chuàng)建了不合理的表空間

              /*

              注意:

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

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

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

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

                

              --演示創(chuàng)建表空間

              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

             

              /*

              創(chuàng)建臨時表空間:

              創(chuàng)建臨時表空間,不能使用非標(biāo)準數(shù)據(jù)塊,另臨時表空間不能存放永久對象。*/

              CREATE TMEPORARY TABLESPACE tablespace_name

              TEMPFILE '...' SIZE n

           

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

              size 100m;

              /*

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

                 臨時數(shù)據(jù)文件不能置為只讀

                 臨時數(shù)據(jù)文件不能重命名

                 監(jiān)時數(shù)據(jù)文件的日志方式總是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表空間作為排

                 序區(qū)

           

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

                     默認臨時表空間不能刪除

                     默認臨時表空間不能脫機

                    

           

              獲得創(chuàng)建表空間的語句:*/

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

           

              /*

              臨時表空間組:

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

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

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

           

           

              創(chuàng)建臨時表空間組:

                 1、創(chuàng)建臨時表空間的時候 */

                  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 '';

           

              --可將系統(tǒng)默認的臨時表空間設(shè)為臨時表空間組:

                 ALTER DATABASE DEFAULT TEMPORARY TABLESPACE tablespace_name;

           

              --刪除臨時表空間:

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

           

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

              /*

              創(chuàng)建語法:*/

                 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;

           

              --修改當(dāng)前系統(tǒng)的UNDO表空間:

                 ALTER SYSTEM SET UNDO_TABLESPACE=tablespace_name

           

              /* 

              UNDO表空間擴容:

                 ()重置DATAFILE大小

                 ()讓DATAFILEAUTOEXTEND

                 ()添加數(shù)據(jù)文件

           

              刪除UNDO表空間 */

                 DROP TABLESPACE tablespace_name

                  /*

                 注:當(dāng)前的UNDO表空間不能刪除

                     系統(tǒng)只能使用一個UNDO表空間 */

           

           

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

             

              /*

          四、表空間的管理方式:

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

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

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

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

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

                

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

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

                 當(dāng)extent被使用或者被釋放,oracle會更新頭部的記錄來反映這個變化,不產(chǎn)生回滾信息

                  因為僅僅操作數(shù)據(jù)文件頭部的幾個數(shù)據(jù)塊,不用操作數(shù)據(jù)字典,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 的相互轉(zhuǎn)換

                 --將字典管理的表空間轉(zhuǎn)換為本地管理

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

           

                 --將本地管理的表空間轉(zhuǎn)換為字典管理

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

           

             

              --表空間改名:

                  --必須在open狀態(tài)下,system , sysaux 不能改名

                 ALTER TABLESPACE XXX RENAME TO YYY

             

                   

              --表空間的擴容:

                /*

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

                擴容的方法:*/

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

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

           

                  --(2)設(shè)置數(shù)據(jù)文件能自動增長

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

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

                     SELECT FILE_NAME,TABLESPACE_NAME,AUTOEXTENSIBLE FROM dba_data_files;

                    

           

                 /* (3)添加數(shù)據(jù)文件

                

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

                     增加數(shù)據(jù)文件將有助于均衡I/O

                     一個表空間文件最多為個,文件越多,執(zhí)行一次檢查點的代價越高  */

                    

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

               

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

                    

              --表空間的四種狀態(tài):

                 online

                 offline

                 read only

                 read write

                 /*

              offline

                 一個表空間的正常狀態(tài)是聯(lián)機(ONLINE),有時需要將某一個表空間進行脫機,以進行數(shù)據(jù)庫維護

                 如:

                     在數(shù)據(jù)庫打開的狀態(tài)下移動數(shù)據(jù)文件

                     在數(shù)據(jù)庫打開的情況下恢復(fù)一個表空間或數(shù)據(jù)文件

                     執(zhí)行表空間的脫機備份(雖然可以進行進行聯(lián)機備份)

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

           

                 表空間脫機的時候,將產(chǎn)生檢查點事件,該表空間上的數(shù)據(jù)是不能訪問的

           

                 命令:*/

                 ALTER TABLESPACE tablespace_name OFFLINE;

           

                 --聯(lián)機命令:

                 ALTER TABLESPACE tablespace_name ONLINE;

                

                 --在脫機后,有可能無法再聯(lián)機,這時要做數(shù)據(jù)的介質(zhì)恢復(fù)

                 ALTER DATABASE RECOVER TABLESPACE tablespace_name

                 ALTER TABLESPACE tablespace_name ONLINE;

                 /*

              read only:

                  不能執(zhí)行DML語句,可以使用的為DDLDQL語句  */

                 ALTER TABLESPACE tablespace_name READ ONLY;

             

              read write

                 ALTER TABLESPACE tablespace_name READ WRITE;

             

              --一些表空間的特殊狀態(tài)

                 tablespacename            onlie            read  only

                    system                  必須online       必須read write

                    sysaux                  可以offline      不能read only

                    undo                    不能offline      不能read only

                

              --查看表空間的狀態(tài)

              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     

             

              --幾種狀態(tài)的相互轉(zhuǎn)換的演示

              --將表空間置為只讀

              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'

             

              --將表空間置為聯(lián)機

              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 狀態(tài)下的表空間可以刪除數(shù)據(jù),僅僅是不能插入或更新數(shù)據(jù),如下

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

           

              SQL> rollback;

           

              Rollback complete.

           

              --將表空間置為讀寫狀態(tài)

              SQL> alter tablespace users read write;

           

              Tablespace altered

             

              --表空間數(shù)據(jù)文件的重命名或重定位

              --方法一,在open狀態(tài)下且處于archive模式:

                 --1、查出數(shù)據(jù)文件位置和所屬的表空間

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

                     from dba_data_files;

           

                 --2、將數(shù)據(jù)文件所在的表空間離線

                     alter tablespace uu offline;

           

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

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

                

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

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

                     to '/disk9/uu1.dbf';

           

                 --5、表空間在線

                     alter tablespace uu online

                

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

                 --1、關(guān)閉數(shù)據(jù)庫,再啟動到mount狀態(tài)

                     startup mount

                 --2、在操作系統(tǒng)下,移動或重命名文件

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

                 --3、修改控制文件

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

                

                 --4、打開數(shù)據(jù)庫

                     alter database open;

              /* 

              刪除表空間:   

                 意味著表空間和數(shù)據(jù)文件的信息從數(shù)據(jù)庫中刪除,同時也應(yīng)該將相應(yīng)的操作系統(tǒng)文件刪除

                 不能刪除的表空間

                     系統(tǒng)表空間

                     有活動回滾段的表空間

                     默認臨時/永久表空間

                 命令:  */

                     DROP TABLESPACE tablespace_name [INCLUDING CONTENTS [AND DATAFILES]]

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

                        INCLUDING CONTENTS [AND DATAFILES] --刪除表空間、所有段、數(shù)據(jù)文件、同時刪除系統(tǒng)中的物理文件

                       

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

              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;

           

              --單個數(shù)據(jù)文件離線:

                 --1、查看有哪些數(shù)據(jù)文件

                     SELECT name FROM v$datafile;

           

                 --2、離線

                     ALTER DATABASE DATAFILE '...' OFFLINE;

                

                 --3、在線  

                     ALTER DATABASE DATAFILE '... ' ONLINE

           

                 --  有可能提示要進行介質(zhì)恢復(fù):

                     RECOVER DATAFILE '...' 

           

                     ALTER DATABASE RECOVER TABLESPACE tablespace_name;

           

                 --  之后再將文件再線

           

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

           

             --獲取表空間和數(shù)據(jù)文件信息

                 --表空間信息

                     dba_tablespaces

                     v$tablespace

                 --數(shù)據(jù)文件信息

                     dba_data_files

                     v$datafile

                 --臨時數(shù)據(jù)文件信息

                     dba_temp_files

                     v$tempfile

                

              --查看系統(tǒng)默認的表空間及臨時表空間:  

                 SQL> select PROPERTY_NAME,PROPERTY_VALUE from database_properties

                 2  where PROPERTY_NAME like 'DEFAULT%';

           

              --修改改系統(tǒng)的默認表空間:

                 SQL>ALTER DATABASE DEFAULT TABLESPACE tablespace_name

           

              --修改系統(tǒng)的默認臨時表空間:

                 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;   

              /*

          五、數(shù)據(jù)文件

              數(shù)據(jù)文件是數(shù)據(jù)庫中最重要的一個要求,是所有的數(shù)據(jù)庫內(nèi)容存放的地方

              datafile是按照表空間為組織單位,表空間的構(gòu)成是按照段區(qū)塊為層次---數(shù)據(jù)文件的邏輯結(jié)構(gòu)

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

              datafile中的內(nèi)容是通過dbwrdata buffer cache中的dirty buffer data 寫入的

              dbwr觸發(fā):

                  ckpt觸發(fā),dirty buffer 到一定量的時候,data buffer caceh 的內(nèi)存空間快用完了

                 查詢空閑內(nèi)存空間超時,表空間offline/read only,表的drop, truncate 開始執(zhí)備份表空間的時候 */

                

              --查看數(shù)據(jù)文件

              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

           

              --數(shù)據(jù)文件的增加與刪除

              --TBS1增加一個數(shù)據(jù)文件

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

              --還有一種創(chuàng)建表空間時不指定大小,而是重用一個存在的dbf要用resue參數(shù),reuse 是把原有的結(jié)構(gòu)拿來用,里面的數(shù)據(jù)是用不了的,因為早都沒有了。

             

              --刪表空間中的數(shù)據(jù)文件,g以后的版本才用以下功能,在之前版本的就只能把表空間給干掉。

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

             

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

              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

             

              /*

              數(shù)據(jù)文件的日志記錄

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

                  日志記錄的幾種模式   

                     nologin          并不是不記錄日志而是記錄的很少

                     logging          正常記錄日志信息

                     force logging    記錄的日志比logging還詳細 記錄信息非常多  用于DG data guard 容災(zāi)的情況 */

              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

             

          posted on 2012-08-17 11:00 kxbin 閱讀(1081) 評論(0)  編輯  收藏 所屬分類: ORACLE轉(zhuǎn)發(fā)
          你恨一個人是因為你愛他;你喜歡一個人,是因為他身上有你沒有的;你討厭一個人是因為他身上有你有的東西;你經(jīng)常在別人面前批評某人,其實潛意識中是想接近他。

          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(5)

          隨筆檔案

          文章分類

          文章檔案

          相冊

          收藏夾

          J2EE

          java技術(shù)網(wǎng)站

          Linux

          平時常去的網(wǎng)站

          數(shù)據(jù)庫

          電影網(wǎng)站

          網(wǎng)站設(shè)計

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 临桂县| 巴青县| 武宣县| 高州市| 仁布县| 额尔古纳市| 城步| 大洼县| 宿州市| 呼玛县| 开封市| 社旗县| 莆田市| 青浦区| 连山| 光山县| 石景山区| 修文县| 安乡县| 嘉兴市| 阳原县| 嘉峪关市| 南安市| 安国市| 信阳市| 贵州省| 满洲里市| 达日县| 中牟县| 夹江县| 和硕县| 赤城县| 迁安市| 宁国市| 湘阴县| 万宁市| 长垣县| 九台市| 余姚市| 武安市| 洪雅县|