oracle从11g升级到19c注意点

1、Oracle 19c 主要的新特性

  • Data Guard 备库DML自动重定向
  • Varchar2 可以支持最大 32767 字节大小
  • Oracle的混合分区表支持
  • 多实例并行重做日志应用增强
  • Multitenant Environment 多租户系统
  • In-Memory Option 内存列式存储
  • 自动创建索引(仅一体机有此功能)
  • 实时统计信息收集(仅一体机有此功能)
  • SQL隔离(仅一体机有此功能)

更多新特性请查看:

https://apex.oracle.com/database-features/

2、 PLSQL、函数、存储过程问题

可能有一些 SQL 在原有 11g 环境运行正常,但在 19c 环境下会出错,

此类问题则为 PLSQL、函数、存储过程等的语法问题,需要开发人员重构代码解决。例如:LISTAGG 聚合函数现在支持通过使用新的 DISTINCT 关键字来消除重复项。LISTAGG 聚合函数根据 ORDER BY 表达式对查询中每个组的行进行排序,然后将值连接成单个字符串。在串联成单个字符串之前,可以使用 new DISTINCT 关键字从指定的表达式中删除重复值。这样就无需在使用聚合 LISTAGG 函数之前创建复杂的查询处理来查找不同的值。使用“DISTINCT”选项删除 LISTAGG 函数中的重复值。

另外,如果在 11g 中使用了 wm_concat 函数,19c 中已经没有这个函数了,可以使用listagg替换,开发人员需要修改 SQL 语法或者新建这个函数也可以。

vm_concat(v_colname)  ----> listagg(v_colname,',')

5、开发需要关注自建的存储过程、函数的兼容问题

统计用户对象的个数和类型

对象总数

select d.owner,count(1) from dba_objects d 
where d.owner in ('PROD','PROD_CC','PROD_OP','PROD_CB','PROD_OS') 
and d.owner not in ('PUBLIC') 
and not exists (select 1 from dba_recyclebin b 
where b.object_name=d.object_name 
and d.owner = b.owner) 
group by d.owner 
order by count(1) desc;

查找使用自建函数的 SQL

select distinct sql_id, sql_text, module
from V$SQL,
(select object_name
from DBA_OBJECTS O
where owner = 'PROD'
and object_type in ('FUNCTION', 'PACKAGE'))
where (instr(upper(sql_text), object_name) > 0)
and plsql_exec_time > 0
and regexp_like(upper(sql_fulltext), '^[SELECT]')
and parsing_schema_name = 'PROD'; 

对象类型汇总

select d.owner,d.object_type,count(1) from dba_objects d where d.owner in ('PROD','PROD_CC','PROD_OP','PROD_CB','PROD_OS')  and d.owner not in ('PUBLIC') and not exists (select 1 from dba_recyclebin b where b.object_name=d.object_name and d.owner = b.owner) group by d.owner,d.object_type order by count(1) desc;

OWNER                          OBJECT_TYPE           COUNT(1)
------------------------------ ------------------- ----------
PROD                         INDEX                     7352
PROD_CC                      INDEX                     7125
PROD_OP                      INDEX                     4566
PROD                         SEQUENCE                  1151
PROD                         TABLE                     1144
PROD_CC                      SEQUENCE                  1115
PROD_CC                      TABLE                     1106
PROD_OP                      SEQUENCE                   676
PROD_OP                      TABLE                      668
PROD                         LOB                        126
PROD_CC                      LOB                        118
PROD_OP                      LOB                         55
PROD                         FUNCTION                    18
PROD_CC                      FUNCTION                    17
PROD_CB                      INDEX                       15
PROD                         PROCEDURE                    3
PROD_CB                      TABLE                        3
PROD_CC                      PROCEDURE                    2
PROD_CB                      SEQUENCE                     2
PROD                         TRIGGER                      1
PROD                         TYPE                         1
PROD_OP                      FUNCTION                     1

22 rows selected.

检查业务用户自建对象

select OWNER,OBJECT_TYPE,OBJECT_NAME from dba_objects d 
where d.owner in ('PROD','PROD_CC','PROD_OP','PROD_CB','PROD_OS') 
and OBJECT_TYPE not in ('INDEX','SEQUENCE','LOB','TABLE') 
order by 2,1;

检查无效索引

select owner,index_name,status from dba_indexes 
where status='UNUSABLE' order by 1,2;

select i.owner,i.index_name,p.partition_name,p.status 
from dba_ind_partitions p,dba_indexes i
where p.index_name=i.index_name and p.status='UNUSABLE' order by 1,2,3;

select i.owner,i.index_name,s.subpartition_name,s.status 
from dba_ind_subpartitions s,dba_indexes i 
where s.index_name=i.index_name and s.status='UNUSABLE' 
order by 1,2,3;

确认系统用户是否包含业务对象

--检查SYS和SYSTEM的重复对象,返回如下行则正常。
set line 345
col OBJECT_NAME for a40
select owner,object_name,object_type from dba_objects 
where (object_name,object_type) in 
(select object_name,object_type from dba_objects where owner='SYS') 
and owner='SYSTEM';

OWNER                          OBJECT_NAME                              OBJECT_TYPE
------------------------------ ---------------------------------------- -------------------
SYSTEM                         AQ$_SCHEDULES                     TABLE
SYSTEM                         AQ$_SCHEDULES_PRIMARY             INDEX
SYSTEM                         DBMS_REPCAT_AUTH                 PACKAGE BODY
SYSTEM                         DBMS_REPCAT_AUTH                 PACKAGE

select owner,segment_name,segment_type,tablespace_name 
from dba_segments 
where tablespace_name in('SYSTEM','SYSAUX') 
and owner in ('PROD','PROD_CC','PROD_OP','PROD_CB','PROD_OS'); 

6、SQL 执行计划变差问题

升级后可能会有些 SQL 语句性能变差,这块需要 DBA 介入,重新收集统计信息、固定执行计划或者使用 SPA(SQL 性能分析SQLPerformance Analyzer) 等技术检查,官方文档:Oracle Database Testing Guide 19c

https://docs.oracle.com/en/database/oracle/oracle-database/19/ratug/index.html

 

 

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Oracle 11g 升级19c 需要按照一定的步骤和注意事项进行,以保证升级的顺利和数据的安全。 1. 备份当前 11g 数据库。 2. 检查当前 11g 数据库的版本和操作系统是否符合 19c 的要求。 3. 升级数据库到 12cR2 版本,如果没有升级到 12cR2,则需要先升级到 12cR2 版本。 4. 使用 Database Upgrade Assistant (DBUA) 工具进行升级,或者手动执行升级脚本。 5. 检查升级后的数据库是否正常运行,并进行必要的数据库调整。 注意升级是一个关键的过程,请确保在升级前有充分的测试和准备,以及有足够的备份。 ### 回答2: Oracle 11g升级19c是一项重要的数据库升级任务。以下是一些关于此升级过程的基本信息: 首先,升级19c需要确保你的系统满足相关的系统要求。这包括硬件要求、操作系统要求以及软件要求。确保在升级过程中没有任何的系统兼容性问题是非常重要的。 其次,为了准备升级,你需要备份你的11g数据库,以便在升级中发生问题时可以恢复到之前的状态。备份包括数据文件、控制文件和约束文件。此外,还应该进行全面的测试,以确保备份的可用性和恢复的可行性。 然后,你需要下载并安装19c的软件。在下载前,你需要检查你的Oracle支持合同是否包含了19c软件的许可。下载完成后,解压缩软件并按照安装指南进行安装。在安装过程中可以选择不同的升级选项,比如使用数据库升级向导、手动升级或使用Oracle升级工具。 一旦软件安装完成,你需要运行数据库升级向导来执行实际的升级过程。这个向导将引导你完成升级的每一步,包括检查和解决任何潜在的问题、备份控制文件和数据文件、更新Oracle字典、执行升级脚本等。 最后,在升级完成后,你需要进行全面的测试,以确保新版本的数据库正常工作。检查应用程序的兼容性,并进行必要的更改。如果有问题,你可以使用备份来恢复到11g版本,并进一步调查和解决问题。 总的来说,将Oracle 11g升级19c是一项复杂的任务,需要认真做好升级前的准备工作,并且在升级过程中小心谨慎。通过遵循Oracle官方提供的文档和最佳实践,你可以成功地升级你的数据库,从而获得更好的性能、功能和安全性。 ### 回答3: Oracle 11g是一个被广泛使用的数据库版本,但随着技术的不断进步,升级到更高版本的数据库是必不可少的。升级Oracle 19c有很多好处,以下是一些主要的原因。 首先,Oracle 19c具有更好的性能和扩展性。它引入了一些新的功能和优化,例如自动索引优化和自动调优,这可以提高数据库的性能并减少管理员的工作量。此外,19c还具有更好的并发能力,可以处理更多的并发请求,提高应用程序的响应速度。 其次,升级Oracle 19c还可以获得更好的安全性和稳定性。19c引入了一些新的安全功能,如数据红action脱敏、增强的数据保护等,可以提高数据库的安全级别。此外,19c还对存储和备份进行了优化,确保数据的完整性和可靠性。 另外,升级19c还可以享受到更好的管理工具和支持。19c提供了新的管理和监控工具,如数据库管理台(Database Management Console)和自动错误诊断工具(ADDM),这些工具可以更好地帮助管理员进行数据库维护和故障排除。此外,Oracle官方也提供了更多的支持和更新,以确保数据库的稳定和可靠运行。 最后,升级19c也可以保持与最新的技术和趋势的接轨。19c是目前Oracle发布的最新版本,可以支持最新的应用程序和框架。通过升级19c,可以保证数据库与最新的技术和趋势保持同步,并获得更好的兼容性和协作能力。 综上所述,升级Oracle 19c是一个值得推荐的选择。它可以提供更好的性能、安全性、稳定性和可管理性,同时也可以保持与最新技术的接轨。无论是从业务需求还是技术发展的角度考虑,升级19c都是一个明智的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值