陈老师:1415968548 郑老师:2735197625 乐老师:354331153
客服热线:
19941464235 / 19906632509 / 19906733890 / 19905812933(微信同号)

客服微信

【Oracle OCP】19c下的参数文件视图

作者:炎燚小寶
发布时间:2023-12-19 09:29
浏览量:566

本文为云贝教育 刘峰 原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。


一、关于参数的解释

1)V$PARAMETER

V$PARAMETER displays information about the initialization parameters that are currently in effect for the session. A new session inherits parameter values from the instancewide values displayed by the V$SYSTEM_PARAMETER view

显示当前对会话有效的初始化参数的信息。一个新的会从V$SYSTEM_PARAMETER视图显示的实例范围的值中继承参数值


视图下的几个重要列(下面的几个视图中也存在这个几个列,类同)

ISSES_MODIFIABLE: 表明当前参数是否够基于session级别进行修改(ALTER SESSION (TRUE) or not (FALSE))

ISSYS_MODIFIABLE: 表明当前参数是否够基于system级别进行修改(ALTER SYSTEM)以及改变生效的情形

IMMEDIATE,立即生效(不考虑是否用pfile或spfile启动);

DEFERRED,延迟生效,后续新的session中有效(不考虑是否用pfile或spfile启动);

FALSE,参数不能被修改,除非使用了spfile参数文件启动,后续新的session中有效

ISINSTANCE_MODIFIABLE:是否为实例级别可修改参数(ALTER SYSTEM),主要是考虑RAC环境

TRUE,表明该参数可以不同于其他实例

FALSE,表名该参数在所有实例中必须使用相同的值

ISPDB_MODIFIABLE: 是否PDB级别可以修改


2)V$PARAMETER2

V$PARAMETER2 displays information about the initialization parameters that are currently in effect for the session, with each list parameter value appearing as a row in the view. A new session inherits parameter values from the instance-wide values displayed in the V$SYSTEM_PARAMETER2 view.
Presenting the list parameter values in this format enables you to quickly determine the values for a list parameter. For example, if a parameter value is a, b, then the V$PARAMETER view does not tell you if the parameter has two values (both a and b) or one value (a, b).
V$PARAMETER2 makes the distinction between the list parameter values clear

V$PARAMETER2显示当前的初始化参数信息效果,每个列表参数值在视图中显示为一行。一个新的类中显示的实例范围的值继承参数值V$SYSTEM_PARAMETER2视图。

以这种格式显示列表参数值使您能够快速确定列表参数的值。例如,如果参数值为a, b,则V$ parameter视图不会告诉您参数是有两个值(a和b)还是只有一个值(a, b)。

V$PARAMETER2使列表参数值之间的区别变得清晰。


3)V$SYSTEM_PARAMETER

V$SYSTEM_PARAMETER displays information about the initialization parameters that are currently in effect for the instance.

A new session inherits parameter values from the instance-wide values.

显示的是基于实例级别参数的相关信息,新的session同样会从实例级别进行派生


4)V$SYSTEM_PARAMETER2

V$SYSTEM_PARAMETER2 displays information about the initialization parameters that are currently in effect for the instance,  with each list parameter value appearing as a row in the view. A new session inherits parameter values from the instance-wide values.

与V$PARAMETER,V$PARAMETER2相类似,V$SYSTEM_PARAMETER2用于展示实例级别且一个参数有多个值分多行列出的情形


5)V$SPPARAMETER

displays information about the contents of the server parameter file. If a server parameter file was not used to start   the instance, then each row of the view will contain FALSE in the ISSPECIFIED column.

这个视图列出的是基于服务器参数文件中的参数信息,如果没有使用服务器参数文件启动实例,则视图中每一行ISSPECIFIED列的值为FALSE


二、实验演示

2.1 会话级别和系统级别的参数调整区别

--基于session级别可以直接使用show parameter方式查看参数,因为该命令底层调用的就是v$parameter
--以可以在会话级别修改的参数cursor_sharing为例
1、查看cursor_sharing默认参数
SYS@ORCLCDB>  show parameter cursor_sharing
NAME                  TYPE               VALUE
------------------------------------ -------------------------------- ------------------------------
cursor_sharing             string               EXACT

2、查看cursor_sharing可以修改的范围
SYS@ORCLCDB> col name for a30
SYS@ORCLCDB> col value for a30
SYS@ORCLCDB> select name,value,isses_modifiable,issys_modifiable,ISPDB_MODIFIABLE,isinstance_modifiable
  2     from v$parameter where name='cursor_sharing';
NAME               VALUE             ISSES ISSYS_MOD ISPDB ISINS
------------------------------ ------------------------------ ----- --------- ----- -----
cursor_sharing          EXACT             TRUE  IMMEDIATE TRUE  TRUE

3、在会话级别修改cursor_sharing
SYS@ORCLCDB> alter session set cursor_sharing='SIMILAR';
Session altered.

4、查看会话级别的cursor_sharing己修改成功
SYS@ORCLCDB>  show parameter cursor_sharing
NAME                  TYPE                VALUE
------------------------------------ -------------------------------- ------------------------------
cursor_sharing             string                 SIMILAR

5、查看系统级别的cursor_sharing参数
SYS@ORCLCDB> select name,value from v$system_parameter where name='cursor_sharing';
NAME                   VALUE
------------------------------ ------------------------------
cursor_sharing          EXACT       -->还是原来的默认值

6、在系统级别修改cursor_sharing参数
SYS@ORCLCDB> alter system set cursor_sharing='FORCE';
System altered.

7、再次查看当前会话参数
SYS@ORCLCDB>  show parameter cursor_sharing
NAME       TYPE     VALUE
---------------------- --------------------- ------------------------------
cursor_sharing    string      FORCE   -->发现继承了系统级别的参数值


2.2 v$parameter与v$parameter2的差异

1、show parameter查看control_files
SYS@ORCLCDB> show parameter control_files

NAME                  TYPE    VALUE
------------------------------------ ---------- ------------------------------
control_files             string   /opt/oracle/oradata/ORCLCDB/co
                          ntrol01.ctl, /opt/oracle/orada
                          ta/ORCLCDB/control02.ctl, /opt
                          /oracle/oradata/ORCLCDB/contro
                          l03.ctl                        

2、v$parameter查看control_files
SYS@ORCLCDB> select name,value from v$parameter where name='control_files';
NAME               VALUE
------------------------------ ------------------------------
control_files           /opt/oracle/oradata/ORCLCDB/co
                 ntrol01.ctl, /opt/oracle/orada
                 ta/ORCLCDB/control02.ctl, /opt
                 /oracle/oradata/ORCLCDB/contro
                 l03.ctl

3、v$parameter2查看control_files
SYS@ORCLCDB> select name,value from v$parameter2 where name='control_files';
NAME               VALUE
------------------------------ ------------------------------
control_files          /opt/oracle/oradata/ORCLCDB/control01.ctl
control_files          /opt/oracle/oradata/ORCLCDB/control02.ctl
control_files          /opt/oracle/oradata/ORCLCDB/control03.ctl

区别就在于v$parameter2针对v$parameter中存在多条记录的参数,如controfile分开进行展示。


2.3 v$spparameter的作用

该视图可以用于判断当前数据库使用的是pfile还是spfile来启动

SYS@ORCLCDB>  select distinct isspecified from v$spparameter;
ISSPEC
------
TRUE   --->第一个值为TRUE,spfile启动
FALSE
如果上面的值只有FALSE,表示pfile启动

SYS@ORCLCDB> select name,value from v$spparameter where name='control_files';
NAME               VALUE
------------------------------ ------------------------------
control_files          /opt/oracle/oradata/ORCLCDB/co
                 ntrol01.ctl
control_files          /opt/oracle/oradata/ORCLCDB/co
                 ntrol02.ctl
control_files          /opt/oracle/oradata/ORCLCDB/co
                 ntrol03.ctl
--->由于为spfile启动,所以查询到控制文件信息,同时结果有多条会多行展示;如果是pfile,查询不到任何信息
SYS@ORCLCDB>  select count(*) from v$spparameter where isspecified='TRUE';
  COUNT(*)
----------
    27 --->由于为spfile启动,所以结果非0;如果是pfile,结果为0


三、总结

1、对于Oracle数据库参数文件存在多个视图可以查询其值

2、v$paraemter和v$parameter2视图主要是查询基于session级别的参数的相关信息,v$parameter2对于同一个参数多个值分多行的形式展开;

3、v$system_parameter和v$system_parameter2是查询基于system实例级别的参数的相关信息,v$system_parameter2同样用于一个参数多值分行展开

4、v$spparameter主要用于检查当前是否使用spfile方式启动,同时可以查看哪些参数是spfile指定的