Detached From Goldengate Capture — Ogg Capture Client Successfully
Resource limits
Internal errors
User session termination
This is the most common and benign cause. When you issue a STOP EXTRACT command, the Extract process performs a sequence of cleanup activities: Resource limits
Verdict: Expected behavior. No action required.
If you want to reattach later:
oggadmin> ATTACH CAPTURE <capture_name> CLIENT <client_name>
Or, if removing permanently, delete the capture client. Internal errors
To prevent premature detachment in quiet systems, inject a heartbeat table:
INSERT INTO heartbeat (ts) VALUES (SYSTIMESTAMP);
COMMIT;
Run this every 5 minutes via a scheduled job. This keeps the capture client active without idle timeout.
While the message says successfully, there is a nuance. In rare edge cases, an abnormal termination (e.g., KILL -9 on the extract process, or a database session timeout) will not produce this message. However, if the database's LogMining server detects the client is dead and performs a cleanup, it might log a variation. But the standard successfully detached suggests a polite, application-level goodbye. User session termination
In Oracle Integrated Capture mode, if the Extract is idle for an extended period (defined by database resource manager settings), the database server may detach the client session to free up resources. While the Extract process remains running on the OS level, the database session is detached. OGG will typically attempt to re-attach automatically when new data arrives.
Use the following query to see how long reattachment takes:
ggsci> STATS EXTRACT <extract_name>, TOTAL
Compare lag before and after the detachment. Reattachment should take < 2 seconds. If longer, check database load.
If an extract crashes and does not detach gracefully, you may see a database session lingering:
-- In the database:
SELECT * FROM V$LOGMNR_PROCESSES;
If a mining server exists for an extract that is no longer running, remove it:
-- In GGSCI (if extract is gone or recreated):
REGISTER EXTRACT ext_sales, DATABASE;
-- Or in SQL:
EXEC DBMS_LOGMNR.REMOVE_LOGMNR_SESSION;