How To: Ignore redo thread that has a status of CLOSED with HVR Capture process
Scenario:
Starting with HVR 5.3 the log reader for Oracle determines directly from the redo how many active threads there are (or were) at any point in time. Prior to version 5.3 HVR would query v$thread on the current database to determine how many threads to expect redo for. In scenarios when the number of threads changed this could lead to issues. For example if a RAC database was restored to a single instance system or cluster with fewer nodes, without cleaning up the old threads, HVR could be expecting redo for inactive threads.
Overview:
To confirm this first query the Oracle database v$thread view.
See query below
SQL> select thread#, status, instance from v$thread; THREAD# STATUS INSTANCE ---------- -------- --------------------------------------------------------------- 1 OPEN proddb 2 CLOSED proddb2
From the log file (on Windows) found under the directory C:hvrhvr_configlog<hub> hvr.out we see a message similar to:
2018-10-04T12:14:21-06:00: hub_dl_p-cap-hbprd: F_JT0400: Log scanning error F_JZ180E. An active redo file was not found for thread 2 in Primary Database when extracting Oracle compatibility versionTo report this to Technical Support, send the following; (1) The complete error message. (2) Enroll files matching .enroll or *.enroll_rev_ in $HVR_CONFIG/router/<hub>/<chn>/loc_<loc> (3) (null).
How can you instruct the HVR Capture process to ignore the closed thread?
Steps:
Step 1] In your Hub GUI under the channel definition go down to your source location group and right click and select 'New Action' and choose 'Environment'.
Use an action: Environment "/Name=HVR_ENROLL_VLOG_RESTRICT /Value=thread# in (select thread# from v$thread where status <> 'CLOSED')
Step 2] Next re-initialize and restart the capture process.