1.连接Oracle12C数据库报错,监听程序无法识别请求服务
原因:数据库连接的数据库名字错误
要区分服务器连接名跟SID是否一样
2.连接Oracle12C报错,没有匹配的验证协议
原因:Oracle12C版本为12.2.0.1.0,要求jdk1.8+ojdbc8.jar
网上有两种方式,方式一修改为ojdbc6.jar。方式二,修改配置文件。
因为数据库版本原因,方式一没有生效,方式二可以。
解决办法:
- 使用 jdk1.8+ojdbc8.jar
- 修改Oracle配置文件,允许低版本访问
在Oracle的安装路径下找到sqlnet.ora文件。
(我的安装路径F:\app\root\root\product\12.1.0\dbhome_1\NETWORK\ADMIN)
在文件的最后添加SQLNET.ALLOWED_LOGON_VERSION=8
如果文件不存在,在该路径下新建文件sqlnet.ora,加上这句话。
如图:
3.Oracle10往Oracle12C导数据,报错字段长度太长
原因:数据库字符集不同导致,Oracle12c一个字占3个字符,
解决办法:将varchar类型的数据字段长度扩充1.5倍,但是不能超过4000修
将varchar类型的数据字段长度扩充1.5倍
select 'alter table '||table_name||' modify'||'('||column_name||
' '||data_type||'('||ceil(data_length*1.5)||'));'
from user_tab_columns where data_type like '%VARCHAR2%' AND COLUMN_NAME !='SHEETID'
and ceil(data_length*1.5)<=4000 and table_name not in(SELECT view_name FROM user_views)
执行查询出来的数据,进行扩容
扩容结束后,导出数据库
可能还是会存在问题,但是大部分问题解决,其他的可以根据日志报错去单独添补缺