[20181116]18c DML 日誌優化.txt

来源:https://www.cnblogs.com/lfree/archive/2018/11/16/9968058.html
-Advertisement-
Play Games

[20181116]18c DML 日誌優化.txt1.環境:xxxxxxxx> select banner_full from v$version;BANNER_FULL Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Pro ...


[20181116]18c DML 日誌優化.txt

1.環境:
xxxxxxxx> select banner_full from v$version;
BANNER_FULL
-----------------------------------------------------------------------------
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0

2.建立測試腳本:
xxxxxxxx> create table t as select rownum id ,lpad('y',200,'y') v1,lpad('z',100,'z') v2 from dual connect by level<=100;
Table created.

xxxxxxxx> select dump('x',16),dump('y',16),dump('z',16) from dual ;
DUMP('X',16)                     DUMP('Y',16)                     DUMP('Z',16)
-------------------------------- -------------------------------- --------------------------------
Typ=96 Len=1: 78                 Typ=96 Len=1: 79                 Typ=96 Len=1: 7a

xxxxxxxx> @ viewsess redo%size
NAME                               STATISTIC#          VALUE        SID
---------------------------------- ---------- -------------- ----------
redo size                                 293            684        258
redo size for lost write detection        295              0        258
redo size for direct writes               296              0        258
redo write size count (   4KB)            321              0        258
redo write size count (   8KB)            322              0        258
redo write size count (  16KB)            323              0        258
redo write size count (  32KB)            324              0        258
redo write size count (  64KB)            325              0        258
redo write size count ( 128KB)            326              0        258
redo write size count ( 256KB)            327              0        258
redo write size count ( 512KB)            328              0        258
redo write size count (1024KB)            329              0        258
redo write size count (inf)               330              0        258
IMU Redo allocation size                  736              0        258
14 rows selected.

--//建立測試腳本a.txt
column member new_value v_member
column member noprint
set numw 12
alter system switch logfile ;
--//alter system archive log current;
--//12c以上不允許在pluggable database執行這條命令.註這個庫沒有打開歸檔,alter system archive log current;會報錯.
--//採用alter system switch logfile ;.
SELECT  member FROM v$log a, v$logfile b WHERE a.group#(+) = b.group# and a.STATUS='CURRENT' and rownum=1;

column curr1 new_value v_curr1
select current_scn curr1 from v$database;

--//以下操作DML內容:
update t set v1=lpad('y',200,'y') ,v2=lpad('z',100,'z');
commit ;

exec dbms_session.sleep(3);

column curr2 new_value v_curr2
select current_scn curr2 from v$database;

prompt exec DBMS_LOGMNR.START_LOGMNR(STARTSCN => &&v_curr1 ,ENDSCN  => &&v_curr2 ,OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + DBMS_LOGMNR.CONTINUOUS_MINE);
prompt alter system dump logfile '&&v_member' scn min &&v_curr1 scn max &&v_curr2;
alter system dump logfile '&&v_member' scn min &&v_curr1 scn max &&v_curr2;

--//執行腳本a.txt:
xxxxxxxx> @ a.txt
System altered.
       CURR1
------------
  1336662128
100 rows updated.

Commit complete.

PL/SQL procedure successfully completed.
       CURR2
------------
  1336662131

exec DBMS_LOGMNR.START_LOGMNR(STARTSCN =>   1336662128 ,ENDSCN  =>   1336662131 ,OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + DBMS_LOGMNR.CONTINUOUS_MINE)
alter system dump logfile '+DATA/ORCLCDB/ONLINELOG/group_2.264.985030477' scn min   1336662128 scn max   1336662131

System altered.

xxxxxxxx> @ viewsess redo%size
NAME                               STATISTIC#          VALUE          SID
---------------------------------- ---------- -------------- ------------
redo size                                 293          23692          258
redo size for lost write detection        295              0          258
redo size for direct writes               296              0          258
redo write size count (   4KB)            321              0          258
redo write size count (   8KB)            322              0          258
redo write size count (  16KB)            323              0          258
redo write size count (  32KB)            324              0          258
redo write size count (  64KB)            325              0          258
redo write size count ( 128KB)            326              0          258
redo write size count ( 256KB)            327              0          258
redo write size count ( 512KB)            328              0          258
redo write size count (1024KB)            329              0          258
redo write size count (inf)               330              0          258
IMU Redo allocation size                  736          49012          258

14 rows selected.

--//日誌大小 23692-648 = 23044 ,大約22K.
--//如果你查詢轉儲文件,你可以發現一個奇特的信息,你根本找不到yyyy,zzzz相關的字元串信息.
--//也就是如果dml欄位前後兩者一樣,日誌根本沒有記錄.

3.修改dml語句重覆測試:
$ cat a.txt
..
update t set v1=lpad('z',200,'z') ,v2=lpad('y',100,'y');
commit ;
...

--//執行a.txt
xxxxxxxx> @ viewsess redo%size
NAME                               STATISTIC#          VALUE        SID
---------------------------------- ---------- -------------- ----------
redo size                                 293            684        258
redo size for lost write detection        295              0        258
redo size for direct writes               296              0        258
redo write size count (   4KB)            321              0        258
redo write size count (   8KB)            322              0        258
redo write size count (  16KB)            323              0        258
redo write size count (  32KB)            324              0        258
redo write size count (  64KB)            325              0        258
redo write size count ( 128KB)            326              0        258
redo write size count ( 256KB)            327              0        258
redo write size count ( 512KB)            328              0        258
redo write size count (1024KB)            329              0        258
redo write size count (inf)               330              0        258
IMU Redo allocation size                  736              0        258
14 rows selected.

xxxxxxxx> @ a.txt
System altered.
       CURR1
------------
  1336662429
100 rows updated.
Commit complete.

PL/SQL procedure successfully completed.
       CURR2
------------
  1336662432

exec DBMS_LOGMNR.START_LOGMNR(STARTSCN =>   1336662429 ,ENDSCN  =>   1336662432 ,OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + DBMS_LOGMNR.CONTINUOUS_MINE)
alter system dump logfile '+DATA/ORCLCDB/ONLINELOG/group_3.262.985030477' scn min   1336662429 scn max   1336662432
System altered.

xxxxxxxx> @ viewsess redo%size
NAME                               STATISTIC#          VALUE          SID
---------------------------------- ---------- -------------- ------------
redo size                                 293          73948          258
redo size for lost write detection        295              0          258
redo size for direct writes               296              0          258
redo write size count (   4KB)            321              0          258
redo write size count (   8KB)            322              0          258
redo write size count (  16KB)            323              0          258
redo write size count (  32KB)            324              0          258
redo write size count (  64KB)            325              0          258
redo write size count ( 128KB)            326              0          258
redo write size count ( 256KB)            327              0          258
redo write size count ( 512KB)            328              0          258
redo write size count (1024KB)            329              0          258
redo write size count (inf)               330              0          258
IMU Redo allocation size                  736          36236          258
14 rows selected.

--//日誌大小73948-648 = 73300,至少72K,比原來增加不少.
--//你可以看到如下:
REDO RECORD - Thread:1 RBA: 0x0008b3.0000002c.0134 LEN: 0x00e0 VLD: 0x01 CON_UID: 1
SCN: 0x000000004fabd870 SUBSCN:  2 11/16/2018 10:30:36
CHANGE #1 CON_ID:1 TYP:0 CLS:24 AFN:4 DBA:0x010008de OBJ:4294967295 SCN:0x000000004fabd870 SEQ:96 OP:5.1 ENC:0 RBL:0 FLG:0x0000
ktudb redo: siz: 68 spc: 866 flg: 0x0022 seq: 0x0ba1 rec: 0x69
            xid:  0x0004.004.00002086
ktubu redo: slt: 4 rci: 104 opc: 11.1 objn: 104890 objd: 104890 tsn: 0
Undo type:  Regular undo       Undo type:  Last buffer split:  No
Tablespace Undo:  No
             0x00000000
KDO undo record:
KTB Redo
op: 0x02  ver: 0x01
compat bit: 4 (post-11) padding: 1
op: C  uba: 0x010008de.0ba1.68
KDO Op code: LKR row dependencies Disabled
ktudb redo: siz: 68 spc: 656 flg: 0x0022 seq: 0x0ba1 rec: 0x6c
op: F  xid:  0x0006.00d.00002131    uba: 0x010000c8.0b0c.01
Block cleanout record, scn:  0x000000004fabd99d ver: 0x01 opt: 0x02 bigscn: Y compact: Y spare: 00000000, entries follow...
  itli: 3  flg: (opt=2 whr=1)  scn:  0x000000004fabd871
Array Update of 20 rows:
tabn: 0 slot: 0(0x0) flag: 0x2c lock: 1 ckix: 0
ncol: 3 nnew: 2 size: 0
KDO Op code:  21 row dependencies Disabled
  xtype: XAxtype KDO_KDOM2 flags: 0x00000080  bdba: 0x0041af39  hdba: 0x0041af38
itli: 1  ispac: 0  maxfr: 4863
vect = 3
col  1: [200]
 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a
 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a
 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a
 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a
 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a
 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a
 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a
 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a 7a
col  2: [100]
 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79
 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79
 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79
 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79
tabn: 0 slot: 1(0x1) flag: 0x2c lock: 1 ckix: 0

4.修改dml語句重覆測試:
$ cat a.txt
..
update t set v1=lpad('z',200,'z') ,v2=lpad('x',100,'x');
commit ;
...

--//v1欄位修改前後一樣,v2欄位前後不同,開始是lpad('y',100,'y')後面變成lpad('x',100,'x').

xxxxxxxx> @ viewsess redo%size
NAME        STATISTIC#          VALUE        SID
----------- ---------- -------------- ----------
redo size          293            684        258
....

xxxxxxxx> @ a.txt
System altered.
       CURR1
------------
  1336662656
100 rows updated.
Commit complete.
PL/SQL procedure successfully completed.
       CURR2
------------
  1336662659

exec DBMS_LOGMNR.START_LOGMNR(STARTSCN =>   1336662656 ,ENDSCN  =>   1336662659 ,OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + DBMS_LOGMNR.CONTINUOUS_MINE)
alter system dump logfile '+DATA/ORCLCDB/ONLINELOG/group_1.265.985030477' scn min   1336662656 scn max   1336662659
System altered.

xxxxxxxx> @ viewsess redo%size
NAME      STATISTIC#          VALUE          SID
--------- ---------- -------------- ------------
redo size        293          48340          258
....

--//日誌大小48340-648 = 47692,47K上下.
--//檢查跟蹤文件你可以發現:
REDO RECORD - Thread:1 RBA: 0x0008b5.0000005f.0040 LEN: 0x01d0 VLD: 0x01 CON_UID: 1
SCN: 0x000000004fabda80 SUBSCN:1176 11/16/2018 10:44:53
CHANGE #1 CON_ID:1 TYP:0 CLS:18 AFN:4 DBA:0x01000087 OBJ:4294967295 SCN:0x000000004fabda80 SEQ:27 OP:5.1 ENC:0 RBL:0 FLG:0x0000
ktudb redo: siz: 188 spc: 3282 flg: 0x0022 seq: 0x0b4d rec: 0x1b
            xid:  0x0001.002.000020c9
ktubu redo: slt: 2 rci: 26 opc: 11.1 objn: 104890 objd: 104890 tsn: 0
Undo type:  Regular undo       Undo type:  Last buffer split:  No
Tablespace Undo:  No
             0x00000000
KDO undo record:
KTB Redo
op: 0x02  ver: 0x01
compat bit: 4 (post-11) padding: 1
op: C  uba: 0x01000087.0b4d.1a
KDO Op code: URP row dependencies Disabled
  xtype: XA flags: 0x00000000  bdba: 0x0041af3d  hdba: 0x0041af38
itli: 2  ispac: 0  maxfr: 4863
tabn: 0 slot: 7(0x7) flag: 0x2c lock: 0 ckix: 0
ncol: 3 nnew: 1 size: 0
col  2: [100]
 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79
 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79
 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79
 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79
CHANGE #2 CON_ID:1 TYP:0 CLS:1 AFN:1 DBA:0x0041af3d OBJ:104890 SCN:0x000000004fabda80 SEQ:8 OP:11.5 ENC:0 RBL:0 FLG:0x0000
KTB Redo
op: 0x02  ver: 0x01
compat bit: 4 (post-11) padding: 1
op: C  uba: 0x01000087.0b4d.1b
KDO Op code: URP row dependencies Disabled
  xtype: XA flags: 0x00000000  bdba: 0x0041af3d  hdba: 0x0041af38
itli: 2  ispac: 0  maxfr: 4863
tabn: 0 slot: 7(0x7) flag: 0x2c lock: 2 ckix: 0
ncol: 3 nnew: 1 size: 0
col  2: [100]
 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78
 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78
 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78
 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78

--//沒有字元z相關內容(7a 7a).

5.總結:
--//你可以發現oracle 18c在dml下修改欄位前後如果信息不變,日誌根本沒有記錄,這樣一定程度減少日誌大小.




您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • WHERE 子句 如需有條件地從表中選取數據,可將 WHERE 子句添加到 SELECT 語句。 語法 下麵的運算符可在 WHERE 子句中使用: 引號的使用 請註意,我們在例子中的條件值周圍使用的是單引號。 SQL 使用單引號來環繞文本值(大部分資料庫系統也接受雙引號)。如果是數值,請不要使用引號 ...
  • -- 當前日期時間 select now(); select now(3);-- 保留3位毫秒數 SELECT NOW(6); -- 保留6位毫秒數 -- 當前日期和時間 至秒 select current_timestamp; select current_timestamp(3); select... ...
  • SQL SELECT DISTINCT 語句 在表中,可能會包含重覆值。這並不成問題,不過,有時您也許希望僅僅列出不同(distinct)的值。 關鍵詞 DISTINCT 用於返回唯一不同的值。 語法: ...
  • 我們都知道現在大數據很火,很多小伙伴也在跟容大老師咨詢學習大數據的方法,比如說:大數據入門應該如何學習? 對於大數據的入門學習,基礎不一樣,起點就會不一樣,今天先來說說,對於零基礎的同學想要學習大數據的方式方法吧!很多人可能感到不可思議,零基礎怎麼可能學習大數據,沒有編程基礎怎麼能入門呢?其實這個觀 ...
  • SQL SELECT 語句 SELECT 語句用於從表中選取數據。 結果被存儲在一個結果表中(稱為結果集)。 SQL SELECT 語法 ...
  • SQLServer資料庫通常都不建議進行SHRINKFILE操作,因為SHRINKFILE不當會造成一定的性能問題。 但是當進行了某些操作(例如某個超大的日誌類型表轉成分區表切換了數據文件),資料庫某個文件組中的剩餘空間占了整個磁碟的很大一部分,而且磁碟空間已經吃緊的情況下,你也許會考慮收縮一下某個 ...
  • 今天突然發現資料庫顯示為單個用戶並且,訪問速度超慢,執行以下語句解決了 USE master; GO DECLARE @SQL VARCHAR(MAX); SET @SQL='' SELECT @SQL=@SQL+'; KILL '+RTRIM(SPID) //殺掉該進程FROM master..s ...
  • 在idea和eclipse中調試hadoop中hdfs文件,之前好好的,結果突然就出現java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsByteArray(II[BI[ ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...