参数文件
查询参数可以使用的数值
select * from v$parameter_valid_values where upper(name) like '%OPTIMI%'
Oracle参数
一、oracle pfile/spfile区别
pfile 默认的名称为“init+例程名.ora”文件路径:E:\oracle\product\
spfile 默认的名称为“spfile+例程名.ora”文件路径:E:\oracle\product\
两个文件可以用命令 CREATE PFILE FROM SPFILE或CREATE SPFILE FROM PFILE来互相创建
区别:
1、启动次序 SPfile优先于Pfile。
2、PFILE是静态文件,修改之后不会马上生效,数据库必须重新启动读取这个文件才行。
3、SPFILE是动态参数文件,是二进制文件,不可以直接用记事本等等程序做修改,可以用ALTER命令做修改,不用重起数据库也能生效。
修改方法:
#查看参数信息
sql>show parameter;
#修改参数
sql>alter system set 参数名=值 scope=参数2;
参数2取值有如下三种:
1. scope=spfile: 对参数的修改记录在服务器初始化参数文件中,修改后的参数在下次启动DB时生效。适用于动态和静态初始化参数。
2. scope=memory: 对参数的修改记录在內存中,对于动态初始化参数的修改立即生效。在重启DB后会丟失,会复原为修改前的参数值。
3. scope=both: 对参数的修改会同时记录在服务器参数文件和內存中,对于动态参数立即生效,对静态参数不能用这个选项。
如果使用了服务器参数文件,则在执行alter system语句时,scope=both是default的选项。
如果沒有使用服务器参数文件,而在执行alter system语句时指定scope=spfile|both都会出错。
二、init.ora文件(E:\oracle\product\
该文件的参数说明:
1)db_name = "clustdb" 一个数据库标识符,应与CREATE DATABASE 语句中指定的名称相对应。
2)instance_name = clustdb1 在多个例程使用相同服务名的情况下,用来唯一地标识一个数据库例程;INSTANCE_NAME 不应与 SID 混淆,它实际上是对在一台主机上共享内存的各个例程的唯一标识。
3)control_files = control_files = ("\\.\clustdb_control1", "\\.\clustdb_control2")
4)open_cursors =300
库高速缓存 指定一个会话一次可以打开的游标 (环境区域) 的最大数量,并且限制 PL/SQL 使用的 PL/SQL 游标高速缓存的大小,以避免用户再次执行语句时重新进行语法分析。请将该值设置得足够高,这样才能防止应用程序耗尽打开的游标。
5)db_block_buffers = 200(9i的参数,之后被db_block_size 参数所代替,详见15条记录)
高速缓存与I/O 缓冲区高速缓存中 Oracle 块的数量。该参数会显著影响一个例程的 SGA 总大小。
6)large_pool_size=1048576
池--指定大存储池的分配堆,它可被多线程服务器 (MTS) 用作会话内存、用作并行执行的消息缓冲区以及用作 RMAN备份和恢复的磁盘 I/O 缓冲区。
7)java_pool_size=67108864
以字节为单位,指定 Java 存储池的大小,它用于存储 Java 的方法和类定义在共享内存中的表示法,以及在调用结束时移植到 Java 会话空间的 Java 对象。
8)log_checkpoint_interval = 10000
指定在出现检查点之前,必须写入重做日志文件中的 OS 块 (而不是数据库块) 的数量。无论该值如何,在切换日志时都会出现检查点。较低的值可以缩短例程恢复所需的时间,但可能导致磁盘操作过量。
9)
processes = 220
log_buffer = 8388608
以字节为单位,指定在 LGWR 将重做日志条目写入重做日志文件之前,用于缓存这些条目的内存量。重做条目保留对数据库块所作更改的一份记录。如果该值大于65536,就能减少重做日志文件 I/O,特别是在有长时间事务处理或大量事务处理的系统上 **最大值为 500K 或 128K * CPU_COUNT,两者之中取较大者
10)oracle_trace_enable = true
启动一个默认的 Oracle Trace 集合,直到该值再次设置为 NULL。
11)timed_statistics=true
收集操作系统的计时信息,这些信息可被用来优化数据库和 SQL语句。要防止因从操作系统请求时间而引起的开销,请将该值设置为零。将该值设置为 TRUE 对于查看长时间操作的进度也很有用。
12)background_dump_dest=%ORACLE_HOME%/admin/clustdb/bdump
指定在 Oracle 操作过程中为后台进程 (LGWR,DBW n 等等) 写入跟踪文件的路径名(目录或磁盘)。它还定义记录着重要事件和消息的数据库预警文件的位置。
13)core_dump_dest = /opt/apps/oracle/admin/51cto/cdump
指定核心转储位置的目录名 (用于 UNIX)。
14)user_dump_dest=%ORACLE_HOME%/admin/clustdb/
为服务器将以一个用户进程身份在其中写入调试跟踪文件的目录指定路径名。例如,该目录可这样设置: NT 操作系统上的 C:/ORACLE/UTRC;UNIX 操作系统上的 /oracle/utrc;或 VMS 操作系统上的DISK$UR3:[ORACLE.UTRC]。
15)db_block_size = 8192
一个 Oracle 数据库块的大小 (以字节计)。该值在创建数据库时设置,而且此后无法更改。 1024 - 65536 (根据操作系统而定)。
16)remote_login_passwordfile = exclusive
指定操作系统或一个文件是否检查具有权限的用户的口令。如果设置为 NONE,Oracle 将忽略口令文件。如果设置为EXCLUSIVE,将使用数据库的口令文件对每个具有权限的用户进行验证。如果设置为 SHARED,多个数据库将共享 SYS 和INTERNAL口令文件用户
17)job_queue_processes = 4
只用于复制环境。它指定每个例程的 SNP 作业队列进程的数量 (SNP0, ... SNP9, SNPA, ... SNPZ)。要自动更新表快照或执行由 DBMS_JOB 创建的请求,请将该参数设置为 1 或更大的值。 0 到 36
18)job_queue_interval = 10
作业队列 只用于复制环境。它以秒为单位指定该例程的每个 SNPn 后台进程的唤醒频率。 1 到 3600
19)distributed_transactions = 5
一个数据库一次可参与的分布式事务处理的最大数量。如果由于网络故障异常频繁而减少该值,将造成大量未决事务处理。
20)open_links = 4
指定在一次会话中同时打开的与远程数据库的连接的最大数量。该值应等于或超过一个引用多个数据库的单个 SQL 语句中引用的数据库的数量,这样才能打开所有数据库以便执行该语句。
21)compatible = "
允许使用一个新的发行版,同时保证与先前版本的向后兼容性。
22)sort_area_size = 524288
以字节为单位,指定排序所使用的最大内存量。排序完成后,各行将返回,并且内存将释放。增大该值可以提高大型排序的效率。如果超过了该内存量,将使用临时磁盘段。
相当于 6 个数据库块的值 (最小值) 到操作系统确定的值 (最大值)。
23)db_file_multiblock_read_count
一次从物理存储中读取的数据块数量 ,数据库默认是一次性读取128个数据块,也就是
此参数值的设置,需要在实践的基础上,慢慢试验的得出,不可一概而论。
24)db_block_size 数据块的大小 ,数据库默认是8K的数据库,这个参数在建库后无法调整,设置数据块的大小是依据不同类型的系统的。
如果数据块设置比较大,那么一次读取的数据行较多,相应对SGA内存消耗比较大,特定查询引发的换入换出可能较多。如果设置的过小,频繁的IO逻辑物理读也会引起性能问题。
25)PRE_PAGE_SGA oracle实例启动时,会只载入各个内存区最小的大小。而其他SGA内存只作为虚拟内存分配,只有当进程touch到相应的页时,才会置换到物理内存中。但我们也许希望实例一启动后,所有SGA都分配到物理内存。这时就可以通过设置PRE_PAGE_SGA参数来达到目的了。这个参数的默认值为FALSE,即不将全部SGA置入物理内存中。当设置为TRUE时,实例启动会将全部SGA置入物理内存中。它可以使实例启动达到它的最大性能状态,但是,启动时间也会更长(因为为了使所有SGA都置入物理内存中,oracle进程需要touch所有的SGA页)。当参数设置为TRUE时,不仅在实例启动时,需要touch所有的SGA页,并且由于每个oracle进程都会访问SGA区,所以每当一个新进程启动时(在Dedicated Server方式中,每个会话都会启动一个Oracle进程),都会touch一遍该进程需要访问的所有页。因此,每个进程的启动时间页增长了。所以,这个参数的设置需要根据系统的应用情况来设定。
LOCK_SGA RE_PAGA_SGA只是在启动时将物理内存分配给SGA,但并不能保证系统在以后的运行过程不会将SGA中的某些页置换到虚拟内存中,也就是说,尽管设置了这个参数,还是可能出现Page In/Out。如果需要保障SGA不被换出,就需要由另外一个参数LOCK_SGA来控制了。
26) memory_max_target ,memory_target ,SGA_MAX_SIZE ,SGA_TARGET
先解释下这四个参数的决定关系:
memory_max_target >=memory_target >SGA_MAX_SIZE >=SGA_TARGET
memory_max_target oracle 所能使用的内存的总体大小,包括SGA和PGA;
SGA_MAX_SIZE sga所能使用的的全部内存大小,
10g 后oracle使用内存共享 自动管理方法,以使内存达到最大限度的利用,
memory_target和SGA_TARGET 这两个参数决定的是是否启用自动内存管理(ASMM),参数默认是为0,一旦设置数值后 ,将自动启用内存自动管理(ASMM),
例如:SGA_TARGET的默认值为0,我现在修改为452M(SGA_MAX_SIZE为512M),也即是说,sga总内存为512M,其中的的452M属于共享内存,这部分内存oracle会根据实际情况,分配给内存较小的区域,如share_pool,buffer_cache等,但是这个参数的值,永远不可能超过SGA_MAX_SIZE。
oracle可以随时调节各个区域的大小,使之达到系统性能最佳状态的个最合理大小,并且控制他们之和在SGA_TARGET指定的值之内。 一旦给SGA_TARGET指定值后(默认为0,即没有启动ASMM),就自动启动了ASMM特性。
27)DB_WRITER_PROCESSES
DB_WRITER_PROCESSES参数配置写进程的个数,各个进程以DBWn区分,其中n>=0,是进程序号。一般情况下,DB_WRITER_PROCESSES = MAX(1, TRUNC(CPU数/8))。也就是说,CPU数小于8时,DB_WRITER_PROCESSES为1,即只有一个写进程DBW0。这对于一般的系统来说也是足够用。当你的系统的修改数据的任务很重,并且已经影响到性能时,可以调整这个参数。这个参数不要超过CPU数,否则多出的进程也不会起作用,另外,它的最大值不能超过20。
三、alert.log文件(e:\oracle\product\
告警日志,在产生错误时,启动和关闭实例时,都会记录信息到告警日志中,此外还记录了不同于默认值的初始参数的列表,alter
system,alter database命令,对表空间,数据文件的操作,空间不足,损坏的文件等。
告警日志也会变得很大,可在任意时间重命名或删除告警日志,但是告警日志记录了数据库的各种安全信息,维护和恢复等信息,因此可
根据时间先后来选择性删除。
四、配置查询优化器 相关的参数
28)optimizer_mode 优化器的选择模式
参数 optimizer_mode , 有 first_rows_1000, first_rows_100, first_rows_10, first_rows_1,first_rows, all_rows, choose, rule 几种,
9i 默认为choose,
此参数可动态修改,可以是实力级别和会话级别的修改。
29)optimizer_features_enable
数据库升级后,保留原版数据库的查询优化器的原先行为,可将次参数,设置为升级前的版本号,次参数只为过渡时使用,当系统稳定后,需要改回新版本。
30)optimizer_index_cost_adj
这个初始化参数代表一个百分比,取值范围在1到10000之间,该参数表示索引扫描和全表扫描成本的比较。缺省值100表示索引扫描成本等价转换与全表扫描成本。
超过100后越大,则会使索引扫描的开销越高,从而是查询优化器更加倾向于全表扫描,相反,值越小于100,索引扫描的开销就越低。
当这个值过低的话,容易造成执行计划的不稳定,通常设置为80——90。
五、配置PGA相关的参数
1、workarea_size_policy
指定控制工作区域大小的方式,可以设置为两个值:
Auto 整个工作区域大小的分配被委派给内存管理器,通过参数pga_aggregate_target 指定。
Manual 通过设置参数bitmap_merge_area_size,hash_area_size,sort_area_size,sort_area_retained_size 控制每个工作区域备份的大小。
2、pga_aggregate_target 9i和
3、sort_area_size 该参数默认值为64K,该参数较小,通常可以设置为
用于合并连接,排序,聚合(包含哈希分组) 的工作区域的大小。
4、sort_area_retained_size
该参数指定排序后的数据的读缓冲大小(以字节为单位),该参数只有在手工PGA管理时才有效,默认值为0,默认值来源于sort_area_size。
建议使用默认值,仅当系统确实缺少内存的时候,才建议设置此值。
5、hash_area_size
当使用手工pGA管理时,该参数指定用于哈希连接的工作区域大小。
默认值为sort_area_size 的两倍。
次此参数指定的值只是一个上限。
6、bitmap_merge_area_size 如果使用手工管理PGA,此参数指定用于合并与位图索引相关位图的工作区域大小,默认值为