返璞归真:获取Oracle初始化参数设定的N种方法

杨廷琨(yangtingkun)

云和恩墨 CTO

高级咨询顾问,Oracle ACE 总监,ITPUB Oracle 数据库管理版版主

参数文件是Oracle数据库文件中级别最低,也是最基本的文件,但是也是数据库实例启动第一个涉及的文件。如果参数文件缺失或者某些参数设置错误,数据库就无法启动。

不要小看这个参数文件,其中隐藏的学问并不少,接下来让我们一一细数关于参数文件的点点滴滴。

多种查询初始化参数方法

查询初始化参数的方法很多,比如 SHOW PARAMETER,或查询 V$PARAMETER 等,这里简单总结一下。

首先初始化参数的设置的方法就有很多种:

  1. 可以通过 ALTER SYSTEM SET SCOPE = MEMORY 的方式仅设置内存的修改;
  2. 也可以通过 ALTER SYSTEM SET SCOPE = SPFILE 只修改 SPFILE 的值;
  3. 当然也可以同时修改 SPFILE 和 MEMORY 中的设置。

还有一种初始化参数可以设置延迟生效,也就是说这个修改只对以后连接到数据库的会话生效,而对当前会话以及其他已经连接到 Oracle 的会话不会生效。

如果再考虑 RAC 环境,数据库中存在多个启动实例的情况,那么查询数据库初始化参数就更加复杂了。

所幸 Oracle 提供的查询初始化参数方法也有很多种途径、方法和来源,请和我们一起熟悉一下以下种种:

SHOW PARAMETERS SHOW SPPARAMETERS CREATE PFILE V$PARAMETER V$PARAMETER2 V$SYSTEM_PARAMETER V$SYSTEM_PARAMETER2 V$SPPARAMETER

以下对这些方法分别进行说明:

  • SHOW PARAMETERS 是 SQLPLUS 工具提供的查询初始化参数的方法,这个方法查询的初始化参数是当前会话生效的初始化参数。
  • SHOW SPPARAMETERS 也是 SQLPLUS 工具提供的方法,用来查询当前会话生效的 SPFILE 参数包含的初始化参数。这个命令在11g 以后 sqlplus 版本中有效。
  • CREATE PFILE 命令不像其他方法那样直观,这种方法可以将 SPFILE 中或当前内存中设置的初始化文件保存到 PFILE 文件中,然后就可以通过文本编辑工具直观的看到 SPFILE 中或当前内存中设置了哪些初始化参数。虽然这种方法看上去比较麻烦,但是这种方法列出的参数都是用户设置的参数,所有默认值的参数并不会列出来,因此看到的结果要比其他方法直观得多。在11g 以后的版本允许 CREATE PFILE FROM MEMORY。
  • V$PARAMETER 视图提供了当前会话可见的初始化参数的设置,如果像查询 RAC 数据库的所有实例的设置,可以查询 GV$PARAMETER 视图。
  • V$PARAMETER2 视图和 V$PARAMETER 差不多,唯一的区别在于对于包括多值的初始化参数,从这个视图会返回多条记录,每条记录对应一个值。同样的,对于 RAC 环境可以查询 GV$PARAMETER2 视图。
  • V$SYSTEM_PARAMETER 视图记录当前实例生效的初始化参数设置。注意这里是实例生效而不是会话生效。同样,GV$SYSTEM_PARAMETER 则包含了所有实例生效的初始化参数信息。
  • V$SYSTEM_PARAMETER2 视图与 V$SYSTEM_PARAMETER 视图的关系和 V$PARAMETER2 视图与 V$PARAMETER视 图的关系一样,都是对于包含多个值的参数采用了分行处理的方式。
  • V$SPPARAMETER 记录了来自 SPFILE 文件中初始化参数。如果参数在 SPFILE 文件中没有设置,则字段 ISSPECIFIED 对应的值为 FALSE。同样可以查询 GVSPPARAMETER 参数来显示 RAC 环境所有实例的设置。

首先看一下V$PARAMETER和V$PARAMETER2的区别,这个区别同样适用于V$SYSTEM_PARAMETER和V$SYSTEM_PARAMETER2:

SQL> SELECT NAME, VALUE FROM V$PARAMETER 2 MINUS 3 SELECT NAME, VALUE FROM V$PARAMETER2; NAME ---------------------------------------- control_files VALUE -------------------------------------------------- E:\ORACLE\ORADATA\YTK102\CONTROL01.CTL, E:\ORACLE\ORADATA\YTK102\CONTROL02.CTL, E:\ORACLE\ORADATA\YTK102\CONTROL03.CTL SQL> SELECT NAME, VALUE FROM V$PARAMETER2 2 MINUS 3 SELECT NAME, VALUE FROM V$PARAMETER; NAME VALUE ---------------------------------------- -------------------------------------------------- control_files E:\ORACLE\ORADATA\YTK102\CONTROL01.CTL control_files E:\ORACLE\ORADATA\YTK102\CONTROL02.CTL control_files E:\ORACLE\ORADATA\YTK102\CONTROL03.CTL

现在这两个视图的结果一目了然了。进一步的研究可以看到底层的数据源来自两个不同的位置,V$PARAMETER来自x$ksppcv ,V$PARAMETER2来自x$ksppcv2,数据源的不同也正是前端的不同。

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2016-04-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏乐沙弥的世界

Oracle SGA 自动管理特性(sga_target参数)

    最近有网友对Oracle SGA内存自动管理特性不是很清楚,可能是由于当时翻译的 Oracle 10g SGA 的自动化管理 比较生涩,下面依旧是针对这...

753
来自专栏鬼谷君

恶意IP远程登录Linux服务器脚本

1353
来自专栏工科狗和生物喵

【计算机本科补全计划】Mysql 学习小计(4)

正文之前 昨天终于把我苦命的毕业设计审批表送出去了。结果暑假的生产实习开始对账,我这儿又开始忙活了,还要签字,我有时候都在想要不全班代签一遍算了。不然真的揪心啊...

3267
来自专栏运维小白

2.13 文档查看cat/more/l

cat/tac/more/wc用法 cat 这个查看文件内容的 -A 显示文件的所有文件(包括字符) -n 显示行号 tac 倒序查看文件内容,...

1786
来自专栏大数据和云计算技术

Hive 元数据表结构详解

元数据是基础,这篇文章值得一读。 本文介绍Hive元数据库中一些重要的表结构及用途,方便Impala、SparkSQL、Hive等组件访问元数据库的理解。 1、...

4145
来自专栏DT乱“码”

一些linux命令总结。

2840
来自专栏云计算教程系列

PostgreSQL中的查询简介

数据库是许多网站和应用程序的关键组成部分,是数据在互联网上存储和交换的核心。数据库管理最重要的一个方面是从数据库中检索数据的做法,无论是临时基础还是已编码到应用...

643
来自专栏陈树义

MongoDb 快速入门教程

MongoDb 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。 它是可扩展的高性能数据存储解决方案,经常被用于...

5114
来自专栏逸鹏说道

SQL Server 深入解析索引存储(下)

概述 非聚集索引与聚集索引具有相同的 B 树结构,它们之间的显著差别在于以下两点: 基础表的数据行不按非聚集键的顺序排序和存储。 非聚集索引的叶层是由索引...

2667
来自专栏逸鹏说道

sql server之数据库语句优化

一切都是为了性能,一切都是为了业务 一、查询的逻辑执行顺序 (1) FROM left_table (3) join_type JOIN right_table...

3207

扫码关注云+社区