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 ...
随机推荐
- [c++] 模板、迭代器、泛型
模板 函数模板:重载的进一步抽象,只需定义一个函数体即可用于所有类型 在C++中,数据的类型也可以通过参数来传递,在函数定义时可以不指明具体的数据类型,当发生函数调用时,编译器可以根据传入的实参自动推 ...
- Linux服务之Samba服务篇
Samba服务 桑巴Smb是基于cs架构 作用:用于跨平台进行文件共享 优点:兼容性好,较为安全(具备身份验证) 缺点:仅限内网环境使用 应用:一般在办公环境下使用 rz 也是一种可以在Windows ...
- STM32独立看门狗(IWDG)
造成程序跑飞,只是程序的正常运行状态被打断而进入死循环,从而使单片机控制的系统无法正常工作.看门狗就是一种专门用于检测单片机程序运行状态的硬件结构. STM32内部自带了两个看门狗,独立看门狗(IWD ...
- make clean 和 make distclean区别-(转自秋水Leo)
make clean仅仅是清除之前编译的可执行文件及配置文件. 而make distclean要清除所有生成的文件. Makefile 在符合GNU Makefiel惯例的Makefile中,包含了一 ...
- SpringBoot基础学习(一) SpringBoot概念、简单案例实现、单元测试及热部署讲解
SpringBoot概念 Spring优缺点分析 Spring优点 Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品,无需开发重量级的 ...
- 六、.net core (.NET 6)程序部署到Docker上
使用Docker部署应用程序 首先确保已经安装Docker 桌面软件,如下图: 然后,把需要部署到Docker上面的项目,咱们先添加Docker的支持,启动项目右键 -> 添加 -> Do ...
- GO汇编-函数
GO汇编-函数 终于到函数了!因为Go汇编语言中,可以也建议通过Go语言来定义全局变量,那么剩下的也就是函数了.只有掌握了汇编函数的基本用法,才能真正算是Go汇编语言入门.本章将简单讨论Go汇编中函数 ...
- Python+Selenium - 鼠标操作
鼠标操作类:action_chains模块的ActionChains类 使用组成:操作 + 执行(perform()) 导入代码 from selenium.webdriver.common.acti ...
- noip模拟4[随·单·题·大佬]
woc woc woc难斩了人都傻了 害上来先看T1,发现这不就是一个小期望嘛(有啥的)真是!!打算半个小时秒掉 可是吧,读着读着题面,发现这题面有大问题,后来去找老师,还是我nb给题挑错, ...
- 人脸标记检测:ICCV2019论文解析
人脸标记检测:ICCV2019论文解析 Learning Robust Facial Landmark Detection via Hierarchical Structured Ensemble 论 ...