1、参数文件简述:
在oracle数据库中,参数文件包含了所有的数据库配置信息,它非常重要。我认为如果 要把oracle管理好,必须要做到对参数及参数文件的了如指掌。但是,oracle数据库中数据是庞大的,且正因为参数文件包含了数据库的所有配置信息,所以参数很多,有几百个之多,一时是难以熟悉和掌握的,这需要在实践中的配置,了解和领会。有关各个参数的详细参考信息,请参阅oracle官方文档《Oracle9i Database Reference》。
这里通过两个部分对参数文件及参数进行说明:参数文件说明和常用参数说明。一、参数文件说明
Oracle数据库系统根据初始化参数文件init.ora中设置的参数来配置自身的启动,每个实例在启动之前,首先读取这些参数文件中设置的不同参数。
Oracle系统中的参数,根据系统使用情况可以简单分为两大类:
普通参数:也就是Oracle系统正常使用的一些参数,
非凡参数:包括三种,过时参数、强调参数和隐藏参数。
随着Oracle数据库新版本的发布,相应每次都会增加或者删除一些参数。下面具体介绍如何查询当前系统版本中的各种参数情况。
一、过时参数 和 强调参数
Oracle 数据库中,系统提供了几个视图可以查看系统参数的情况。视图 V$OBSOLETE_PARAMETER 中含有所有的过时 (obsolete) 和强调 (underscored) 参数。
这里首先说明一下什么是 Oracle 的过时 (obsolote) 和强调 (underscored) 参数,过时参数,顾名思义就是在 Oracle 以前的版本中存在,但在新版本中已经淘汰了的参数,已经不再使用;而强调参数,是指那些在新版本中保留了下来,但是除非非凡需要不希望用户使用的那些参数。
在视图 V$OBSOLETE_PARAMETER 中,包含这些参数的名称和一个标志字 ISSPECIFIED ,该标志字用来指出这个参数是否在 init.ora 文件中已实际设置。 下面的 SQL 脚本列出了当前系统中所有的过时参数名称以及它们是否在当前系统中设定。
/* Formatted on 2010-5-12 17:46:27 (QP5 v5.115.810.9015) */
SELECT name, isspecified FROM v$obsolete_parameter;
上面谈到, Oracle 系统并没有将 V$OBSOLETE_PARAMETER 视图中的所有参数均丢弃,而是将其中的一部分转换为强调参数,下面就来讨论如何查看这些参数是已被丢弃还是被转换。这可以通过系统视图 X$KSPPO 来查看,该视图中包含一个名为 KSPPOFLAG 的字段,用来指明该参数在当前版本中是被丢弃还是被强调,假如该值为 1 ,则表示该参数已被丢弃,该值为 2 ,则表明该参数现为强调参数。
/* Formatted on 2010-5-12 17:46:06 (QP5 v5.115.810.9015) */
SELECT kspponm, DECODE (ksppoflg,
1,
'Obsolete',
2,
'Underscored')
FROM x$ksppo
ORDER BY kspponm;
注:该视图只在 sys 用户下可以看到。
二、隐藏参数
Oracle 系统中还有一类参数称之为隐藏参数 (hidden parameters) ,是系统中使用,但 Oracle 官方没有公布的参数,这些参数可能是那些还没有成熟或者是系统开发中使用的参数。这些参数在所有 Oracle 官方提供的文档中都没有介绍,他们的命名有一个共同特征就是都以 '_' 作为参数的首字符. 下面的查询可以得到当前系统中的所有隐藏参数,需要以sys用户登陆,查看两个视图:x$ksppi, x$ksppcv.
/* Formatted on 2010-5-12 17:45:46 (QP5 v5.115.810.9015) */
SELECT ksppinm, ksppstvl, ksppdesc
FROM x$ksppi x, x$ksppcv y
WHERE x.indx = y.indx AND TRANSLATE (ksppinm, '_', '#') LIKE '#%';
或者用:
/* Formatted on 2010-5-12 17:07:26 (QP5 v5.115.810.9015) */
SELECT i.ksppinm name,
i.ksppdesc description,
CV.ksppstvl VALUE,
CV.ksppstdf isdefault,
DECODE (BITAND (CV.ksppstvf, 7),
1, 'MODIFIED',
4, 'SYSTEM_MOD',
'FALSE')
ismodified,
DECODE (BITAND (CV.ksppstvf, 2), 2, 'TRUE', 'FALSE') isadjusted
FROM sys.x$ksppi i, sys.x$ksppcv CV
WHERE i.inst_id = USERENV ('Instance')
AND CV.inst_id = USERENV ('Instance')
AND i.indx = CV.indx
AND i.ksppinm LIKE '/_%' ESCAPE '/'
ORDER BY REPLACE (i.ksppinm, '_', '');
三、系统当前参数
下面的脚本以英文字母顺序列出了系统当前使用的所有参数。在列出的参数中,假如参数名称前面有 # 这个符号,则表示该参数没有明确指定,采用了系统中的默认参数。
/* Formatted on 2010-5-12 17:44:11 (QP5 v5.115.810.9015) */
SELECT DECODE (isdefault, 'TRUE', '# '),
DECODE (isdefault, 'TRUE', RPAD (name, 43), RPAD (name, 45)),
VALUE
FROM v$parameter
ORDER BY name;
注意:上面的 SQL 脚本没有列出系统中的隐藏参数。
第六,oracle数据库只使用一个参数文件,要么是pfile,要么是spfile,那么如何判断 数据库当前使用的是哪一个参数文件呢?
一种方法是能过create pfile来鉴别,如果当 前使用的不是spfile,则相应格式的create pfile会产生错误。
另一种方法是show parameter spfile命令,用来显示spfile的位置,如果显示的值为空,则表示使用的是pfile。
二、优先级别
Oracle 启动读取参数文件的顺序,如果个文件都不存在,则Oracle会报错
spfile<sid>.ora --> spfile.ora -->init<sid>.ora
参数文件存储路径:
spfle: $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora
pfile(9i): $ORALCE_HOME/dbs/init$ORALCE_SID.ora /*10g以后一般不用init<sid>.ora*/
pfile(10g): $ORALCE_BASE/admin/$ORACLE_SID/pfile /*仅当数据库初始化时使用*/
pfile: $ORACLE_HOME/dbs/init.ora /*默认*/
参数文件之间的转化:
从spfile来生成pfile
create pfile from spfile , —— 执行完毕后,pfile 将保存为$ORACLE_HOME/dbs/init$ORACLE_SID.ora
也可以指定pfile 的路径:create pfile = '<dir>' from spfile;
由pfile 生成spfile
create spfile from pfile
create spfile from pfile = '<dir>'
create spfile = '<dir>' from pfile
11g中的新指令,从memeory中生成
create spfile = '<dir>' from memeory */
/*
* 当使用不带pfile 子句的startup 命令时,Oracle 将从平台指定的默认位置上的服务器参数文件(spfile)中读取初始化参数。Oracle查找spfile或者创通的init.ora的顺序是:在平台指定的默认位置上,Oracle首先查找名为spfile$ORACLE_SID.ora的文件,如果没有就查找spfile.ora文件,还没有的话,就找init$ORACLE_SID.ora文件。
BOTH:顾名思义,包含以上两种,立即生效,且永久生效。
4、创建参数文件
对于pfile,你可以用文本编辑器直接手工编辑一个,也可以使用create pfile命令从spfile创建,如:
CREATE PFILE='C:\PFILE\MYPFILE.ORA' FROM SPFILE='D:\SPFILE\MYSPFILE.ORA';CREATE SPFILE FROM PFILE='C:\PFILE\MYPFILE';
详情参考:http://blog.csdn.net/changyanmanman/article/details/7388789
1、参数文件简述:
在oracle数据库中,参数文件包含了所有的数据库配置信息,它非常重要。我认为如果 要把oracle管理好,必须要做到对参数及参数文件的了如指掌。但是,oracle数据库中数据是庞大的,且正因为参数文件包含了数据库的所有配置信息,所以参数很多,有几百个之多,一时是难以熟悉和掌握的,这需要在实践中的配置,了解和领会。有关各个参数的详细参考信息,请参阅oracle官方文档《Oracle9i Database Reference》。
这里通过两个部分对参数文件及参数进行说明:参数文件说明和常用参数说明。一、参数文件说明
Oracle数据库系统根据初始化参数文件init.ora中设置的参数来配置自身的启动,每个实例在启动之前,首先读取这些参数文件中设置的不同参数。
Oracle系统中的参数,根据系统使用情况可以简单分为两大类:
普通参数:也就是Oracle系统正常使用的一些参数,
非凡参数:包括三种,过时参数、强调参数和隐藏参数。
随着Oracle数据库新版本的发布,相应每次都会增加或者删除一些参数。下面具体介绍如何查询当前系统版本中的各种参数情况。
一、过时参数 和 强调参数
Oracle 数据库中,系统提供了几个视图可以查看系统参数的情况。视图 V$OBSOLETE_PARAMETER 中含有所有的过时 (obsolete) 和强调 (underscored) 参数。
这里首先说明一下什么是 Oracle 的过时 (obsolote) 和强调 (underscored) 参数,过时参数,顾名思义就是在 Oracle 以前的版本中存在,但在新版本中已经淘汰了的参数,已经不再使用;而强调参数,是指那些在新版本中保留了下来,但是除非非凡需要不希望用户使用的那些参数。
在视图 V$OBSOLETE_PARAMETER 中,包含这些参数的名称和一个标志字 ISSPECIFIED ,该标志字用来指出这个参数是否在 init.ora 文件中已实际设置。 下面的 SQL 脚本列出了当前系统中所有的过时参数名称以及它们是否在当前系统中设定。
/* Formatted on 2010-5-12 17:46:27 (QP5 v5.115.810.9015) */
SELECT name, isspecified FROM v$obsolete_parameter;
上面谈到, Oracle 系统并没有将 V$OBSOLETE_PARAMETER 视图中的所有参数均丢弃,而是将其中的一部分转换为强调参数,下面就来讨论如何查看这些参数是已被丢弃还是被转换。这可以通过系统视图 X$KSPPO 来查看,该视图中包含一个名为 KSPPOFLAG 的字段,用来指明该参数在当前版本中是被丢弃还是被强调,假如该值为 1 ,则表示该参数已被丢弃,该值为 2 ,则表明该参数现为强调参数。
/* Formatted on 2010-5-12 17:46:06 (QP5 v5.115.810.9015) */
SELECT kspponm, DECODE (ksppoflg,
1,
'Obsolete',
2,
'Underscored')
FROM x$ksppo
ORDER BY kspponm;
注:该视图只在 sys 用户下可以看到。
二、隐藏参数
Oracle 系统中还有一类参数称之为隐藏参数 (hidden parameters) ,是系统中使用,但 Oracle 官方没有公布的参数,这些参数可能是那些还没有成熟或者是系统开发中使用的参数。这些参数在所有 Oracle 官方提供的文档中都没有介绍,他们的命名有一个共同特征就是都以 '_' 作为参数的首字符. 下面的查询可以得到当前系统中的所有隐藏参数,需要以sys用户登陆,查看两个视图:x$ksppi, x$ksppcv.
/* Formatted on 2010-5-12 17:45:46 (QP5 v5.115.810.9015) */
SELECT ksppinm, ksppstvl, ksppdesc
FROM x$ksppi x, x$ksppcv y
WHERE x.indx = y.indx AND TRANSLATE (ksppinm, '_', '#') LIKE '#%';
或者用:
/* Formatted on 2010-5-12 17:07:26 (QP5 v5.115.810.9015) */
SELECT i.ksppinm name,
i.ksppdesc description,
CV.ksppstvl VALUE,
CV.ksppstdf isdefault,
DECODE (BITAND (CV.ksppstvf, 7),
1, 'MODIFIED',
4, 'SYSTEM_MOD',
'FALSE')
ismodified,
DECODE (BITAND (CV.ksppstvf, 2), 2, 'TRUE', 'FALSE') isadjusted
FROM sys.x$ksppi i, sys.x$ksppcv CV
WHERE i.inst_id = USERENV ('Instance')
AND CV.inst_id = USERENV ('Instance')
AND i.indx = CV.indx
AND i.ksppinm LIKE '/_%' ESCAPE '/'
ORDER BY REPLACE (i.ksppinm, '_', '');
三、系统当前参数
下面的脚本以英文字母顺序列出了系统当前使用的所有参数。在列出的参数中,假如参数名称前面有 # 这个符号,则表示该参数没有明确指定,采用了系统中的默认参数。
/* Formatted on 2010-5-12 17:44:11 (QP5 v5.115.810.9015) */
SELECT DECODE (isdefault, 'TRUE', '# '),
DECODE (isdefault, 'TRUE', RPAD (name, 43), RPAD (name, 45)),
VALUE
FROM v$parameter
ORDER BY name;
注意:上面的 SQL 脚本没有列出系统中的隐藏参数。
第六,oracle数据库只使用一个参数文件,要么是pfile,要么是spfile,那么如何判断 数据库当前使用的是哪一个参数文件呢?
一种方法是能过create pfile来鉴别,如果当 前使用的不是spfile,则相应格式的create pfile会产生错误。
另一种方法是show parameter spfile命令,用来显示spfile的位置,如果显示的值为空,则表示使用的是pfile。
二、优先级别
Oracle 启动读取参数文件的顺序,如果个文件都不存在,则Oracle会报错
spfile<sid>.ora --> spfile.ora -->init<sid>.ora
参数文件存储路径:
spfle: $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora
pfile(9i): $ORALCE_HOME/dbs/init$ORALCE_SID.ora /*10g以后一般不用init<sid>.ora*/
pfile(10g): $ORALCE_BASE/admin/$ORACLE_SID/pfile /*仅当数据库初始化时使用*/
pfile: $ORACLE_HOME/dbs/init.ora /*默认*/
参数文件之间的转化:
从spfile来生成pfile
create pfile from spfile , —— 执行完毕后,pfile 将保存为$ORACLE_HOME/dbs/init$ORACLE_SID.ora
也可以指定pfile 的路径:create pfile = '<dir>' from spfile;
由pfile 生成spfile
create spfile from pfile
create spfile from pfile = '<dir>'
create spfile = '<dir>' from pfile
11g中的新指令,从memeory中生成
create spfile = '<dir>' from memeory */
/*
* 当使用不带pfile 子句的startup 命令时,Oracle 将从平台指定的默认位置上的服务器参数文件(spfile)中读取初始化参数。Oracle查找spfile或者创通的init.ora的顺序是:在平台指定的默认位置上,Oracle首先查找名为spfile$ORACLE_SID.ora的文件,如果没有就查找spfile.ora文件,还没有的话,就找init$ORACLE_SID.ora文件。
BOTH:顾名思义,包含以上两种,立即生效,且永久生效。
4、创建参数文件
对于pfile,你可以用文本编辑器直接手工编辑一个,也可以使用create pfile命令从spfile创建,如:
CREATE PFILE='C:\PFILE\MYPFILE.ORA' FROM SPFILE='D:\SPFILE\MYSPFILE.ORA';CREATE SPFILE FROM PFILE='C:\PFILE\MYPFILE';
详情参考:http://blog.csdn.net/changyanmanman/article/details/7388789