记一次oracle数据库升级11g-19c
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修改后问题解决,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
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)