如何让 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

MySQL's position in databases and programming is very important. It is an open source relational database management system that is widely used in various application scenarios. 1) MySQL provides efficient data storage, organization and retrieval functions, supporting Web, mobile and enterprise-level systems. 2) It uses a client-server architecture, supports multiple storage engines and index optimization. 3) Basic usages include creating tables and inserting data, and advanced usages involve multi-table JOINs and complex queries. 4) Frequently asked questions such as SQL syntax errors and performance issues can be debugged through the EXPLAIN command and slow query log. 5) Performance optimization methods include rational use of indexes, optimized query and use of caches. Best practices include using transactions and PreparedStatemen

MySQL is suitable for small and large enterprises. 1) Small businesses can use MySQL for basic data management, such as storing customer information. 2) Large enterprises can use MySQL to process massive data and complex business logic to optimize query performance and transaction processing.

InnoDB effectively prevents phantom reading through Next-KeyLocking mechanism. 1) Next-KeyLocking combines row lock and gap lock to lock records and their gaps to prevent new records from being inserted. 2) In practical applications, by optimizing query and adjusting isolation levels, lock competition can be reduced and concurrency performance can be improved.

MySQL is not a programming language, but its query language SQL has the characteristics of a programming language: 1. SQL supports conditional judgment, loops and variable operations; 2. Through stored procedures, triggers and functions, users can perform complex logical operations in the database.

MySQL is an open source relational database management system, mainly used to store and retrieve data quickly and reliably. Its working principle includes client requests, query resolution, execution of queries and return results. Examples of usage include creating tables, inserting and querying data, and advanced features such as JOIN operations. Common errors involve SQL syntax, data types, and permissions, and optimization suggestions include the use of indexes, optimized queries, and partitioning of tables.

MySQL is an open source relational database management system suitable for data storage, management, query and security. 1. It supports a variety of operating systems and is widely used in Web applications and other fields. 2. Through the client-server architecture and different storage engines, MySQL processes data efficiently. 3. Basic usage includes creating databases and tables, inserting, querying and updating data. 4. Advanced usage involves complex queries and stored procedures. 5. Common errors can be debugged through the EXPLAIN statement. 6. Performance optimization includes the rational use of indexes and optimized query statements.

MySQL is chosen for its performance, reliability, ease of use, and community support. 1.MySQL provides efficient data storage and retrieval functions, supporting multiple data types and advanced query operations. 2. Adopt client-server architecture and multiple storage engines to support transaction and query optimization. 3. Easy to use, supports a variety of operating systems and programming languages. 4. Have strong community support and provide rich resources and solutions.

InnoDB's lock mechanisms include shared locks, exclusive locks, intention locks, record locks, gap locks and next key locks. 1. Shared lock allows transactions to read data without preventing other transactions from reading. 2. Exclusive lock prevents other transactions from reading and modifying data. 3. Intention lock optimizes lock efficiency. 4. Record lock lock index record. 5. Gap lock locks index recording gap. 6. The next key lock is a combination of record lock and gap lock to ensure data consistency.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Atom editor mac version download
The most popular open source editor

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

SublimeText3 Chinese version
Chinese version, very easy to use

WebStorm Mac version
Useful JavaScript development tools

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft