Recently, I’ve been doing some work with a client where tokens need to be used. It came to my attention that the basic usage of tokens is misunderstood. Let’s see if I can clear this up a bit for people reading.
In Oracle GoldenGate, tokens are a way to capture and store data in the header of the trail file (more info on trail headers here). Once a token has been defined, captured and stored in the header, it can be retrieved, on the apply side, and used in many ways to customize what information is delivered by Oracle GoldenGate.
Defining a token is pretty simple; however, keep these three points in mind:
- You define the token and associated data
- The token header in the trail file header permits up to a total of 2,000 bytes (token name, associated data, and length of data)
- Use the TOKEN option of the TABLE parameter in Extracts
In order to define a token in an extract, the definition should follow this basic syntax:
TABLE <schema>.<table>, TOKENS( SRC_CSN_TS = @GETENV(‘GGHEADER’,’COMMITTIMESTAMP’));
In the example above, the token will be populated with the timestamp of the last commit on the table it is defined against. After restarting the extract, the token (SRC_CSN_TS) will be included in the header of the trail file.
Once the trail file is shipped to the target side and read by the replicat, the token is mapped to a column in the target table.
MAP <schema>.<table>, target <schema>.<table>, COLMAP ( SRC_CSN_TS=@token(’SRC_CSN_TS’) );
Image 1, is a view of a table where I have mapped the token (SRC_CSN_TS) to a target table to keep track of the committed timestamps of a transaction on the source system.
Tokens are simple to create, use, and are a powerful feature for mapping data between environments.