加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

大规模升级来临,谈谈Oracle 12cR2使用经验

发布时间:2019-04-17 07:55:39 所属栏目:MySql教程 来源:杨志洪
导读:副标题#e# 大规模升级来临,咱们来谈谈Oracle 12cR2使用经验。 一、升级到12cR2的必要性 随着2019年2月13日,Oracle 19c (Oracle 12.2.0.3) for Exadata 版本发布,Oracle 12cR2体系的数据库版本终于迎来了长期支持版本(Oracle 12c的最后一个大版本),也就

但实践证明,热插拔最好在同版本之间做,否则可能出现异常。

大规模升级来临,谈谈Oracle 12cR2使用经验

在12c建pdb的语法里,还新出现了一个option叫PATH_PREFIX,用来限制一些对象(directory objects/oracle XML/create pfile/oracle wallets)只能在特定目录下。这个目录前缀,一旦添加将伴随着pdb直到终老,连datapump想换个目录都不行,所以添加一定要谨慎。

在Oracle 18c里做pdb迁移的时候,执行DBMS_PDB.CHECK_PLUG_COMPATIBILITY,可能会报ORA-7445[__intel_ssse3_rep_memcpy()],这是Bug 28502403 - ORACLE 18.3.0 MULTITENANT: COMPATIBILITY CHECK DOES NOT WORK。

不过这个bug只在18.2和18.3出现,用最新的18c可以规避这个问题。

随着国家网络安全法的实施,企业安全检查愈加严格,“定期修改数据库密码”从应付检查变成严格执行。这对11g dg的DBA来说,是一件极为痛苦的事情,每次修改主库密码,还得手动同步密码文件到各个备库实例,稍微漏了某个实例没同步到,数据就不同步了。

12cR2推出的一个新特性——自动同步密码文件到Data Guard备库,当SYS、SYSDG等的密码发生更改时,主数据库中的密码文件被更新,然后将更改传播到配置中的所有备库。

与此可以配合的是11gR2推出的一个新参数REDO_TRANSPORT_USER,创建单独的日志传输授权用户,并赋予SYSOPER权限,然后再将此账户封存即可。使用过程中需要注意的是,这个用户名是区分大小写的。

在最新Oracle19c也推出了不少新特性,我最为关注的有2个:

自动统计信息管理

统计信息管理一直是大企业数据库管理的一个难题,随着表的数据变化,统计信息能够实时更新,防止SQL语句选择次优执行计划(据官网介绍,这是AWS抛弃Oracle选用Aurora的重要理由)。

Oracle 19c内置了专家系统,内置算法捕获应用程序SQL历史进SQL仓库、识别有益于新SQL的后选索引、验证、决策、在线验证、监控的自动索引创建,并且一段时间自动创建的索引如果不合适还会自动删除。

自动索引创建

自动索引创建这一特性引入了一个开关视图dba_auto_index_config。鉴于19c目前仅推出了Exadata版本,这2个特性是否能在生产上使用还有待评估。

三、一些谨慎使用的特性

将交易型生产数据库迁移到Oracle 12c(包括Oracle12cR2、Oracle18c、Oracle 19c),有一些特性建议关闭(其中部分特性是从Oracle 10g开始一直都建议关闭的),设计很理想,现实很骨感,我们能做的就是帮忙尽量圆润一些。

下面默认数据库都是Oracle RAC:

1、实例并行执行

PARALLEL_FORCE_LOCAL该参数默认是False。理论上讲,集群多个节点,并行处理的时候多个节点一起来,均衡用力,是最优方案。事实是多节点并行处理的协调成本很高,节点间通讯负载大。因此要改为True,实现进程级别本地化并发处理。

2、内存自动管理

从10g开始sga自动管理sga_target到12c的内存级别自动管理memory_target。核心生产库全部建议改为手动,非核心几个月不看一眼的库可以设置为自动管理。

3、查询结果缓存

一次缓存,百次使用。对某些特定“静态”查询类的系统可能适用,在OLTP里这种场景几乎没有。所有result_cache_max_size=0。

4、布隆过滤算法

Bloom Filter由布隆在1970年提出,用来检索一个对象是否在某个集合中,优点是空间效率高于其他算法,缺点是有一定的误识别率。一旦识别错误,效率就是百倍降低,这对于高效稳定的系统来说是不可接受的。

  1. _bloom_filter_enabled=false;_bloom_pruning_enabled=false 

动态资源重组:每个数据库资源,都有其Master,拥有者和请求者,初衷是根据请求情况来动态调整Master,减少实例间数据传输。

  1. _gc_policy_time=0;_gc_undo_affinity=false;"_gc_read_mostly_locking"=FALSE。 

5、 段延迟创建

新建一个数据表,Oracle只会建这个对象而暂不分配segment,只有当往表里插入第一条数据的时候才创建segment。初衷是节约存储空间,但该特性bug极多。

  1. deferred_segment_creation=false 

6、内存列式存储

In-Memory Option是12c的一大亮点,对特定的应用适用。

通常建议关闭:inmemory_size=0;inmemory_query=disable;

四、几个问题/bug

升级到Oracle 12c后遇到的一些重要bug,建议要去整改。

问题1:SGA手动管理模式下,Oracle偷偷去自动增大Shared pool了(Oracle 19.2解决)。

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读