ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 水煮Oracle——《Oracle pfile/spfile参数文件详解

水煮Oracle——《Oracle pfile/spfile参数文件详解

原创 Linux操作系统 作者:1向2飞 时间:2011-06-08 17:23:58 0 删除 编辑
在创建数据库时,SPFile文件中部分必须考虑的参数值:

  基本规则

  a.在SPFile文件中,所有参数都是可选的,也就是说只需要在初始化参数文件中列出那些需要修改的参数,其它保持默认值即可。

  b.SPFile文件中只能包含参数赋值语句和注释语句。注释语句以“#”符合开头,是单行注释。

  c.SPFile文件中列出的参数是不分次序的。

  d.SPFile参数的名称和值是不区分大小写的,只有在Unix系统中,由于操作系统本身区分文件名称和路径的大小写,才需要在设置参数时注意大小写问题。

  e.若要在SPFile文件的同一行设置多个参数,需要使用空格分隔。比如:PROCESSES=100 CPU_COUNT=1 OPEN_CURSORS=10

  f.对于可以具有多个值的初始化参数,需要将所有的值放在一个括号内,并使用逗号进行分隔,比如ROLLBACK_SEGMENTS=(SEG1,SEG2,SEG3,SEG4,SEG5)

  g.在SPFile文件中,可以使用IFILE参数引用其它的SPFile文件。

  h.对于具有字符串类型值的参数,如果字符串中包含空格或制表符,必须使用单引号或双引号将字符串括起来,比如:NLS_TERRITORY="CZECH REPUBLIC"

  常用参数:

  DB_NAME和DB_DOMAIN

  全局数据库名通常由本地数据库标识(DB_NAME)和网络域名(DB_DOMAIN)组成,在网络中唯一标识一个Oracle,在只有一个实例的情况下,DB_NAME与实例标识SID相同。

  全局数据库名在数据库创建后可以更改,使用【Alter DataBase RENAME GLOBAL_NAME】语句,语句执行成功后,必须重启Oracle并重建控制文件(重建控制文件是一件比较危险的工作,因此,建议避免修改全局数据库名)。

  DB_NAME同时存储在数据文件、控制文件和重做日志文件中,如果DB_NAME参数指定的数据库名与控制文件的保持不一致,Oracle将无法启动。

  CONTROL_FILE

  控制文件保存有关于数据库物理结构的基本信息,每个Oracle都必须至少拥有一个控制文件。Oracle建议创建两个控制文件,并且应当将他们分别放置在不同点硬盘上。

  DB_Block_Buffer

  这部分内存的作用主要是在内存中缓存从数据库中读取的数据块,数据库缓冲区越大,为用户已经在内存里的共享数据提供的内存就越大,这样可以减少所需要的磁盘物理读写次数。

  在Oracle 9i以前版本数据库中,缓冲是由db_block_buffers*db_block_size来决定,db_block_size参数是在创建数据库时设置的,它决定数据库里每个块的大小,9i以前不能改变已经存在的数据库的块大小,因此应该在最初创建数据库时就确保设置适当的数据库块大小。在创建数据库时设置为8k,db_block_buffers*db_block_size的乘积占物理内存的20%~30%,物理内存在1G以内,可以占20%,1G~2G之间可占25%,物理内存在2G以上,可以占30%,甚至更高。

  DB_Block_Lru_Latches

  在多CPU机器上通过初始化参数DB_BLOCK_LRU_LATCHES允许多个LRU锁存器。当DBWR和服务器进程扫描数据块缓冲Cache时,它们需要获取LRU锁存器。这种锁存器对于避免缓冲区变脏以及避免被其他进程改变都是必要的,这也避免了扫描时返回不一致的结果。如果没有使用锁存器,某个扫描自由缓冲区的进程可能会发现一个自由缓冲区,但是立刻就可能被其他进程使用。每一个LRU 锁存器至少保护50个数据块缓冲区。所有缓冲区都被Oracle基于Hash算法分配到特定的LRU锁存器之上。如果该值太小,在数据库活动量很大时就会潜在地导致竞争。在多CPU机器之上这种竞争会高一些,这是因为多个服务器进程可能排队以获取一个LRU Cache。该参数默认值为CPU个数的一半,在多CPU系统中,推荐设为等于CPU数目或CPU数目的2倍~3倍(在Oracle 9i中,该参数已经变为一个隐含参数)。

  DB_BLOC

K_SIZE

  数据库块(BLOCK)是Oracle用来管理存储空间的最小单元,也被称为Oracle块,一个Oracle块可以由一个或多个操作系统快组成。

  Oracle块的大小在创建Oracle时由DB_BLOCK_SIZE指定,并且在Oracle建立后不能更改。DB_BLOCK_SIZE指定的值为标准Oracle块的大小,SYSTEM表空间及其其它表空间的默认地使用标准Oracle块。标准Oracle块必须是操作系统的整数倍,通常是4KB或8KB,随着数据库块大小的增加,数据库对内存(SGA区)的需求也会随着增加。

  注:在Oracle9i中,最多支持使用四种不同大小的非标准Oracle块,可以是2KB、4KB、8KB、16KB或32KB中的任意四个。

  DB_Cache_Size

  SGA区是Oracle实例的重要组成部分,它是由操作系统专门分配给Oracle使用的一块共享内存区。

  该参数直接指定SGA区中数据库告诉缓存区的大小(以KB或MB为单位),动态参数,可以在实例运行过程中动态改变。

  DB_File_MultibLock_Read_Count

  该参数主要同全表扫描有关。当Oracle在请求大量连续数据块的时候,该参数控制块的读入速率。DB_FILE_MULTIBLOCK_READ_COUNT参数能对系统性能产生较大的影响,它和DB_BLOCK_SIZE参数之间有重要关系。因为在Unix物理层上,Oracle总是以最小64K的数据库块进行读入,因此应该使这2个参数的乘积为64K。即如果DB_BLOCK_SIZE为8192,则DB_FILE_MULTIBLOCK_READ_COUNT应设为8。

  DB_nK_CACHE_SIZE

  如果要在数据库中使用非标准块,除了使用DB_CACHE_SIZE参数外,至少还要指定一个DB_nK_CACHE_SIZE参数。

  DB_nK_CACHE_SIZE一共有5个:DB_2K_CACHE_SIZE、DB_4K_CACHE_SIZE、DB_8K_CACHE_SIZE、DB_16K_CACHE_SIZE、DB_32K_CACHE_SIZE

  DB_Queue_Process

  该参数指定每个例程的SNP作业队列进程的数量。当使用job或复制时,一定要设置该参数,推荐设为3或4。并行查询中需要设置的参数

  并行查询仅当在多CPU处于空闲状态且数据分布在不同磁盘时才会对某些查询(有全表扫描操作)的性能产生有益的影响,而且即使在这种情况下,并行查询服务器的最大数量最好也不要超过CPU的数量。这里面应该修改的参数如下。
  
   DML_Locks

  该参数表示所有用户获取的表锁的最大数量。对每个表执行 DML 操作均需要一个 DML锁。例如,如果3个用户修改 2 个表,就要求该值为 6。该值过小可能会引起死锁问题。这个参数同transaction参数有关系,缺省为4倍的transaction大小。建议该参数不应该低于600,可以检查系统的当前值,若比600小,则将transaction参数改为150以上,dml_locks参数会自动变为transaction的4倍。

  Java_Pool_Size

  Oracle 8i以后版本中,Oracle数据库内置了对Java的支持,短消息系统并未使用这些功能,因此java_pool_size的值可以减少到1M。但如果数据库安装时选择了JServer组件,则这个值可以设置为20M~30M之间。(可以查询v$option动态视图,如果java那一项值为true,则表示安装了JServer,为false,表示未安装)。

  Large_Pool_Size

  Oracle的large_pool用于MTS、并行查询和RMAN。如果使用了MTS或RMAN,large_pool特别有用,它可以降低用户对shared_pool的争用,这个参数不推荐设置。(或设为1M)。

  Log_Buffer

  Log_buffer是重做日志缓冲区,对数据库的任何修改都按顺序被记录在该缓冲,然后由LGWR进程将它写入磁盘。LGWR的写入条件是:用户提交、有1/3重做日志缓冲区未被写入磁盘、有大于1M重做日志缓冲区未被写入磁盘、超时、DBWR需要写入的数据的SCN 号大于LGWR记录的SCN 号,DBWR 触发LGWR写入。从中可以看出,大于1M的log buffer值意义并不大,建议不论物理内存多大,该值统一设为1M。

  Log_CheckPoint_Interval

  该参数同检查点有关,检查点由ckpt 进程执行,检查点发生时Oracle会同步数据文件、控制文件和redo文件。该参数指定当写入重做日志文件中的OS 块 (而不是数据库块) 的数量达到设定值时,强制执行一次检查点。该值较低可以缩短例程恢复所需的时间,但可能导致磁盘操作过量。在Oracle 8i中该值缺省为100000。当值为0时,表示此参数不起作用。该参数的设定需要考虑的因素较多,建议使用缺省值。

  Log_CheckPoint_TimeOut

  该参数仍然同检查点有关。它指定距下一个检查点出现的最大时间间隔(秒数)。将该时间值指定为0,将禁用以时间为基础的检查点。较低的值可以缩短例程恢复的时间,但可能导致磁盘操作过量。在8i中该值缺省为1800。如果想强制某一时间段后执行检查点,则用此选项。不建议修改该值。

  Open_Cursors

  指定一个会话一次可以打开的游标 (环境区域) 的最大数量,并且限制PL/SQL使用的PL/SQL游标高速缓存的大小,以避免用户再次执行语句时重新进行语法分析。请将该值设置得足够高,这样才能防止应用程序耗尽打开的游标。此值建议设置为250~300。

  PGA_Aggregate_Target

  该参数指定连接到例程的所有服务器进程的目标 PGA 总内存。建议对该值设置为每1G内存增加100M,但最大不要超过500M。设置了workarea_size_policy和pga_aggregate_target参数后,不用再设置sort_area_size等参数。

  PROSESSES

  指定Oracle能够并发执行的操作系统进程的最大数目。最小值是6(每个数据库至少启动5个后台进程和一个用户进程)

  Re_Page_SGA

  该参数表示将把所有SGA装载到内存中,以便使该实例迅速达到最佳性能状态。这将增加例程启动和用户登录的时间,但在内存充足的系统上能减少缺页故障的出现。建议在2G以上(含2G)内存的系统都将该值设为true。

  Session_Cached_Cursor

  该参数指定要高速缓存的会话游标的数量。对同一SQL语句进行多次语法分析后,它的会话游标将被移到该会话的游标高速缓存中。这样可以缩短语法分析的时间,因为游标被高速缓存,无需被重新打开。设置该参数有助于提高系统的运行效率,建议无论在任何平台都应被设为50。

  SHARED_POOL_Reserved_SIZE

  它的作用是在shared pool中保留一块区域以放置一些大对象(如大型软件包),如不设置此参数,系统缺省保留5%的shared pool空间用于放置大对象,不建议设置该参数,让系统自动分配即可。

  SHARED_POOL_SIZE

  该参数用于设置SGA区中共享池的大小,共享池用于存放解析后的SQL和PL/SQL语句,以及由多个服务进程共享的会话信息。动态参数。

  SGA_Max_Size

  该参数用于限制SGA区所能使用的最大内存空间,尽管SGA区中数据库高速缓存区、共享池等组件的大小在Oracle9i中都能动态调整,只要SGA区不大于该值,就可以动态调整数据库缓冲区和share pool的大小。建议该值取物理内存的50%。

  Sort_area_retained_size

  这个参数的含义是当排序完成后至少为session继续保留的排序内存的最小值,该值最大可设为等于Sort_area_size。这样设置的好处是可以提高系统性能,因为下次再做排序操作时不需要再临时申请内存,缺点是如果Sort_ara_size设得过大并且session数很多时,将导致系统内存不足。建议该值设为Sort_area_size的10%~20%左右,或者不设置(缺省为0)。

  Sort_area_size

  该参数是当查询需要排序的时候,Oracle将使用这部分内存做排序,当内存不足时,使用临时表空间做排序。这个参数是针对会话(session)设置的,不是针对整个数据库。即如果应用有170个数据库连接(session),假设这些session都做排序操作,则Oracle会分配8×170等于1360M内存做排序,而这些内存是在Oracle的SGA区之外分配的,即如果SGA区分配了1.6G内存,Oracle还需要额外的1.3G内存做排序。

  建议该值设置不超过3M,当物理内存为1G时,该值宜设为1M或更低(如512K);2G时可设为2M;但不论物理内存多大,该值也不应超过3M。

  Undo_Management

  由Undo_management参数决定是使用undo tablespace还是使用手工建立的回滚段。如果该参数为auto,则表示使用undo tablespace。为manual,表示使用手工管理回滚段,

  Undo_Retention

  该参数的单位为秒,当undo_management参数为auto时,undo_retention表示在undo_tablespace中保留多长时间的回滚信息,Oracle 9i的flash_back功能同该值有关。该值设为多大同undo_tablespace的大小有关,在9i R2中缺省值为10800,一般情况下已经够了,不建议修改该参数。

  WorkArea_Size_Policy

  这也是Oracle 9i新引入的参数,如果该参数设为auto,Oracle会为所有的session在SGA区之外分配一块大的内存区域做为UGA,该内存由pga_aggregate_target设置。每个session都在这块大内存区中做排序等操作,从而不用再设置其他的“*_area_size” 参数。该值在Oracle 9i中缺省设为auto,建议继续使用缺省值。

  Pfile文件

  Pfile(Parameter File)文件是基于文本格式的参数文件,含有数据库的配置参数。

  Oracle 9i在安装时为每个数据库建立了一个Pfile,默认的名称为“init+例程名.ora”,这是一个文本文件,可以用任何文本编辑工具打开。

  下表为数据库的初始化参数文件分析:

  ##############################################################################

  # Copyright (c) 1991, 2001, 2002 by Oracle Corporation     Oracle公司版权标识

  IXDBA.NET技术社区

  ##############################################################################

  ###########################################

  # Cache and I/O     高速缓存和 I/O

  ###########################################

  db_block_size=8192   指定数据块大小为8KB

  db_cache_size=33554432    指定数据缓冲区为32MB,该值越大,可以减少对数据库文件的I/O次数,提高效率

  db_file_multiblock_read_count=16

  ###########################################

  # Cursors and Library Cache   游标和库高速缓存

  ###########################################

  open_cursors=300   指定一个会话一次可以打开的游标的最大数量为300,应将该值设置得足够高,这样才能防止应用程序耗尽打开的游标
   ###########################################

  # Database Identification   数据库标识

  ###########################################

  db_domain=""   数据库域名为mynet,加上数据库名称db_name构成全局数据库名称

  db_name=cicro   数据库名称为myoracle

  ###########################################

  # Diagnostics and Statistics    诊断和统计

  ###########################################

  background_dump_dest=/opt/oracle/admin/cicro/bdump   后台进程跟踪文件目录

  core_dump_dest=/opt/oracle/admin/cicro/cdump      核心转储跟踪文件目录

  timed_statistics=TRUE  收集操作系统的计时信息,这些信息可被用来优化数据库和 SQL 语句

  user_dump_dest=/opt/oracle/admin/cicro/udump    用户进程跟踪文件目录

  ###########################################

  # File Configuration

  control_files=("/opt/oracle/oradata/cicro/control01.ctl", "/opt/oracle/oradata/cicro/control02.ctl",

  "/opt/oracle/oradata/cicro/control03.ctl")    指定控制文件的路径及文件名

  ###########################################

  ###########################################

  # Instance Identification   网络注册

  ###########################################

  instance_name=test   例程名称为test

  ###########################################

  # Job Queues

  ###########################################

  job_queue_processes=10

  ###########################################

  # MTS  多线程服务器配置标识,在Oracle 9i里称为共享服务器配置

  ###########################################

  dispatchers="(PROTOCOL=TCP) (SERVICE=testXDB)"   多线程服务器配置

  ###########################################

  # Miscellaneous   其他

  ###########################################

  aq_tm_processes=1

  compatible=9.2.0.0.0   兼容版本9.2.0

  ###########################################

  # Optimizer

  ###########################################

  hash_join_enabled=TRUE

  query_rewrite_enabled=FALSE

  star_transformation_enabled=FALSE

  db_name=cicro

  ###########################################

  ###########################################

  # Pools  池

  ###########################################

  java_pool_size=83886080    指定Java存储池的大小为32MB,用于存储 Java 的方法、类定义和Java对象。

  large_pool_size=16777216   指定大型池的大小为1MB, 用于共享服务器的会话内存、并行执行的消息缓冲区以及RMAN备份和恢复的磁盘 I/O 缓冲区。

  shared_pool_size=83886080  指定共享池的大小为32MB,用于存储共享游标、存储的过程、控制结构和并行执行消息缓冲区等对象。较大的值能改善多用户系统的性能.

  ###########################################

  # Processes and Sessions  进程和会话

  ###########################################

  processes=150  指定可同时连接到一个Oracle Server上的操作系统用户进程的最大数量为150

  ###########################################

  # Redo Log and Recovery   重做日志和恢复

  ###########################################

  fast_start_mttr_target=300   指定从单个数据库例程崩溃中恢复所需的时间为300秒

  ###########################################

  # Security and Auditing  安全与验证

  ###########################################

  remote_login_passwordfile=EXCLUSIVE   指定操作系统或口令文件是否具有检查用户口令的权限。设置为EXCLUSIVE, 将使用数据库的口令文件对每个具有权限的用户进.

  ###########################################

  # Sort, Hash Joins, Bitmap Indexes   排序, 散列联接, 位图索引

  ###########################################

  pga_aggregate_target=25165824

  sort_area_size=524288   指定排序区使用的最大内存量为512KB。排序完成后, 各行将返回, 并且内存将释放。增大该值可以提高大型排序的效率。

  ###########################################

  # System Managed Undo and Rollback Segments   系统管理的撤消和回退段

  ###########################################

  undo_management=AUTO   指定系统使用的撤消空间管理方式为SMU 方式,在SMU方式下, 撤消空间会像撤消表空间一样在外部分配.

  undo_retention=10800

  undo_tablespace=UNDOTBS1   指定回滚表空间为UNDOTBS

  sPfile文件

  SPfile(Server Parameter File,服务器参数文件)是基于二进制格式的参数文件,含有数据库及例程的参数和数值,但不能用文本编辑工具打开。

  下面对两种初始化参数文件进行比较如表6.2所示。


表6.2 Spfile和Pfile文件的比较

比较内容  SPfile  Pfile
格式  二进制格式  文本格式
编辑方式  (1)利用企业管理器对Pfile进行修改,然后转换为Spfile (2)在SQL Plus里使用ALTER SYSTEM语句进行修改  (1)利用文本工具直接进行修改 (2)在企业管理器里修改配置后导出形成
默认名称  SPfile+例程名.ora  Init+例程名.ora  实际参数文件Init.ora
默认路径  /opt/oracle/product/9.2.0/dbs  Oracle\ora90\database\    Init.ora位于/opt/oracle/product/9.2.0/dbs
启动次序  SPfile优先于Pfile  Pfile低于Spfile

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23890223/viewspace-697428/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-05-11

  • 博文量
    73
  • 访问量
    333468