Oracle的實體儲存體結構,oracle實體儲存體

來源:互聯網
上載者:User

Oracle的實體儲存體結構,oracle實體儲存體

         Oracle資料庫的體繫結構是從某一角度來分析資料庫的組成,工作過程以及資料庫如何管理和組織資料的,主要包括實體儲存體結構,邏輯儲存結構,記憶體結構以及進程結構。

Oracle的實體儲存體結構:

Oracle實體儲存體結構主要包括三種類型的物理檔案,分別是資料檔案(*.dbf),控制檔案(*.ctl)和重做記錄檔(*.log)。

1. 資料檔案

        資料檔案主要是儲存資料的檔案。例如,資料文儲存的表的記錄和索引。在這些資料檔案中,如果使用者頻繁的訪問某些資料,那麼這些資料就會被儲存在記憶體的緩衝區中。當對這些資料進行讀取時,Oracle首先會從記憶體de緩衝區中找到相關的資料資訊。如果記憶體的緩衝區中不存在相關的資料,則從資料庫檔案中讀取資料,然後存放到記憶體的資料緩衝區中,以供查詢時使用。這種資料的存取方式不僅可以減少磁碟的I/O操作,還可以提高系統的相應效能。

         如果需要瞭解資料檔案的資訊可以通過查詢資料字典視圖DBA_DATA_FILES和V$DATAFILE。首先通過DESC命令來瞭解一下資料字典視圖DBA_DATA_FILES和V$DATAFILE的結構,資料字典視圖DBA_DATA_FILES的結構如下:

SQL> DESCDBA_DATA_FILES;

 名稱                                是否為空白? 類型

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

 FILE_NAME                                   VARCHAR2(513)

 FILE_ID                                         NUMBER

 TABLESPACE_NAME                  VARCHAR2(30)

 BYTES                                         NUMBER

 BLOCKS                                       NUMBER

 STATUS                                       VARCHAR2(9)

 RELATIVE_FNO                           NUMBER

 AUTOEXTENSIBLE                      VARCHAR2(3)

 MAXBYTES                                   NUMBER

 MAXBLOCKS                                 NUMBER

 INCREMENT_BY                           NUMBER

 USER_BYTES                               NUMBER

 USER_BLOCK                               NUMBER

 ONLINE_STATUS                          VARCHAR2(7)

在上述的結果中,FILE_NAME表示資料檔案的名稱以及存放的路徑;FILE_ID表示資料檔案在資料庫中的ID號;TABLESPACE_NAME表示資料檔案對應的資料表空間名;BYTES表示的是資料檔案的大小;BLOCKS表示資料文

件所佔用的資料區塊;STATUS表示資料檔案的狀態;AUTOEXTENSIBLE表示資料檔案是否可擴充。資料字典

視圖V$DATAFILE記錄了資料檔案的動態資訊,其結構如下: 

SQL> DESCV$DATAFILE;

 名稱                          是否為空白? 類型

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

 FILE#                                                 NUMBER

 CREATION_CHANGE#                     NUMBER

 CREATION_ TI                                  DATE

 TS#                                                    NUMBER

 RFILE#                                               NUMBER

 STATUS                                            VARCHAR2(7)

 ENABLED                                          VARCHAR2(10)

 CHECKPOINT_CHAN                        NUMBER

 CHECKPOINT_TIME                         DATE

 UNRECOVERABLE_CHANGE#        NUMBER

 UNRECOVERABLE_TIME                 DATE

 LAST_CHANGE#                               NUMBER

 LAST_TIME                                        DATE

 OFFLINE_CHANGE#                         NUMBER

 ONLINE_CHANGE#                           NUMBER

 ONLINE_TIME                                   DATE

 BYTES                                               NUMBER

 BLOCKS                                            NUMBER

 CREATE_BYTES                              NUMBER

 BLOCK_SIZE                                    NUMBER

 NAME                                                VARCHAR2(513)

 PLUGGED_IN                                   NUMBER

 BLOCK1_OFFSET                            NUMBER

 AUX_NAME                                        VARCHAR2(513)

 FIRST_NONLOGGED_SCN                  NUMBER

 FIRST_NONLOGGED_TIME                 DATE

 FOREIGN_DBID                                      NUMBER

 FOREIGN_CREATION_CHANGE#             NUMBER

 FOREIGN_CREATION_TIME                  DATE

 PLUGGED_READONLY                         VARCHAR2(3)

 PLUGIN_CHANGE#                               N MBER

 PLUGIN_RESETLOGS_CHANGE#             NUMBER

 PLUGIN_RESETLOGS_TIME                 DATE

 CON_ID                                                  NUMBER

            在上述的結果中FILE#表示存放資料檔案的編號;STATUS表示資料檔案的狀態;CHECKPOINT_CHANGE#表示資料檔案的同步號,隨著系統的運行自動修改,以鑑效組資料檔案的同步;BYTES表示資料檔案的大小;BLOCKS表示資料檔案所佔用的資料區塊數;NAME表示資料檔案的名稱以及存放的路徑。

2. 控制檔案

           控制檔案是一個很小的二進位檔案,主要包含與關於資料庫物理結構的重要訊息,存放資料庫中的資料檔案和記錄檔的資訊。

           控制檔案對於資料庫的成功啟動和正常運行至關重要。在載入資料庫時必須先找到資料庫的控制檔案。如果控制檔案正常,執行個體才能載入並開啟資料庫。但是如果控制檔案中記錄了錯誤的資訊,或者執行個體無法找到一個可用的控制檔案,資料庫將無法載入,當然也無法開啟。

           一個Oracle資料庫通常包含有多個控制檔案,在資料庫啟動並執行過程中,Oracle資料庫需要不斷的更新控制檔案,因此控制檔案必須在整個資料庫開啟期間始終保持可用狀態。如果某種原因導致控制檔案不可用,那麼資料庫將會崩潰。

控制檔案的資訊可以通過資料字典視圖V$CONTROLFILE來瞭解,其結構如下:

SQL> DESC V$CONTROLFILE;

 名稱                               是否為空白? 類型

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

 STATUS                                         VARCHAR2(7)

 NAME                                             VARCHAR2(513)

 IS_RECOVERY_DEST_FILE         VARCHAR2(3)

 BLOCK_SIZE                                  NUMBER

 FILE_SIZE_BLKS                            NUMBER

 CON_ID                                           NUMBER

        在上述的結果中,STATUS表示控制檔案的狀態;NAME表示控制檔案的名稱以及路徑的資訊。例如查詢控制檔案的名稱以及路徑資訊,如下:

SQL> SELECT NAME FROM V$CONTROLFILE;

NAME

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

D:\ORACLE\ORADATA\ORACLE12C\CONTROL01.CTL

D:\ORACLE\ORADATA\ORACLE12C\CONTROL02.CTL

        從上述的結果可以看出,Oracle一般會預設建立兩個包含相同資訊的控制檔案。其目的是為了當其中一個控制檔案受損時可以調用另一個控制檔案繼續工作。

3. 重做記錄檔

       重做記錄檔即日至檔案,主要記錄使用者對資料庫的操作資訊。記錄檔是資料庫系統中最重要的檔案之一,通過記錄檔可以保證資料庫的安全,也可以實現資料庫的備份與恢複。一旦記錄檔受損,那麼資料庫可能無法正常運行。

       為了確保日誌的安全,在實際的應用中,允許對記錄檔進行鏡像,記錄檔與其鏡像檔案記錄同樣的日誌資訊,他們構成一個記錄檔組,同一個組中的記錄檔最好存放在不同的磁碟中,以便可以保證一個記錄檔受損時,還有其他的記錄檔提供日誌資訊。

通過資料字典V$LOG,可以瞭解系統當前正在使用哪個記錄檔組,如下:

SQL>SELECT GROUP#,MEMBERS,STATUS FROM V$LOG;

    GROUP#   MEMBERS STATUS

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

         1         1 INACTIVE

         2          1 CURRENT

         3          1 INACTIVE

         4          2 INACTIVE

          在上述的結構中,如果STATUS欄位的值為CURRENT,則表示當前系統正在使用該欄位對應的記錄檔組。

當一個記錄檔組的空間被佔用完之後,Oracle系統會自動轉換到另一個記錄檔組,不過,管理員可以使用ALTER STSTEM命令驚醒手動切換記錄檔。如下:

SQL> ALTER SYSTEM SWITCH LOGFILE;

系統已更改。

重新查詢資料字典V$LOG,如下:

SQL> SELECT GROUP#,MEMBERS,STATUS FROMV$LOG;

   GROUP#    MEMBERS STATUS

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

         1          1 INACTIVE

        2          1 ACTIVE

        3          1 CURRENT

        4          2 INACTIVE

從上述的結果看,系統當前啟動並執行記錄檔組已經改變。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.