• oracle19c升级时区版本 32-->42,解决数据泵导数据TSTZ报错


    1.查询当前数据库时区版本:

    select * from v$timezone_file;
    
    • 1

    2.下载42安装包
    3.打补丁

    1、opatch 打相应的时区补丁(如果是rac节点所有节点都要执行)
    mkdir -p /tmp/patch
    unzip  p35220732_190000_Linux-x86-64.zip -d /tmp/patch/
    chown -R oracle:oinstall /tmp/patch
    
    --检查补丁是否冲突 /u01/app/oracle/product/19.3.0/db_1是oracle安装目录,以现场实际为准
    切换到目录
    cd /tmp/patch/35220732
    执行(换成自己的oracle安装目录,按照下面的直接敲就行,不要怀疑):
    /u01/app/oracle/product/19.3.0/db_1/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./
    #ph后面有空格
    
    --应用补丁
    /u01/app/oracle/product/19.3.0/db_1/OPatch/opatch apply
    
    --回退
    opatch rollback -id 35220732
    
    说明:仅打补丁不需要重启数据库
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    4.查询数据库业务链接:

    select a.machine,a.program from v$session a ;
    
    • 1
    #把JDBC的链接都关掉
    select a.machine,a.program from v$session a where a.program like '%JDBC%';
    
    • 1
    • 2

    5.去k8s界面找到工作负载–停用;(视情况而定,反正就是关掉应用,断开数据库链接);
    6.关闭监听:

    lsnrctl stop
    
    • 1

    7.应用停掉之后在sqlplus登录数据库执行下面的命令

    slplus /nolog
    
    • 1
    sql>connect /as sysdba
    
    • 1
    2、应用相关的sql使时区补丁生效(这一步会重启2次数据库)
    注释:下面的是路径 去路径找到对应的sql执行即可;
    $ORACLE_HOME/rdbms/admin/utltz_countstats.sql
    #Script to gives how much TIMESTAMP WITH TIME ZONE data there is in a database using stats info. No restart required.
    
    $ORACLE_HOME/rdbms/admin/utltz_countstar.sql
    #Script to approximate how much TIMESTAMP WITH TIME ZONE data there is in a database using a COUNT(*) for each table that has a TSTZ column. 
    This script is useful when using DBMS_DST package or the scripts of utlz_upg_check.sql and utlz_upg_apply.sql scripts.
    
    $ORACLE_HOME/rdbms/admin/utltz_upg_check.sql
    #Time zone upgrade check script
    
    $ORACLE_HOME/rdbms/admin/utltz_upg_apply.sql
    #Time zone apply script. Warning: This script will restart the database and adjust time zone data.
    2、应用相关的sql使时区补丁生效(这一步会重启2次数据库)
    $ORACLE_HOME/数据库管理系统
    使用stats信息给出数据库中有多少TIMESTAMP WITH TIME ZONE数据的脚本。不需要重新启动。
    
    $ORACLE_HOME/关系数据库管理系统/管理员
    脚本使用COUNT*)为每个具有TSTZ列的表估计数据库中有多少TIMESTAMP WITH TIME ZONE数据。
    这个脚本在使用DBMS_DST包或utlz_upg_check.sql和utlz_upg_apply.sql脚本时非常有用。
    
    $ORACLE_HOME/关系数据库管理系统
    时区升级检查脚本
    
    $ORACLE_HOME/rdbms/admin/utltz_upg_apply.sql
    时区应用脚本。警告:此脚本将重新启动数据库并调整时区数据。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    8.再次查看当前数据库时区版本,发现升级成功!

    select * from v$timezone_file;
    
    • 1

    通过百度网盘分享的文件:p3522073…zip
    链接:https://pan.baidu.com/s/1dDllx85B8WY4xGf7n-gIjQ
    提取码:MoKa
    复制这段内容打开「百度网盘APP 即可获取」

    声明:个人工作中遇到的问题,内容如有侵权请及时联系本人删除。

  • 相关阅读:
    学习黑马程序员JavaScript总结
    手把手教你VScode终端自动激活anaconda的python虚拟环境
    Go快速上手之基础语法 | 青训营笔记
    牛客小白月赛60 C 小竹关禁闭(动态规划 01背包)
    想要精通算法和SQL的成长之路 - 全排列
    使用广播信道的数据链路层
    地图选择器datav怎么使用?
    modbus协议教程
    公共事业管理概论复习题
    LeetCode 383.赎金信(模拟,for(char c : 容器)的使用)
  • 原文地址:https://blog.csdn.net/weixin_64198692/article/details/136481980