Oracle.中如何查询当前版本中的各参数

oracle

Oracle数据库系统根据初始化参数文件init.ora中设置的参数来配置自身的启动,每个实例在启动之前,首先读取这些参数文件中设置的不同参数。Oracle系统中的参数,根据系统使用情况可以简单分为两大类,普通参数,也就是Oracle系统正常使用的一些参数,另外一类就是特殊参数,包括三种,过时参数、强调参数和隐藏参数。随着Oracle数据库新版本的发布,相应每次都会增加或者删除一些参数。如何查询当前版本数据库系统的参数情况以及当前系统版本相对于以前版本增加或者丢弃的那些参数呢?本文将详细介绍如何查询当前系统版本中的各种参数情况。

一、过时参数和强调参数

Oracle 数据库中,系统提供了几个视图可以查看系统参数的情况。视图 V$OBSOLETE_PARAMETER 中含有所有的过时 (obsolete) 和强调 (underscored) 参数。
过时参数 (obsolote) ,就是在 Oracle 以前的版本中存在,但在新版本中已经淘汰了的参数,已经不再使用;
强调参数(underscored) ,是指那些在新版本中保留了下来,但是除非特殊需要不希望用户使用的那些参数。
在视图 V$OBSOLETE_PARAMETER 中,包含这些参数的名称和一个标志字 ISSPECIFIED ,该标志字用来指出这个参数是否在init.ora 文件中已实际设置。
下面的 SQL 脚本列出了当前系统中所有的过时参数名称以及它们是否在当前系统中设定。
SQL> COL name format a50;
SQL> SELECT name, isspecified FROM v$obsolete_parameter;

上面谈到, Oracle 系统并没有将 V$OBSOLETE_PARAMETER 视图中的所有参数均丢弃,而是将其中的一部分转换为强调参数,下面就来讨论如何查看这些参数是已被丢弃还是被转换。这可以通过系统视图 X$KSPPO 来查看,该视图中包含一个名为 KSPPOFLAG 的字段,用来指明该参数在当前版本中是被丢弃还是被强调,如果该值为 1 ,则表示该参数已被丢弃,该值为 2 ,则表明该参数现为强调参数。
SELECT kspponm,
DECODE(ksppoflg, 1,'Obsolete', 2, 'Underscored')
FROM x$ksppo
ORDER BY kspponm;

注:该视图只在 sys 用户下可以看到。

二、隐藏参数

Oracle 系统中还有一类参数称之为隐藏参数 (hidden parameters) ,是系统中使用,但 Oracle 官方没有公布的参数,这些参数可能是那些还没有成熟或者是系统开发中使用的参数。这些参数在所有 Oracle 官方提供的文档中都没有介绍,他们的命名有一个共同特征就是都以 '_' 作为参数的首字符,诸如 Oracle 8i 中的 _trace_files_public 和 _lock_sga_areas 等等。

下面的查询可以得到当前系统中的所有隐藏参数 ( 以 sys 身份登录 ) :
SELECT ksppinm, ksppstvl, ksppdesc
FROM x$ksppi x, x$ksppcv y
WHERE x.indx = y.indx
AND translate(ksppinm,'_','#') like '#%';

三、系统当前参数

下面的脚本以英文字母顺序列出了系统当前使用的所有参数。在列出的参数中,如果参数名称前面有 # 这个符号,则表示该参数没有明确指定,采用了系统中的默认参数。一般在一个新的 Oracle 版本安装完成后,首先运行该脚本,则可以生成该版本数据库的标准 init.ora 文件。
SET pagesize 9000
SET head OFF
SET term OFF
SELECT DECODE(isdefault, 'TRUE', '# ') ||
DECODE(isdefault, 'TRUE', RPAD(name,43), RPAD(name,45)) ||
' = ' || value
FROM v$parameter
ORDER BY name;

注意:上面的 SQL 脚本没有列出系统中的隐藏参数 

时间: 2024-10-29 08:24:43

Oracle.中如何查询当前版本中的各参数的相关文章

数据库来处理唯一验证好,还是在程序中先查询数据库中是否从存在,插入好呢

问题描述 数据库来处理唯一验证好,还是在程序中先查询数据库中是否从存在,插入好呢 数据库来处理唯一验证好呢,还是在程序中先查询数据库中是否从存在,然后插入 .哪一种好呢?为什么? 我觉得在数据库自己判断唯一属性,然后在程序中try catch会增加数据库负担.

注意ADO。NET中数据查询语句中的符号格式(c#实现)

ado|数据|语句 1.通配符的使用 在ADO.NET中允许使用通配符进行数据查询.如下面语句查询表中EmployeeID以A开头的所有数据                Select EmployeeID,EmployName,Tel,Salary .....where EmployeeID='A%';     ADO.NET允许在字符串的开头或结尾使用%或*通配符.如下面语句查询表中所有单号尾为S的单据 Select productcode,productname,productsum,pr

lotus BS开发中能否查询附件中的内容

问题描述 附件为Txt文件BS中能否检索到附近的内容?怎么实现呀? 解决方案 解决方案二:试过FTSearch没有?解决方案三:可以的,数据库建立索引后,可以用全文检索的.

c# 从oracle中查询数据,设置时间参数问题,在线等

问题描述 c# 从oracle中查询数据,设置时间参数问题,在线等 各位大神,小弟刚接触c#时间不长,写了个程序,从界面上datatimepicker中取出时间,然后在c#代码的sql语句中设置时间参数,无论怎么设置要不就查不到数据,要不就是时间格式设置的不对,下面是代码 public DataTable QueryUsedMaterial(string classgroup, string beginTime, string endTime) { string sql_QueryMateria

oracle中sql查询语句,求助

问题描述 oracle中sql查询语句,求助 比如有两张表 用户表User {id name }成绩表Score {id userid coursename courseScore}现在怎么查找每个用户的最高成绩 解决方案 select distinct u.idu.names.courseScore from User as uinner join ( select max(courseScore) as courseScore userid from Scoregroup by userid

oracle ora01792 表或视图中的最大列数为1000 。查询列数没超过1000

问题描述 oracle ora01792 表或视图中的最大列数为1000 .查询列数没超过1000 分析发现查询返回的列数只有200左右,但是jion了好多张表,我试过去掉几个jion的表,执行sql不报错了.问oracle对jion表得到的总列数有限制吗??? 解决方案 如果关联的表比较多,你可以考虑先建几个视图,通过视图去取就会避这个问题,select 允许的列可能最大为1000,这和你的oracle的版本有关系 解决方案二: ORA-01789: 查询块具有不正确的结果列数

sql-关于oracle 中的查询问题

问题描述 关于oracle 中的查询问题 求b表中的的"Aname +Aaspath"不能与b 表的"Bname +Baspath "相同,问这个sql要怎么写 解决方案 select * from A1 where Aname||Aaspath not in ( select Bname||Baspath from B1 ) select * from A1;1 少女1 住址1 2 少女2 住址2 3 少女3 住址3 8 少女8 住址8 7 少女7 住址7 sel

oracle从一张表中根据不同条件查询出两个结果 然后查出两个结果中相同的数据

问题描述 oracle从一张表中根据不同条件查询出两个结果 然后查出两个结果中相同的数据 这是表中数据 我用下面这种方法 select * from ((select * from SFFX_JGJPZ_DETAIL d where d.jgjpz_id=1) o), ((select * from SFFX_JGJPZ_DETAIL d where d.jgjpz_id=8) t) where o.platename=t.platename ; 查出来的结果对的 却在一行 怎么解决.. 解决方

《Oracle SQL疑难解析》——1.11 从其他查询结果中再次进行查询

1.11 从其他查询结果中再次进行查询 Oracle SQL疑难解析 1.11.1 要解决的问题 如何把一个查询的结果当作表,对此表进行再次的查询.当然,我们并不想把中间结果存在表里面,因为每次运行查询,中间内容都需要刷新. 1.11.2 解决方法 Oracle内联视图(inline view)的特性让我们可以在FROM子句中放置一个子查询,然后给子查询结果取一个表别名: select d.department_name from (select department_id, departmen