参数:
什么是数据库参数
控制数据库的属性和行为的一些开关
参数的数量:随版本有些变化
select count(*) from v$parameter;
select count(*) from v$system_parameter;
//查看参数名和参数值
SQL> select name,value from v$parameter;
//db_name参数是实例启动必要的参数
SQL> show parameter db_name
初始化参数的种类:
静态参数:内存状态不允许修改
select name,ISSYS_MODIFIABLE from v$system_parameter where ISSYS_MODIFIABLE='FALSE';
动态参数:内存状态可以修改
select name,ISSYS_MODIFIABLE from v$system_parameter where ISSYS_MODIFIABLE<>'TRUE' order by 2;
参数的分类:
1. 正常的参数
2. 隐含的参数
3. 事件参数
我们尽量的避免使用后面两种参数。
event="32333 trace name context forever,level 10"就是事件参数,为了解决一些bug的问题。
_allow_resetlogs_corruption=true 就是隐含参数,我们死马当活马医的时候才会使用后面的两类参数。
--查看所有的隐含参数和值
sys@YIDB> select x.ksppinm name, y.ksppstvl value from sys.x$ksppi x, sys.x$ksppcv y where x.indx = y.indx;
参数文件
参数文件的内容:
存放非default值的初始化参数!
参数文件的作用:
通过参数值约束实例的行为!
初始化参数文件是描述实例的行为的文件,文件大小很小。
参数文件的种类:
1.pfile
一直存在
文本格式(使用文本编辑器修改)
可以放在客户端,也可以服务器端
命名规则:
init.ora
init
一般放在ORACLE_HOME/dbs
2.spfile
oracle 9i之后引入
二进制格式(只能使用命令修改)
只能放在服务器端
spfile的优先级别高于pfile
spfile.ora
spfile
必须在dbs目录下才生效
可以命令修改:动态和静态参数
纯文本参数文件和二进制参数文件的差别
1.修改参数的方式不同
2.优先级不同
3.是否动态存储修改的参数
4.存在的位置不同
纯文本可以存在于客户端
二进制文件一定存在于server 端
5.rman 可以备份二进制参数文件,不能备份纯文本参数文件。
参数文件的优先级别(从高到低):
spfile
spfile.ora
init
init.ora
参数文件存放的路径:
$ORACLE_HOME/dbs
//初始化参数的文档:
administration-->monitoring-->initalization parameters
查看现在数据库使用使用的是什么类型的参数文件:
验证现在数据库使用的参数文件类型,我们一定要知道我们使用的是什么类型的参数文件,涉及到我们如何修改参数的手段。
方式一:
sys@BEEDB> select distinct isspecified from v$spparameter;
ISSPEC
------
TRUE
FALSE
--如果含有true 就是使用二进制参数文件
--如果只有false 就是使用的纯文本参数文件
因为上面的选择有true,所以这个数据库使用的是二进制参数文件。我们修改参数要使用命令而不是编辑文件,千万不要编辑二进制参数文件,你编辑以后会报ora-00600 的错误。
方式二:
sys@YIDB> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /oracle/app/product/11.2.0/db_
1/dbs/spfileyidb.ora
如果value有值,则使用spfile;如果没有值,则使用pfile
查看静态参数和动态参数的个数
sys@BEEDB> select isspecified,count(*) from v$spparameter group by isspecified;
ISSPEC COUNT(*)
------ ----------
TRUE 24
FALSE 238
上面的查询表示有24 个参数存在于二进制参数文件,238 个参数为默认值。有的时候二进制
参数文件又调用了其它的二进制参数文件。如果你看到下面的结果:
SQL> select ISSPECIFIED ,count(*) from v$spparameter group by ISSPECIFIED;
ISSPECIFIED COUNT(*)
------------ ----------
TRUE 1
FALSE 213
如果真的只有1 个,很可能就是二进制的参数文件又调用了其它的二进制参数文件,这样
会很烦,千万不要来回引用,给自己的维护造成不必要的麻烦。
查看二进制参数文件内的参数设置
sys@YIDB> select name,value from v$spparameter where isspecified='TRUE';
--查看所有的参数及含义
col KSPPINM for a35
col KSPPDESC for a60
sys@YIDB> select ksppinm,ksppdesc from x$ksppi order by 1;
查看当前内存中的参数值(当前生效的参数值):
show parameter sga_target
select value from v$parameter where name='sga_target';
select value from v$system_parameter where name='sga_target';
查看参数文件中的参数值:
select value from v$spparameter where name='sga_target';
方式一:动态修改参数
只修改参数的内存状态(当前生效的参数值)
alter system set sga_target=160m scope=memory;
只将参数的新值写如spfile而不改变但前内存中的参数值
alter system set sga_target=160m scope=spfile;
既改变内存状态又改变参数文件中的参数值
alter system set sga_target=160m scope=both;
注:alter system set 命令的scope选项的默认风格是both!
方式二:静态修改参数
alter system set sga_max_size=200m scope=spfile;
由于静态参数的内存状态是不可以被更改的,所以只能将现的参数值改写到参数文件中,
等待下一次重新启动数据库时才能生效!
--同时修改二进制文件和内存,是默认选项
sys@YIDB> alter system set pga_aggregate_target=30m scope=both;
spfilesid.ora
spfile.ora
snitsid.ora
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30024909/viewspace-1335371/ ,如需转载,请注明出处,否则将追究法律责任。