导读:从Oracle数据库20c开始,您可以指定一个表达式作为某些初始化参数的值,这使得数据库能够根据环境变化自动调整参数值。这在 Oracle Autonomous 数据库环境中特别有用。

在 Oracle 20c 中,可以指定一个表达式作为初始化参数的值。

  1. 初始化参数的最佳值可能取决于环境特性,如系统配置、运行时的决定以及其他参数的值。

  2. 在以前的版本中,您在设置初始化参数时需要指定一个绝对值,这意味着维持其最佳值需要手动监督和调整。

  3. 从Oracle数据库20c开始,您可以指定一个表达式作为某些初始化参数的值,这使得数据库能够根据环境变化自动调整参数值。这在 Oracle Autonomous 数据库环境中特别有用。

  4. 在 Oracle Real Application Cluster (Oracle RAC) 环境中,为参数值指定表达式也很有用。

  5. 您可以在所有 Oracle RAC 实例中为参数值指定相同的表达式,但该表达式将在每个实例的基础上利用当前实例的环境特征进行评估。这允许数据库对每个 Oracle RAC 实例的参数值进行微调。

可以只为初始化参数类型为 integer 或 big integer 的参数指定表达式。

如下是一个测试范例:

SQL> show parameter aqNAME             TYPE   VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes          integer   1
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES = 'MIN(40, PROCESSES * .1)';System altered.SQL> show parameter aqNAME             TYPE   VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes          integer   30
SQL> show parameter spfileNAME             TYPE   VALUE
------------------------------------ ----------- ------------------------------
spfile             string   /scratch/app/user/dbs/spfileenmotech.ora

检查一下参数文件中的记录信息:

[oracle@enmotech dbs]$ strings spfileenmotech.ora |grep aq*.aq_tm_processes=MIN(40, PROCESSES * .1)

按照文档描述,针对CPU数量,可以通过 CPU_COUNT 参数进行动态参数值设置。
例如:

CPU_COUNT = $SYSTEM_CPU/5

我们测试一下这个设置,注意当未设置 SYSTEM_CPU 环境变量时,系统提示 LRM-00119 错误,意思是无法活动系统参数。

SQL> alter system set cpu_count = '$SYSTEM_CPU *2';
alter system set cpu_count = '$SYSTEM_CPU *2'
*
ERROR at line 1:
ORA-13398: invalid expression parameter: $SYSTEM_CPU *2
LRM-00119: unable to obtain a valid value for '${SYSTEM_CPU}'
接下来设置 OS 环境变量参数:
[oracle@enmotech ~]$ export SYSTEM_CPU=10[oracle@enmotech ~]$ echo $SYSTEM_CPU10[oracle@enmotech ~]$ sqlplus / as sysdba
SQL*Plus: Release 20.0.0.0.0 - Production on Tue Apr 21 05:10:04 2020Version 20.2.0.0.0
Copyright (c) 1982, 2020, Oracle.  All rights reserved.
Connected to:Oracle Database 20c Enterprise Edition Release 20.0.0.0.0 - ProductionVersion 20.2.0.0.0
SQL> alter system set cpu_count = '$SYSTEM_CPU *2';alter system set cpu_count = '$SYSTEM_CPU *2'*ERROR at line 1:ORA-02097: parameter cannot be modified because specified value is invalidORA-02097: parameter cannot be modified because specified value is invalid
SQL>

注意,此时提示是参数值 INVALID ,无效,检查告警日志文件,其中提示设置的 CPU 数量和操作系统获取值不同:

2020-04-21T05:10:11.221117+00:00
ORA-2097: CPU_COUNT cannot be set to 20 because it exceeds 1, the number of CPUs reported by the OS

设置参数文件,重启数据库检查变化,可以发现 cpu_count 设置未生效,这意味着 os 的真实值影响优先级更高:

SQL> alter system set cpu_count = '$SYSTEM_CPU *2' scope=spfile;
System altered.
SQL> startup force;ORACLE instance started.
Total System Global Area  788529032 bytesFixed Size        9572232 bytesVariable Size      662700032 bytesDatabase Buffers    113246208 bytesRedo Buffers        3010560 bytesDatabase mounted.Database opened.SQL> show parameter cpu
NAME             TYPE   VALUE------------------------------------ ----------- ------------------------------cpu_count           integer   1cpu_min_count           string   1parallel_threads_per_cpu       integer   1resource_manager_cpu_allocation      integer   1

但是可以看到参数设置已经生效(注意,设置参数后,需要在环境变量中添加变量,否则启动时将无法识别 SYSTEM_CPU 而出错):

[oracle@enmotech trace]$ cd /scratch/app/user/dbs/[oracle@enmotech dbs]$ strings spfileenmotech.ora |grep cpu_count*.cpu_count=(${SYSTEM_CPU} * 2)

可以看到参数文件中,记录了表达式,这使得数据库的设置更加灵活,智能。

参考:https://docs.oracle.com/en/database/oracle/oracle-database/20/refrn/parameter-files.html
墨天轮原文:https://www.modb.pro/db/24416(复制到浏览器中打开或者点击“阅读原文”)

推荐阅读:144页!分享珍藏已久的数据库技术年刊

数据和云

ID:OraNews

如有收获,请划至底部,点击“在看”,谢谢!

点击下图查看更多 ↓

云和恩墨大讲堂 | 一个分享交流的地方

长按,识别二维码,加入万人交流社群

请备注:云和恩墨大讲堂

  点个“在看”

你的喜欢会被看到❤

Oracle 20c 新特性:表达式参数值 Expressions Parameter Values相关推荐

  1. 资源放送丨《 先睹为快!Oracle 20c新特性解析》PPT视频

    前段时间,墨天轮邀请到了云和恩墨CTO.ACDU核心专家."Oracle百科全书" 杨廷琨 老师分享<先睹为快!Oracle 20c新特性解析>,在这里我们共享一下PP ...

  2. Oracle 20c 新特性:表空间缺省加密算法 TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM

    导读:在 Oracle 20c中,新增加的初始化化参数,让我们可以获得设置表空间缺省加密算法的能力,这个新的参数是:TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM . ...

  3. Oracle 20c 新特性:持久化内存数据库 - Persistent Memory Database

    导读:随着硬件技术的不断进步,PMEM (Persistent Memory)已经足够成熟,开始进入到数据库加速领域,在 DRAM 和 Flash 之间提供能更强的 IO 层支撑.自 Oracle 2 ...

  4. Oracle 20c 新特性:缺省的只读 Oracle HOME 支持

    墨墨导读:在 20c 之前,缺省的 ORACLE_HOME 布局将 ORACLE_HOME.ORACLE_BASE_HOME 和 ORACLE_BASE_CONFIG 合并到一个位置.从 20c 开始 ...

  5. Oracle 20c 新特性详解:SQL Macro 宏 SCALAR / TABLE 模式带来的敏捷和便利

    导读:在 Oracle 20c 中,SQL的宏支持 - SQL Macro 为 SQL 开发带来了进一步的敏捷和便利,在这篇文章中,我们来详细了解一下 SQL Macro 的特性用法. 以下是概要介绍 ...

  6. Oracle 20c 新特性:SQL 宏支持(SQL Macro)Scalar 和 Table 模式

    SQL宏特性,允许开发人员将复杂的处理通过宏定义实现,随后可以在 SQL 中任何位置调用宏.这个特性的实现类似于12c中实现的 Function in SQL 特性. 在 Oracle Databas ...

  7. Oracle 20c 新特性:XGBoost 机器学习算法和 AutoML 的支持

    墨墨导读:XGBoost是一个高效.可扩展的机器学习算法,用于回归和分类(regression and classification),使得XGBoost Gradient Boosting开源包可用 ...

  8. Oracle 20c 新特性:自动的区域图 - Automatic Zone Maps

    导读:Zone Maps 是一个独立的访问结构,可以为表独立建立.在表和索引扫描期间,区块图可以根据表列上的谓词来修剪表的磁盘块和分区表的潜在完整分区.区块映射可以使用 Attribute Clust ...

  9. Oracle 20c 新特性:DIAGNOSTICS_CONTROL 对诊断事件的安全管控

    导读:在诊断Oracle数据库问题时,Oracle支持服务人员可能会指示您执行某些诊断操作.有些诊断操作是无害的.但是,如果不正确地执行其他操作,可能会产生不利影响.为了控制和监控执行此类诊断操作的人 ...

最新文章

  1. 如何让代码段只运行在 Debug 模式下 ?
  2. 【CF#505B】Mr. Kitayuta's Colorful Graph (并查集或Floyd或BFS)
  3. Silverlight Telerik控件学习:主题Theme切换
  4. MySQL日志设置双1_mysql日志配置文件示例
  5. matlab sizeof size,使用Matlab进行MEXing C时,size_t和mwSize之间的差异
  6. 使用matlab的appdesigner绘制Steward并联机构
  7. PHP资源汇总,内容包括:库、框架、模板等
  8. Pyinstaller的Spec文件用法
  9. Java 新人含笑7步癫 No.140
  10. 前端理解base64
  11. ie登录显示登录到ftp服务器,ie浏览器登陆ftp服务器
  12. 【已恢复】苹果再堵开发者账号注册漏洞,黑市账号价格有价无市!
  13. 网站跨域请求的解决方案
  14. PicGO+阿里云OSS或PicGO+Github+Jsdelivr搭建图床(图解)
  15. 基于LinkedList实现HashMap代码
  16. Unity | HDRP高清渲染管线学习笔记:HDRP配置文件(HDRP Asset)
  17. 数据的距离度量 二、余弦距离,汉明距离,测地距离,布雷柯蒂斯距离
  18. 桩身弹性压缩计算公式_【精选】单桩桩身压缩量的分析计算.pdf
  19. HTML5游戏引擎(十五)-时间控制——Timer计时器 Ticker心跳-startTick-stopTick 帧事件-ENTER_FRAME
  20. Elasticsearch:Supervised Machine Learning - 有监督的机器学习

热门文章

  1. java 情侣最佳升高_2016年最佳情侣:显示经理和窗口经理
  2. windows7计算机管理,windows7计算机管理
  3. linux从Mac下载文件,如何将命令的输出保存到Bash中的文件(也称为Linux和macOS终端) | MOS86...
  4. 习题7.10 使用割线法求解方程
  5. 计算机科学与技术考英语一还是英语二,​在职研究生考试是考英语一还是英语二?区别是什么?...
  6. oracle dba开头的表,KU$开头的表是什么表?
  7. c语言图片base64编码,C语言实现Base64编码
  8. java不能打开串口_java打不开串口,我已经放入那两个文件了,但是报错了,调用不了...
  9. 各种流行编程语言的优缺点
  10. xml的应用与dtd约束