ORACLE初始化参数文件概述
ORACLE初始化参数文件概述
在9i之前,参数文件只有一种,它是文本格式的,称为pfile,在9i及以后的版本中,新增了服务器参数文件,称为spfile,它是二进制格式的。这两种参数文件都是用来存储参数配置以供oracle读取的,但也有不同点,注意以下几点:
1)pfile是文本文件,spfile是二进制文件;
2)对于参数的配置,pfile可以直接以文本编辑器打开手工配置,而spfile不行,必须在数据库启动后,通过sql命令进行在线修改,当然spfile也可用文本编辑器打开,把里面文本的内容复制出来放在pfile中,但绝对不可以直接修改,直接修改后会使文件无法读取。
3)pfile配置改变后,要使用其生效,必须重新启动数据库,spfile的配置生效时限和作用域可以由修改参数的sql命令指定,可以立即生效,也可以不立即生效。当然有些参数的修改必须重启数据库才能生效;
4)可以用sql命令由pfile创建spfile,也可以由spfile创建pfile;
5)如果是手动创建数据库而不是通过DBCA,则开始创建数据库时,你只能定义pfile。因为它是文本格式的;
现在一般普通生产库都采用spfile启动数据库,pfile确实没有用的理由了,感觉只有以下情况才会使用pfile:
1)入门学习时,为了理解初始化参数
2)创建数据库时,因为这时还没spfile
3)恢复数据库时
4)采用RAC的生产库中如果要共用spfile,可以建一个初始的pfile,然后在pfile指定spfile为共享设备文件
...............
2.创建spfile和pfile语法
l 创建SPFILE(只能建在数据库所在的机器上)
CREATE SPFILE [= 'spfile_name'] FROM PFILE [= 'pfile_name'];
如果命令中未指定spfile的路径则会在缺省路径创建spfile文件(%ORACLE_HOME%/database/spfile<SID>.ora)
这个与spfile参数无关(rac中共享spfile时要注意)
l 创建PFILE
CREATE PFILE [= 'pfile_name'] FROM SPFILE [= 'spfile_name'];
如果命令中未指定spfile的路径则会从缺省路径(%ORACLE_HOME%/database/spfile<SID>.ora)创建pfile文件
注:语法中创建和指定的spfile和pfile都是服务器路径
注:不能创建已经由数据库实例启动的spfile(在nomount状态下也不行)
3.数据库启动时spfile和pfile的加载顺序
初始化参数是在数据库实例启动时(startup nomount)加载。
如果startup命令中未指定pfile参数,在windows系统中数据库启动时会按如下顺序查找启动参数文件:
%ORACLE_HOME%/database/SPFILE<SID>.ora
%ORACLE_HOME%/database/SPFILE.ora
%ORACLE_HOME%/database/init<SID>.ora
在unix或linux系统中数据库启动时会按如下顺序查找启动参数文件:
%ORACLE_HOME%/dbs/SPFILE<SID>.ora
%ORACLE_HOME%/dbs/SPFILE.ora
%ORACLE_HOME%/dbs/init<SID>.ora
也就是说先找spfile<sid>.ora文件,如果spfile<sid>.ora没有,则找spfile.ora文件,最后才会去找init<sid>.ora的pfile文件。
使用指定pfile启动数据库则数据库会使用指定的pfile来加载数据库参数:
命令如下:
startup pfile='<pfile>'
注:以pfile启动的实例,修改初始化参数时不能使用scope=spfile的语法。
如果参数文件(不管是pfile还是spfile)中指定了spfile的参数,则还会从指定的spfile中再读取配置的参数,这样数据库的参数就包括了两个文件的内容。
4.数据库启动参数的加载顺序
加载顺序按文件中顺序读取
如果文件中有两个相同的参数名则以最后出现的为准,以下例子说明了这个问题。
如有一个spfile文件(myspfile.ora),包括两个参数:
sessions=150
processes=200
另外有一个pfile文件(mypfile.ora),里面包括三个参数,其中指定了spfile为前面的spfile文件
processes=100
sessions=100
spfile='myspfile.ora'
processes=180
当使用mypfile.ora启动数据库时,会按如下顺序读取参数
1)processes=100
2) sessions=100
3) spfile='myspfile.ora'
3.1) sessions=150(重新加载)
3.2) processes=200(重新加载)
4)processes=180(再次重新加载)
最后加载的数据库参数为
sessions=150
spfile='myspfile.ora'
processes=180
5.关于show parameter spfile时显示的内容
如果是采用pfile指定了spfile参数,则显示指定的spfile
如果是采用缺省的spfile启动,则显示缺省的spfile文件名,不管spfile还有没有指定其它的spfile文件。
6.关于spfile递归调用
如果出现spfile递归调用,则ORACLE启动时会报错:
SQL> startup nomount;
ORA-03113: 通信通道的文件结束
SQL>
spfile递归调用就是指
spfile1.spfile='spfile2'
spfile2.spfile='spfile1'
这样的参数配置
7.初始化参数的修改方法
分为手动修改和在线修改。
手动修改用于修改pfile,直接用文本编辑打开pfile修改。要使用修改生效,须重启数据库。
在线修改是在数据库运行时,用alter system命令进行修改,命令如下(详细的命令 语句请参考oracle官方参考文档):
alter system set parameter_name = parameter_value [, parameter_value ]...
[ COMMENT 'text' ]
[ DEFERRED ]
[ SCOPE = { MEMORY | SPFILE | BOTH } ]
[ SID = { 'sid' | * } ]
注:
[ COMMENT 'text' ] :表示可以加注释,如 ALTER SYSTEM SET JOB_QUEUE_PROCESSES=50 SCOPE=BOTH DEFERRED COMMENT=" 2008-05-19"
[ DEFERRED ]:表示所作修改只适用于将来的会话,对当前已有的会话不影响,这个参数只对少数参数有用,具体可使用的参数可以查看v$parameter视图
select * from v$parameter where issys_modifiable='DEFERRED'
[ SCOPE = { MEMORY | SPFILE | BOTH } ]:
SPFILE:修改只对SPFILE有效,不影响当前实例,需要重启数据库才能生效;
MEMORY:修改只对内存有效,即只对当前实例有效,且立即生效,但不会保存到SPFILE, 数据库重启后此配置丢失;
BOTH:顾名思义,包含以上两种,立即生效,且永久生效。
所有的参数都可以使用spfile,部份参数可以使用memory,可以使用如下SQL查询不能使用memory方式修改的参数
select * from v$parameter where issys_modifiable='FALSE'
对于ALTER SYSTEM的参数修改命令,请注意以下几点:
1)如果当前实例使用的是pfile而非spfile,则scope=spfile或scope=both会产生错误;
2)如果实例以pfile启动,则scope的默认值为MEMORY,若以spfile启动,则默认值为BOTH;
[ SID = { 'sid' | * } ]
指定修改参数的作用实例号,如果为*则表示所有实例,这个选项用于RAC数据库
8.删除初始化参数:
alter system reset parameter_name
[ SCOPE = { MEMORY | SPFILE | BOTH } ]
[ SID = 'sid' ]
对于有些参数也可以使用 ALTER SYSTEM SET PARAMETER=''达到相同的效果;
9.初始化参数的相关系统视图
9.v$parameter
9.v$parameter2
9.v$system_parameter
9.v$system_parameter2
9.gv$parameter
9.gv$parameter2
9.gv$system_parameter
9.gv$system_parameter2
SQL> desc v$parameter;
出处:交大Oracle课程提供的参考资料
ORACLE初始化参数文件概述的更多相关文章
- Oracle 初始化参数文件pfile和spfile
pfile和spfile差额 pfile :Oracle 9i之前.ORACLE使用我们一直PFILE存储的初始化参数,,能够在操作系统级别改动. 当spfile文件改动出现错误导致oracle无法启 ...
- oracle中的初始化参数文件
oracle初始化参数文件管理 oracle实例是指运行状态下的oracle软件,是由内存结构跟一些进程结构组成的,主要实现数据库的访问跟控制功能,是oracle的核心. 初始化参数文件是oracle ...
- oracle中有关初始化参数文件的几个视图对比
涉及oracle中有关初始化参数文件的几个视图主要有:v$paraemter,v$parameter2,v$system_parameter,v$system_parameter2,v$spparam ...
- Oracle的参数文件
参数文件的作用: 它们是在数据库实例启动时候加载的,决定了数据库的物理结构.内存.数据库的限制及系统大量的默认值.数据库的各种物理属性.指定数据库控制文件名和路径等信息,是进行数据库设计和性能调优的重 ...
- pfile,spfile 初始化参数文件顺序【weber出品】
一.初始化参数文件 启动实例时会读取初始化参数文件.参数文件有两种类型: 1.服务器参数文件:这是首选类型的初始化参数文件.这是一个由数据库服务器写入或读取的二进制文件,不得手动进行编辑.此文件驻留在 ...
- oracle的参数文件:pfile和spfile
1.pfile和spfile Oracle中的参数文件是一个包含一系列参数以及参数对应值的操作系统文件.它们是在数据库实例启动时候加载的,决定了数据库的物理 结构.内存.数据库的限制及系统大量的默认值 ...
- Oracle初始化参数之memory_target
一.引言: Oracle 9i引入pga_aggregate_target,可以自动对PGA进行调整: Oracle 10g引入sga_target,可以自动对SGA进行调整: Oracle 11g则 ...
- [转]Oracle 初始化参数之cursor_sharing
本文转自:http://www.cnblogs.com/Richardzhu/archive/2013/01/21/2869837.html 一.Cursor_sharing简介: 这个参数是用来告诉 ...
- Oracle 初始化参数 二三事,随记
(1) alter system set log_archive_dest_n='location=d:\一个存在的目录'; ---- 预期 但是如果“d:\一个存在的目录”不是一个有效的目录,则“ ...
随机推荐
- Linux安装Mycat
1.官网下载mycat到/home/install目录下 2.解压到/usr/local/mycat目录下 tar -zxvf Mycat-server-1.6-RELEASE-20161028204 ...
- IMX6Q RTC驱动分析
对于在工作中学习驱动的,讲究的是先使用,再理解.好吧,我们来看看板子里是如何注册的? 在板文件里,它的注册函数是这样的: imx6q_add_imx_snvs_rtc() 好吧,让我们追踪下去: 1 ...
- 线性代数:Ax=b的解
n列的矩阵A,当且仅当向量b是列空间C(A)的一个向量时,Ax=b有解. C(A)的零空间是N(A),N(A)正交补是A的行空间C(T(A)), 依据上一章的结论,任何Rn向量可以表示为r+n,其中n ...
- UVA639 二叉树
题意:深度为n的二叉树每个节点上有个开关,初始为关闭,每当小球落在节点上都会改变开关的状态,问编号为m的小球最终会落在哪里. 思路:对于二叉树的节点k,左节点右节点的编号为2k,2k+1.只需由最后一 ...
- 如何在java代码中调用一个web项目jsp或者servlet
有时候需要调用一个web项目的jsp或者servlet,但是执行内部的代码,并不是打开jsp,例如需要在一段java代码中清除一个web项目中的缓存,那么可以把清除缓存的代码放在该web项目的一个se ...
- 医院内外网之间通过网闸交互,通过端口转发加nginx代理实现内网访问外网
首先介绍下主要需求,很简单,就是要在医院his系统内嵌公司的平台,实现内网直接访问外网 这是院方给我提供的网闸相关配置,105是医院内网的服务器,120是外网的服务器,中间通过网闸配置的几个端口实现互 ...
- 虚拟机CentOS7网络配置
*关于查看IP信息 window中是 ipconfig Linux一般都是 ifconfig 不过CentOS7中 这个命令发生了更改 :ip addr 设置网络 再新建虚拟机向导过程中,有一步[网 ...
- JMeter-Window10系统下设置环境变量
首先我们右击此电脑(我的电脑),点击属性 接下来我们就可以进入到控制面板主页,点击[高级系统设置] 在系统属性里面,点击[环境变量]按钮 在环境变量里面,点击[新建]按钮 接下来我们输 ...
- js职责链模式
职责链模式(Chain of Responsiblity),使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为 ...
- mysqli得到记录数量
$result = $conn->query($sql);$result->num_rows;