转换时报如下错误:ORA-12516: TNS:listener could not find available handler with matching protocol stack
操作系统:win8.1 数据库:oracle11.2.0.1 mysql8.0.28 OracleSync2MySQL:OracleSync2MySQL-win-x64-v0.0.7
转换时报如下错误:
level=fatal msg="select trim(',' from (xmlagg(xmlparse(content '"'||column_name||'"'||',') order by COLUMN_ID).getclobval())) from user_tab_columns where table_name='这是表名' exec failed pool=0xdd8bf9bef0 stats=busy=123 open=123 max=0 maxLifetime=0s timeout=5m0s waitTimeout=0s params={authMode:0 connectionClass:
请问这个如何解决,谢谢!
麻烦看下数据库的连接数参数 查询语句 --- 当前已启用进程数 select count(*) from v$process;
--- 查询参数里限制的最大进程数 select value from v$parameter where name = 'processes';
库表有300个左右,数据有500M。加这个进程数还是会连接数用完异常。看了一下源代码,是多线程引起的。
另外这几个查不到数据,因为大小写不对应,需要改为大写比较或小写比较 select count(*) from user_tab_columns where UPPER(table_name)=UPPER('%s')
SELECT A.COLUMN_NAME,A.DATA_TYPE,A.CHAR_LENGTH,case when A.NULLABLE ='Y' THEN 'YES' ELSE 'NO' END as isnull, LONG_TO_CHAR(A.TABLE_NAME,A.COLUMN_ID) DATA_DEFAULT,case when A.DATA_PRECISION is null then -1 else A.DATA_PRECISION end DATA_PRECISION,case when A.DATA_SCALE is null then -1 when A.DATA_SCALE >30 then least(A.DATA_PRECISION,30)-1 else A.DATA_SCALE end DATA_SCALE, nvl(B.COMMENTS,'null') COMMENTS,case when a.AVG_COL_LEN is null then -1 else a.AVG_COL_LEN end AVG_COL_LEN,COLUMN_ID FROM USER_TAB_COLUMNS A LEFT JOIN USER_COL_COMMENTS B ON A.TABLE_NAME=B.TABLE_NAME AND A.COLUMN_NAME=B.COLUMN_NAME WHERE UPPER(A.TABLE_NAME)=UPPER('%s') ORDER BY COLUMN_ID
select trim(',' from (xmlagg(xmlparse(content '"'||column_name||'"'||',') order by COLUMN_ID).getclobval())) from user_tab_columns where UPPER(table_name)=UPPER('%s')
多线程的建议: 1、表结构的处理,主键处理,外键处理,索引创建可以使用单线程,减少使用数据库连接数。 2、表数据迁移,使用多线程,线程总数需要可控,太多了会把数据库连接数用完。可以采用每个表一个线程去迁移数据,最多5个,10个,这个可以读配置参数,不易太多。
还是非常感谢提供的这个工具。
你好,感谢你的建议,我设计之初有设计过参数maxParallel,用来控制goroutine的最大并发数,我本地有500多个表,迁移的全程查看select count(*) from v$process;排除非关联用户之外,连接数并未超过maxParallel,请问下你的环境产生了多少连接数
库表有300个左右,数据有500M。加这个进程数还是会连接数用完异常。看了一下源代码,是多线程引起的。
另外这几个查不到数据,因为大小写不对应,需要改为大写比较或小写比较 select count(*) from user_tab_columns where UPPER(table_name)=UPPER('%s')
SELECT A.COLUMN_NAME,A.DATA_TYPE,A.CHAR_LENGTH,case when A.NULLABLE ='Y' THEN 'YES' ELSE 'NO' END as isnull, LONG_TO_CHAR(A.TABLE_NAME,A.COLUMN_ID) DATA_DEFAULT,case when A.DATA_PRECISION is null then -1 else A.DATA_PRECISION end DATA_PRECISION,case when A.DATA_SCALE is null then -1 when A.DATA_SCALE >30 then least(A.DATA_PRECISION,30)-1 else A.DATA_SCALE end DATA_SCALE, nvl(B.COMMENTS,'null') COMMENTS,case when a.AVG_COL_LEN is null then -1 else a.AVG_COL_LEN end AVG_COL_LEN,COLUMN_ID FROM USER_TAB_COLUMNS A LEFT JOIN USER_COL_COMMENTS B ON A.TABLE_NAME=B.TABLE_NAME AND A.COLUMN_NAME=B.COLUMN_NAME WHERE UPPER(A.TABLE_NAME)=UPPER('%s') ORDER BY COLUMN_ID
select trim(',' from (xmlagg(xmlparse(content '"'||column_name||'"'||',') order by COLUMN_ID).getclobval())) from user_tab_columns where UPPER(table_name)=UPPER('%s')
多线程的建议: 1、表结构的处理,主键处理,外键处理,索引创建可以使用单线程,减少使用数据库连接数。 2、表数据迁移,使用多线程,线程总数需要可控,太多了会把数据库连接数用完。可以采用每个表一个线程去迁移数据,最多5个,10个,这个可以读配置参数,不易太多。
还是非常感谢提供的这个工具。
你好,我平常是在MacOS上进行ide开发,主要使用环境是MacOS和CentOS。
现在观察发现在Windows系统下,多个并发协程有很多未关闭连接导致oracle上有很多inactive不活动的会话。在MacOS和CentOS上使用正常,非常感谢你发现的问题,我会及时修复这个issue
最新版本已发布