10、pfile和spfile文件详解
10.1、介绍:
1、Oracle中的参数文件是一个包含一系列参数以及参数对应值的操作系统文件。它们是在数据库实例启动时候加载的,
决定了数据库的物理结构、内存、数据库的限制及系统大量的默认值、数据库的各种物理属性、指定数据库控制文件名
和路径等信息,是进行数据库设计和性能调优的重要文件。可以分为两种类型:
(1)pfile:
初始化参数文件,Oracle9i之前,ORACLE一直采用pfile方式存储初始化参数,pfile默认的名称为"init+例程名.ora"
文件路径为"/application/oracle/product/11.2.0/db_1/dbs",这是一个文本文件,可以用任何文本编辑工具打开;
(2)spfile:
服务器参数文件,从Oracle9i开始,Oracle引入了Spfile文件,spfile默认的名称为"spfile+例程名.ora",文件路径
为"/application/oracle/product/11.2.0/db_1/dbs",以二进制文本形式存在,不能用vi编辑器对其中参数进行修改,
只能通过SQL命令在线修改;
[oracle@slave-node2 ~]$ ls /application/oracle/product/11.2.0/db_1/dbs/
hc_orcl.dat init.ora initorcl.ora lkORCL orapworcl spfileorcl.ora
2、使用spfile的好处:
spfile改正了pfile管理混乱的问题,在多结点的环境里,pfile会有多个image,启动时候需要跟踪最新的image。这
是个烦琐的过程。用spfile以后,所有参数改变都写到spfile里面(只要定义scope=spfile或both),参数配置有个权威
的来源;9i以前一般都是要备份pfile后再来做参数的修改,而且pfile的修改必须重启实例才能生效。非常的不方便;在9i
以后的spfile就可以同通过命令修改指定的参数了,而且有很多参数都不用重启数据库,能够在线生效,这个在线生效的
参数会随着数据库的版本增高而增加。如果参数修改有问题数据库起不来了可以在 nomount状态下创建成pfile再修改回
来即可;
3、启动优先级:
startup 启动次序 spfile优先于pfile。查找文件的顺序是 spfileSID.ora-〉spfile.ora-〉initSID.ora-〉init.ora(spfile优先于pfile)。
如果在数据库的$ORACLE_HOME/dbs/目录下既有spfile又有pfile,使用spfile启动数据库,不需要指定参数文件路径(因为数据库会优先选择spfile启动),
如果参数文件不在$ORACLE_HOME/dbs/目录下,无论是通过spfile或pfile启动均需要指定完整路径;
4、spfile参数的三种scope:
(1)scope=spfile: 对参数的修改记录在服务器初始化参数文件中,修改后的参数在下次启动DB时生效,适用于动态和静态初始化参数;
(2)scope=memory: 对参数的修改记录在內存中,对于动态初始化参数的修改立即生效,在重启DB后会丟失,会复原为修改前的参数值;
(3)scope=both: 对参数的修改会同时记录在服务器参数文件和內存中,对于动态参数立即生效,对静态参数不能用这个选项,如果使用
了服务器参数文件,则在执行alter system语句时,scope=both是default的选项;
(4)如果沒有使用服务器参数文件,而在执行alter system语句时指定scope=spfile|both都会出错;
(5)小结:
参数类型 |
spfile |
memory |
both |
静态参数 |
可以,重启生效 |
不可以 |
不可以 |
动态参数 |
可以,重启生效 |
可以,立即生效,重启后失效 |
可以立即生效,重启后失效 |
5、如何判断oracle实例使用的是pfile文件还是spfile文件:
show parameter spfile;
show parameter pfile;
#使用上面两个sql语句,如果oracle实例使用的是pfile文件则查询不到任何的结果,如果使用的是spfile文件,则显示的都是spfile文件的路径;
6、pfile和spfile可以互相创建:
create spfile from pfile
create pfile from spfile
#当然在spfile和pfile的后面可以跟具体的路径;
10.2、登录到oracle实例:
[oracle@slave-node2 ~]$ echo $ORACLE_SID
orcl
[oracle@slave-node2 ~]$ sqlplus sys/123456@orcl as sysdba
SQL>show parameter name;
10.3、修改oracle实例的并发连接数:
1、查询数据库实例的会话连接情况:
SQL> select count(*) from v$session;
#查询数据库实例当前会话连接数;
SQL> select username,count(username) from v$session where username is not null group by username;
#查询数据库实例当前不同用户的会话连接数;
SQL> select count(*) from v$session where status='ACTIVE';
#查询数据库实例当前会话的并发连接数;
2、查询数据库实例的进程连接数:
SQL> select count(*) from v$process;
#查询数据库实例当前进程的连接数;
3、修改spfile的参数步骤:
SQL> show parameter processes;
#查询当前数据库实例允许的最大连接数;
SQL> show parameter spfile;
#判断当前所用的是spfile还是pfile文件;
SQL> create pfile from spfile;
#将当前的spfile文件备份;
SQL> alter system set processes=3000 scope=spfile;
#修改当前数据库实例的(spfile文件)最大连接数;
SQL> shutdown immediate;
#关闭当前数据库实例;
SQL> startup;
#由于修改数据库允许被连接的最大数太大,导致当前数据库实例无法启动;
SQL> startup pfile=/application/oracle/product/11.2.0/db_1/dbs/initorcl.ora;
#指定以pfile文件启动;
SQL> create spfile from pfile;
#将备份的spfile进行还原;
SQL> shutdown immediate;
#关闭数据库实例;
SQL> startup;
#启动数据库实例;
SQL> alter system set processes=3000 scope=spfile;
#重新指定spfile的processes参数;
SQL> shutdown immediate;
#关闭数据库实例;
SQL> startup
#启动数据库
10.4、查看orcl数据库实例的pfile文件:
1、MEMORY_TARGET参数:
(1)该参数指定Oracle实例可用内存大小;
(2)取值范围:152 MB to MEMORY_MAX_TARGET;
(3)Oracle实例在这个值的范围根据自身负载自动调节SGA和PGA的小;
(4)如果在参数文件中忽略了MEMORY_MAX_TARGET,则该参数的大小为MEMORY_TARGET的大小;
(5)如果忽略了MEMORY_TARGET,而设置了MEMORY_MAX_TARGET大小,则MEMORY_TARGET值为0,
为0表示禁用自动内存管理;
(6)实例启动后可动态设置MEMORY_TARGET的大小,但不可超过MEMORY_MAX_TARGET的大小;
(7)SGA_MAX_SIZE 的默认值依靠于MEMORY_TARGET 和MEMORY_MAX_TARGET的大小;
2、SGA_TARGET:
(1)是用于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle服务器的数据和控制信息,它是在
Oracle服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写;
(2)SGA指定所有SGA组件的总大小,将该值设为正数则表示启用自动共享内存管理特性,下列内存池会自动调节大小:
Buffer cache (DB_CACHE_SIZE)
Shared pool (SHARED_POOL_SIZE)
Large pool (LARGE_POOL_SIZE)
Java pool (JAVA_POOL_SIZE)
Streams pool (STREAMS_POOL_SIZE)
(3)当启用自动内存管理(MEMORY_TARGET设置成正数),SGA_TARGET为最小的SGA大小;
3、PGA_AGGREGATE_TARGET:
(1)包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA正相反,PGA是只被一个
进程使用的区域,PGA在创建进程时分配,在终止进程时回收,将该参数设成非零值启用自动PGA管理;
(2)将该参数设成非零值启用自动PGA管理,同时 WORKAREA_SIZE_POLICY该参数会设为auto,将该参数
设成零时,WORKAREA_SIZE_POLICY参数会自动设成MANUAL
(3)当启用自动内存管理(MEMORY_TARGET )时该值为最小PGA值;
4、Oracle官方推荐的MEMORY_TARGET、PGA、SGA的大小:
(1)ORACLE实例分配的物理内存的大小:
MEMORY_TARGET=物理内存 x 80%
MEMORY_MAX_SIZE=物理内存 x 80%
(2)对于OLTP系统:
SGA_TARGET=(物理内存 x 80%) x 80%
SGA_MAX_SIZE=(物理内存 x 80%) x 80%
PGA_AGGREGATE_TARGET=(物理内存 x 80%) x 20%
(3)对于DSS系统:
SGA_TARGET=(物理内存 x 80%) x 50%
SGA_MAX_SIZE=(物理内存 x 80%) x 50%
PGA_AGGREGATE_TARGET=(物理内存 x 80%) x 50%
(4)pga和sga的总和是oracle使用计算机内存的实际大小;
SQL> show parameter sga;
SQL> show parameter pga;
5、数据库orcl实例pfile文件(4G):
[root@slave-node2 ~]# cat /application/oracle/product/11.2.0/db_1/dbs/initorcl.ora
orcl.__db_cache_size=1107296256
#sga自动管理
orcl.__java_pool_size=16777216
#sga自动管理
orcl.__large_pool_size=16777216
#sga自动管理
orcl.__oracle_base='/application/oracle'#ORACLE_BASE set from environment
#数据库安装目录
orcl.__pga_aggregate_target=1342177280
#pga=(物理内存 x 80%) x 20%,由memory_target自动管理;
orcl.__sga_target=2013265920
#sga=(物理内存 x 80%) x 80%,由memory_target自动管理;
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=805306368
#sga自动管理
orcl.__streams_pool_size=33554432
#sga自动管理
*.audit_file_dest='/application/oracle/admin/orcl/adump'
#日志审计目录
*.audit_trail='db'
#记录数据库实例的审计记录;
*.compatible='11.2.0.0.0'
#数据库版本号
*.control_files='/application/oracle/oradata/orcl/control01.ctl','/application/oracle/flash_recovery_area/orcl/control02.ctl'
#数据库实例控制文件位置
*.db_block_size=8192
#定义oracle数据库实例块的大小,8k
*.db_domain=''
#定义一个数据库实例在网络架构中的一个逻辑位置
*.db_name='orcl'
#数据库实例名
*.db_recovery_file_dest='/application/oracle/flash_recovery_area'
#该参数控制的是闪回恢复区域(FRA)的位置
*.db_recovery_file_dest_size=4070572032
#该参数控制的是闪回恢复区域(FRA)的大小
*.diagnostic_dest='/application/oracle'
#数据库实例诊断目录,位于$ORACLE_BASE/diag/rdbms/orcl/
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
#oracle数据库实例多线程
*.memory_target=3340763136
#Oracle实例可用内存=物理内存 x 80%,同时也开启了oracle实例内存自动管理sga和pga的功能
*.open_cursors=500
#指定一个session同时打开的游标的最大数目,需要设定该参数足够大来保证应用的正常运行,默认300
*.processes=3000
#数据库实例允许被连接的最大数,默认150
*.remote_login_passwordfile='EXCLUSIVE'
#通过sqlnet.ora文件验证用户;
*.undo_tablespace='UNDOTBS1'
#回滚表空间
10.5、oracle数据库优化:
1、修改oracle实例的最大连接数;
本文上面有介绍,在此就不再赘述了;
2、修改oracle实例的session游标数
SQL> alter system set open_cursors=500 scope=spfile;
SQL> shutdown immediate;
SQL> startup;
3、修改oracle实例可用内存大小:
SQL> alter system set memory_target=4340763136 scope=spfile;
#Oracle实例可用内存增大为4G,注意:最大不能超过物理内存的80%;
SQL> shutdown immediate;
SQL> startup;
10、pfile和spfile文件详解的更多相关文章
- web.xml文件详解
web.xml文件详解 Table of Contents 1 listener. filter.servlet 加载顺序 2 web.xml文件详解 3 相应元素配置 1 listener. f ...
- Linux中/proc目录下文件详解
转载于:http://blog.chinaunix.net/uid-10449864-id-2956854.html Linux中/proc目录下文件详解(一)/proc文件系统下的多种文件提供的系统 ...
- SUBLIME TEXT 2 设置文件详解
SUBLIME TEXT 2 设置文件详解 Preferences.sublime-settings文件: // While you can edit this file, it’s best to ...
- [转]AndroidManifest.xml文件详解
转自:http://www.cnblogs.com/greatverve/archive/2012/05/08/AndroidManifest-xml.html AndroidManifest.xml ...
- delphi 资源文件详解
delphi资源文件详解 一.引子: 现在的Windows应用程序几乎都使用图标.图片.光标.声音等,我们称它们为资源(Resource).最简单的使用资源的办法是把这些资源的源文件打入软件包,以方便 ...
- VSFTPD全攻略(/etc/vsftpd/vsftpd.conf文件详解)
/etc/vsftpd/vsftpd.conf文件详解,分好类,方便大家查找与学习 #################匿名权限控制############### anonymous_enable=YE ...
- jni.h头文件详解二
作者:左少华 博客:http://blog.csdn.net/shaohuazuo/article/details/42932813 转载请注明出处:http://blog.csdn.net/shao ...
- 【转】 jni.h头文件详解(二)
原文网址:http://blog.csdn.net/shaohuazuo/article/details/42932813 作者:左少华 博客:http://blog.csdn.net/shaohua ...
- /etc/inittab文件详解
/etc/inittab由/sbin/init程序解析调用,用于系统初始化,/sbin/init可参考源码busybox中init.c的实现方式. 原址如下: http://leejia.blog.5 ...
随机推荐
- CentOS/Linux内存占用大,用Shell脚本自动定时清除/释放内存
CentOS/Linux内存占用大,用Shell脚本自动定时清除/释放内存来自:互联网 时间:2020-03-22 阅读:114以下情况可能造成Linux内存占用过高服务配置存在直接分配错误,或隐性分 ...
- K8S的资源管理
K8S的资源管理 管理K8S资源的三种基本方法: 陈述式资源管理方法-使用cli工具进行管理. 声明式资源管理方式-主要依耐资源配置清单. GUI式资源管理方法-主要依耐图形界面. 陈述式资源管理方法 ...
- 数据库权限grant
数据库权限grant 创建授权grant 权限类型(priv_type) 权限类型 代表什么? ALL 所有权限 SELECT 读取内容的权限 INSERT 插入内容的权限 UPDATE 更新内容的权 ...
- 搭建LAMP环境部署discuz论坛
!!!什么是LAMP: LAMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写: Linux,操作系统 Apache,网页服务器 MariaDB或MySQL,数据库管理系统(或者 ...
- VMware安装RedHat7、CentOS7后无网卡解决办法
由于Vmware虚拟网卡和linux兼容问题导致驱动无法正常安装,默认的网卡类型不兼容找到我们的Vmware虚拟机文件夹,将VMware 虚拟机配置 (.vmx),追加一条设置,网卡类型etherne ...
- nginx location标签的匹配规则
location的匹配 匹配符 匹配规则 优先级 = 精确匹配 1 ^~ 以某个字符串开头 2 ~ 区分大小写的正则匹配 3 ~* 不区分大小写的正则匹配 4 !~ 区分大小写不匹配的正则 5 !~* ...
- 为何存在uwsgi还要使用nginx
nginx是对外的服务接口,外部浏览器通过url访问nginx,nginx接收到浏览器发送过来的http请求,将包解析分析url,如果是静态文件则直接访问用户给nginx配置的静态文件目录,直接返回用 ...
- [算法] 数据结构 splay(伸展树)解析
前言 splay学了已经很久了,只不过一直没有总结,鸽了好久来写一篇总结. 先介绍 splay:亦称伸展树,为二叉搜索树的一种,部分操作能在 \(O( \log n)\) 内完成,如插入.查找.删除. ...
- Django Admin后台管理功能使用
前言 用过Django框架的童鞋肯定都知道,在创建完Django项目后,每个app下,都会有一个urls.py文件,里边会有如下几行: 1 2 3 4 5 from django.contrib im ...
- redux 源码浅析
redux 源码浅析 redux 版本号: "redux": "4.0.5" redux 作为一个十分常用的状态容器库, 大家都应该见识过, 他很小巧, 只有 ...