View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0005736 | SymmetricDS | Bug | public | 2023-03-14 03:37 | 2024-12-31 18:15 |
Reporter | qii | Assigned To | pmarzullo | ||
Priority | normal | ||||
Status | closed | Resolution | no change required | ||
Product Version | 3.12.12 | ||||
Summary | 0005736: the outgoing batch sync 001 -443873 faild [PROTOCOL ,-888] | ||||
Description | symmertic version :3.12 database version : oracle 11.2 CREATE TABLE MYCLOB( ID NUMBER(38) NOT NULL PRIMARY KEY, DESCRIPTION navchar2(4000), CONTENT navchar2(500), ); vi Test.java import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; public class Test { public static void main(String[] args) throws Exception { int count = 0; Class.forName("oracle.jdbc.driver.OracleDriver"); Connection c = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:xe", "elong", "secret"); PreparedStatement s = c.prepareStatement("insert into myclob values (?, ?)"); s.setInt(1, 2); StringBuilder sb = new StringBuilder(); for (int i = 0; i < 3980; i++) { sb.append("a"); } s.setString(2, sb.toString()); StringBuilder sb2 = new StringBuilder(); for (int i = 0; i < 50; i++) { sb2.append("a"); } s.setString(3, sb2.toString()); count = s.executeUpdate(); System.out.println("Updated " + count + " rows"); s.close(); c.close(); } } sync to target database error:faild [PROTOCOL ,-888] and retry is faild. I found in sym_data.row_data.length>4000 and run sql: "select dbms_lob.substr(d.row_data, 4000, 1 ) from sym_data where data_id = id" is successed. write in temp file outgoingbatchId.DONE error. I changed OracleSymmetricDialect.massageDataExtractionSql(): sql = sql.replace("d.row_data", "dbms_lob.substr(d.row_data,4000, 1 )") replaced by : sql = sql.replace("d.row_data", "dbms_lob.substr(d.row_data, length(d.row_data), 1 )") , it cause ORA-06502 and retry sync data success | ||||
Tags | No tags attached. | ||||
|
You will need to set contains_big_lob = 1 on the channel. |
|
contains_big_lob = 1 Spend a lot of time, and most time row_data <4000, I want to dbms_lob.substr(d.row_data,4000, 1 ) in most time ,and when row_data >4000 used d.row_data |
|
Can you set the contains_big_lob back to 0, cause the Protocol error again, and attach the log? |
|
sorry. log is in another machine. I can not get it. u can use method to reappear error. |
Date Modified | Username | Field | Change |
---|---|---|---|
2023-03-14 03:37 | qii | New Issue | |
2023-03-15 17:18 | cquamme | Note Added: 0002294 | |
2023-03-15 17:19 | cquamme | Status | new => feedback |
2023-03-16 08:49 | qii | Note Added: 0002299 | |
2023-03-16 08:49 | qii | Status | feedback => new |
2023-03-22 17:25 | pmarzullo | Note Added: 0002300 | |
2023-03-22 17:26 | pmarzullo | Assigned To | => pmarzullo |
2023-03-22 17:26 | pmarzullo | Status | new => feedback |
2023-03-29 07:38 | qii | Note Added: 0002301 | |
2023-03-29 07:38 | qii | Status | feedback => assigned |
2024-12-31 18:15 | emiller | Status | assigned => closed |
2024-12-31 18:15 | emiller | Resolution | open => no change required |