Oracle控制文件、數據文件、臨時文件總結筆記

一.控制文件(Control Files)

1.控制文件的作用

控制文件在Oracle數據庫中扮演着很重要的角色,沒有控制文件(或者控制文件損壞了),運行着的實例立即崩潰,關閉着的死活打不開,你以爲你是誰,可以說,控制文件一旦損壞,數據庫必然down了。Oracle數據庫實例啓動過程中,當啓動到unmount時,此時只是在內存中爲Oracle實例分配了實例空間,然後如果繼續要啓動到mount狀態,這個時候控制文件就閃亮登場了,因爲Oracle要依據控制文件找到數據文件跟重做日誌文件的路徑,確定找到了再進去mount狀態,至於打開數據庫就是確定這些文件都一致,沒有問題的話就能打開了。

2.控制文件包括了哪些重要內容

控制文件包括了很多重要的信息,比如數據庫的數據文件、重做日誌文件、數據庫的名稱、數據庫創建信息、表空間信息、數據文件的狀態、日誌文件信息、備份信息、檢查點信息等

3.控制文件的性質

控制文件是一個2進制文件,不可以直接通過文本編輯器進行編寫,這個文件由Oracle自己進行維護,Oracle建議控制文件至少有兩份冗餘,並且放在不同的磁盤中,這樣能夠避免一個磁盤的損壞,造成整個控制文件都丟失的情況,因爲他還有一個兄弟健在,儘管一個壞了,數據庫還是得down,但是有一個在的話,至少我恢復起來要快不少。

4.查看控制文件

SQL> show parameter control_files;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      /opt/oracle/oradata/orcl/control01.ctl, /opt/oracle/oradata/orcl/control02.ctl,                                             
                                                       /opt/oracle/oradata/orcl/control03.ctl

也可以通過 v$controlfile

SQL> desc v$controlfile;
Name                  Type          Nullable Default Comments
--------------------- ------------- -------- ------- --------
STATUS                VARCHAR2(7)   Y                        
NAME                  VARCHAR2(513) Y                        
IS_RECOVERY_DEST_FILE VARCHAR2(3)   Y                        
BLOCK_SIZE            NUMBER        Y                        
FILE_SIZE_BLKS        NUMBER        Y   

SQL> col name for a30
SQL> select * from v$controlfile;

STATUS  NAME                           IS_RECOVERY_DEST_FILE   BLOCK_SIZE   FILE_SIZE_BLKS
------- ------------------------------ --------------------- ---------- --------------
        /opt/oracle/oradata/orcl/contr NO                                    16384                492
        ol01.ctl                                                       

        /opt/oracle/oradata/orcl/contr NO                                    16384                492
        ol02.ctl                                                       

        /opt/oracle/oradata/orcl/contr NO                                    16384                492
        ol03.ctl                                                        

默認控制文件的塊大小爲16K


二.數據文件(Data Files)

1.數據文件的作用

數據文件當然是用來存儲實際數據的啦,數據文件是存儲數據的物理概念,我們還有一個更大的邏輯概念,叫做表空間,表空間跟數據文件又是一個什麼樣的關係呢?簡單的說就是一個表空間至少包含可一個數據文件,創建數據庫對象的時候指定的是使用的表空間,所以就不難理解爲什麼一個對象(比如一張大表)可以跨越多個數據文件了。

2.數據文件的狀態

表空間可以置爲offline、online、readonly、readwrite,數據文件也可以置爲offline、online,不過這也是有限制的,比如你不可以把system表空間offline,你當然也不能把system表空間的數據文件offline,如果連system表空間的數據文件都不工作了,那大家都可以一邊玩去了。

3.查看數據文件的信息

SQL> col name for a30
SQL> select file#,name,status from v$datafile;

     FILE# NAME                                STATUS
---------- ------------------------------ -------
         1 /opt/oracle/oradata/orcl/syste SYSTEM
           m01.dbf                       

         2 /opt/oracle/oradata/orcl/gdyx0 ONLINE
           3.dbf                         

         3 /opt/oracle/oradata/orcl/sysau ONLINE
           x01.dbf                       

         4 /opt/oracle/oradata/orcl/users ONLINE
           01.dbf                        

         5 /opt/oracle/oradata/orcl/gdyx. ONLINE
           dbf                           

         6 /data1/dbf/gdyx05.dbf          ONLINE
         7 /opt/oracle/oradata/orcl/gdyx2 ONLINE
           .dbf                          

         8 /data1/dbf/UNDOTBS2.DBF        ONLINE
         9 /data1/dbf/gdyx04.dbf          ONLINE
        10 /data1/dbf/undotbs01_01.dbf    ONLINE
        11 /data1/dbf/system02.dbf        SYSTEM
        12 /data1/dbf/SYSAUX02.dbf        ONLINE

12 rows selected

4.修改數據文件的狀態

兩種方式:
比如我現在要把上面查到的用紅色標記了的數據文件offline

SQL>alter database datafile '/data1/dbf/gdyx05.dbf' offline;

這裏實際我就沒試了,肯定可以,因爲我是在備份庫上做的測試,儘管是備份庫,那也是公司的東西,要是出問題了,屌絲擔當不起(O(∩_∩)O~)

也可以直接指定文件號

alter database datafile 6 offline;

三.臨時文件(Temp Files)

1.臨時文件一些特點
臨時文件不是臨時存在的文件,而是臨時表空間對應的數據文件,這個文件不是一用完就刪除,而是指這個文件存儲的對象是屬於臨時存在的對象。臨時文件主要用於大量的排序的時候,如果不能在內存中進行排序,那麼就會將數據轉移到臨時文件中作爲中轉。

2.注意的地方
臨時表空間是必須處於nologging狀態的,所以臨時文件也是處於nologging狀態的,臨時表空間的數據文件在分配存儲空間的時候與普通表空間的數據文件並不相同,這些臨時文件不需要格式化,初建的時候只是指定了大小,而沒有實際的佔用。臨時表空間中的數據文件的空間在使用後並不會主動的釋放,因此數據庫在使用一段時間後,臨時表空間總是看起來是滿的,但是實際上可能根本就沒有使用,可以通過下面的動態性能視圖查看臨時表空間的實際佔用情況

select blocks * 你的block的大小(一般是8k) from v$sort_usage;

3.創建臨時表空間

create temporary tablespace temp01 tempfile '......' size 100m;

4.給臨時表空間添加數據文件

alter tablespace temp01 add tempfile '' size 100m;

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