plsql:
oracle11g客户端链接19c报ORA-28040,没有匹配的验证协议:
升级客户端或者修改19c服务端sqlnet.ora,升级客户端的话可安装11.2.4.0及以上版本的Oracle客户端或者安装instantclient_19_13,instantclient_19_13下载地址:
https://www.oracle.com/cn/database/technologies/instant-client/downloads.html
在这里插入图片描述然后配置plsql
在这里插入图片描述

程序:
ORA-28040,没有匹配的验证协议:
这是因为jdbc驱动jar包版本低,下载19cjdbc驱动替换即可,
下载地址Oracle官网:https://www.oracle.com/database/technologies/appdev/jdbc-ucp-19c-downloads.html
数据库驱动包的版本高于jdk版本,报错:
oracle/jdbc/driver/OracleDriver has been compiled by a more recent version of the Java Runtime (class file version 54.0),
this version of the Java Runtime only recognizes class file versions up to 52.0 (无法载入的.类 [oracle.jdbc.driver.OracleDriver])
在这里插入图片描述
java 8的话用如下jar
在这里插入图片描述字符集不匹配乱码问题:
1:历史数据能正常显示,新增数据后,新增的数据出现中文乱码
查询字符集:select userenv(‘language’) from dual;
源库:ZHS16GBK
新的19c数据库:SIMPLIFIED CHINESE_CHINA.AL32UTF8
修改字符集:

 alter system enable restricted session;
 alter database character set INTERNAL_USE ZHS16GBK;
 alter system disable restricted session;
 修改后plsql查询发现所有数据包含历史数据都乱码了
 这时候配置环境变量:
 NLS_LANG =SIMPLIFIED CHINESE_CHINA.ZHS16GBK![在这里插入图片描述](https://img-blog.csdnimg.cn/6bde010e80c2474baf269bc0929c20d7.png)修改后问题解决,plsql查询正常,新增中文数据正常

重启应用程序发现如下报错:
按提示添加对应的jar包:orai18n.jar
在这里插入图片描述在这里插入图片描述
添加后问题解决

数据迁移:
数据泵导出源库的数据:
cmd切换到oraclebin目录,执行下main的命令
expdp 数据库账号/密码@实例名 directory=data_pump_dir schemas=数据库账号 dumpfile=导出的文件名(自定义).dmp logfile=导出日志文件名.log
查询源库的表空间名:


```sql
select tablespace_name from dba_tablespaces;

查询新库表空间文件的存储路径:
		SELECT NAME FROM V$DBFILE;
根据表空间名称查询当时创建表空间时的sql语句:
		

select dbms_metadata.get_dDl(‘TABLESPACE’,tablespace_name) from dba_tablespaces where tablespace_name = ‘原库的表空间名称’;


数据泵导入数据(这样可以不用创建新和原数据库一样的表空间和账号,可以通过下面的命令把原数据直接复制过来包含表空间和原用户)
		
		创建原数据链接信息为数据字典dba_db_links。
		查看是否设置成功:
		select * from dba_db_links;
		然后再命令窗口执行如下语句:
		impdp 新库的用户名/密码@ip/数据库实例 directory=data_pump_dir schemas=源库用户名 network_link=dl_dm_to11gprod
		

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐