如何让 GoldenGate 在 trail 文件中记录数据库的 SCN 信息
如何让 GoldenGate 在 trail 文件中记录数据库的 SCN 信息 通常情况下,Oracle GoldenGate 的 trail 文件中是不会包含数据库的 SCN 信息的,要在 trail 文件中记录此信息,必须在 Extract 进程参数中设置 TOKENS 示例如下: --Normal extract mapping-- TABL
如何让 GoldenGate 在 trail 文件中记录数据库的 SCN 信息通常情况下,Oracle GoldenGate 的 trail 文件中是不会包含数据库的 SCN 信息的,要在 trail 文件中记录此信息,必须在 Extract 进程参数中设置 TOKENS
示例如下:
--Normal extract mapping--
TABLE scott.* ;
--To use tokens--
TABLE scott.*, tokens (tk-scn = @getenv("ORATRANSACTION", "SCN"));
设置 tokens 后 Extract 进程会在 trail 文件中写入一个 token ,其中包含 SCN 的详细信息。下面我们通过实验来详细了解一下设置 tokens 和不设置的区别。
设置 tokens 前:
GGSCI (prod.oracle.com) 1> view params ESCOTT
EXTRACT escott
SETENV (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
USERID ggs, PASSWORD register
EXTTRAIL ./dirdat/aa
TABLE scott.EMP_GGS, tokens (tk-scn = @getenv("ORATRANSACTION", "SCN"));
TABLE scott.DEPT_GGS, tokens (tk-scn = @getenv("ORATRANSACTION", "SCN"));
Logdump 15 >open ./dirdat/aa000016
Current LogTrail is /home/oracle/ggs/dirdat/aa000016
Logdump 16 >ghdr on
Logdump 17 >detail data
Logdump 18 >usertoken detail
Logdump 51 >n
___________________________________________________________________
Hdr-Ind : E (x45) Partition : . (x04)
UndoFlag : . (x00) BeforeAfter: A (x41)
RecLength : 120 (x0078) IO Time : 2013/03/21 23:31:55.000.000
IOType : 5 (x05) OrigNode : 255 (xff)
TransInd : . (x03) FormatType : R (x52)
SyskeyLen : 0 (x00) Incomplete : . (x00)
AuditRBA : 131 AuditPos : 6994960
Continued : N (x00) RecCount : 1 (x01)
2013/03/21 23:31:55.000.000 Insert Len 120 RBA 1079
Name: SCOTT.EMP_GGS
After Image: Partition 4 G s
0000 000a 0000 0000 0000 0000 1cd4 0001 0008 0000 | ....................
0004 4d49 4d49 0002 0009 0000 0005 434c 4552 4b00 | ..MIMI........CLERK.
0300 0a00 0000 0000 0000 001e de00 0400 1500 0031 | ...................1
3938 372d 3132 2d31 373a 3030 3a30 303a 3030 0005 | 987-12-17:00:00:00..
000a 0000 0000 0000 0001 3880 0006 000a ffff 0000 | ..........8.........
0000 0000 0000 0007 000a 0000 0000 0000 0000 0014 | ....................
Column 0 (x0000), Len 10 (x000a)
0000 0000 0000 0000 1cd4 | ..........
Column 1 (x0001), Len 8 (x0008)
0000 0004 4d49 4d49 | ....MIMI
Column 2 (x0002), Len 9 (x0009)
0000 0005 434c 4552 4b | ....CLERK
Column 3 (x0003), Len 10 (x000a)
0000 0000 0000 0000 1ede | ..........
Column 4 (x0004), Len 21 (x0015)
0000 3139 3837 2d31 322d 3137 3a30 303a 3030 3a30 | ..1987-12-17:00:00:0
30 | 0
Column 5 (x0005), Len 10 (x000a)
0000 0000 0000 0001 3880 | ........8.
Column 6 (x0006), Len 10 (x000a)
ffff 0000 0000 0000 0000 | ..........
Column 7 (x0007), Len 10 (x000a)
0000 0000 0000 0000 0014 | ..........
下面我们来看看在 Extract 进程参数中加入 tokens 设置后,插入一条记录在 trail 文件中的记录
GGSCI (prod.oracle.com) 3> view params escott
TABLE scott.EMP_GGS;
EXTRACT escott
SETENV (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
USERID ggs, PASSWORD register
EXTTRAIL ./dirdat/aa
TABLE scott.EMP_GGS, tokens (tk-scn = @getenv("ORATRANSACTION", "SCN"));
TABLE scott.DEPT_GGS, tokens (tk-scn = @getenv("ORATRANSACTION", "SCN"));
插入一条记录后,trail 文件切到下一队列
GGSCI (prod.oracle.com) 8> info ESCOTT,detail
EXTRACT ESCOTT Last Started 2013-03-21 23:42 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:09 ago)
Log Read Checkpoint Oracle Redo Logs
2013-03-21 23:43:34 Seqno 132, RBA 290816
SCN 0.1364750 (1364750)
Target Extract Trails:
Remote Trail Name Seqno RBA Max MB
./dirdat/aa 17 1333 5
Logdump 54 >open ./dirdat/aa000017
Current LogTrail is /home/oracle/ggs/dirdat/aa000017
Logdump 55 >ghdr on
Logdump 56 >detail data
Logdump 57 >usertoken on
Logdump 58 >usertoken detail
Logdump 59 >n
Logdump 61 >n
___________________________________________________________________
Hdr-Ind : E (x45) Partition : . (x04)
UndoFlag : . (x00) BeforeAfter: A (x41)
RecLength : 120 (x0078) IO Time : 2013/03/21 23:43:34.000.000
IOType : 5 (x05) OrigNode : 255 (xff)
TransInd : . (x03) FormatType : R (x52)
SyskeyLen : 0 (x00) Incomplete : . (x00)
AuditRBA : 132 AuditPos : 289296
Continued : N (x00) RecCount : 1 (x01)
2013/03/21 23:43:34.000.000 Insert Len 120 RBA 1079
Name: SCOTT.EMP_GGS
After Image: Partition 4 GU s
0000 000a 0000 0000 0000 0000 1cd5 0001 0008 0000 | ....................
0004 4d49 4e49 0002 0009 0000 0005 434c 4552 4b00 | ..MINI........CLERK.
0300 0a00 0000 0000 0000 001e de00 0400 1500 0031 | ...................1
3938 372d 3132 2d31 373a 3030 3a30 303a 3030 0005 | 987-12-17:00:00:00..
000a 0000 0000 0000 0001 3880 0006 000a ffff 0000 | ..........8.........
0000 0000 0000 0007 000a 0000 0000 0000 0000 0014 | ....................
Column 0 (x0000), Len 10 (x000a)
0000 0000 0000 0000 1cd5 | ..........
Column 1 (x0001), Len 8 (x0008)
0000 0004 4d49 4e49 | ....MINI
Column 2 (x0002), Len 9 (x0009)
0000 0005 434c 4552 4b | ....CLERK
Column 3 (x0003), Len 10 (x000a)
0000 0000 0000 0000 1ede | ..........
Column 4 (x0004), Len 21 (x0015)
0000 3139 3837 2d31 322d 3137 3a30 303a 3030 3a30 | ..1987-12-17:00:00:0
30 | 0
Column 5 (x0005), Len 10 (x000a)
0000 0000 0000 0001 3880 | ........8.
Column 6 (x0006), Len 10 (x000a)
ffff 0000 0000 0000 0000 | ..........
Column 7 (x0007), Len 10 (x000a)
0000 0000 0000 0000 0014 | ..........
User tokens: 15 bytes
tk-scn : 1364750
这里显示的 tk-scn : 1364750 正是我们要显示的数据库 SCN 号。
下面我们来做一个更精确的测试,我们更新一条记录,并记录插入记录前后的 SCN 号,然后
到 trail 文件中查看是否确实如此。
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
1365152
SQL> update scott.emp_ggs set ename = 'DANIEL' where empno = 7381;
1 row updated
SQL> commit;
Commit complete
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
1365155
修改记录前的数据库 SCN 为 1365152,修改后的为 1365155,那么修改记录时的 SCN 应该在二者之间:
Logdump 62 >n
___________________________________________________________________
Hdr-Ind : E (x45) Partition : . (x04)
UndoFlag : . (x00) BeforeAfter: A (x41)
RecLength : 28 (x001c) IO Time : 2013/03/21 23:53:03.000.000
IOType : 15 (x0f) OrigNode : 255 (xff)
TransInd : . (x03) FormatType : R (x52)
SyskeyLen : 0 (x00) Incomplete : . (x00)
AuditRBA : 132 AuditPos : 526352
Continued : N (x00) RecCount : 1 (x01)
2013/03/21 23:53:03.000.000 FieldComp Len 28 RBA 1333
Name: SCOTT.EMP_GGS
After Image: Partition 4 GU s
0000 000a 0000 0000 0000 0000 1cd5 0001 000a 0000 | ....................
0006 4441 4e49 454c | ..DANIEL
Column 0 (x0000), Len 10 (x000a)
0000 0000 0000 0000 1cd5 | ..........
Column 1 (x0001), Len 10 (x000a)
0000 0006 4441 4e49 454c | ....DANIEL
User tokens: 15 bytes
tk-scn : 1365154
通过 logdump 看到的是 SCN 1365154 确实介于 1365152 和 1365155 之间
http://blog.csdn.net/xiangsir/article/details/8708626

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

Go語言是一種高效、簡潔且易於學習的程式語言,因其在並發程式設計和網路程式設計方面的優勢而備受開發者青睞。在實際開發中,資料庫操作是不可或缺的一部分,本文將介紹如何使用Go語言實作資料庫的增刪改查操作。在Go語言中,我們通常會使用第三方函式庫來操作資料庫,例如常用的sql套件、gorm等。這裡以sql包為例介紹如何實作資料庫的增刪改查操作。假設我們使用的是MySQL資料庫。

Hibernate多態映射可映射繼承類別到資料庫,提供以下映射類型:joined-subclass:為子類別建立單獨表,包含父類別所有欄位。 table-per-class:為子類別建立單獨資料表,僅包含子類別特有列。 union-subclass:類似joined-subclass,但父類別表聯合所有子類別列。

蘋果公司最新發布的iOS18、iPadOS18以及macOSSequoia系統為Photos應用程式增添了一項重要功能,旨在幫助用戶輕鬆恢復因各種原因遺失或損壞的照片和影片。這項新功能在Photos應用的"工具"部分引入了一個名為"已恢復"的相冊,當用戶設備中存在未納入其照片庫的圖片或影片時,該相冊將自動顯示。 "已恢復"相簿的出現為因資料庫損壞、相機應用未正確保存至照片庫或第三方應用管理照片庫時照片和視頻丟失提供了解決方案。使用者只需簡單幾步

HTML無法直接讀取資料庫,但可以透過JavaScript和AJAX實作。其步驟包括建立資料庫連線、發送查詢、處理回應和更新頁面。本文提供了利用JavaScript、AJAX和PHP來從MySQL資料庫讀取資料的實戰範例,展示如何在HTML頁面中動態顯示查詢結果。此範例使用XMLHttpRequest建立資料庫連接,發送查詢並處理回應,從而將資料填入頁面元素中,實現了HTML讀取資料庫的功能。

PHP處理資料庫連線報錯,可以使用下列步驟:使用mysqli_connect_errno()取得錯誤代碼。使用mysqli_connect_error()取得錯誤訊息。透過擷取並記錄這些錯誤訊息,可以輕鬆識別並解決資料庫連接問題,確保應用程式的順暢運作。

如何在PHP中使用MySQLi建立資料庫連線:包含MySQLi擴充(require_once)建立連線函數(functionconnect_to_db)呼叫連線函數($conn=connect_to_db())執行查詢($result=$conn->query())關閉連線( $conn->close())

Go語言中使用os.Rename函數重新命名文件,語法為:funcRename(oldpath,newpathstring)error。此函數將oldpath指定的檔案重新命名為newpath指定的檔案。範例包括簡單重命名、移動檔案到不同目錄以及忽略錯誤處理。 Rename函數執行原子操作,在兩個檔案位於同一目錄時可能僅更新目錄項,跨磁碟區或正在使用的檔案重新命名可能會失敗。

PHP是一種廣泛應用於網站開發的後端程式語言,它具有強大的資料庫操作功能,常用於與MySQL等資料庫進行互動。然而,由於中文字元編碼的複雜性,在處理資料庫中文亂碼時常常會出現問題。本文將介紹PHP處理資料庫中文亂碼的技巧與實踐,包括常見的亂碼原因、解決方法和具體的程式碼範例。常見的亂碼原因資料庫字元集設定不正確:資料庫建立時需選擇正確的字元集,如utf8或u
