11g升级到19c问题汇总

来源:这里教程网 时间:2026-03-03 18:31:45 作者:

由于profile4downgrade.xml 文件权限不对升级失败  

问题描述

检查日志<ORABASE>/crsdata/<NODE1>/crsconfig/rootcrs_<NODE1>.log,报错如下:

<19C_GridHoime>/crs/install/profile4downgrade.xml -destfile <19C_GridHoime>/crs/install/profile4downgrade.xml -nodelistfile /tmp/BOp83y1gVE -oraclehome <19C_GridHoime>' 2020-12-25 06:20:56: Removing file /tmp/BOp83y1gVE 2020-12-25 06:20:56: Successfully removed file: /tmp/BOp83y1gVE 2020-12-25 06:20:56: Executing cmd: <19C_GridHoime>/bin/clsecho -p has -f clsrsc -m 186 '<19C_GridHoime>/crs/install/profile4downgrade.xml' '<19C_GridHoime>/crs/install/profile4downgrade.xml' '<NODE1>,<NODE2>' '0' 2020-12-25 06:20:56: Executing cmd: <19C_GridHoime>/bin/clsecho -p has -f clsrsc -m 186 '<19C_GridHoime>/crs/install/profile4downgrade.xml' '<19C_GridHoime>/crs/install/profile4downgrade.xml' '<NODE1>,<NODE2>' '0' 2020-12-25 06:20:57: Command output: > CLSRSC-186: Failed to copy file from local path '<19C_GridHoime>/crs/install/profile4downgrade.xml' to remote path '<19C_GridHoime>/crs/install/profile4downgrade.xml' for given list of nodes '<NODE1>,<NODE2>' (error code 0) <<<copy error>> >End Command output 2020-12-25 06:20:57: CLSRSC-186: Failed to copy file from local path '<19C_GridHoime>/crs/install/profile4downgrade.xml' to remote path '<19C_GridHoime>/crs/install/profile4downgrade.xml' for given list of nodes '<NODE1>,<NODE2>' (error code 0) 2020-12-25 06:20:57: ###### Begin DIE Stack Trace ######

解决方法

检查profile4downgrade.xml的权限:

ls -l <19C_GridHoime>/crs/install/profile4downgrade.xml -rw------- 1 root root 1888 Dec 25 06:20 <19C_GridHoime>/crs/install/profile4downgrade.xml

ls -l <11g_GridHoime>/gpnp/profiles/peer/profile.xml    -rwxr-xr-x 1 oracle oinstall 1888 Aug 3 02:35 <11g_GridHoime>/gpnp/profiles/peer/profile.xml

修改权限

#chmod oracle:oinstall <19C_GridHoime>/crs/install/profile4downgrade.xml

#chmod 755 <19C_GridHoime>/crs/install/profile4downgrade.xml

重新运行 rootupgrade.sh

 

第二部分 升级到升级APEX 过程时一直卡住

根据预检信息,提前更新APEX到version 18.2.0.00.12,升级方式如下:

下载的apex放到/u01/apex

cd /u01/apex

$ sqlplus / as sysdba

 

SQL> select version_no from apex_release;

 

VERSION_NO

--------------------------------------------------------------------------------

3.2.1.00.12

--卸载原apex

SQL> @?/apex/apxremov.sql

--安装新apex

SQL> @apexins.sql SYSAUX SYSAUX TEMP /i/

SQL> @apex_epg_config.sql /u01

SQL> @apxchpwd.sql

输入用户名、密码,控制台使用需要

alter user anonymous account unlock;

SQL> @apex_rest_config.sql

SQL> EXEC DBMS_XDB.sethttpport(8080);

访问:http://192.168.242.9:8080/apex

 

第三部分 低版本客户端连接异常

问题描述

客户端连接Oracle 19c时,报异常

ORA-28040: No matching authentication protocol

 

解决方法

编辑sqlnet.ora,修改成客户端最低版本

   SQLNET.ALLOWED_LOGON_VERSION_SERVER=8

   SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8

重启监听

 

升级到19C ,查询返回结果错误

问题描述

例如下面查询正确结果是1,19c默认状态下返回0

SQL> select count(1)... (select 1 from )) and d.doc_type = 13; COUNT(1) ---------- 0

调整成11g优化器,返回正确

SQL> alter session set "_optimizer_nlj_hj_adaptive_join"=FALSE;

Session altered.

SQL> SQL> select count(1)... (select 1 from )) and d.doc_type = 13;

COUNT(1) ---------- 1 ======================================== SQL> alter session set optimizer_features_enable='11.2.0.4';

Session altered.

SQL> select count(1)... (select 1 from )) and d.doc_type = 13;

COUNT(1) ---------- 1 ======================================= 3. SQL> alter session set "_optimizer_null_accepting_semijoin"=FALSE;

Session altered.

SQL>SQL> select count(1)... (select 1 from )) and d.doc_type = 13;

COUNT(1) ---------- 1

解决方法:

这是一个BUG,Bug号:31505088

应用补丁,补丁号: Patch 31505088

 

第五部分 导入视图hang

问题描述

如下导入视图会hang住

impdp <user>/<password> ...... exclude=view:"IN ('<view_name>', '<view_name>')"

解决方法

导入后,手工进行创建视图

用户下vm concat 函数失效

问题描述

vm_concat函数在19.8中怎么不存在了,在19.7中还存在,vm_concat函数属于VMSYS用户,其可以实现将多列记录聚合为一列记录,实现数据的压缩。

10g以及11g: 在10g以及11g中该函数可以正常使用

但是在10g和11g中需要注意的是,vm_concat返回的数据类型是不同的:

在10.2.0.4/11.1.0.7/11.2.0.1 vm_concat返回的是数据类型为varchar2类型:

SQL> desc wmsys.wm_concat;

FUNCTION wmsys.wm_concat RETURNS VARCHAR2

Argument Name      Type           In/Out  Default?

----------------------- ------------------------ -------- ---------

P1           VARCHAR2         IN

在10.2.0.5/11.2.0.2中,vm_concat返回的数据类型为clob类型:

SQL> desc wmsys.wm_concat;

FUNCTION wmsys.wm_concat RETURNS CLOB

Argument Name      Type           In/Out  Default?

----------------------- ------------------------ -------- ---------

P1           VARCHAR2         IN

 

12c:

经过测试,在12.1/12.2中,vm_concat函数Oracle已经不再支持使用,Oracle推荐使用分析函数LISTAGG代替vm_concat函数的使用。

19c:

经过测试,在19.3/19.7/19.8中,vm_concat函数Oracle依旧不再支持使用。

问题解决

使用wm_concat的继任者LISTAGG

分析函数LISTAGG介绍:

作为单一集合,LISTAGG它对所有行进行操作并返回单个输出行。

作为分组集合,此函数将对GROUP BY子句定义的每个组进行操作并返回输出行。

分析函数LISTAGG使用方法:

listagg(measure_expr,delimiter) within group ( order by order_by_clause);

解释:

measure_expr 可以是基于任何列的表达式

delimiter 分隔符,默认为NULL

order_by_clause 决定了列值的拼接顺序

手动编写函数实现vm_concat

(1)自定义函数类型

CREATE OR REPLACE TYPE WM_CONCAT_IMPL AS OBJECT

(

STR VARCHAR2(32767),

STATIC FUNCTION ODCIAGGREGATEINITIALIZE(cs_ctx IN OUT WM_CONCAT_IMPL) RETURN NUMBER,   

MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT WM_CONCAT_IMPL,PT IN VARCHAR2) RETURN NUMBER,

MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN WM_CONCAT_IMPL,RETURNVALUE OUT VARCHAR2,FLAGS IN NUMBER)RETURN NUMBER,

MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT WM_CONCAT_IMPL,cs_ctx2 IN WM_CONCAT_IMPL) RETURN NUMBER

);

(2)创建函数主体

CREATE OR REPLACE TYPE BODY WM_CONCAT_IMPL

IS

STATIC FUNCTION ODCIAGGREGATEINITIALIZE(cs_ctx IN OUT WM_CONCAT_IMPL)

RETURN NUMBER

IS

BEGIN

cs_ctx := WM_CONCAT_IMPL(NULL) ;

RETURN ODCICONST.SUCCESS;

END;

MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT WM_CONCAT_IMPL,PT IN VARCHAR2)

RETURN NUMBER

IS

BEGIN

IF(STR IS NOT NULL) THEN

STR := STR || ',' || PT;

ELSE

STR := PT;

END IF;

RETURN ODCICONST.SUCCESS;

END;

MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN WM_CONCAT_IMPL,RETURNVALUE OUT VARCHAR2,FLAGS IN NUMBER)

RETURN NUMBER

IS

BEGIN

RETURNVALUE := STR ;

RETURN ODCICONST.SUCCESS;

END;

MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT WM_CONCAT_IMPL,cs_ctx2 IN WM_CONCAT_IMPL)

RETURN NUMBER

IS

BEGIN

IF(cs_ctx2.STR IS NOT NULL) THEN

SELF.STR := SELF.STR || ',' || cs_ctx2.STR ;

END IF;

RETURN ODCICONST.SUCCESS;

END;

END;

(3)创建函数

CREATE OR REPLACE FUNCTION wm_concat(PT VARCHAR2)

RETURN VARCHAR2 AGGREGATE USING WM_CONCAT_IMPL;

 

(4)创建同义词

create public synonym WM_CONCAT_IMPL for sys.WM_CONCAT_IMPL;

create public synonym wm_concat for sys.wm_concat;

grant execute on WM_CONCAT_IMPL to public;

grant execute on wm_concat to public;

vm_concat函数自建完毕

第七部分 pga_aggregate_limit 设置问题

问题描述

pga达到了 PGA_AGGREGATE_LIMIT 值,报告如下错误。

ORA-04036: PGA memory used by the instance exceeds PGA_AGGREGATE_LIMIT

Cause: Private memory across the instance exceeded the limit specified in the PGA_AGGREGATE_LIMIT initialization parameter. The largest sessions using Program Global Area (PGA) memory were interrupted to get under the limit.

Action: Increase the PGA_AGGREGATE_LIMIT initialization parameter or reduce memory usage.

pga_aggregate_limit设置不当会引发数据库问题,如果 PGA 内存使用量仍超过 PGA_AGGREGATE_LIMIT,则终止使用了最多不可优化 PGA 内存的会话和进程

问题解决

ALTER SYSTEM set pga_aggregate_limit=0 scope=spfile sid='*';

如果指定了值 0,则表示实例所使用的 PGA 内存总量没有限制。

第八部分 多表关联查询报ORA-918

问题如下

SELECT PROJECT_ID,        PROJ_VERSION_NO,        NAME ,        DESCRIPTION ,        LAST_CHANGED_DATE FROM   leeh.PW2_PROJECT JOIN   (SELECT PROJECT_ID AS MAX_ID,           MAX(PROJ_VERSION_NO) AS MAX_VERSION    FROM leeh.PW2_PROJECT    GROUP BY PROJECT_ID   ) T ON  PROJECT_ID = MAX_ID AND PROJ_VERSION_NO = MAX_VERSION WHERE PROJ_VERSION_NO > 0; ORA-00918: column ambiguously defined

问题解决

多表关联查询,查询项必须带用户名称,例如

select o.table_name,        o.column_name from   dba_tab_cols o where  owner='HR' and    o.column_name in         (select i.column_name          from dba_tab_cols i          where owner = 'HR'          and i.table_name <> o.table_name         ) order by o.column_name;

第九部分 关闭"_lm_enable_aff_benefit_stats" 隐含参数

问题描述

12.0.1.2以后版本,此参数可能会导致节点重启,

LMHB (ospid: XXXX): terminating the instance due to error 29770,日志如下

Thu Aug 02 13:45:11 2018

opiodr aborting process unknown ospid (359201) as a result of ORA-609 Errors in file /u01/app/oracle/diag/rdbms/ORCL/ORCL1/trace/ORCL1_lmhb_4038.trc  (incident=5794665): ORA-29770: global enqueue process LMON (OSID 3997) is hung for more than 70 seconds Incident details in: /u01/app/oracle/diag/rdbms/ORCL/ORCL1/incident/incdir_5794665/ORCL1_lmhb_4038_i5794665.trc LMHB (ospid: 4038): terminating the instance due to error 29770

 ORA-29770: global enqueue process LMON (OSID 3997) is hung for more than 70 seconds

问题解决

关闭"_lm_enable_aff_benefit_stats"隐含参数

alter system set "_lm_enable_aff_benefit_stats"=FALSE scope=both;

第十部分 关闭_clusterwide_global_transactions 参数

_clusterwide_global_transactions设置为false通常是因为OGG 经典抽取模式不支持分布式事务才设置的,Oracle 19C数据库需要采用OGG 集成抽取,OGG集成抽取是支持分布式事务的,所以不用设置_clusterwide_global_transactions=true,同是设置_optimizer_mjc_enabled=false

第十一部分 表空间i/o 信息不统计

问题描述

Awr报告里表空间、数据文件io信息没数据

Tablespace IO Stats

No data exists for this section of the report.

Back to IO Stats Back to Top

File IO Stats

No data exists for this section of the report.

Back to IO Stats Back to Top

 

解决方法

这是一个数据库的bug,通过执行下面语句可以解决

exec dbms_workload_repository.modify_table_settings(table_name  => 'WRH$_FILESTATXS', flush_level => 'TYPICAL');

exec dbms_workload_repository.modify_table_settings(table_name  => 'WRH$_DATAFILE', flush_level => 'TYPICAL');

exec dbms_workload_repository.modify_table_settings(table_name  => 'Tempfile Group', flush_level => 'TYPICAL');

exec dbms_workload_repository.modify_table_settings(table_name  => 'WRH$_TEMPSTATXS', flush_level => 'TYPICAL');

 

语句失败报错ora-01400

问题描述

迁移到19c,merge语句失败报错ora-01400

解决

alter session set "_sqlexec_use_rwo_aware_expr_analysis" = FALSE;

第十三部分 部分用户LOCAL_TEMP_TABLE 表空间被设置成了SYSTEM

SQL> select USERNAME, TEMPORARY_TABLESPACE, LOCAL_TEMP_TABLESPACE

from dba_users where local_temp_tablespace='SYSTEM'; 

 

USERNAME                       TEMPORARY_TABLESPACE           LOCAL_TEMP_TABLE

SPACE

------------------------------ ------------------------------ -----------------

SYSTEM                         TEMP                           SYSTEM

TEST1                          TEMP                           SYSTEM

TEST2                          TEMP                           SYSTEM

 

解决方法:

alter user <USER_NAME> LOCAL TEMPORARY TABLESPACE TEMP;

 

 

导入错误

Bug mos文档2472847.1

 

 

解决方法:

先导入表结构,再导入数据

 

错误

用sysdba用户导入或者导出,都会碰到需要输密码这一步

解决方法(28707931.8):

 

方法一

升级至21c

 

方法二

打28707931补丁,此补丁包含在2020年4月19.7补丁中

 

方法三

按回车键可跳过输入密码环节继续导入导出

 

第十六部分 Drop user Cascade hang

问题描述

drop user cascade 命令卡住,等待DLM cross inst call completion

解决方法

1. 触发Bug 31038220 & 31208287,打补丁19.9.0.0.201020 (Oct 2020)

2.删除用户前,清除回收站,删表清除回收站,在删用户

drop table <TABLE_NAME> purge;

... ...

drop user <USERNAME>;

 

 

相关推荐