十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
普通参数:也就是Oracle系统正常使用的一些参数,
创新互联建站专注于企业网络营销推广、网站重做改版、永安网站定制设计、自适应品牌网站建设、HTML5、商城网站建设、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为永安等各大城市提供网站开发制作服务。
非凡参数:包括三种,过时参数、强调参数和隐藏参数。
随着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 ,则表明该参数现为强调参数。
Oracle数据库的初始化参数 主要来源于两个Oracle内部数据字典表:X$KSPPCV X$KSPPI通常我们查询的v$parameter视图就来源于这两个表 只不过隐去了部分参数 通过以下脚本可以查询获得这些被隐含的参数:set linesize column name format a column value format a selectx ksppinm name y ksppstvl value y ksppstdf isdefault decode(bitand(y ksppstvf ) MODIFIED SYSTEM_MOD FALSE ) i *** od decode(bitand(y ksppstvf ) TRUE FALSE ) isadjfromsys x$ksppi x sys x$ksppcv ywherex inst_id = userenv( Instance ) andy inst_id = userenv( Instance ) andx indx = y indx andx ksppinm like %_par% order bytranslate(x ksppinm _ )/这些参数通常不建议修改 仅作参考目的 供学习用 lishixinzhi/Article/program/Oracle/201311/16508
第一种:只读。参数是只读的,不能修改,即调用时传递进来的是常量,或者变量(但变量不能在存储过程中修改)。通常select及DML类型的存储过程传递的是in类型的参数。
第二种:只写。忽略调用语句传递的任何参数,并在函数(过程)内部给这些参数赋值,因此是只写的。(这种情况是在函数或过程内部给参数重新赋值,但重新赋值后的参数是无法被外部调用的(好像游标类型的参数除外))
CREATE OR REPLACE PROCEDURE "SCOTT"."SWAP" (firstValue out
number, secondValue out number) is
temp number;
begin
temp := firstValue;
firstValue := secondValue;
secondValue := temp;
end swap;
外部调用:
set serveroutput on;
declare
firstVal number;
secondVal number;
begin
firstVal := 10;
secondVal := 20;
scott.swap(firstVal,secondVal);
dbms_output.put_line('first is ' || firstVal);
dbms_output.put_line('second is ' || secondVal);
end;
无法在外部访问到firstValue与secondValue的值。此时打印出的结果为:
first is
second is
第三种:读或写。这可以完全控制参数,读取传递的参数的值。可以再函数(过程)内部修改参数的值,在退出函数(过程)后,这些参数被赋给在函数内部写入的值,这样就可以返回多个值。(即入口参数写入值后,可以传递到函数(过程)的外部,供外部调用的时候使用)
ps:函数中的返回值为如下几种:
char; varchar2; number; integer; date; boolean; table; record
SQL CREATE OR REPLACE PROCEDURE HelloWorld2 (
2 p_user_name IN VARCHAR2,
3 p_out_val OUT VARCHAR2,
4 p_inout_val IN OUT VARCHAR2
5 ) AS
6 BEGIN
7 dbms_output.put_line('Hello ' || p_user_name || p_inout_val || '!');
8 p_out_val := 'A';
9 p_inout_val := 'B';
10 END HelloWorld2;
11 /
Procedure created.
SQL DECLARE
2 p_outval VARCHAR2(10);
3 p_inoutval VARCHAR2(10) := '~Hi~';
4 BEGIN
5 HelloWorld2('Edward', p_outval, p_inoutval);
6
7 dbms_output.put_line('p_outval=' || p_outval);
8 dbms_output.put_line('p_inoutval=' || p_inoutval);
9 END;
10 /
Hello Edward~Hi~!
p_outval=A
p_inoutval=B
PL/SQL procedure successfully completed.
i之前 oracle使用的初始化参数文件是pfile i开始引用了SPFILE 但保留了pfile
初始化参数文件在整个ORACLE系统之中起著关键的作用 启动的过程中 oracle根据初始化参数的设置分配SGA 启动后台进程 数据库打开后 还是依据初始化的参数设置运行数据库
I以后的oracle版本 初始化参数文件有spfileSID ORA spfile ORA init ORA oracle在启动过程中也是按照这个顺序依次查找初始化参数文件 若最终没有找到 则数据库启动失败 同时Alert_sid log报错
i之后的版本 默认启动都是使用spfile参数文件启动 当然也可以指定pfile参数文件启动ORACLE spfile参数文件的格式为spfileSID ORA 而pfile参数文件的格式为initSID ORA
startup pfile= /oradata/oracle/admin/TEST/pfile/init ora *****
另外 pfile和spfile两者可以相互创建 创建默认目录在$ORACLE_HOME/dbs/
CREATE SPFILE FROM PFILE;
CREATE PFILE FROM SPFILE;
通过spfile创建的的初始化参数格式为 initSID ORA
修改初始化参数有两种方式
一 在mond下修改初始化参数
修改pfile参数 可编辑的修改init ora
修改spfile参数 不可编辑参数文件 只能通过命令或者EM动态修改初始化参数
命令 Alter system set AAA=N scope=MEMORY|SPFILE|BOTH;
SCOPE参数有三个选项
MEMORY 修改只对运行的实例有效
SPFILE 修改SPFILE设置
BOTH 同时修改了SPFILE和此实例
注意 在修改静态参数时必须得指定SPFILE参数 否则会报错 亦即修改静态参数时SCOPE参数不允许为BOTH
二 在EM中修改初始化参数设置
以sys用户登录EM
在主界面上选择 管理 标签按钮
在管理页面下选择 数据库配置 下的 所有初始化参数 按钮 转入初始化参数设置页面
默认修改的的是SCOPE=MEMORY的设置 当把 在当前正在运行的实例模式下将更改应用与SPFile 复选框选中时 相当于SCOPE=BOTH的设置
在值那项文本框输入新的值之后 点击右上角的应用按钮 修改生效
修改属性为SCOPE=SPFILE
lishixinzhi/Article/program/Oracle/201311/16518