中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

數據庫日志記錄模式有哪些

發布時間:2021-11-10 14:55:00 來源:億速云 閱讀:371 作者:iii 欄目:關系型數據庫

本篇內容介紹了“數據庫日志記錄模式有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

一、日志記錄模式(LOGGING 、FORCE LOGGING 、NOLOGGING)

    1.三者的含義

        LOGGING:當創建一個數據庫對象時將記錄日志信息到聯機重做日志文件。LOGGING實際上是對象的一個屬性,用來表示在創建對象時是否記錄REDO日志,包括在做DML時是否記錄REDO日志。一般表上不建議使用NOLOGGING,在創建索引或做大量數據導入時,可以使用NOLOGGING 。

        FORCE LOGGING:簡言之,強制記錄日志,即對數據庫中的所有操作都產生日志信息,并將該信息寫入到聯機重做日志文件。

        NOLOGGING:正好與LOGGING、FORCE LOGGING 相反,盡可能的記錄最少日志信息到聯機日志文件。

        FORCE LOGGING可以在數據庫級別、表空間級別進行設定、而LOGGING與NOLOGGING可以在數據對象級別設定。

        在使用DATA GUARD 時,要求使用強制記錄日志模式。注:FORCE LOGGING并不比一般的LOGGING記錄的日志多,數據庫在FORCE LOGGING

        狀態下,NOLOGGING選項將無效,因為NOLOGGING將破壞DATAGUARD的可恢復性.FORCE LOGGING強制數據庫在任何狀態下必須記錄日志。

    2.與歸檔模式及非歸檔模式之間的關系

        日志記錄模式與歸檔模式之間并不能等同,歸檔模式是指對系統產生的日志是否進行歸檔或不歸檔。

        歸檔模式下,將日志記錄到日志文件,并進行歸檔。非歸檔模式下,同樣將日志記錄到日志文件,只不過不歸檔而已,容易丟失日志。

        日志的記錄模式則不論是否處于歸檔或非歸檔,可以對日志進行記錄,強制記錄,或少記錄日志。

        歸檔模式中的LOGGING或FORCE LOGGING 支持介質恢復,而NOLOGGING 模式不支持介質恢復。

        基于NOLOGGING模式操作所產生的日志遠小于LOGGING模式產生的日志,即NOLOGGING模式最小化日志記錄。

    3.優先級別:

        當數據庫使用FORCE LOGGING時,具有最高優先級別,其次是表空間級別的FORCE LOGGING。即是當一個對象指定NOLOGGING時,而表空間或數據庫級別的日志模式為FORCE LOGGING,則該選項不起作用,直到表空間或數據庫級別的FORCE LOGGING解除。

        一般建議將整個數據庫設置為FORCE LOGGING或基于表空間級別設定FORCE LOGGING,而不建議兩者都設置為FORCE LOGGING。

        當數據庫或表空間使用非強制日志模式時,則日記記錄優先級別由低到高為:數據庫、表空間、數據對象

二、三者的使用情況

    1.LOGGING模式

        這是日志記錄的缺省模式,無論數據庫是否處于歸檔模式,這并不改變表空間與對象級別上的缺省的日志記錄模式。

        對于臨時表空間將不記錄日志到聯機重做日志文件。

    2.NOLOGGING模式

        此模式不是不記錄日志,而是最小化日志產生的數量,通常在下列情況下使用NOLOGGING

            SQL*Loader in direct mode

            INSERT /*+APPEND*/ ...

            CTAS

            ALTER TABLE statements (move/add/split/merge partitions)

            CREATE INDEX

            ALTER INDEX statements (move/add/split/merge partitions)

        NOLOGGING與表模式,插入模式,數據庫運行模式(archived/unarchived)的關系:

        下面僅說明使用append方式插入數據時日志產生的情況,如使用下面的方式進行插入

            insert /*+append+*/ into tb_name select colnam1,colname2 from table_name;

        數據庫處于歸檔模式

            當表模式為logging狀態時,無論是否使用append模式,都會生成redo.當表模式為nologging狀態時,只有append模式,不會生成redo。

        數據庫處于非歸檔模式

            無論是在logging還是nologing的模式下,append的模式都不會生成redo,而no append模式下都會生成redo。   

    2.FORCE LOGGING模式

        設定數據庫為Force Logging模式后,數據庫將會記錄除臨時表空間或臨時回滾段外所有的操作,而忽略類似NOLOGGING之類的指定參數。

        通過下面的操作來修改

            ALTER DATABASE FORCE LOGGING;

            ALTER TABLESPACE tablespace_name FORCE LOGGING;

        取消FORCE LOGGING模式

            ALTER DATABASE NO FORCE LOGGING;

            ALTER TABLESPACE tablespace_name NO FORCE LOGGING;

    3.查看不同級別的日志模式

        查看數據庫級別日志的歸檔模式、記錄模式 

        SQL> select log_mode,force_logging from v$database;

        LOG_MODE     FORCE_LOGGING

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

        ARCHIVELOG   NO

        查看表空間級別的日志記錄模式

        SQL> select tablespace_name,logging,force_logging from dba_tablespaces;

        TABLESPACE_NAME LOGGING   FORCE_LOGGING

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

        SYSTEM          LOGGING   NO

        UNDOTBS1        LOGGING   NO

        SYSAUX          LOGGING   NO

        TEMP            NOLOGGING NO

        USERS           LOGGING   NO   

        查看對象級別的日志記錄模式

        scott@ORCL> select table_name,logging from user_tables;

        TABLE_NAME                     LOG

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

        TB_A                           YES

        TB_B                           YES

    4.日志記錄模式的轉換

        a.數據庫從非強制日子模式切換到強制日志模式

            sys@ORCL> alter database force logging;     

        b.數據庫從強制日志模式切換到非強制日志模式

            sys@ORCL> alter database no force logging;

        c.表空間級別從強制日志模式切換到非強制日志模式

            sys@ORCL> alter tablespace no force logging;

        d.表空間級別從非強制日志模式切換到強制日志模式

            sys@ORCL> alter tablespace no force logging;

        e.對象級別日志記錄模式

            sys@ORCL> alter table tb_a nologging;     --不記錄日志模式

            sys@ORCL> alter table tb_a logging;       --采用日志記錄模式

三、LOB段上有關NOLOGGING與LOGGING的情況

    計算所有LOB的大小:

       SELECT SUM(BYTES)/1024/1024/1024 as LOB_Size

       FROM user_segments 

       WHERE segment_type='LOBSEGMENT';

    計算所有nologging的大小

        SELECT SUM(s.BYTES)/1024/1024/1024 as Nologging_size

        FROM user_segments s,user_lobs l

        WHERE s.segment_type='LOBSEGMENT'

        AND l.LOGGING='NO' AND l.SEGMENT_NAME=s.SEGMENT_NAME;

    計算LOB段上nologging/logging的數量

        SELECT COUNT(*) FROM user_lobs WHERE logging='NO';

        SELECT COUNT(*) FROM user_lobs WHERE logging='YES';

四、IMPDP時不寫redo

    1.關閉force logging

     alter database no force logging;

    2.關閉表logging屬性

     alter table scott.t_test nologging;

    3.nologfile=Y導入

     impdp '\/ as sysdba\' dumpfile=xxx.dmp tables=scott.t_test NOLOGFILE=Y 

“數據庫日志記錄模式有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿拉善左旗| 建瓯市| 岢岚县| 莱阳市| 沂南县| 当涂县| 都安| 砚山县| 资兴市| 呼和浩特市| 佛教| 长顺县| 文成县| 称多县| 盱眙县| 扎囊县| 宜黄县| 桐柏县| 长沙市| 关岭| 建阳市| 大冶市| 武穴市| 贵南县| 克东县| 缙云县| 崇明县| 兴化市| 闻喜县| 财经| 息烽县| 思南县| 新余市| 剑阁县| 新泰市| 安吉县| 长武县| 邵东县| 额尔古纳市| 长治市| 凉城县|