oracle基础知识(六)----spfile与pfile
一, 认识参数文件
Oracle中的参数文件是一个包含一系列参数以及参数对应值的操作系统文件。它们是在数据库实例启动时候加载的,决定了数据库的物理 结构、内存、数据库的限制及系统大量的默认值、数据库的各种物理属性、指定数据库控制文件名和路径等信息,是进行数据库设计和性能调优的重要文件。
1,spfile
这个是oracle9i之后映入的概念:
SPfile(Server Parameter File,服务器参数文件)是基于二进制格式的参数文件,含有数据库及例程的参数和数值,但不能用文本编辑工具打开。可以再sql命令里面更改,或者二进制编写.spfile 默认的名称为“spfile+例程名.ora”文件路径:$ORACLE_HOME/dbs 以二进制文本形式存在.
动态修改参数的模式
alter system set parameter=Value scope={spfile|both|memory}
SPfile 三种模式:
scope=both 立即并永久生效,(默认模式)
对参数的修改同时记录在内存中和服务器端的初始化参数文件中。为默认使用值。
scope=spfile 下次启动才能生效。
对参数的修改仅记录在服务器初始化参数文件中。该选项同时适用于动态与静态的初始化参数。修改后的参数只有下一次启动数据库时更改才会生效。
scope=memory 立即生效但下次启动时失效
对参数的修改记录在内存中,对于动态初始化参数,更改立即生效。修改并不会被记录在服务器端的初始化参数中。下一次启动数据库时更改失效,不能用于静态初始化参数。
2,pfile
初始化参数文件(Initialization Parameters Files),Oracle 9i之前,ORACLE一直采用pfile方式存储初始化参数,pfile 默认的名称为“init+例程名.ora”文件路径:$ORACLE_HOME/dbs,这是一个文本文件,可用查看内容
二,区别体现
01,Spfile 对比pfile来说
可以用RMAN来备份spfile,但是不能备份pfile
减少了人为的错误。spfile由服务器来管理,任何参数改变被接受前都会经过严格处理
消除了配置问题,如果远程启动oracle服务器,不再需要一个本地的pfile
不能修改参数文件,二进制形式
里面有动态参数,可以在线修改,而不用重启oracle;
02,pfile优点
可以使用文本编辑器进行编辑
远程拷贝,拖过来改配置就能继续用
03,大家的对比
pfile文件可以用文本编辑器打开手工配置、而spfile不行,只能通过SQL命令在线修改。
修改文件spfile支持在线修改,pfile只能重新启动读取
三, 启动读取顺序
1、直接在默认路径下查找spfileSID.ora --(spfile)
如果没有再查找2
2、直接在默认路径下查找spfile.ora
如果没有再查找3
3、直接在默认路径下查找initSID.ora --(pfile)
如果还没有 那就会报错了
顺序: spfileSID.ora----->spfile.ora------>initSID.ora
当然也有指定pfile启动
startup pfile=$ORACLE_HOME/dbs/initSID.ora
四,相互转换与查看
查看spfile或者pfile的位置信息
1 SQL> SELECT NAME, VALUE, DISPLAY_VALUE FROM V$PARAMETER WHERE NAME ='spfile'; 2 3 NAME 4 -------------------------------------------------------------------------------- 5 VALUE 6 -------------------------------------------------------------------------------- 7 DISPLAY_VALUE 8 -------------------------------------------------------------------------------- 9 spfile 10 /u01/app/oracle/product/11.2.0/db_1/dbs/spfileoracle01.ora 11 /u01/app/oracle/product/11.2.0/db_1/dbs/spfileoracle01.ora
1 SQL> show parameter pfile 2 3 NAME TYPE VALUE 4 ------------------------------------ ----------- ------------------------------ 5 spfile string /u01/app/oracle/product/11.2.0 6 /db_1/dbs/spfileoracle01.ora
查看启动数据库的类型
1 select decode(count(*),1,'spfile','pfile') from v$spparameter where rownum=1 and isspecified ='TRUE';
主库: SQL> select decode(count(*),1,'spfile','pfile') from v$spparameter where rownum=1 and isspecified ='TRUE'; DECODE ------ spfile 从库: SQL> select decode(count(*),1,'spfile','pfile') from v$spparameter where rownum=1 and isspecified ='TRUE'; DECODE ------ pfile
相互创建:
SQL> create pfile from spfile ; File created. SQL> 或者 SQL> create spfile from pfile ; File created. SQL>
格式:
CREATE SPFILE=’spfilename’ FROM PFILE=’pfilename’
五,spfile 动态修改
scope=both: 立即生效
1 SQL> show parameter pga; 2 3 NAME TYPE VALUE 4 ------------------------------------ ----------- ------------------------------ 5 pga_aggregate_target big integer 798M 6 7 SQL> alter system set pga_aggregate_target = 900m scope=both; 8 System altered. 9 SQL> show parameter pga; 10 11 SQL> show parameter pga; 12 13 NAME TYPE VALUE 14 ------------------------------------ ----------- ------------------------------ 15 pga_aggregate_target big integer 900M
静态文件的话就不行了:
报错:
* ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified
六,pfile 文件参数详解
1 # Cache and I/O 高速缓存和 I/O 2 3 db_block_size=8192 指定数据块大小为8KB 4 db_cache_size=33554432 指定数据缓冲区为32MB,该值越大,可以减少对数据库文件的I/O次数,提高效率 5 db_file_multiblock_read_count=16 6 7 8 # Cursors and Library Cache 游标和库高速缓存 9 10 open_cursors=300 指定一个会话一次可以打开的游标的最大数量为300,应将该值设置得足够高,这样才能防止应用程序耗尽打开的游标 11 12 13 # Database Identification 数据库标识 14 15 db_domain="" 数据库域名为mynet,加上数据库名称db_name构成全局数据库名称 16 db_name=oracle01 数据库名称为myoracle 17 18 19 # Diagnostics and Statistics 诊断和统计 20 21 background_dump_dest=/opt/oracle/admin/cicro/bdump 后台进程跟踪文件目录 22 core_dump_dest=/opt/oracle/admin/cicro/cdump 核心转储跟踪文件目录 23 timed_statistics=TRUE 收集操作系统的计时信息,这些信息可被用来优化数据库和 SQL 语句 24 user_dump_dest=/opt/oracle/admin/cicro/udump 用户进程跟踪文件目录 25 26 27 # File Configuration 28 control_files=("/opt/oracle/oradata/cicro/control01.ctl", "/opt/oracle/oradata/cicro/control02.ctl", 29 30 "/opt/oracle/oradata/cicro/control03.ctl") 指定控制文件的路径及文件名 31 32 33 # Instance Identification 网络注册 34 35 instance_name=test 例程名称为test 36 37 38 # Job Queues 39 job_queue_processes=10 40 41 42 # MTS 多线程服务器配置标识,在Oracle 9i里称为共享服务器配置 43 44 dispatchers="(PROTOCOL=TCP) (SERVICE=testXDB)" 多线程服务器配置 45 46 # Miscellaneous 其他 47 48 aq_tm_processes=1 49 compatible=9.2.0.0.0 兼容版本9.2.0 50 51 52 # Optimizer 53 54 hash_join_enabled=TRUE 55 query_rewrite_enabled=FALSE 56 star_transformation_enabled=FALSE 57 db_name=cicro 58 59 60 61 # Pools 池 62 63 java_pool_size=83886080 指定Java存储池的大小为32MB,用于存储 Java 的方法、类定义和Java对象。 64 large_pool_size=16777216 指定大型池的大小为1MB, 用于共享服务器的会话内存、并行执行的消息缓冲区以及RMAN备份和恢复的磁盘 I/O 缓冲区。 65 shared_pool_size=83886080 指定共享池的大小为32MB,用于存储共享游标、存储的过程、控制结构和并行执行消息缓冲区等对象。较大的值能改善多用户系统的性能. 66 67 # Processes and Sessions 进程和会话 68 69 processes=150 指定可同时连接到一个Oracle Server上的操作系统用户进程的最大数量为150 70 71 # Redo Log and Recovery 重做日志和恢复 72 73 fast_start_mttr_target=300 指定从单个数据库例程崩溃中恢复所需的时间为300秒 74 75 # Security and Auditing 安全与验证 76 77 remote_login_passwordfile=EXCLUSIVE 指定操作系统或口令文件是否具有检查用户口令的权限。设置为EXCLUSIVE, 将使用数据库的口令文件对每个具有权限的用户进. 78 79 80 # Sort, Hash Joins, Bitmap Indexes 排序, 散列联接, 位图索引 81 82 pga_aggregate_target=25165824 83 sort_area_size=524288 指定排序区使用的最大内存量为512KB。排序完成后, 各行将返回, 并且内存将释放。增大该值可以提高大型排序的效率。 84 85 86 # System Managed Undo and Rollback Segments 系统管理的撤消和回退段 87 88 undo_management=AUTO 指定系统使用的撤消空间管理方式为SMU 方式,在SMU方式下, 撤消空间会像撤消表空间一样在外部分配. 89 undo_retention=10800 90 undo_tablespace=UNDOTBS1 指定回滚表空间为UNDOTBS