zoukankan      html  css  js  c++  java
  • ORA-39405: Oracle Data Pump 时区升级

    客户端数据库版本是19.3

    而导出的数据库版本是19.4,19.8的版本。

    现在需要将19.3数据库端导出的expdp备份导入亚马逊云的数据库(19.4,19.8版本),提示如下:

      不支持从 TSTZ 版本为33 的源数据库导入到 TSTZ 版本为 32 的目标数据库,这个错误是因为数据库时区版本不一致造成的,并且是源数据时区版本高。目标数据库时区版本低。目标数据库时区版本高也可以导入。

    步骤一:升级到版本19.8(这一步多余,不需要升级)

    查看源端和目标端数据库的时区以及补丁版本:

      

     

    由于我的是windows单机的19c,所以升级比较简单,需要关闭数据库。

    停止监听以及数据库,解压补丁包,替换吊OPATCH TOOL。

    SET ORACLE_HOME=F:appAdministrator19cproduct19.0.0dbhome_1

    set PATH=%ORACLE_HOME%in;%PATH%;%SystemRoot%/system32;%SystemRoot%;F:appAdministrator19cproduct19.0.0dbhome_1OPatch

    进入补丁解压目录:F:appAdministratorp31247621_190000_MSWIN-x86-6431247621

    opatch apply

    开库执行 datapatch 脚本:

    alter pluggable database all open; --我的库没有,不需要执行这一步。

    cd F:appAdministrator19cproduct19.0.0dbhome_1OPatch

    datapatch -verbose

    进行验证:

     两台都升级成功了。

     

     比较坑的是19.8任然是没有天坑,所以后面我单独找了补丁包28852325,但是19c windows的补丁包没有这个补丁(linux和aix有),所以我说下载的下一个补丁29997937(34时区的,直接跳过33了)。

    步骤二:时区补丁29997937(也可以是任何大于33时区的)(不需要关闭数据库和监听)

     但是时区还是的修改,数据库已经存在了。

     

    启动数据库后编译失效的对象。  

    @F:appAdministrator19cproduct19.0.0dbhome_1 dbmsadminutlrp.sql

    select DBMS_DST.get_latest_timezone_version from dual;

    DECLARE
    l_tz_version PLS_INTEGER;
    BEGIN
    l_tz_version := DBMS_DST.get_latest_timezone_version;
    DBMS_OUTPUT.put_line('l_tz_version=' || l_tz_version);
    DBMS_DST.begin_prepare(l_tz_version);
    END;
    /
    
     
    
    col property_name for a30
    col property_value for a20
    select property_name, property_value from database_properties where property_name LIKE 'DST_%' order by property_name;

      

     --顺序执行执行以下语句:
    
    --以下是受影响的时区的表
    
    TRUNCATE TABLE sys.dst$affected_tables;
    TRUNCATE TABLE sys.dst$error_table;
    
    EXEC DBMS_DST.find_affected_tables;
    
    select * from sys.dst$affected_tables;
    select * from sys.dst$error_table;
    EXEC DBMS_DST.end_prepare;
    
    --升级时区,以upgrade模式启动
    SHUTDOWN IMMEDIATE
    STARTUP UPGRADE
    
    SET SERVEROUTPUT ON
    DECLARE
    l_tz_version PLS_INTEGER;
    BEGIN
    select DBMS_DST.get_latest_timezone_version into l_tz_version from dual;
    DBMS_OUTPUT.put_line('l_tz_version=' || l_tz_version);
    DBMS_DST.begin_upgrade(l_tz_version);
    END;
    /
    
    
    SHUTDOWN IMMEDIATE
    STARTUP
    
    --升级 ZONE 文件:会影响所有具有TIMESTAMP WITH TIME ZONE数据类型的表
    
    SET SERVEROUTPUT ON
    DECLARE
    l_failures PLS_INTEGER;
    BEGIN
    DBMS_DST.upgrade_database(l_failures);
    DBMS_OUTPUT.put_line('DBMS_DST.upgrade_database : l_failures=' || l_failures);
    DBMS_DST.end_upgrade(l_failures);
    DBMS_OUTPUT.put_line('DBMS_DST.end_upgrade : l_failures=' || l_failures);
    END;
    /
    
    SELECT * FROM v$timezone_file;

     

     

     

     

     更新成功。

     虽然找不到33时区版本,但是可以impdp了。

    impdp ttfc/xxxx directory=RDS_CLD_4 network_link=RDS_CLD_4 dumpfile=RDS_CLD_4_20210611_1259.DMP  logfile=20210613_imp.log TABLES=SBTTFC.RPT_USER_GAME_SUM,SBTTFC.RPT_USER_INDEX_INFO,SBTTFC.RPT_ACC_SUBJECT_BAL remap_schema=sbttfc:ttfc

     

  • 相关阅读:
    Android报表库aChartEngine系列(pie chart)
    二分查找算法java实现
    Android报表库aChartEngine系列(介绍)
    如何自定义view
    服务器性能瓶颈分析方法
    浅析C#中new、override、virtual关键字的区别
    Team Foundation Server 实例安装过程
    asp.net2.0站点应用程序池错误的问题
    C#字符串去除html标记
    web.config加密的问题
  • 原文地址:https://www.cnblogs.com/hmwh/p/14877905.html
Copyright © 2011-2022 走看看