Home Database Mysql Tutorial 如何让 GoldenGate 在 trail 文件中记录数据库的 SCN 信息

如何让 GoldenGate 在 trail 文件中记录数据库的 SCN 信息

Jun 07, 2016 pm 03:24 PM
trail how database document Record

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

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How does Go language implement the addition, deletion, modification and query operations of the database? How does Go language implement the addition, deletion, modification and query operations of the database? Mar 27, 2024 pm 09:39 PM

Go language is an efficient, concise and easy-to-learn programming language. It is favored by developers because of its advantages in concurrent programming and network programming. In actual development, database operations are an indispensable part. This article will introduce how to use Go language to implement database addition, deletion, modification and query operations. In Go language, we usually use third-party libraries to operate databases, such as commonly used sql packages, gorm, etc. Here we take the sql package as an example to introduce how to implement the addition, deletion, modification and query operations of the database. Assume we are using a MySQL database.

How does Hibernate implement polymorphic mapping? How does Hibernate implement polymorphic mapping? Apr 17, 2024 pm 12:09 PM

Hibernate polymorphic mapping can map inherited classes to the database and provides the following mapping types: joined-subclass: Create a separate table for the subclass, including all columns of the parent class. table-per-class: Create a separate table for subclasses, containing only subclass-specific columns. union-subclass: similar to joined-subclass, but the parent class table unions all subclass columns.

iOS 18 adds a new 'Recovered' album function to retrieve lost or damaged photos iOS 18 adds a new 'Recovered' album function to retrieve lost or damaged photos Jul 18, 2024 am 05:48 AM

Apple's latest releases of iOS18, iPadOS18 and macOS Sequoia systems have added an important feature to the Photos application, designed to help users easily recover photos and videos lost or damaged due to various reasons. The new feature introduces an album called "Recovered" in the Tools section of the Photos app that will automatically appear when a user has pictures or videos on their device that are not part of their photo library. The emergence of the "Recovered" album provides a solution for photos and videos lost due to database corruption, the camera application not saving to the photo library correctly, or a third-party application managing the photo library. Users only need a few simple steps

An in-depth analysis of how HTML reads the database An in-depth analysis of how HTML reads the database Apr 09, 2024 pm 12:36 PM

HTML cannot read the database directly, but it can be achieved through JavaScript and AJAX. The steps include establishing a database connection, sending a query, processing the response, and updating the page. This article provides a practical example of using JavaScript, AJAX and PHP to read data from a MySQL database, showing how to dynamically display query results in an HTML page. This example uses XMLHttpRequest to establish a database connection, send a query and process the response, thereby filling data into page elements and realizing the function of HTML reading the database.

How to handle database connection errors in PHP How to handle database connection errors in PHP Jun 05, 2024 pm 02:16 PM

To handle database connection errors in PHP, you can use the following steps: Use mysqli_connect_errno() to obtain the error code. Use mysqli_connect_error() to get the error message. By capturing and logging these error messages, database connection issues can be easily identified and resolved, ensuring the smooth running of your application.

Detailed tutorial on establishing a database connection using MySQLi in PHP Detailed tutorial on establishing a database connection using MySQLi in PHP Jun 04, 2024 pm 01:42 PM

How to use MySQLi to establish a database connection in PHP: Include MySQLi extension (require_once) Create connection function (functionconnect_to_db) Call connection function ($conn=connect_to_db()) Execute query ($result=$conn->query()) Close connection ( $conn->close())

Full analysis of Go language file renaming operation Full analysis of Go language file renaming operation Apr 08, 2024 pm 03:30 PM

The os.Rename function is used in Go language to rename files. The syntax is: funcRename(oldpath,newpathstring)error. This function renames the file specified by oldpath to the file specified by newpath. Examples include simple renaming, moving files to different directories, and ignoring error handling. The Rename function performs an atomic operation and may only update directory entries when the two files are in the same directory. Renames may fail across volumes or while a file is in use.

Tips and practices for handling Chinese garbled characters in databases with PHP Tips and practices for handling Chinese garbled characters in databases with PHP Mar 27, 2024 pm 05:21 PM

PHP is a back-end programming language widely used in website development. It has powerful database operation functions and is often used to interact with databases such as MySQL. However, due to the complexity of Chinese character encoding, problems often arise when dealing with Chinese garbled characters in the database. This article will introduce the skills and practices of PHP in handling Chinese garbled characters in databases, including common causes of garbled characters, solutions and specific code examples. Common reasons for garbled characters are incorrect database character set settings: the correct character set needs to be selected when creating the database, such as utf8 or u

See all articles