@Override
    public void execute(Context context) throws Exception {
        OracleSourceFetchTaskContext sourceFetchContext = (OracleSourceFetchTaskContext) context;
        taskRunning = true;
        snapshotSplitReadTask =
                new OracleSnapshotSplitReadTask(
                        sourceFetchContext.getDbzConnectorConfig(),
                        sourceFetchContext.getOffsetContext(),
                        sourceFetchContext.getSnapshotChangeEventSourceMetrics(),
                        sourceFetchContext.getDatabaseSchema(),
                        sourceFetchContext.getConnection(),
                        sourceFetchContext.getDispatcher(),
                        split);
        SnapshotSplitChangeEventSourceContext changeEventSourceContext =
                new SnapshotSplitChangeEventSourceContext();
        SnapshotResult snapshotResult =
                snapshotSplitReadTask.execute(
                        changeEventSourceContext, sourceFetchContext.getOffsetContext());

        final StreamSplit backfillRedoLogSplit =
                createBackfillRedoLogSplit(changeEventSourceContext);
        // optimization that skip the redo log read when the low watermark equals high
        // watermark
        final boolean redoLogBackfillRequired =
                backfillRedoLogSplit
                        .getEndingOffset()
                        .isAfter(backfillRedoLogSplit.getStartingOffset());
        if (!redoLogBackfillRequired) {
            dispatchRedoLogEndEvent(
                    backfillRedoLogSplit,
                    ((OracleSourceFetchTaskContext) context).getOffsetContext().getPartition(),
                    ((OracleSourceFetchTaskContext) context).getDispatcher());
            taskRunning = false;
            return;
        }
        // execute redoLog read task
        if (snapshotResult.isCompletedOrSkipped()) {
            final RedoLogSplitReadTask backfillRedoLogReadReTask =
                    createBackfillRedoLogReadTask(backfillRedoLogSplit, sourceFetchContext);
            final LogMinerOracleOffsetContextLoader loader =
                    new LogMinerOracleOffsetContextLoader(
                            ((OracleSourceFetchTaskContext) context).getDbzConnectorConfig());
            final OracleOffsetContext oracleOffsetContext =
                    loader.load(backfillRedoLogSplit.getStartingOffset().getOffset());
            backfillRedoLogReadReTask.execute(
                    new SnapshotStreamSplitChangeEventSourceContext(), oracleOffsetContext);
            taskRunning = false;
        } else {
            taskRunning = false;
            throw new IllegalStateException(
                    String.format("Read snapshot for oracle split %s fail", split));
        }
    }
The task to work for fetching data of Oracle table snapshot split.
 Copy from com.ververica:flink-connector-oracle-cdc:2.3.0
inlong-sort/sort-flink/sort-flink-v1.13/sort-connectors/oracle-cdc/src/main/java/org/apache/inlong/sort/cdc/oracle/source/reader/fetch/OracleScanFetchTask.java