Debezium CDC连接器在java.library.path中说没有ocijdbc11

时间:2019-12-17 19:39:34

标签: oracle apache-kafka-connect debezium oracle-cdc

我正在尝试部署debezium CDC连接器以从Oracle DB捕获数据。我们已经准备好了Oracle DB和Xstream连接器。

我遇到以下异常:

{
 "name": "test-debezium-2",
 "connector": {
   "state": "RUNNING",
   "worker_id": "10.230.24.80:8084"
 },
 "tasks": [
   {
     "id": 0,
     "state": "FAILED",
     "worker_id": "10.230.24.80:8084",
     "trace": "org.apache.kafka.connect.errors.ConnectException: An exception ocurred in the change event producer. This connector will be stopped.\n\tat 
               io.debezium.connector.base.ChangeEventQueue.throwProducerFailureIfPresent(ChangeEventQueue.java:170)\n\tat 
               io.debezium.connector.base.ChangeEventQueue.poll(ChangeEventQueue.java:151)\n\tat 
               io.debezium.connector.oracle.OracleConnectorTask.poll(OracleConnectorTask.java:110)\n\tat 
               org.apache.kafka.connect.runtime.WorkerSourceTask.poll(WorkerSourceTask.java:259)\n\tat 
               org.apache.kafka.connect.runtime.WorkerSourceTask.execute(WorkerSourceTask.java:226)\n\tat 
               org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:177)\n\tat 
               org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:227)\n\tat 
               java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)\n\tat 
               java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)\n\tat 
               java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)\n\tat 
               java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)\n\tat 
               java.base/java.lang.Thread.run(Thread.java:834)\n
                   Caused by: java.lang.UnsatisfiedLinkError: no ocijdbc11 in java.library.path: [/usr/java/packages/lib, /usr/lib64, /lib64, /lib, /usr/lib]\n\tat 
                   java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2660)\n\tat 
                   java.base/java.lang.Runtime.loadLibrary0(Runtime.java:829)\n\tat 
                   java.base/java.lang.System.loadLibrary(System.java:1867)\n\tat 
                   oracle.jdbc.driver.T2CConnection$1.run(T2CConnection.java:3541)\n\tat 
                   java.base/java.security.AccessController.doPrivileged(Native Method)\n\tat 
                   oracle.jdbc.driver.T2CConnection.loadNativeLibrary(T2CConnection.java:3537)\n\tat 
                   oracle.jdbc.driver.T2CConnection.logon(T2CConnection.java:269)\n\tat 
                   oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:553)\n\tat 
                   oracle.jdbc.driver.T2CConnection.<init>(T2CConnection.java:165)\n\tat 
                   oracle.jdbc.driver.T2CDriverExtension.getConnection(T2CDriverExtension.java:53)\n\tat 
                   oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:528)\n\tat 
                   java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)\n\tat 
                   java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228)\n\tat 
                   io.debezium.connector.oracle.OracleConnectionFactory.connect(OracleConnectionFactory.java:25)\n\tat 
                   io.debezium.jdbc.JdbcConnection.connection(JdbcConnection.java:756)\n\tat 
                   io.debezium.jdbc.JdbcConnection.connection(JdbcConnection.java:751)\n\tat 
                   io.debezium.connector.oracle.OracleConnection.setSessionToPdb(OracleConnection.java:46)\n\tat 
                   io.debezium.connector.oracle.OracleSnapshotChangeEventSource.prepare(OracleSnapshotChangeEventSource.java:70)\n\tat 
                   io.debezium.relational.RelationalSnapshotChangeEventSource.execute(RelationalSnapshotChangeEventSource.java:104)\n\tat 
                   io.debezium.pipeline.ChangeEventSourceCoordinator.lambda$start$0(ChangeEventSourceCoordinator.java:83)\n\t... 5 more\n"
   }
 ],
 "type": "source"
}

我已验证/usr/lib文件夹中包含ocijdbc11.dll文件。我也尝试将文件复制到/lib,但是遇到相同的错误。

1 个答案:

答案 0 :(得分:1)

我遇到了这个问题。 首先去oracle下载“ instantclient” instantclient download

解压缩------相信您已将ojdbc.jar和xtream.jar复制到kafka lib。

然后添加环境变量

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.Data.SqlClient; using System.ComponentModel; using System.Runtime.CompilerServices; namespace comboboxapp1 { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public SimpleMath Formular { get; set; } public object SelectedValue { get; private set; } public MainWindow() { Formular = new SimpleMath() { Txtcode = 0, Txtpieces = 0, Txtlayers = 0, Txtproductionpieces = 0, Txtseccond = 0, }; InitializeComponent(); DataContext = Formular; Fillcombobox(); } private void MainWindow_Load(object sender, EventArgs e) { } public void Fillcombobox() { SqlConnection con = new SqlConnection("Data Source=LEAN-22\\SQLEXPRESS;Initial Catalog=LUAT;Integrated Security=True"); string sql = " select * from comboboxnew "; SqlCommand cmd = new SqlCommand(sql, con); SqlDataReader myreader; try { con.Open(); myreader = cmd.ExecuteReader(); while (myreader.Read()) { string sname = myreader.GetInt32(0).ToString(); comboBox1.Items.Add(sname); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } public class SimpleMath : INotifyPropertyChanged { private int no1; public int No1 { get { return no1; } set { no1 = value; OnPropertyChanged("No1"); OnPropertyChanged("A"); } } private int txtcode; public int Txtcode { get { return txtcode; } set { txtcode = value; OnPropertyChanged("Txtcode"); OnPropertyChanged("A"); } } private int txtpieces; public int Txtpieces { get { return txtpieces; } set { txtpieces = value; OnPropertyChanged("Txtcode"); OnPropertyChanged("A"); } } private int txtlayers; public int Txtlayers { get { return txtlayers; } set { txtlayers = value; OnPropertyChanged("Txtlayers"); OnPropertyChanged("A"); } } private int txtproductionpieces; public int Txtproductionpieces { get { return txtproductionpieces; } set { txtproductionpieces = value; OnPropertyChanged("Txtproductionpieces"); OnPropertyChanged("A"); } } private int txtseccond; public int Txtseccond { get { return txtseccond; } set { txtseccond = value; OnPropertyChanged("Txtseccond"); OnPropertyChanged("A"); } } public double A => No1; public event PropertyChangedEventHandler PropertyChanged; public void OnPropertyChanged([CallerMemberName()] string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } private void ComboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e) { SqlConnection con = new SqlConnection("Data Source=LEAN-22\\SQLEXPRESS;Initial Catalog=LUAT;Integrated Security=True"); // string sql = " select * from comboboxnew where code = '" + comboBox1.Text+ "';"; string sql = " select * from comboboxnew where code = '" + comboBox1.SelectedItem + "';"; //Console.WriteLine(comboBox1.Text); //MessageBox.Show(comboBox1.Text); SqlCommand cmd = new SqlCommand(sql, con); SqlDataReader myreader; try { con.Open(); myreader = cmd.ExecuteReader(); while (myreader.Read()) { string code = myreader.GetInt32(0).ToString(); string pieces = myreader.GetInt32(1).ToString(); string layers = myreader.GetInt32(2).ToString(); string productionpieces = myreader.GetInt32(3).ToString(); string seccond = myreader.GetInt32(4).ToString(); txtcode.Text = code; //txtcode.Text =SelectedValue; txtpieces.Text = pieces; //txtpieces.Text = "New value"; txtlayers.Text = layers; //txtlayers.Text = "New value"; txtproductionpieces.Text = productionpieces; //txtproductionpieces.Text = "New value"; txtseccond.Text = seccond; //txtseccond.Text = "New value"; } } catch (Exception ex) { MessageBox.Show(ex.Message); } } } }

添加:

vim /etc/profile

保存---- wq!

ohhhhhh,记住---资源exprot LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/you download file addr/libocijdbc11.so

再次运行