[ 
https://issues.apache.org/jira/browse/FLINK-34868?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17899636#comment-17899636
 ] 

Fang commented on FLINK-34868:
------------------------------

yet! 

I solved the problem

Prerequisites:

flinkCDC 2.4 , oracle19c CDB+PDB mode

oracle connector  use  pdb service name

 

 the ORA-00942 error that Flink CDC encounters when connecting to the Oracle 
19c database. This error indicates that Flink CDC attempts to access a 
nonexistent table or view "LOG_MINING_FLUSH", which exists only in the Oracle 
PDB container. The Flink CDC code seems to incorrectly attempt to create this 
table in the CDB (container database).   

  

fix this bug :  in 
LogMinerStreamingChangeEventSource/resolveFlushStrategy/CommitLogWriterFlushStrategy
   will create this logminer flush table ,before create this table need 
alter session set container=pdbname

> [Bug] oracle-cdc cannot read oracle multitenant pdb binlog: ORA-00942: table 
> or view does not exist (LOG_MINING_FLUSH)
> ----------------------------------------------------------------------------------------------------------------------
>
>                 Key: FLINK-34868
>                 URL: https://issues.apache.org/jira/browse/FLINK-34868
>             Project: Flink
>          Issue Type: Bug
>          Components: Flink CDC
>            Reporter: Flink CDC Issue Import
>            Priority: Major
>              Labels: github-import
>
> ### Search before asking
> - [X] I searched in the 
> [issues|https://github.com/ververica/flink-cdc-connectors/issues) and found 
> nothing similar.
> ### Flink version
> 1.15.3
> ### Flink CDC version
> 2.4.0
> ### Database and its version
> oracle 19c
> ### Minimal reproduce step
> 1. setup oracle env according to oracle cdc cdb-database doc: 
> https://ververica.github.io/flink-cdc-connectors/release-2.4/content/connectors/oracle-cdc.html
> 2. using oracle cdc to read oracle log and print the data
> ### What did you expect to see?
> when i insert one record to my oracle table, i expect to see the line printed 
> in flink log.
> When i use oracle-cdc 2.3, it works fine.
> ### What did you see instead?
> error message as below:
> java.lang.RuntimeException: One or more fetchers have encountered exception
>       at 
> org.apache.flink.connector.base.source.reader.fetcher.SplitFetcherManager.checkErrors(SplitFetcherManager.java:225)
>       at 
> org.apache.flink.connector.base.source.reader.SourceReaderBase.getNextFetch(SourceReaderBase.java:169)
>       at 
> org.apache.flink.connector.base.source.reader.SourceReaderBase.pollNext(SourceReaderBase.java:130)
>       at 
> org.apache.flink.streaming.api.operators.SourceOperator.emitNext(SourceOperator.java:385)
>       at 
> org.apache.flink.streaming.runtime.io.StreamTaskSourceInput.emitNext(StreamTaskSourceInput.java:68)
>       at 
> org.apache.flink.streaming.runtime.io.StreamOneInputProcessor.processInput(StreamOneInputProcessor.java:65)
>       at 
> org.apache.flink.streaming.runtime.tasks.StreamTask.processInput(StreamTask.java:519)
>       at 
> org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.runMailboxLoop(MailboxProcessor.java:203)
>       at 
> org.apache.flink.streaming.runtime.tasks.StreamTask.runMailboxLoop(StreamTask.java:807)
>       at 
> org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:756)
>       at 
> org.apache.flink.runtime.taskmanager.Task.runWithSystemExitMonitoring(Task.java:948)
>       at 
> org.apache.flink.runtime.taskmanager.Task.restoreAndInvoke(Task.java:927)
>       at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:741)
>       at org.apache.flink.runtime.taskmanager.Task.run(Task.java:563)
>       at java.lang.Thread.run(Thread.java:748)
> Caused by: java.lang.RuntimeException: SplitFetcher thread 0 received 
> unexpected exception while polling the records
>       at 
> org.apache.flink.connector.base.source.reader.fetcher.SplitFetcher.runOnce(SplitFetcher.java:150)
>       at 
> org.apache.flink.connector.base.source.reader.fetcher.SplitFetcher.run(SplitFetcher.java:105)
>       at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>       ... 1 more
> Caused by: 
> com.ververica.cdc.connectors.shaded.org.apache.kafka.connect.errors.ConnectException:
>  An exception occurred in the change event producer. This connector will be 
> stopped.
>       at 
> io.debezium.pipeline.ErrorHandler.setProducerThrowable(ErrorHandler.java:50)
>       at 
> io.debezium.connector.oracle.logminer.LogMinerStreamingChangeEventSource.execute(LogMinerStreamingChangeEventSource.java:261)
>       at 
> com.ververica.cdc.connectors.oracle.source.reader.fetch.OracleStreamFetchTask$RedoLogSplitReadTask.execute(OracleStreamFetchTask.java:134)
>       at 
> com.ververica.cdc.connectors.oracle.source.reader.fetch.OracleStreamFetchTask.execute(OracleStreamFetchTask.java:72)
>       at 
> com.ververica.cdc.connectors.base.source.reader.external.IncrementalSourceStreamFetcher.lambda$submitTask$0(IncrementalSourceStreamFetcher.java:89)
>       ... 5 more
> Caused by: io.debezium.DebeziumException: Failed to flush Oracle LogWriter 
> (LGWR) buffers to disk
>       at 
> io.debezium.connector.oracle.logminer.logwriter.CommitLogWriterFlushStrategy.flush(CommitLogWriterFlushStrategy.java:89)
>       at 
> io.debezium.connector.oracle.logminer.LogMinerStreamingChangeEventSource.execute(LogMinerStreamingChangeEventSource.java:208)
>       ... 8 more
> Caused by: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does 
> not exist
>       at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:509)
>       at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:461)
>       at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1104)
>       at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:550)
>       at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:268)
>       at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:655)
>       at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:229)
>       at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:41)
>       at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:928)
>       at 
> oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1205)
>       at 
> oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1823)
>       at oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1778)
>       at 
> oracle.jdbc.driver.OracleStatementWrapper.execute(OracleStatementWrapper.java:303)
>       at 
> io.debezium.jdbc.JdbcConnection.lambda$execute$3(JdbcConnection.java:430)
>       at io.debezium.jdbc.JdbcConnection.execute(JdbcConnection.java:447)
>       at io.debezium.jdbc.JdbcConnection.execute(JdbcConnection.java:424)
>       at 
> io.debezium.connector.oracle.logminer.logwriter.CommitLogWriterFlushStrategy.flush(CommitLogWriterFlushStrategy.java:86)
>       ... 9 more
> Caused by: Error : 942, Position : 7, Sql = UPDATE LOG_MINING_FLUSH SET 
> LAST_SCN = 11664853015964, OriginalSql = UPDATE LOG_MINING_FLUSH SET LAST_SCN 
> = 11664853015964, Error Msg = ORA-00942: table or view does not exist
>       at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:513]
>       ... 25 more
> ### Anything else?
> the message say "LOG_MINING_FLUSH doesnot exist". i find this table only 
> exist in oracle pdb container. 
> i guess the oracle-cdc code intends to create this table in cdb. but it 
> incorrectly create this table in pdb.
> so i manually create this table in cdb and the oracle-cdc works. the flink 
> job just print the record in log
> ### Are you willing to submit a PR?
> - [ ] I'm willing to submit a PR!
> ---------------- Imported from GitHub ----------------
> Url: https://github.com/apache/flink-cdc/issues/3044
> Created by: [abcdeian|https://github.com/abcdeian]
> Labels: bug, 
> Created at: Mon Jan 29 18:04:25 CST 2024
> State: open



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to