Oracle 19C上线后可能出现的问题汇总(全)

导读:2019年2月Oracle 19c正式问世,新的版本引入了很多重大的功能和新特性,如自治索引、在线操作维护的增强、ADG备库发出的DML支持自动重定向等等,引起了广泛关注。而目前市面上Oracle数据库应用较为广泛的版本主要是11g 的 11.2.0.4 和12c的12.2.0.1版本,相信大家都十分期待19c的新特性新功能,也更关心19c上线可能会带来哪些问题。本文以某客户生产环境数据库上线19c为例,列举上线后可能会出现了哪些问题,供大家参考。


问题详情



某客户一生产环境数据库上线 Oracle 19C,操作系统为版本为Red Hat Enterprise Linux Server release 7.6(Maipo),数据库版本为19.5.0.0.191015,ogg版本为19.1.0.0.0。在割接之后出现了一些问题,内容如下:

1. OGG延时问题


问题现象:OGG一直延时1小时左右

解决办法:

TRANLOGOPTIONSINTEGRATEDPARAMS (MAX_SGA_SIZE 1024,_LOGMINER_READ_BUFFERS 256,parallelism 2)

修改为:

TRANLOGOPTIONS INTEGRATEDPARAMS (MAX_SGA_SIZE 2048, _LOGMINER_READ_BUFFERS 256,parallelism 2)

OGG延时解除。

2. jar包问题


问题现象:数据库日志报错信息如下:

2019-10-29T06:15:22.116566+08:00
Errors in file /xxxx/diag/rdbms/xxx2/trace/axxxx67.trc  (incident=807865) (PDBNAME=xxxx):
ORA-03137: malformed TTC packet from clientrejected: [3146] [94] [] [] [] [] [] []
xxxxx(3):Incident details in: /xxxx/diag/rdbms/xxx2/trace/axxxx65.trc
2019-10-29T06:15:23.163773+08:00
xxxxx(3):Session (xx,xxx): Bad TTC Packet Detected: Inbound connection fromclient
xxxxx(3):Session (xx,xxx): Bad TTC Packet Detected: DB Logon User: xxxxx, Remote Machine: xxxxx, Program: xxxxx, OS User: xxxxx
xxxxx(3):Session (xx,xxx): Bad TTC PacketDetected: Client IP Address: xx.xx.xx.xx


解决办法:

1. 使用合适的jdbc驱动, jdbc vs jdk, jdbcvs db 的兼容矩阵如下:


2. 代码问题


先看下面一段有问题的代码:

    Connection con = null;
     try{
         con = getConnection();
         con.setAutoCommit(false);
           /*
         * update USER set name=’xxx’where id=’000001’;
            */
         con.commit();
     }finally{
          if(con!=null){
              try {
                con.close();
             } catch (SQLExceptione) {
               e.printStackTrace();
             }
           }
       }
问题就出现在con.setAutoCommit(false);,写代码的人把数据库连接con 设置成非自动提交,但没有在执行出现异常的时候进行回滚。如果在执行第5行的时候出现异常,con既没有提交也没有回滚,表USER就会被锁住(如果oracle数据库就是行锁),而这个锁却没有机会释放。有人会质疑,在执行con.close()的时候不会释放锁吗?因为如果应用服务器使用了数据库连接池,连接不会被断开。

3. 注册服务问题    


CDB service和PDB service的创建和删除方法:
创建PDB xxx的service(add的时候有参数-pdb):

srvctl add service-s service_name -db db_unique_name -pdb pdb_name-preferred(instance_name1,instance_name2)srvctl start service -sservice_name -db db_unique_name

创建CDB的service(不指定-pdb参数默认创建cdb的服务)

srvctl add service -s service_name-db db_unique_name -preferred(instance_name1,instance_name2)srvctl start service -sservice_name -db db_unique_name

4. 时区问题

时区问题导致的后果是日志信息记录的时间有偏差,tfa收集指定时间段信息有偏差。

cd  $ORACLE_HOME/crs/install
vi  s_xxx_xxx_env.txt
将表示时区的TZ一行中的New_York修改为Shanghai
修改前:
TZ=America/New_York
修改后:
TZ=Asia/Shanghai


参考文档:Differencein Log Time for Clusterware/Database Instance Alert Log Compare to Server Time(Doc ID 2312945.1)

5. ORA-600问题

ORA-600 [KPDBSWITCHPRERESTORE:TXN] 错误导致crash,命中BUG In 12.2.0.1 ORA-600 [kpdbSwitchPreRestore: Txn] Crash RACInstances (文档 ID 2583951.1)。MOS关于该文章的描述In 12.2.0.1 ORA-600 [kpdbSwitchPreRestore: Txn] Crash RAC Instances(文档 ID 2583951.1),该BUG会在Oracle 20.1版本中修复。


后台call stack基本命中,不过_drop_stat_segment参数必须在每个实例中进行设置。

_drop_stat_segment根据解释是ILM的统计信息,ILM是12C推出的特性,主要是利用heatmap+Automatic Data Optimization对象进行管理,_drop_stat_segment设置为1应该是清理ILM的相关统计信息段,该参数在12C中只是建议*._drop_stat_segment=1设置来避免因为ILM导致sysaux过大——HEATMAPSegment Size Is Large In SYSAUX Even When Heatm=Off (文档 ID 2024036.1).


请使用浏览器的分享功能分享到微信等