※天道酬勤※

§水至清则无鱼,人至察则无徒§
posts - 65, comments - 11, trackbacks - 0, articles - 0
  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

诊断并解决ORA-04031 错误
当我们在共享池中试图分配大片的连续内存失败的时候,Oracle首先清除池中当前没使用的所有对象,使空闲内存块合并。如果仍然没有足够大单个的大块内存满足请求,就会产生ORA-04031 错误。

当这个错误出现的时候你得到的错误解释信息类似如下:

04031, 00000, "unable to allocate %s bytes of shared memory (\"%s\",\"%s\",\"%s\",\"%s\")"
// *Cause: More shared memory is needed than was allocated in the shared
// pool.
// *Action: If the shared pool is out of memory, either use the
// dbms_shared_pool package to pin large packages,
// reduce your use of shared memory, or increase the amount of
// available shared memory by increasing the value of the
// INIT.ORA parameters "shared_pool_reserved_size" and
// "shared_pool_size".
// If the large pool is out of memory, increase the INIT.ORA
// parameter "large_pool_size".

1.共享池相关的实例参数
在继续之前,有必要理解下面的实例参数:

SHARED_POOL_SIZE
这个参数指定了共享池的大小,单位是字节。可以接受数字值或者数字后面跟上后缀"K" 或 "M" 。"K"代表千字节, "M"代表兆字节。
SHARED_POOL_RESERVED_SIZE
指定了为共享池内存保留的用于大的连续请求的共享池空间。当共享池碎片强制使 Oracle 查找并释放大块未使用的池来满足当前的请求的时候,这个参数和SHARED_POOL_RESERVED_MIN_ALLOC 参数一起可以用来避免性能下降。
这个参数理想的值应该大到足以满足任何对保留列表中内存的请求扫描而无需从共享池中刷新对象。既然操作系统内存可以限制共享池的大小,一般来说,你应该设定这个参数为 SHARED_POOL_SIZE 参数的 10% 大小。
SHARED_POOL_RESERVED_MIN_ALLOC 这个参数的值控制保留内存的分配。如果一个足够尺寸的大块内存在共享池空闲列表中没能找到,内存就从保留列表中分配一块比这个值大的空间。默认的值对于大多数系统来说都足够了。如果你加大这个值,那么Oracle 服务器将允许从这个保留列表中更少的分配并且将从共享池列表中请求更多的内存。这个参数在Oracle 8i 和更高的版本中是隐藏的。提交如下的语句查找这个参数值: SELECT   nam.ksppinm NAME, val.ksppstvl VALUE
    FROM x$ksppi nam, x$ksppsv val
   WHERE nam.indx = val.indx AND nam.ksppinm LIKE '%shared%'
ORDER BY 1;
10g 注释:Oracle 10g 的一个新特性叫做 "自动内存管理" 允许DBA保留一个共享内存池来分shared pool,buffer cache, java pool 和large pool。一般来说,当数据库需要分配一个大的对象到共享池中并且不能找到连续的可用空间,将自动使用其他SGA结构的空闲空间来增加共享池的大小 。既然空间分配是Oracle自动管理的,ora-4031出错的可能性将大大降低。自动内存管理在初始化参数SGA_TARGET大于0的时候被激活。当前设定可以通过查询v$sga_dynamic_components 视图获得。请参考10g管理手册以得到更多内容 。
2.诊断ORA-04031 错误
注:大多数的常见的 ORA-4031 的产生都和 SHARED POOL SIZE 有关,这篇文章中的诊断步骤大多都是关于共享池的。 对于其它方面如Large_pool或是Java_pool,内存分配算法都是相似的,一般来说都是因为结构不够大造成。

ORA-04031 可能是因为 SHARED POOL 不够大,或是因为碎片问题导致数据库不能找到足够大的内存块。

ORA-04031 错误通常是因为库高速缓冲中或共享池保留空间中的碎片。 在加大共享池大小的时 候考虑调整应用,使用共享的SQL 并且调整如下的参数:
SHARED_POOL_SIZE,
SHARED_POOL_RESERVED_SIZE,
SHARED_POOL_RESERVED_MIN_ALLOC.
首先判定是否ORA-04031 错误是由共享池保留空间中的库高速缓冲的碎片产生的。提交下的查询:
SELECT free_space, avg_free_size,used_space, avg_used_size, request_failures,
       last_failure_size
  FROM v$shared_pool_reserved;
如果:
REQUEST_FAILURES > 0 并且 LAST_FAILURE_SIZE > SHARED_POOL_RESERVED_MIN_ALLOC
那么ORA-04031 错误就是因为共享池保留空间缺少连续空间所致。要解决这个问题,可以考虑加大SHARED_POOL_RESERVED_MIN_ALLOC 来降低缓冲进共 享池保留空间的对象数目,并增大 SHARED_POOL_RESERVED_SIZE 和 SHARED_POOL_SIZE 来加大共享池保留空间的可用内存。

如果:
REQUEST_FAILURES > 0 并且 LAST_FAILURE_SIZE < SHARED_POOL_RESERVED_MIN_ALLOC
或者
REQUEST_FAILURES 等于0 并且 LAST_FAILURE_SIZE < SHARED_POOL_RESERVED_MIN_ALLOC
那么是因为在库高速缓冲缺少连续空间导致ORA-04031 错误。

第一步应该考虑降低SHARED_POOL_RESERVED_MIN_ALLOC 以放入更多的对象到共享池保留空间中并且加大SHARED_POOL_SIZE。

3.解决ORA-04031 错误
ORACLE BUG
Oracle推荐对你的系统打上最新的PatchSet。大多数的ORA-04031错误都和BUG 相关,可以通过使用这些补丁来避免。

下面表中总结和和这个错误相关的最常见的BUG、可能的环境和修补这个问题的补丁。

BUG 描述  Workaround Fixed
<Bug:1397603> ORA-4031/SGA memory leak of PERMANENT memory occurs for buffer handles  _db_handles_cached = 0  901/ 8172 
<Bug:1640583> ORA-4031 due to leak / cache buffer chain contention from AND-EQUAL access Not available 8171/901
<Bug:1318267> INSERT AS SELECT statements may
not be shared when they should be
if TIMED_STATISTICS. It can lead to ORA-4031 _SQLEXEC_PROGRESSION_COST=0
 8171/8200
<Bug:1193003> Cursors may not be shared in 8.1
when they should be Not available 8162/8170/ 901
<Bug:2104071>  ORA-4031/excessive "miscellaneous" shared pool usage possible. (many PINS) None-> This is known to affect the XML parser.  8174, 9013, 9201
<Note:263791.1>  Several number of BUGs related to ORA-4031 erros were fixed in the 9.2.0.5 patchset Not available 9205


编译Java代码时出现的ORA-4031
在你编译Java代码的时候如果内存溢出,你会看到错误:

A SQL exception occurred while compiling: :
ORA-04031: unable to allocate bytes of shared memory
("shared pool","unknown object","joxlod: init h", "JOX: ioc_allocate_pal")
解决办法是关闭数据库然后把参数 JAVA_POOL_SIZE 设定为一个较大的值。这里错误信息中提到的 "shared pool" 其实共享全局区(SGA)溢出的误导,并不表示你需要增加SHARED_POOL_SIZE,相反,你必须加大 JAVA_POOL_SIZE 参数的值,然后重启动系统,再试一下。参考: <Bug:2736601> 。


小的共享池尺寸
很多情况下,共享池过小能够导致ORA-04031错误。下面信息有助于你调整共享池大小:

库高速缓冲命中率
命中率有助于你衡量共享池的使用,有多少语句需要被解析而不是重用。下面的SQL语句有助于你计算库高速缓冲的命中率:

SELECT SUM(PINS) "EXECUTIONS",
            SUM(RELOADS) "CACHE MISSES WHILE EXECUTING"
            FROM V$LIBRARYCACHE;
如果丢失超过1%,那么尝试通过加大共享池的大小来减少库高速缓冲丢失。

共享池大小计算
要计算最适合你工作负载的共享池大小,请参考:

<Note:1012046.6>: HOW TO CALCULATE YOUR SHARED POOL SIZE.
共享池碎片
每一次,需要被执行的SQL 或者PL/SQL 语句的解析形式载入共享池中都需要一块特定的连续的空间。数据库要扫描的第一个资源就是共享池中的空闲可用内存。一旦空闲内存耗尽,数据库要查找一块已经分配但还没使用的内存准备重用。如果这样的确切尺寸的大块内存不可用,就继续按照如下标准寻找:

大块(chunk)大小比请求的大小大
空间是连续的
大块内存是可用的(而不是正在使用的)
这样大块的内存被分开,剩余的添加到相应的空闲空间列表中。当数据库以这种方式操作一段时间之后,共享池结构就会出现碎片。

当共享池存在碎片的问题,分配一片空闲的空间就会花费更多的时间,数据库性能也会下降(整个操作的过程中,"chunk allocation"被一个叫做"shared pool latch" 的闩所控制) 或者是出现 ORA-04031 错误errors (在数据库不能找到一个连续的空闲内存块的时候)。

参考 <Note:61623.1>: 可以得到关于共享池碎片的详细讨论。
如果SHARED_POOL_SIZE 足够大,大多数的 ORA-04031 错误都是由共享池中的动态SQL 碎片导致的。可能的原因如下:
非共享的SQL
生成不必要的解析调用 (软解析)
没有使用绑定变量
要减少碎片的产生你需要确定是前面描叙的几种可能的因素。可以采取如下的一些方法,当然不只局限于这几种: 应用调整、数据库调整或者实例参数调整。

请参考 <Note:62143.1>,描述了所有的这些细节内容。这个注释还包括了共享池如何工作的细节。
下面的视图有助于你标明共享池中非共享的SQL/PLSQL:

V$SQLAREA 视图
这个视图保存了在数据库中执行的SQL 语句和PL/SQL 块的信息。下面的SQL 语句可以显示给你带有literal 的语句或者是带有绑定变量的语句:

SELECT   SUBSTR (sql_text, 1, 40) "SQL", COUNT (*),
         SUM (executions) "TotExecs"
    FROM v$sqlarea
   WHERE executions < 5
GROUP BY SUBSTR (sql_text, 1, 40)
  HAVING COUNT (*) > 30
ORDER BY 2;
注: Having 后的数值 "30" 可以根据需要调整以得到更为详细的信息。

X$KSMLRU 视图
这个固定表x$ksmlru 跟踪共享池中导致其它对象换出(age out)的应用。这个固定表可以用来标记是什么导致了大的应用。

如果很多对象在共享池中都被阶段性的刷新可能导致响应时间问题并且有可能在对象重载入共享池中的时候导致库高速缓冲闩竞争问题。

关于这个x$ksmlru 表的一个不寻常的地方就是如果有人从表中选取内容这个表的内容就会被擦除。这样这个固定表只存储曾经发生的最大的分配。这个值在选择后被重新设定这样接下来的大的分配可以被标记,即使它们不如先前的分配过的大。因为这样的重置,在查询提交后的结果不可以再次得到,从表中的输出的结果应该小心的保存。监视这个固定表运行如下操作:

SELECT * FROM X$KSMLRU WHERE ksmlrsiz > 0;
这个表只可以用SYS用户登录进行查询。

X$KSMSP 视图 (类似堆Heapdump信息)
使用这个视图能找出当前分配的空闲空间,有助于理解共享池碎片的程度。如我们在前面的描述,查找为游标分配的足够的大块内存的第一个地方是空闲列表( free list)。 下面的语句显示了空闲列表中的大块内存:

SELECT   '0 (<140)' bucket, ksmchcls, 10 * TRUNC (ksmchsiz / 10) "From",
         COUNT (*) "Count", MAX (ksmchsiz) "Biggest",
         TRUNC (AVG (ksmchsiz)) "AvgSize", TRUNC (SUM (ksmchsiz)) "Total"
    FROM x$ksmsp
   WHERE ksmchsiz < 140 AND ksmchcls = 'free'
GROUP BY ksmchcls, 10 * TRUNC (ksmchsiz / 10)
UNION ALL
SELECT   '1 (140-267)' bucket, ksmchcls, 20 * TRUNC (ksmchsiz / 20),
         COUNT (*), MAX (ksmchsiz), TRUNC (AVG (ksmchsiz)) "AvgSize",
         TRUNC (SUM (ksmchsiz)) "Total"
    FROM x$ksmsp
   WHERE ksmchsiz BETWEEN 140 AND 267 AND ksmchcls = 'free'
GROUP BY ksmchcls, 20 * TRUNC (ksmchsiz / 20)
UNION ALL
SELECT   '2 (268-523)' bucket, ksmchcls, 50 * TRUNC (ksmchsiz / 50),
         COUNT (*), MAX (ksmchsiz), TRUNC (AVG (ksmchsiz)) "AvgSize",
         TRUNC (SUM (ksmchsiz)) "Total"
    FROM x$ksmsp
   WHERE ksmchsiz BETWEEN 268 AND 523 AND ksmchcls = 'free'
GROUP BY ksmchcls, 50 * TRUNC (ksmchsiz / 50)
UNION ALL
SELECT   '3-5 (524-4107)' bucket, ksmchcls, 500 * TRUNC (ksmchsiz / 500),
         COUNT (*), MAX (ksmchsiz), TRUNC (AVG (ksmchsiz)) "AvgSize",
         TRUNC (SUM (ksmchsiz)) "Total"
    FROM x$ksmsp
   WHERE ksmchsiz BETWEEN 524 AND 4107 AND ksmchcls = 'free'
GROUP BY ksmchcls, 500 * TRUNC (ksmchsiz / 500)
UNION ALL
SELECT   '6+ (4108+)' bucket, ksmchcls, 1000 * TRUNC (ksmchsiz / 1000),
         COUNT (*), MAX (ksmchsiz), TRUNC (AVG (ksmchsiz)) "AvgSize",
         TRUNC (SUM (ksmchsiz)) "Total"
    FROM x$ksmsp
   WHERE ksmchsiz >= 4108 AND ksmchcls = 'free'
GROUP BY ksmchcls, 1000 * TRUNC (ksmchsiz / 1000);
4. ORA-04031 错误与 Large Pool
大池是个可选的内存区,为以下的操作提供大内存分配:

MTS会话内存和 Oracle XA 接口
Oracle 备份与恢复操作和I/O服务器进程用的内存(缓冲)
并行执行消息缓冲
大池没有LRU列表。这和共享池中的保留空间不同,保留空间和共享池中其他分配的内存使用同样的LRU列表。大块内存从不会换出大池中,内存必须是显式的被每个会话分配并释放。一个请求如果没有足够的内存,就会产生类似这样的一个ORA-4031错误:
ORA-04031: unable to allocate XXXX bytes of shared memory
("large pool","unknown object","session heap","frame")
这个错误发生时候可以检查几件事情:
1- 使用如下语句检查 V$SGASTAT ,得知使用和空闲的内存: SELECT pool,name,bytes FROM v$sgastat where pool = 'large pool';
2- 你还可以采用 heapdump level 32 来 dump 大池的堆并检查空闲的大块内存的大小
从大池分配的内存如果是LARGE_POOL_MIN_ALLOC 子节的整块数有助于避免碎片。任何请求分配小于LARGE_POOL_MIN_ALLOC 大块尺寸都将分配LARGE_POOL_MIN_ALLOC的大小。一般来说,你会看到使用大池的时候相对共享池来说要用到更多的内存。通常要解决大池中的ORA-4031错误必须增加 LARGE_POOL_SIZE 的大小。

5. ORA-04031 和共享池刷新

有一些技巧会提高游标的共享能力,从而共享池碎片和ORA-4031都会减少。最佳途径是调整应用使用绑定变量。另外在应用不能调整的时候考虑使用CURSOR_SHARING参数和FORCE不同的值来做到 (要注意那会导致执行计划改变,所以建议先对应用进行测试)。当上述技巧都不可以用的时候,并且碎片问题在系统中比较严重,刷新共享持可能有助于减轻碎片问题。但是,必须加以如下考虑:
刷新将导致所有没被使用的游标从共享池删除。这样,在共享池刷新之后,大多数SQL和PL/SQL游标必须被硬解析。这将提高CPU的使用,也会加大Latch的活动。
当应用程序没有使用绑定变量并被许多用户进行类似的操作的时候(如在OLTP系统中) ,刷新之后很快还会出现碎片问题。所以共享池对设计糟糕的应用程序来说不是解决办法。
对一个大的共享池刷新可能会导致系统挂起,尤其是实例繁忙的时候,推荐在非高峰的时候刷新
6. ORA-04031错误的高级分析
如果前述的这些技术内容都不能解决ORA-04031 错误,可能需要额外的跟踪信息来得到问题发生的共享池的快照。

调整init.ora参数添加如下的事件得到该问题的跟踪信息:

event = "4031 trace name errorstack level 3"
event = "4031 trace name HEAPDUMP level 3"
如果问题可重现,该事件可设定在会话层,在执行问题语句之前使用如下的语句: SQL> alter session set events '4031 trace name errorstack level 3';
SQL> alter session set events '4031 trace name HEAPDUMP level 3';
把这个跟踪文件发给Oracle支持人员进行排错。
重要标注: Oracle 9.2.0.5 和Oracle 10g 版本中,每次在发生ORA-4031 错误的时候会自动创建一个跟踪文件,可以在user_dump_dest 目录中找到。如果你的系统是上述的版本,你不需要再进行前面描述中的步骤

posted @ 2006-08-02 16:02 五指魅力 阅读(168) | 评论 (0)编辑 收藏

 

值范围: 0 - PARALLEL_MAX_SERVERS。

默认值: 0

log_archive_dest_state_3:

说明: 指定相应的归档日志目标参数 (仅 LOG_ARCHIVE_DEST_3) 的可用性状态。如果启用,

日志目标将被归档。如果延迟, 该目标将被排除在归档操作之外直至重新启用。

值范围: ENABLE | DEFER

默认值: ENABLE

log_archive_dest_state_4:

说明: 指定相应的归档日志目标参数 (仅 LOG_ARCHIVE_DEST_4) 的可用性状态。如果启用,

日志目标将被归档。如果延迟, 该目标将被排除在归档操作之外直至重新启用。

值范围: ENABLE | DEFER

默认值: ENABLE

log_archive_dest_state_5:

说明: 指定相应的归档日志目标参数 (仅 LOG_ARCHIVE_DEST_5) 的可用性状态。如果启用,

日志目标将被归档。如果延迟, 该目标将被排除在归档操作之外直至重新启用。

值范围: ENABLE | DEFER

默认值: ENABLE

log_archive_dest_state_6:

说明: 标识特定日志归档目标的最近的用户定义状态。

值范围: ENABLE--如果目标属性有效, 则启用归档日志目标; DEFER--即使目标属性有效, 也要延迟处理归档日志目标; 或者是 ALTERNATE--延迟处理归档日志目标, 直到另一个目标的失败导致自动启用了此目标 (前提是备用目标的属性必须有效)。

log_archive_dest_state_7:

说明: 标识特定日志归档目标的最近的用户定义状态。

值范围: ENABLE--如果目标属性有效, 则启用归档日志目标; DEFER--即使目标属性有效, 也要延迟处理归档日志目标; 或者是 ALTERNATE--延迟处理归档日志目标, 直到另一个目标的失败导致自动启用了此目标 (前提是备用目标的属性必须有效)。

log_archive_dest_state_8:

说明: 标识特定日志归档目标的最近的用户定义状态。

值范围: ENABLE--如果目标属性有效, 则启用归档日志目标; DEFER--即使目标属性有效, 也要延迟处理归档日志目标; 或者是 ALTERNATE--延迟处理归档日志目标, 直到另一个目标的失败导致自动启用了此目标 (前提是备用目标的属性必须有效)。

log_archive_dest_state_9:

说明: 标识特定日志归档目标的最近的用户定义状态。

值范围: ENABLE--如果目标属性有效, 则启用归档日志目标; DEFER--即使目标属性有效, 也要延迟处理归档日志目标; 或者是 ALTERNATE--延迟处理归档日志目标, 直到另一个目标的失败导致自动启用了此目标 (前提是备用目标的属性必须有效)。

Log_archive_start:

说明: n只在数据库处于“归档日志”模式的情况下适用。它指定重做日志是自动还是手动复制。建议值是 TRUE, 即执行自动归档;

否则就需要手动干预, 使用

ALTER SYSTEM ARCHIVE LOG ... 命令来阻止例程挂起。

值范围: TRUE | FALSE

默认值: FALSE

log_archive_duplex_dest:

说明: 指定 LOG_ARCHIVE_DEST 外的另一个归档目标。在 Oracle8i 企业版中, 该参数被

LOG_ARCHIVE_DEST_n 代替。

值范围: 一个 NULL 字符串, 或者任何有效的路径或设备名, 原始分区除外。

默认值: NULL

log_archive_format:

说明: LOG_ARCHIVE_FORMAT 只在数据库处于“归档日志”模式的情况下有用。文本字符串与变量 %s (日志序列号)

和 %t (线程号) 结合使用, 用于指定各归档重做日志文件的唯一文件名。该字符串被附加到

LOG_ARCHIVE_DEST 参数。

值范围: 任何有效的文件名。

默认值: 根据操作系统而定

log_archive_max_processes:

说明: 指定要求的 ARCH 进程的数量。如果 LOG_ARCHIVE_START = TRUE, 该值可以在例程启动时被评估;

也可以在通过 SQL*Plus 或 SQL 语法调用 ARCH 进程时评估。

值范围: 1 - 10 (包括端点) 的任何整数。

默认值: 1

log_archive_dest_2:

说明: 五个本地 (指定 LOCATION) 或远程 (指定 SERVICE) 目标位置中的第二个,

归档重做日志文件可以在这些目标位置上被复制。该参数只在企业版 oracle8i 数据库或更高版本的数据库中有效。

值范围: 语法为 (null_string | SERVICE=tnsnames-service | LOCATION=directory-spec)[MANDATORY | OPTIONAL][REOPEN=integer]

默认值: NULL

log_archive_min_succeed_dest:

说明: 定义在可以覆盖日志文件前必须将其复制到的目标的最小数量。该值应大于或等于 LOG_ARCHIVE_DEST_n 中

MANDATORY 目标的数量。

值范围: 1 - 5 (如果与 LOG_ARCHIVE_DEST 和 LOG_ARCHIVE_DUPLEX_DEST 共同使用, 则限制在 1-2)。

默认值: 1

log_archive_trace:

说明: 控制归档日志进程生成的输出。此进程可以通过下列方式启动

ARCn 后台进程 (在输出日志中指定为 ARCn)

明确的会话调用的前台进程 (在输出日志中指定为 ARCH) 或

“受管备用数据库”的远程文件服务器 (RFS) 进程。

值范围:

0: 禁用归档日志跟踪 (这是默认设置)

1: 重做日志文件的追踪归档

2: 每个归档日志目标的追踪归档状态

4: 追踪归档操作阶段

8: 追踪归档日志目标活动

16: 追踪详细的归档日志目标活动

32: 追踪归档日志目标参数修改

64: 追踪 ARCn 进程状态活动

默认值: 0

log_archive_dest_10:

log_archive_dest_3:

说明: 五个本地 (指定 LOCATION) 或远程 (指定 SERVICE) 目标位置中的第三个,

归档重做日志文件可以在这些目标位置上被复制。该参数只在企业版 oracle8i 数据库或更高版本的数据库中有效。

值范围: 语法为 (null_string | SERVICE=tnsnames-service | LOCATION=directory-spec)[MANDATORY | OPTIONAL][REOPEN=integer]

默认值: NULL

log_archive_dest:

说明: 五个本地 (指定 LOCATION) 或远程 (指定 SERVICE) 目标位置中的第三个,

归档重做日志文件可以在这些目标位置上被复制。该参数只在企业版 oracle8i 数据库或更高版本的数据库中有效。

值范围: 语法为 (null_string | SERVICE=tnsnames-service | LOCATION=directory-spec)[MANDATORY | OPTIONAL][REOPEN=integer]

默认值: NULL

log_archive_dest_state_2:

说明: 指定相应的归档日志目标参数 (仅 LOG_ARCHIVE_DEST_2) 的可用性状态。如果启用,

日志目标将被归档。如果延迟, 该目标将被排除在归档操作之外直至重新启用。

值范围: ENABLE | DEFER

默认值: ENABLE

log_archive_dest_5:

说明: 五个本地 (指定 LOCATION) 或远程 (指定 SERVICE) 目标位置中的第五个,

归档重做日志文件可以在这些目标位置上被复制。该参数只在企业版 oracle8i 数据库或更高版本的数据库中有效。

值范围: 语法为 (null_string | SERVICE=tnsnames-service | LOCATION=directory-spec)[MANDATORY | OPTIONAL][REOPEN=integer]

默认值: NULL

log_archive_dest_6:

log_archive_dest_1:

log_archive_dest_8:

log_archive_dest_9:

log_archive_dest_state_1:

说明: 指定相应的归档日志目标参数 (仅 LOG_ARCHIVE_DEST_1) 的可用性状态。如果启用,

日志目标将被归档。如果延迟, 该目标将被排除在归档操作之外直至重新启用。

值范围: ENABLE | DEFER

默认值: ENABLE

log_archive_dest_state_10

说明: 指定归档日志的目标。

值范围: 本地文件系统位置 (磁盘位置) 或通过 Oracle Net 服务名 (tns 服务) 指定的远程归档位置。:

log_archive_dest_4:

说明: 五个本地 (指定 LOCATION) 或远程 (指定 SERVICE) 目标位置中的第四个,

归档重做日志文件可以在这些目标位置上被复制。该参数只在企业版 oracle8i 数据库或更高版本的数据库中有效。

值范围: 语法为 (null_string | SERVICE=tnsnames-service | LOCATION=directory-spec)[MANDATORY | OPTIONAL][REOPEN=integer]

默认值: NULL

create_bitmap_area_size:

说明: CREATE_BITMAP_AREA_SIZE 指定为创建位图索引而分配的内存量。

值范围: 根据操作系统而定。

默认值: 8 MB

pga_aggregate_target:

说明: 指定连接到例程的所有服务器进程的目标 PGA 总内存。请在启用自动设置工作区之前将此参数设置为一个正数。这部分内存不驻留在

SGA 中。数据库将此参数值用作它所使用的目标 PGA 内存量。设置此参数时, 要将 SGA 从可用于 Oracle

例程的系统内存总量中减去。然后可将剩余内存量分配给 pga_aggregate_target。

值范围: 整数加字母 K, M 或 G, 以将此限值指定为千字节, 兆字节或千兆字节。最小值为 10M, 最大值为 4000G

默认值: "未指定", 表示完全禁用对工作区的自动优化。

Sort_area_size:

说明: SORT_AREA_SIZE 以字节为单位, 指定排序所使用的最大内存量。排序完成后, 各行将返回,

并且内存将释放。增大该值可以提高大型排序的效率。如果超过了该内存量, 将使用临时磁盘段。

值范围: 相当于 6 个数据库块的值 (最小值) 到操作系统确定的值 (最大值)。

默认值: 根据操作系统而定

sort_area_retained_size

说明: 以字节为单位, 指定在一个排序运行完毕后保留的用户全局区 (UGA) 内存量的最大值。最后一行从排序空间中被提取后,

内存将被释放回 UGA, 而不是释放给操作系统

值范围: 从相当于两个数据库块的值到 SORT_AREA_SIZE 的值。

默认值: SORT_AREA_SIZE 的值

bitmap_merge_area_size:

说明: 指定合并从对索引的某一范围进行扫描而检索得到的位图要使用的内存量。

值范围: 根据系统而定。

默认值: 1MB

workarea_size_policy:

说明: 指定调整工作区大小的策略。此参数控制优化工作区时所处的模式。

值范围: AUTO, MANUAL。

默认值: 如果设置了 PGA_AGGREGATE_TARGET, 则为 AUTO; 否则为 MANUAL。

Hash_area_size:

说明: 与并行执行操作和 DML 或 DDL 语句相关。它以字节为单位, 指定要用于散列联接的最大内存量。有关详细信息,

请参阅手册 Oracle8i Concepts。

值范围: 0 到根据操作系统而定的值。

默认值: 派生:2 * SORT_AREA_SIZE 参数值

db_create_online_log_dest_4:

说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。

值范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其中创建文件的许可。

db_create_online_log_dest_3:

说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。

值范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其中创建文件的许可。

Db_files:

说明: 可为该数据库打开的数据文件的最大数量。

值范围: MAXDATAFILES - 根据操作系统而定。

默认值: 根据操作系统而定 (在 Solaris 系统上为 200)

db_create_online_log_dest_2:

说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。

值范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其中创建文件的许可。

db_create_online_log_dest_1:

说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。

值范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其中创建文件的许可。

Db_create_file_dest:

说明: 设置所创建的数据文件, 控制文件和联机日志的默认位置。

值范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其中创建文件的许可。

Control_files:

说明: 指定一个或多个控制文件名。Oracle 建议对于不同设备或 OS 文件镜象使用多个文件。

值范围: 1 - 8 文件名 (带路径名)。

默认值: 根据操作系统而定

db_create_online_log_dest_5:

说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。

值范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其中创建文件的许可。

Large_pool_size:

说明 : 指定大型池的分配堆的大小, 它可被共享服务器用作会话内存, 用作并行执行的消息缓冲区以及用作 RMAN

备份和恢复的磁盘 I/O 缓冲区。

值范围: 600K (最小值); >= 20000M (最大值是根据操作系统而定的)。

默认值 : 0, 除非配置了并行执行或 DBWR_IO_SLAVES

shared_pool_size:

说明: 以字节为单位, 指定共享池的大小。共享池包含如: 共享游标, 存储的过程,

控制结构和并行执行消息缓冲区等对象。较大的值能改善多用户系统的性能。

值范围:300 KB - 根据操作系统而定。

默认值: 如果是 64 位操作系统, 值为 64MB; 其他情况下, 值为 16MB。

Java_pool_size:

说明: 以字节为单位, 指定 Java 存储池的大小, 它用于存储 Java 的方法和类定义在共享内存中的表示法,

以及在调用结束时移植到 Java 会话空间的 Java 对象。有关详细信息, 请参阅 Oracle8i Java

Developer's Guide。

值范围: 根据操作系统而定。

默认值: 根据操作系统而定

shared_pool_reserved_size:

说明: 指定要为较大连续共享内存请求而保留的空间,

以避免由碎片引起的性能下降。该池的大小应符合这样的条件:能存储为防止对象从共享池刷新而普遍要求的所有大型过程和程序包。

值范围: SHARED_POOL_RESERVED_MIN_ALLOC 到

SHARED_POOL_SIZE 的一半 (字节)。

默认值: SHARED_POOL_SIZE 值的 5%

cursor_sharing:

说明: 控制可以终止共享相同的共享游标的 SQL 语句类型。

值范围:

强制: 强制表达方式不同但语句意思相同的语句共享一个游标。

EXACT: 只令完全相同的 SQL 语句共享一个游标。

默认值: EXACT

open_cursors:

说明: 指定一个会话一次可以打开的游标 (环境区域) 的最大数量, 并且限制 PL/SQL 使用的 PL/SQL

游标高速缓存的大小, 以避免用户再次执行语句时重新进行语法分析。请将该值设置得足够高,

这样才能防止应用程序耗尽打开的游标。

值范围: 1 - 操作系统限制值。

默认值: 64

serial_reuse:

说明: 指定何种类型的 SQL 游标应利用串行可重用内存功能。如果 CURSOR_SPACE_FOR_TIME = TRUE,

那么 SERIAL_REUSE 值将被忽略, 当作被设置为

DISABLE 或 NULL 的情况处理。

值范围: DISABLE | SELECT | DML | PLSQL | ALL | NULL

默认值: NULL

session_cached_cursors:

说明: 指定要高速缓存的会话游标的数量。对同一 SQL 语句进行多次语法分析后,

它的会话游标将被移到该会话的游标高速缓存中。这样可以缩短语法分析的时间, 因为游标被高速缓存, 无需被重新打开。

值范围: 0 到根据操作系统而定的值。

默认值: 0

cursor_space_for_time:

说明: 在一个游标引用共享 SQL 区时, 确定将 SQL 区保留在共享池中还是从中按过期作废处理。

值范围: TRUE | FALSE

默认值: FALSE (过期作废)

rollback_segments:

说明: 指定要在例程启动过程中获取的一个或多个回退段, 即使其数量超过了 TRANSACTIONS /

TRANSACTIONS_PER_ROLLBACK_SEGMENT 的值。公式为 ROLLBACK_SEGMENTS =

(rbseg_name [, rbseg_name] ...)

值范围:除 SYSTEM 外, DBA_ROLLBACK_SEGS 中列出的任何回退段。

默认值: NULL (默认情况下使用公用回退段)

undo_suppress_errors:

说明: 允许用户在 SMU 模式下尝试执行 RBU 操作 (如

ALTER ROLLBACK SEGMENT ONLINE) 时忽略错误。这样能让用户在将所有应用程序和脚本转换到 SMU

模式之前即可使用 SMU 功能。

值范围: True 或 False

默认值: False。

Max_rollback_segments:

说明: 指定 SGA 中高速缓存的回退段的最大大小。该数值指定一个例程中可同时保持联机状态 (即状态为 INUSE)

的回退段的最大数量。

值范围: 2 -65535

默认值: 最大值 (30, TRANSACTIONS/TRANSACTIONS_PER_ROLLBACK_SEGMENT)

undo_retention:

说明: UNDO_RETENTION

参数用来指定要在数据库中保留的已提交的撤消信息总量。可在例程启动时设置该参数值。可以计算满足撤消保留要求所需的撤消空间量:

UndoSpace = RD * UPS, 其中 UndoSpace 以撤消块数来表示, RD 用以秒为单位的

UNDO_RETENTION 来表示, UPS 以每秒撤消块数来表示。

值范围: 所允许的最大值为 (2 ** 32) 秒。

默认值: 30 秒。

Transactions_per_rollback_segment:

说明: 指定每个回退段允许的并行事务处理的数量。启动时获取的回退段的最小数量为 TRANSACTIONS

除以该参数值的结果。如果在参数 ROLLBACK_SEGMENTS 中命名了其他回退段, 就可以获取这些回退段。

值范围: 1 - 根据操作系统而定。

默认值: 5

undo_management:

说明: 指定系统应使用哪种撤消空间管理模式。如果设置为 AUTO, 例程将以 SMU 模式启动。否则将以 RBU 模式启动。在

RBU 模式下, 撤消空间会象回退段一样在外部分配。在 SMU 模式下, 撤消空间会象撤消表空间一样在外部分配。

值范围: AUTO 或 MANUAL

默认值: 如果启动第一个例程时忽略了 UNDO_MANAGEMENT 参数, 则将使用默认值 MANUAL, 并且例程将以 RBU 模式启动。如果这不是第一个例程, 则将按其他现有例程启动时使用的撤消模式来启动该例程。

Undo_tablespace:

说明: 撤消表空间仅用于存储撤消信息。UNDO_TABLESPACE 仅允许在系统管理撤消 (SMU)

模式下使用。例程将使用指定的撤消表空间, <undoname>。如果该表空间不存在, 或不是撤消表空间,

或正在由另一例程使用, 则例程 STARTUP 将失败。

默认值: 每个数据库都包含 0 个或更多的撤消表空间。在 SMU 模式下, 将为每个 ORACLE 例程分配一个 (且仅限一个) 撤消表空间。

Instance_name

说明: 在多个例程使用相同服务名的情况下, 用来唯一地标识一个数据库例程。INSTANCE_NAME 不应与 SID 混淆,

它实际上是对在一台主机上共享内存的各个例程的唯一标识。

值范围: 任何字母数字字符

默认值: 数据库 SID

service_names:

说明 : 为 Oracle Net 监听程序用来识别一个服务 (如: 复制环境中的一个特定数据库)

的例程指定服务名。如果该服务没有域, 将附加 DB_DOMAIN 参数。

语法 : SERVICE_NAMES = name1.domain, name2.domain

默认值 : DB_NAME.DB_DOMAIN (如果已定义)

local_listener:

说明 : 一个 Oracle Net 地址列表, 用于标识 Oracle Net

监听程序所在的同一台计算机上的数据库例程。所有例程和调度程序都在该监听程序上注册, 以便启用客户机连接。该参数覆盖在

8.1 版本中废弃的 MTS_LISTENER_ADDRESS 和 MTS_MULTIPLE_LISTENERS 参数。

值范围: 一个有效的 Oracle Net 地址列表。

默认值: (ADDRESS_LIST=(Address=(Protocol=TCP)(Host=localhost)(Port=1521)) (Address=(Protocol=IPC)(Key=DBname)))

license_sessions_warning:

说明: 指定对并行用户会话数量的警告限制。达到该限制后, 其他用户仍然可以连接, 但一条消息将被写入 ALERT 文件。具有

RESTRICTED SESSION 权限的用户将收到一条警告消息, 表明系统已接近最大容量。

值范围: 0 - LICENSE_MAX_SESSIONS

默认值: 0

license_max_sessions:

说明: 指定允许同时进行的并行用户会话的最大数量。达到该限制后, 只有具有 RESTRICTED SESSION

权限的用户才能连接到服务器。所有其他用户都会收到一条警告消息, 表明已达到系统最大容量的限制。

值范围: 0 - 会话许可的数量。

默认值: 0

license_max_users:

说明:

指定您可在该数据库中创建的用户的最大数量。并行会话使用许可和用户使用许可不应被同时启用。LICENSE_MAX_SESSIONS

或 LICENSE_MAX_USERS 或这两者的值应为零。

值范围: 0 - 用户许可的数量。

默认值: 0

db_block_checksum:

说明: DBWn, ARCH 和 SQL*loader 是否为每一个数据块读或写计算或校验块的校验和。

值范围: TRUE | FALSE

默认值: FALSE

shadow_core_dump:

说明: 一个针对 UNIX 的参数, 用于指定是否将 SGA 信息转储到一个生成的核心文件中。如果设置为 FULL, SGA

将被包括在核心转储中。如果设置为 PARTIAL, SGA 将不被转储。

值范围: FULL | PARTIAL

默认值: FULL

db_block_checking:

说明: 用于控制是否检查事务处理管理的块有无损坏。

值范围: TRUE | FALSE

默认值: FALSE

background_core_dump:

说明: 是否将 SGA 信息转储到一个生成的核心文件中 (用于 UNIX)。

值范围: FULL | PARTIAL

默认值: FULL

event:

说明: 由 Oracle 技术支持人员使用, 以调试系统。一般情况下, 不应变更该值。

值范围:不可用。

默认值: 无

user_dump_dest:

说明: 为服务器将以一个用户进程身份在其中写入调试跟踪文件的目录指定路径名。例如, 该目录可这样设置: NT 操作系统上的 C:/

ORACLE/UTRC; UNIX 操作系统上的 /oracle/utrc; 或 VMS 操作系统上的

DISK$UR3:[ORACLE.UTRC]。

值范围: 一个有效的本地路径名, 目录或磁盘。

默认值: 根据操作系统而定

timed_statistics:

说明: 收集操作系统的计时信息, 这些信息可被用来优化数据库和 SQL 语句。要防止因从操作系统请求时间而引起的开销,

请将该值设置为零。将该值设置为 TRUE 对于查看长时间操作的进度也很有用。

值范围: TRUE | FALSE

默认值: FALSE

timed_os_statistics:

说明 : 由系统管理员使用, 以收集操作系统统计信息。为了有效地使用资源, 请只在需要时才设置该值。对于专用服务器,

会在用户连接, 断开连接以及弹出调用 (如果超出了指定的时间限制) 的情况下收集操作系统统计信息。对于共享服务器,

将为推入或弹出的调用收集统计信息。

值范围: 以秒为单位的时间。

默认值 : 0 (操作系统统计信息不被刷新)

core_dump_dest:

说明: 指定核心转储位置的目录名 (用于 UNIX)。

值范围: 任何有效的目录名。

默认值: ORACLE_HOME/dbs

oracle_trace_collection_name:

说明: 指定 Oracle Trace 收集名, 并在输出文件名中使用 (收集定义文件 .cdf 和数据收集文件

.dat)。如果该参数不为空, 且 ORACLE_TRACE_ENABLE = TRUE, 就会启动一个默认的

Oracle Trace 收集, 直到该值再次设置为 NULL。

值范围: 一个有效的收集名, 最长可为 16 个字符 (使用 8 个字符文件名的平台除外)。

默认值: NULL

oracle_trace_collection_path:

说明: 指定 Oracle Trace 收集定义文件 (.cdf) 和数据收集文件 (.dat) 所在的目录路径名。

值范围: 完整的目录路径名。

默认值: 根据操作系统而定 (通常是 ORACLE_HOME/otrace/admin/cdf)

background_dump_dest:

说明: 指定在 Oracle 操作过程中为后台进程 (LGWR, DBW n 等等) 写入跟踪文件的路径名

(目录或磁盘)。它还定义记录着重要事件和消息的数据库预警文件的位置。

值范围: 任何有效的目录名。

默认值: ORACLE_HOME/rdbms/log (根据操作系统而定)

oracle_trace_enable:

说明: 要为服务器启用 Oracle Trace 收集, 请将该值设置为 TRUE。如果设置为 TRUE, 该服务器就可以使用

Oracle Trace。要启动一个收集过程, 请为 ORACLE_TRACE_COLLECTION_NAME

指定一个非空值; 或者使用 Oracle Trace Manager 来启动一个收集。

值范围: TRUE | FALSE

默认值: FALSE

oracle_trace_collection_size:

说明: 以字节为单位, 指定 Oracle Trace 收集文件的最大大小。一旦该收集文件的大小达到这个最大值,

收集就会被禁用。如果值范围指定为零, 就表示没有大小限制。

值范围: 0 -4294967295

默认值: 5242880

oracle_trace_facility_path:

说明: 指定 Oracle TRACE 工具的定义文件 (.fdf) 所在的目录路径名。

值范围: 完整的目录路径名。

默认值: ORACLE_HOME/otrace/admin/fdf/ (根据操作系统而定)

sql_trace:

说明: 禁用或启用 SQL 跟踪设备。如果设置为 TRUE, 将收集优化信息, 这些信息对改善性能很有用。由于使用 SQL

跟踪设备将引发系统开销, 只应在需要优化信息的情况下使用 TRUE。

值范围: TRUE | FALSE

默认值: FALSE

oracle_trace_facility_name:

说明: 指定 Oracle Trace 产品定义文件名 (.fdf 文件名)。该文件包含可为使用 Oracle Trace

数据收集 API 的产品收集的所有事件和数据项的定义信息。Oracle 建议使用默认的文件 ORCLED.FDF。

值范围: 一个有效的设备名, 最长可有 16 个字符

默认值: oracled

max_dump_file_size:

说明: 指定每个跟踪文件的最大大小。如果您担心跟踪文件会占用太多空间, 可更改该限制。如果转储文件可以达到操作系统允许的最大大小,

请将该值指定为“无限制”。

值范围: 0 - 无限制 (可以用 'K' 或 'M' 为单位)

默认值: 10000 块

resource_limit:

说明: 确定是否在数据库概要文件中实行资源限制。如果设置为 FALSE, 将禁用资源限制。如果值为 TRUE, 即启用资源限制。

值范围: TRUE | FALSE

默认值: FALSE

resource_manager_plan:

说明: 如果指定该值, 资源管理器将激活计划和例程的所有子项 (子计划, 指令和使用者组)。如果不指定, 资源管理器将被禁用,

但使用

ALTER SYSTEM 命令还可以启用。

值范围: 任何有效的字符串。

默认值: NULL

sessions:

说明: 指定用户会话和系统会话的总量。默认数量大于 PROCESSES, 以允许递归会话。

值范围: 任何整数值。

默认值: 派生 (1.1 * PROCESSES + 5)

java_soft_sessionspace_limit:

说明: 以字节为单位, 指定在 Java 会话中使用的 Java 内存 的 '软限制'。如果用户的会话持续时间 Java

状态使用过多的内存, Oracle 将生成一个警告并向跟踪文件写入一则消息。

值范围: 0 - 4GB

默认值: 0

cpu_count:

说明: Oracle 可用的 CPU 的数目 (用于计算其他参数值)。请勿更改该值。

值范围: 0 - 无限制。

默认值: 由 Oracle 自动设置

java_max_sessionspace_size:

说明: 以字节为单位, 指定可供在服务器中运行的 Java 程序所使用的最大内存量。它用于存储每次数据库调用的 Java

状态。如果用户的会话持续时间 Java 状态超过了该值, 则该会话会由于内存不足而终止。

值范围: 根据操作系统而定。

默认值: 0

processes:

说明: 指定可同时连接到一个 Oracle Server 上的操作系统用户进程的最大数量。该值应允许执行所有后台进程, 如:

作业队列 (SNP) 进程和并行执行 (Pnnn) 进程。

值范围: 6 到根据操作系统而定的一个值。

默认值: 由 PARALLEL_MAX_SERVERS 确定

control_file_record_keep_time:

说明: 控制文件中可重新使用部分中的记录必须保留的最短时间 (天数)。

值范围: 0 -365

默认值: 7

log_checkpoint_timeout:

说明: 指定距下一个检查点出现的最大时间间隔 (秒数)。将该时间值指定为 0,

将禁用以时间为基础的检查点。较低的值可以缩短例程恢复的时间, 但可能导致磁盘操作过量。

值范围: 0 - 无限制。

默认值: Oracle8i:900 秒。企业版: 1800 秒

recovery_parallelism:

说明: 指定参与例程或介质恢复的进程的数量。如果值为 0 或 1, 就表明恢复将由一个进程以串行方式执行。

值范围: 根据操作系统而定 (不能超过 PARALLEL_MAX_SERVERS)。

默认值: 根据操作系统而定

fast_start_mttr_target:

说明: 指定从单个数据库例程崩溃中恢复所需的时间 (估计秒数)。FAST_START_MTTR_TARGET

将在内部被转换为一组参数, 用于修改数据库的操作, 从而将它的恢复时间控制在总 "恢复平均时间 (MTTR)"

中的一定范围之内。只有具有 "快速启动故障恢复" 功能的版本才支持此参数。

值范围: [0, 3600]。它将计算数据缓冲区高速缓存条目数之上, 且大于最大日志中的块数的限值。

默认值: 0

log_checkpoints_to_alert:

说明: 指定将检查点信息记录到预警文件中。该参数对于确定检查点是否按所需频率出现很有用。

值范围: TRUE | FALSE

默认值: FALSE

fast_start_io_target:

说明: 指定在系统崩溃或例程恢复期间需要的 I/O 数量。该值比 DB_BLOCK_MAX_DIRTY_TARGET

对恢复过程的控制更加精确。

值范围: 0 (禁用 I/O 恢复限制) 或 1000, 到高速缓存中的所有缓冲区数。

默认值: 高速缓存中的所有缓冲区数

log_checkpoint_interval:

说明: 指定在出现检查点之前, 必须写入重做日志文件中的 OS 块 (而不是数据库块) 的数量。无论该值如何,

在切换日志时都会出现检查点。较低的值可以缩短例程恢复所需的时间, 但可能导致磁盘操作过量。

值范围: 无限制 (指定 0 即可禁用该参数)。

默认值: 根据操作系统而定

log_buffer:

说明: 以字节为单位, 指定在 LGWR 将重做日志条目写入重做日志文件之前,

用于缓存这些条目的内存量。重做条目保留对数据库块所作更改的一份记录。如果该值大于 65536, 就能减少重做日志文件 I/

O, 特别是在有长时间事务处理或大量事务处理的系统上。

值范围: 根据操作系统而定。

默认值: 最大值为 500K 或 128K * CPU_COUNT, 两者之中取较大者

read_only_open_delayed:

说明: 用于加速某些操作, 如: 启动一个很大的数据库而其中大多数数据存储在只读的表空间中。如果设置为 TRUE,

从表空间中读取数据时, 将首先访问只读表空间中的数据文件。有关可能产生的副作用, 请参阅 Server Reference

manual。

值范围: TRUE | FALSE

默认值: FALSE

parallel_instance_group

说明 : 一个集群数据库参数, 标识用来大量产生并行执行从属的并行例程组。并行操作只对在其 INSTANCE_GROUPS

参数中指定一个匹配组的例程大量产生并行执行从属。

值范围: 一个代表组名的字符串。

默认值 : 由所有当前活动例程构成的组

parallel_server:

说明 : 将 PARALLEL_SERVER 设置为 TRUE, 可以启用集群数据库选项。

值范围: TRUE | FALSE

默认值 : FALSE

parallel_server_instances:

说明: 当前已配置的例程的数量。它用于确定 SGA 结构的大小, 该结构由已配置的例程数量来确定。正确设置该参数将改善 SGA

内存使用情况。 有几个参数是用该数量计算得到的。

值范围: 任何非零值。

默认值: 1

thread:

说明 : 一个集群数据库参数, 用于为每个例程指定一个唯一的重做线程号。在例程的重做线程被禁用的情况下,

该例程无法启动。如果该值为零, 就表示有一个已启用的公用线程可供选择。

值范围: 0 - 已启用线程的最大数量。

默认值 : 0

gc_files_to_locks:

说明 : 一个集群数据库参数, 用于控制将并行高速缓存管理 (PCM) 锁映射到数据文件。

语法 : GC_FILES_TO_LOCKS = 'file_list=lock_count[!blocks][R][EACH][:...]'

默认值 : NULL

instance_number:

说明 : 一个集群数据库参数, 用于指定一个唯一编号, 以便将例程映射到一个使用 FREELIST GROUPS

存储参数创建的数据库对象所拥有的空闲列表中。在

ALTER TABLE ... 的 INSTANCE 子句中使用该值。ALLOCATE EXTENT

语句可以为该例程动态分配区。

值范围: 1 到 MAX_INSTANCES (创建数据库时指定)。

默认值 : 最小的可用编号 (取决于例程启动的次序以及为其他例程指定的 INSTANCE_NUMBER 值)

active_instance_count:

说明: 允许在由两个例程构成的集簇中指定一个例程作为主例程, 另一个例程为次例程。 如果集簇中包含的例程多于两个,

该参数没有作用。

值范围: 1 或 >= 集簇中的例程数。

默认值: 无

lock_name_space:

说明: 指定分布式锁管理器 (DLM) 用来生成锁名称的命名空间。如果同一个簇上存在一个同名的备用数据库或克隆数据库,

最好设置该值。

值范围: 最多有 8 个字符, 不允许使用特殊字符

默认值: NULL

max_commit_propagation_delay:

说明 : 一个集群数据库参数, 用于指定一个例程的 SGA 中所包含的系统更改编号 (SCN) 被 LGWR 刷新之前,

允许保留的最长时间 (以 1/100 秒为单位)。这是一个极少需要改动的性能参数, 因为 SCN

可能不会以时间为依据进行刷新。

值范围: 0 - 90000

默认值 : 700

instance_groups:

说明 : 一个集群数据库参数, 可以使用以逗号分隔的列表,

把当前例程指定给特定组。为并行操作分配查询从属进程时要用到例程组。

值范围: 一系列组名, 由逗号分隔。

默认值 : NULL

buffer_pool_recycle:

说明: 循环池大小 (从 DB_BLOCK_BUFFERS 分配)。目的是使用对象后将其清除, 以便重复使用内存

值范围: 一个特定的字符串值 (例如: buffers:50, lru_latches:1)。

默认值: 无

use_indirect_data_buffers:

说明: 控制可支持超过 4GB 物理内存的 32 位平台对扩展缓冲区高速缓存机制的使用情况。在其他平台上, 该参数将被忽略。

值范围: TRUE | FALSE

默认值: FALSE

disk_asynch_io:

说明: 控制数据文件, 控制文件和日志文件的 I/O 是否异步 (即在表扫描过程中进程是否重叠 I/O 和CPU

请求)。只有在您的平台支持磁盘异步 I/O的情况下才能更改该参数。

值范围: TRUE | FALSE

默认值: TRUE

dbwr_io_slaves:

说明: DBW0 进程使用的 I/O 从属的数量。DBW0 进程及其从属始终写入磁盘。

值范围: 0 - 根据操作系统而定。

默认值: 0

db_8k_cache_size:

说明: 指定高速缓存的大小为 8K 缓冲区。只有在 db_block_size 的值不是 8K 时, 才能设置此参数。

值范围: 0M 或至少 16M。块大小的值还要满足特定平台的具体要求。

默认值: 0M

db_4k_cache_size:

说明: 指定高速缓存的大小为 4K 缓冲区。只有在 db_block_size 的值不是 4K 时, 才能设置此参数。

值范围: 0M 或至少 16M。块大小的值还要满足特定平台的具体要求。

默认值: 0M

db_block_buffers:

说明: 缓冲区高速缓存中 Oracle 块的数量。该参数会显著影响一个例程的 SGA 总大小。

值范围: 4 - 根据操作系统而定。

默认值: 32768

db_32k_cache_size:

说明: 指定高速缓存的大小为 32K 缓冲区。只有在 db_block_size 的值不是 32K 时, 才能设置此参数。

值范围: 0M 或至少 16M。块大小的值还要满足特定平台的具体要求。

默认值: 0M

db_block_size:

说明: 一个 Oracle 数据库块的大小 (字节)。该值在创建数据库时设置, 而且此后无法更改。

值范围: 1024 - 65536 (根据操作系统而定)。

默认值: 2048 (根据操作系统而定)

db_cache_advice:

说明: 为预计各种容量的高速缓存的行为而启用和禁用统计信息收集。在 V$DB_CACHE_ADVICE 视图中收集信息。

值范围: OFF-- 关闭咨询, 并且不为咨询分配内存; ON-- 打开咨询 (即: 将带来 CPU 和内存开销); READY-- 关闭咨询, 但保留分配给咨询的内存

默认值: OFF

db_2k_cache_size:

说明: 指定高速缓存的大小为 2K 缓冲区。只有在 db_block_size 的值不是 2K 时, 才能设置此参数。

值范围: 0M 或至少 16M。块大小的值还要满足特定平台的具体要求。

默认值: 0M

db_cache_size:

说明: 为高速缓存指定标准块大小的缓冲区。

值范围: 至少 16M。

默认值: 48M

db_16k_cache_size:

说明: 指定高速缓存的大小为 16K 缓冲区。只有在 db_block_size 的值不是 16K 时, 才能设置此参数。

值范围: 0M 或至少 16M。块大小的值还要满足特定平台的具体要求。

默认值: 0M

db_file_multiblock_read_count:

说明: 在涉及一个完全连续扫描的一次 I/O 操作过程中读取的块的最大数量。

值范围: 根据操作系统而定。

默认值: 8

db_keep_cache_size:

说明: 指定 KEEP 缓冲池中的缓冲区数。KEEP 缓冲池中的缓冲区大小是主要块大小 (即 db_block_size

定义的块大小)。

值范围: 0 或至少一个区组大小 (更小的值将自动舍入到区组大小)。

默认值: 0M

db_recycle_cache_size:

说明: 指定 RECYCLE 缓冲池的大小。RECYCLE 池中的缓冲区大小是主要块大小。

值范围: 0 或至少一个区组大小 (更小的值将自动舍入到区组大小)。

默认值: 0M

db_writer_processes:

说明: 一个例程的数据库写进程的初始数量。如果使用了 DBWR_IO_SLAVES, 则只能使用一个数据库写进程。

值范围: 1 - 10

默认值: 1

buffer_pool_keep:

说明: 保留池大小 (从 DB_BLOCK_BUFFERS 分配)。目的是将对象保留在内存中, 以减少 I/O。

值范围: 特定的字符串值 (例如: buffers:400, lru_latches:3)。

posted @ 2006-08-02 16:01 五指魅力 阅读(120) | 评论 (0)编辑 收藏

Blank_trimming:

说明: 如果值为TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据

值范围: TRUE | FALSE

默认值: FALSE

serializable:

说明: 确定查询是否获取表级的读取锁, 以防止在包含该查询的事务处理被提交之前更新任何对象读取。这种操作模式提供可重复的读取,

并确保在同一事务处理种对相同数据的两次查询看到的是相同的值。

值范围: TRUE | FALSE

默认值: FALSE

row_locking:

说明: 指定在表已更新或正在更新时是否获取行锁。如果设置为 ALWAYS, 只有在表被更新后才获取行锁。如果设置为 INTENT,

只有行锁将用于

SELECT

FOR

UPDATE, 但在更新时将获取表锁。

值范围: ALWAYS | DEFAULT | INTENT

默认值: ALWAYS

shared_servers

说明 : 指定在启动例程后, 要为共享服务器环境创建的服务器进程的数量。

值范围: 根据操作系统而定。

默认值 : 1

circuits:

说明 : 指定可用于入站和出站网络会话的虚拟电路总数。 该参数是构成某个例程的总 SGA 要求的若干参数之一。

默认值 : 派生: SESSIONS 参数的值 (如果正在使用共享服务器体系结构); 否则为 0。

Mts_multiple_listeners:

说明: 指定多个监听程序的地址是分别指定的, 还是用一个 ADDRESS_LIST 字符串指定。如果该值为 TRUE,

MTS_LISTENER_ADDRESS 参数可被指定为:

(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(PORT=5000)(HOST=zeus))

(ADDRESS=(PROTOCOL=decnet)(OBJECT=outa)(NODE=zeus))

此参数在 8.1.3 版中已废弃。

值范围: TRUE | FALSE

默认值: FALSE

mts_servers:

说明 : 指定在启动例程后, 要为共享服务器环境创建的服务器进程的数量。

值范围: 根据操作系统而定。

默认值 : 1

mts_service:

说明 : 一个共享服务器参数, 用于指定已在调度程序上注册,

用来建立数据库连接的唯一服务名。如果要在没有调度程序的情况下仍能连接到数据库, 请将该值设置为与例程名相同。此参数自

8.1.3 版起已废弃。

值范围: 根据操作系统而定。

默认值 :0

mts_sessions:

说明 : 指定允许的共享服务器体系结构用户会话的总数。设置此参数可为专用服务器保留一些用户会话。

值范围: 0 到 SESSIONS - 5

默认值 : 派生: MTS_CIRCUITS 和 SESSIONS - 5 两者中的较小值

shared_server_sessions:

说明 : 指定允许的共享服务器体系结构用户会话的总数。设置此参数可为专用服务器保留一些用户会话。

值范围: 0 到 SESSIONS - 5

默认值 : 派生: MTS_CIRCUITS 和 SESSIONS - 5 两者中的较小值

mts_max_dispatchers

说明 : 指定在一个共享服务器环境中可同时运行的调度程序进程的最大数量。

值范围: 根据操作系统而定。

默认值 : 如果已配置了调度程序, 则默认值为大于 5 的任何数目或配置的调度程序的数目

mts_max_servers:

说明 : 指定在一个共享服务器环境中可同时运行的共享服务器进程的最大数量。

值范围: 根据操作系统而定。

默认值 : 20

dispatchers:

说明 : 为设置使用共享服务器的共享环境而设置调度程序的数量和类型。可以为该参数指定几个选项。有关详细信息,

请参阅“Oracle8i 管理员指南”和“Oracle Net Administrator's

Guide”。这是字符串值的一个示例: '(PROTOCOL=TCP)(DISPATCHERS=3)'。

值范围: 参数的有效指定值。

默认值 : NULL

max_shared_servers:

说明 : 指定在一个共享服务器环境中可同时运行的共享服务器进程的最大数量。

值范围: 根据操作系统而定。

默认值 : 20

mts_circuits:

说明 : 指定可用于入站和出站网络会话的虚拟电路总数。 该参数是构成某个例程的总 SGA 要求的若干参数之一。

默认值 : 派生: SESSIONS 参数的值 (如果正在使用共享服务器体系结构); 否则为 0。

Mts_listener_address:

说明 : 指定共享服务器的监听程序配置。监听程序进程需要一个监听地址, 以便处理系统所用的各个网络协议的连接请求。 除非

MTS_MULTIPLE_LISTENERS=TRUE, 否则每个条目都必须有一个独立的相邻值。此参数自 8.1.3

版起已废弃

语法 : (ADDRESS=(PROTOCOL=tcp)(HOST=myhost)(PORT=7002))

默认值 : NULL

mts_dispatchers:

说明 : 为设置使用共享服务器的共享环境而设置调度程序的数量和类型。可以为该参数指定几个选项。有关详细信息,

请参阅“Oracle8i 管理员指南”和“Oracle Net Administrator's

Guide”。这是字符串值的一个示例: '(PROTOCOL=TCP)(DISPATCHERS=3)'。

值范围: 参数的有效指定值。

默认值 : NULL

max_dispatchers:

说明 : 指定在一个共享服务器环境中可同时运行的调度程序进程的最大数量。

值范围: 根据操作系统而定。

默认值 : 如果已配置了调度程序, 则默认值为大于 5 的任何数目或配置的调度程序的数目

nls_nchar_conv_excp:

说明: (如果值为 TRUE) 当在隐式转换中丢失数据时返回错误的参数。

值范围: FALSE | TRUE

默认值: TRUE

nls_numeric_characters:

说明: 指定将用作组分隔符和小数位的字符。组分隔符就是用来分隔整数位组 (如千, 百万等等)

字符。小数分隔符用来将一个数字的整数部分与小数部分分隔开。其格式是

<decimal_character><group_separator>。

值范围: 任何单字节字符, '+', '-', '<', '>' 除外。

默认值: 从 NLS_TERRITORY 中获得

nls_sort:

说明: 指定 ORDER BY 查询的比较顺序。对于二进制排序, ORDER BY 查询的比较顺序是以数值为基础的。对于语言排序,

则需要进行全表扫描, 以便将数据按照所定义的语言排序进行整理。

值范围: BINARY 或有效的语言定义名。

默认值: 从 NLS_LANGUAGE 中获得

nls_territory:

说明: 为以下各项指定命名约定, 包括日期和星期的编号, 默认日期格式, 默认小数点字符和组分隔符, 以及默认的 ISO

和本地货币符号。可支持的区域包括美国, 法国和日本。有关所有区域的信息, 请参阅 Oracle8i National

Language Support Guide。

值范围: 任何有效的地区名。

默认值: 根据操作系统而定

nls_timestamp_format:

说明: 与 NLS_TIME_FORMAT 相似, 只不过它设置的是 TIMESTAMP 数据类型的默认值, 该数据类型既存储

YEAR, MONTH 和 DAY 这几个日期值, 也存储 HOUR, MINUTE 和 SECOND 这几个时间值。

语法: TIMESTAMP '1997-01-31 09:26:50.10' (将值存储为 11 个字节)。

默认值: 从 NLS_TERRITORY 中获得

nls_time_format:

说明: 指定一个字符串值, 设置 TIME 数据类型的默认值, 该数据类型包含 HOUR, MINUTE 和 SECOND

这几个日期时间字段。

语法: TIME '09:26:50' (将值存储为 7 个字节)。

默认值: 从 NLS_TERRITORY 中获得

nls_time_tz_format:

说明: 指定一对值 (UTC,TZD), 设置 TIME WITH TIME ZONE 数据类型的默认值, 该数据类型包含

HOUR, MINUTE, SECOND, TIMEZONE_HOUR 和 TIMEZONE_MINUTE

这几个日期时间字段。UTC 是世界时而 TZD 是当地时区。

语法: TIME '09:26:50.20+ 02:00' (将值存储为 9 个字节)。

默认值: 从 NLS_TERRITORY 中获得

nls_length_semantics:

说明: 使用字节或码点语义来指定新列的创建, 如 char, varchar2, clob, nchar, nvarchar2,

nclob 列。各种字符集对字符都有各自的定义。在客户机和服务器上使用同一字符集时,

应以该字符集所定义的字符来衡量字符串。现有的列将不受影响。

值范围: BYTE 或 CHAR。

默认值: nls_length_semantics 的数据字符集的字符所使用的度量单位。BYTE。

nls_date_format:

说明: 指定与 TO_CHAR 和 TO_DATE 函数一同使用的默认日期格式。该参数的默认值由 NLS_TERRITORY

确定。该参数的值可以是包含在双引号内的任何有效的日期格式掩码。例如: ''MMM/DD/YYYY''。

值范围: 任何有效的日期格式掩码, 但不得超过一个固定长度。

默认值: 派生

nls_timestamp_tz_format:

说明: 与 NLS_TIME_TZ_FORMAT 相似, 其中的一对值指定 TIMESTAMP 数据类型的默认值, 该类型除存储

YEAR, MONTH 和 DAY 日期值, HOUR, MINUTE 和 SECOND 时间值, 还存储

TIMEZONE_HOUR 和 TIMEZONE_MINUTE。

语法: TIMESTAMP '1997- 01- 31 09:26:50+ 02:00' (将值存储为 13 个字节)。

默认值: 从 NLS_TERRITORY 中获得

nls_language:

说明: 指定数据库的默认语言, 该语言将用于消息, 日期和月份名, AD, BC, AM 和 PM 的符号,

以及默认的排序机制。可支持的语言包括英语, 法语和日语等等。

值范围: 任何有效的语言名。

默认值: 根据操作系统而定

nls_comp:

说明: 在 SQL 语句中, 应避免使用繁琐的 NLS_SORT 进程。正常情况下,

WHERE 子句中进行的比较是二进制的, 但语言比较则需要 NLSSORT 函数。可以使用 NLS_COMP 指定必须根据

NLS_SORT 会话参数进行语言比较。

值范围: Oracle8i National Language Support Guide 中指定的任何有效的10 字节字符串。

默认值: BINARY

nls_currency:

说明: 为 L 数字格式元素指定用作本地货币符号的字符串。该参数的默认值由 NLS_TERRITORY 确定。

值范围: Oracle8i National Language Support Guide 中指定的任何有效的10 字节字符串。

默认值: 从 NLS_TERRITORY 中获得

nls_date_language:

说明: 指定拼写日期名, 月名和日期缩写词 (AM, PM, AD, BC) 的语言。该参数的默认值是由 NLS_LANGUAGE

指定的语言。

值范围: 任何有效的 NLS_LANGUAGE 值。

默认值: NLS_LANGUAGE 的值

nls_dual_currency:

说明: 用于覆盖 NLS_TERRITORY 中定义的默认双重货币符号。如果不设置该参数, 就会使用默认的双重货币符号;

否则就会启动一个值为双重货币符号的新会话。

值范围: 任何有效的格式名。。

默认值: 双重货币符号

nls_iso_currency:

说明: 为 C 数字格式元素指定用作国际货币符号的字符串。该参数的默认值由 NLS_TERRITORY 确定。

值范围: 任何有效的 NLS_TERRITORY 值。

默认值: 从 NLS_TERRITORY 中获得

nls_calendar:

说明: 指定 Oracle 使用哪种日历系统作为日期格式。例如, 如果 NLS_CALENDAR 设置为 'Japanese

Imperial', 那么日期格式为 'E YY-MM-DD'。即: 如果日期是 1997 年 5 月 15 日, 那么

SYSDATE 显示为 'H 09-05-15'。

值范围: Arabic Hijrah, English Hijrah, Gregorian, Japanese Imperial, Persian, ROC Official (Republic of China) 和 Thai Buddha。

默认值: Gregorian

plsql_native_c_compiler:

说明: 指定用于将生成的 C 文件编译为目标文件的 C 编译程序的完整路径名。此参数是可选的。随每个平台附带的特有的 make

文件中包含此参数的默认值。如果为此参数指定了一个值, 则该值将覆盖 make 文件中的默认值。

值范围: C 编译程序的完整路径。

默认值: 无

remote_dependencies_mode:

说明: 用于指定数据库为远程 PL/SQL 存储的过程处理被依赖对象的方式。如果设置为 TIMESTAMP,

只有在服务器与本地时间戳相匹配的情况下, 才能执行该过程。如果设置为 SIGNATURE,

在签名安全的情况下即可执行该过程。

值范围: TIMESTAMP | SIGNATURE

默认值: TIMESTAMP

utl_file_dir:

说明: 允许数据库管理员指定 PL/SQL 文件 I/O 许可的目录。使用多个 UTL_FILE_DIR

参数即可指定多个目录。请注意所有用户均可读取或写入 UTL_FILE_DIR 参数中指定的所有文件。

值范围: 任何有效的目录路径。

默认值: 无

plsql_v2_compatibility:

说明: 设置 PL/SQL 兼容级。如果设置为 FALSE, 将执行 PL/SQL V3 行为, 而不允许 V2 行为;

否则在运行 PL/SQL V3 时将接受某些 PL/SQL V2 行为。

值范围: TRUE | FALSE

默认值: FALSE

plsql_native_make_utility:

说明: 指定 make 实用程序 (如 UNIX 中的 make 或 gmake, 即 GNU make)

的完整路径名。要从生成的 C 源中生成共享对象或 DLL, 需要使用 make 实用程序。

值范围: make 实用程序的完整路径名。

默认值: 无

plsql_native_library_dir:

说明: 由 PL/SQL 编译程序使用。它指定目录名, 其中存储了本机编译程序生成的共享对象。

范围值: 目录名。

默认值: 无

plsql_compiler_flags:

说明: 由 PL/SQL 编译程序使用。它将编译程序标志列表指定为一个用逗号分隔的字符串列表。

值范围: native (PL/SQL 模块将按本机代码来编译。), interpreted (然后 PL/SQL 模块将被编译为 PL/SQL 字节代码格式), debug (PL/SQL 模块将用探测调试符号来编译), non_debug。

默认值: " interpreted, non_debug "

plsql_native_linker:

说明: 此参数指定链接程序 (如: UNIX 中的 ld, 或用于将目标文件链接到共享对象或 DLL 的 GNU ld)

的完整路径名。此参数是可选的。随每个平台附带的特有的 make 文件中包含此参数的默认值。如果为此参数指定了一个值,

则该值将覆盖 make 文件中的默认值。

值范围: 链接程序的完整路径名。

默认值: 无

plsql_native_make_file_name:

说明: 指定 make 文件的完整路径名。make 实用程序 (由 PLSQL_NATIVE_MAKE_UTILITY 指定)

使用此 make 文件生成共享对象或 DLL。每个平台附带有端口专用的 make 文件, 该文件包含使用 make

实用程序在该平台上生成 DLL 时要遵循的规则。

值范围: make 文件的完整路径名。

默认值: 无

plsql_v2_compatibility:

说明: 设置 PL/SQL 兼容级。如果设置为 FALSE, 将执行 PL/SQL V3 行为, 而不允许 V2 行为;

否则在运行 PL/SQL V3 时将接受某些 PL/SQL V2 行为。

值范围: TRUE | FALSE

默认值: FALSE

remote_dependencies_mode:

说明: 用于指定数据库为远程 PL/SQL 存储的过程处理被依赖对象的方式。如果设置为 TIMESTAMP,

只有在服务器与本地时间戳相匹配的情况下, 才能执行该过程。如果设置为 SIGNATURE,

在签名安全的情况下即可执行该过程。

值范围: TIMESTAMP | SIGNATURE

默认值: TIMESTAMP

shared_memory_address:

说明: SHARED_MEMORY_ADDRESS 和 HI_SHARED_MEMORY_ADDRESS 指定运行时 SGA

的起始地址。许多平台在链接时间指定 SGA 起始地址, 在这类平台上这些参数将被忽略。如果两个参数都设置为 0 或

NULL, 那么地址将根据平台而定。

值范围: 任何整数值。

默认值: 0

lock_sga:

说明: 用于将整个 SGA 锁定在物理内存中。在不支持这种功能的平台上, 该值将被忽略。

值范围: TRUE | FALSE

默认值: FALSE

hi_shared_memory_address:

说明: 指定系统全局区 (SGA) 的运行时起始地址。在指定 SGA 连接时起始地址的平台上, 该值被忽略。在 64 位平台上,

请使用该值来指定高 32 位和低 32 位。如果不指定该值, 默认值是平台指定的位置。

值范围: 任何整数值。

默认值: 0

pre_page_sga:

说明: 一个根据平台而定的参数, 如果该参数为 TRUE, 将把所有 SGA 页装载到内存中,

以便使该例程迅速达到最佳性能状态。这将增加例程启动和用户登录的时间, 但在内存充足的系统上能减少缺页故障的出现。

值范围: TRUE | FALSE

默认值: FALSE

sga_max_size:

说明: 指定例程存活期间所占用的系统全局区的最大大小。

值范围: 0 到各操作系统所允许的最大值。请注意, 由于该参数值的最小值在启动时已经调整完毕, 因而它无关紧要。

默认值: 如果未指定值, sga_max_size 的默认值将与启动时 SGA 的最初大小 (比如说 X) 相同。该大小取决于 SGA 中各种池的大小, 如缓冲区高速缓存, 共享池, 大型池等。如果指定的值小于 X, 则所使用的 sga_max_size 的值将为 X。也就是说, 它是 X 与用户指定的 sga_max_size 值两者之间的较大值。

Fast_start_parallel_rollback:

说明: 执行并行回退时确定进程的最大数量。在多数事务处理的运行时间都较长的系统上, 该值很有用。

值范围: FALSE | LOW | HIGH

默认值: LOW (2 * CPU_COUNT)

transaction_auditing:

说明: 确定事务处理层是否生成一个特殊的重做记录, 其中包含用户登录名, 用户名, 会话 ID,

部分操作系统信息以及客户机信息。在使用某一重做日志分析工具时, 这些记录可能很有用。

值范围: TRUE | FALSE

默认值: TRUE

transactions:

说明: 指定并行事务处理的最大数量。如果将该值设置得较大, 将增加 SGA 的大小,

并可增加例程启动过程中分配的回退段的数量。默认值大于 SESSIONS, 以实现递归事务处理。

值范围: 一个数值。

默认值: 派生 (1.1 * SESSIONS)

enqueue_resources:

说明: 入队可使并行进程能够共享资源。例如, Oracle 允许一个进程以共享模式锁定一个表, 以共享更新模式锁定另一个表。

值范围: 10 - 65535 (7.3) 或 10 - 无限制 (8.1)。

默认值: 派生 (该值大于 DML_LOCKS + 20 即已足够)

dml_locks:

说明: 所有用户获取的表锁的最大数量。对每个表执行 DML 操作均需要一个 DML 锁。例如, 如果 3 个用户修改 2 个表,

就要求该值为 6。

值范围: 0 或 20 到无限制。

默认值: 4 * TRANSACTIONS (派生)

hash_join_enabled:

说明: 如果设置为 TRUE, 优化程序将在计算最有效的联接方法时考虑散列联接。Oracle 建议数据仓库应用程序应使用 TRUE

值。

值范围: TRUE | FALSE

默认值: TRUE

optimizer_features_enable:

说明: 允许更改 init.ora 参数, 该参数控制着优化程序的行为。受此影响的参数包括 PUSH_JOIN_PREDICATE,

FAST_FULL_SCAN_ENABLED, COMPLEX_VIEW_MERGING 和

B_TREE_BITMAP_PLANS。

值范围: 8.0.0; 8.0.3; 8.0.4; 8.1.3。

默认值: 8.0.0

query_rewrite_integrity:

说明: Oracle Server 执行的查询重写的程度。如果设置为 ENFORCED, Oracle

将保证其一致性和完整性。如果设置为 TRUSTED, 将使用明确声明的关系来允许重写。如果设置为

STALE_TOLERATED, 即使实体化视图与基础数据不一致, 也仍可以进行重写。

值范围: ENFORCED, TRUSTED, STALE_TOLERATED

默认值: ENFORCED

query_rewrite_enabled

说明: 启用或禁用对实体化视图的查询重写。一个特定实体化视图只在如下条件下启用: 会话参数和单独实体化视图均已启用,

并且基于成本的优化已启用。

值范围: TRUE | FALSE

默认值: FALSE

partition_view_enabled:

说明: 如果将 PARTITION_VIEW_ENABLED 设置为 TRUE, 该优化程序将剪除 (或跳过)

分区视图中不必要的表访问。该参数还能更改基于成本的优化程序从基础表统计信息计算分区视图统计信息的方式。

值范围: TRUE | FALSE

默认值: FALSE

optimizer_max_permutations:

说明: 对带有大量联接的查询进行语法分析时,

优化程序将会考虑限制表的交换数。这有助于确保对查询进行语法分析的时间保持在可接受的限制范围内,

但代价是无法找到最佳计划。如果该值小于 1000, 就应该可以确保每次查询的时间仅为几秒钟或更短。

值范围: 4-2^32 (~4.3 G)。

默认值: 80,000

optimizer_index_cost_adj:

说明: 在考虑太多或太少索引访问路径的情况下, 可以用来优化优化程序的性能。该值越低, 优化程序越容易选择一个索引。也就是说,

如果将该值设置为 50%, 索引访问路径的成本就是正常情况下的一半。

值范围: 1 -10000

默认值: 100 (一个索引访问路径的常规成本)

star_transformation_enabled:

说明: 确定基于成本的查询转换是否将被应用到星型查询中。如果设置为 TRUE, 优化程序将考虑将基于成本的转换应用于星型查询中;

如果设置为 FALSE, 将不使用任何转换; 如果设置为 TEMP_DISABLE, 将考虑查询转换, 但不使用临时表。

值范围: TRUE | FALSE | TEMP_DISABLE

默认值: FALSE

optimizer_mode:

说明: 指定优化程序的行为。如果设置为 RULE, 就会使用基于规则的优化程序, 除非查询含有提示。如果设置为 CHOOSE,

就会使用基于成本的优化程序, 除非语句中的表不包含统计信息。ALL_ROWS 或 FIRST_ROWS

始终使用基于成本的优化程序。

值范围: RULE | CHOOSE | FIRST_ROWS | ALL_ROWS

默认值: CHOOSE

optimizer_index_caching:

说明: 调整基于成本的优化程序的假定值,

即在缓冲区高速缓存中期望用于嵌套循环联接的索引块的百分比。它将影响使用索引的嵌套循环联接的成本。将该参数设置为一个较高的值,

可以使嵌套循环联接相对于优化程序来说成本更低。

值范围: 0 - 100 %。

默认值: 0

job_queue_processes:

说明: 只用于复制环境。它指定每个例程的 SNP 作业队列进程的数量 (SNP0, ... SNP9, SNPA, ...

SNPZ)。要自动更新表快照或执行由 DBMS_JOB 创建的请求, 请将该参数设置为 1 或更大的值。

值范围: 0 到 36

默认值: 0

max_transaction_branches:

说明: 控制分布式事务处理中分支的数量。将 MAX_TRANSACTION_BRANCHES 设置为较低的值, 可以根据

MAX_TRANSACTION_BRANCHES * DISTRIBUTED_TRANSACTIONS * 72 字节,

略微减少共享池的空间量。此参数在 8.1.3 版中已废弃。

值范围: 1 - 32

默认值: 8

compatible:

说明: 允许您使用一个新的发行版, 同时保证与先前版本的向后兼容性。

值范围: 默认为当前发行版。

默认值: 由发行版确定

archive_lag_target:

说明: 此参数与基于时间的线程高级功能相关联。

值范围: 0 或 [60, 7200] 中的任意整数。

默认值: 0 为默认值, 此时将禁用基于时间的线程高级功能。否则, 值将代表秒数

aq_tm_processes:

说明: 如果大于零, 就会启用对队列消息的时间监视。该时间值可用于指定消息的延迟和失效属性 (用于应用程序的开发)。

值范围: 0 - 10

默认值: 0

tracefile_identifier:

spfile:

说明: 指定当前使用的服务器参数文件的名称。

值范围: 静态参数

默认值: SPFILE 参数可在客户端 PFILE 中定义, 以指明要使用的服务器参数文件的名称。服务器使用默认服务器参数文件时, SPFILE 的值要由服务器在内部设置。

Logmnr_max_persistent_sessions:

Standby_file_management:

Trace_enabled:

Ifile:

说明: 用于在当前参数文件中嵌入其他参数文件。您可以在一个参数文件的多个行上多次使用该参数, 但最多只能有三级嵌套。

值范围: 任何有效的参数文件名 (语法是 IFILE = parameter_file_name)。

默认值: NULL

remote_listener:

global_context_pool_size:

说明: 从 SGA 分配的用于存储和管理全局应用程序环境的内存量。

值范围: 任意整数值。

默认值: 1 M

plsql_native_library_subdir_count:

fixed_date:

说明: SYSDATE 返回的数据。对于必须始终返回固定日期而非系统日期的测试,

该值很有用。使用双引号或不使用引号。请勿使用单引号。

值范围: YYYY-MM-DD-HH24:MI:SS (或默认的 Oracle 日期格式)。

默认值: NULL

db_name:

说明: 一个数据库标识符, 应与

CREATE DATABASE 语句中指定的名称相对应。

值范围: 任何有效名称最多可有 8 个字符

默认值: 无 (但应指定)

cluster_database:

cluster_interconnects:

cluster_database_instances:

sql_version:

replication_dependency_tracking:

说明: 跟踪相关性对复制服务器以并行方式传播所作的更改至关重要。如果设置为 FALSE, 数据库上的读/写操作将运行得更快,

但无法为复制服务器产生并行传播的相关性信息。

值范围: TRUE | FALSE

默认值: TRUE (即启用读/写相关性跟踪)

remote_os_roles:

说明: 将 REMOTE_OS_ROLES 设置为 TRUE, 允许由远程客户机的操作系统来分配角色。如果设置为 FALSE,

则由远程客户机的数据库来识别和管理角色。

值范围: TRUE | FALSE

默认值: FALSE

remote_os_authent:

说明: 将 REMOTE_OS_AUTHENT 设置为 TRUE, 允许使用 OS_AUTHENT_PREFIX

的值来验证远程客户机。

值范围: TRUE | FALSE

默认值: FALSE

open_links:

说明: 指定在一次会话中同时打开的与远程数据库的连接的最大数量。该值应等于或超过一个引用多个数据库的单个 SQL

语句中引用的数据库的数量, 这样才能打开所有数据库以便执行该语句。

值范围: 0 - 255 (如果为 0, 不允许分布式事务处理)。

默认值: 4

open_links_per_instance:

说明: 指定 XA 应用程序中可移植的打开连接的最大数量。XA 事务处理使用可移植的打开的连接,

以便在提交一个事务处理后能将这些连接高速缓存。如果创建连接的用户就是拥有事务处理的用户, 各事务处理则可共享连接。

值范围: 0 - UB4MAXVAL

默认值: 4

remote_login_passwordfile:

说明: 指定操作系统或一个文件是否检查具有权限的用户的口令。如果设置为 NONE, Oracle 将忽略口令文件。如果设置为

EXCLUSIVE, 将使用数据库的口令文件对每个具有权限的用户进行验证。如果设置为 SHARED, 多个数据库将共享

SYS 和 INTERNAL 口令文件用户。

值范围:NONE | SHARED | EXCLUSIVE

默认值: NONE

hs_autoregister:

说明: 启用或禁用“异构服务 (HS)”代理的自动自注册。如果启用, 信息将被上载到数据字典中,

以便在通过同一代理建立后续连接时降低开销。

值范围: TRUE | FALSE

默认值: TRUE

global_names:

说明: 指定是否要求数据库链接与所连接的数据库同名。如果该值为 FALSE, 则不执行检查。要使分布式处理中的命名约定一致,

请将该参数设置为 TRUE。

值范围: TRUE | FALSE

默认值: TRUE

distributed_transactions:

说明: 一个数据库一次可参与的分布式事务处理的最大数量。如果由于网络故障异常频繁而减少该值, 将造成大量未决事务处理。

值范围: 0 - TRANSACTIONS 参数值。

默认值: 根据操作系统而定

commit_point_strength:

说明: 一个用于确定分布式事务处理中提交点的位置的值。

值范围: 0 -255

默认值: 根据操作系统而定

db_domain:

说明: 指定数据库名的扩展名 (例如:US.ORACLE.COM) 为使一个域中创建的数据库名唯一, 建议指定该值。

值范围: 由句点分隔的任何字符串, 最长可以有 128 个字符

默认值: WORLD

dblink_encrypt_login:

说明: 在连接到其他 Oracle Server 时, 数据库链接是否使用加密口令。

值范围: TRUE | FALSE

默认值: FALSE

backup_tape_io_slaves:

说明: 一个恢复管理器参数, 用于确定读取或写入磁带是否要使用服务器进程或一个附加的 I/O 从属。

值范围: TRUE | FALSE

默认值: FALSE

tape_asynch_io:

说明: 用于控制对顺序设备的 I/O 操作 (例如, 将 Oracle 数据备份或复原到磁带上, 或从磁带上备份或复原

Oracle 数据) 是否异步。只有在您的平台支持对顺序设备的异步 I/O 操作的情况下, 将该值设置为 TRUE

才有效; 如果异步 I/O 的执行情况不稳定, 请将该值设置为 FALSE。

值范围: TRUE | FALSE

默认值: FALSE

log_file_name_convert:

说明: 将主数据库上的一个日志文件的文件名转换为备用数据库上对等的路径和文件名。将一个日志文件添加到一个主数据库后,

必须将一个相应的文件添加到备用数据库中。该参数替代 Oracle7 中的 LOG_FILE_NAME_CONVERT

参数。

值范围: 任何格式为 ''主体日志文件的路径/文件名'' 和 ''备用日志文件的路径/文件名'' 的有效路径/文件名

默认值: NULL

fal_server:

说明: 指定此备用数据库的 FAL 服务器。该值是一个 Oracle Net 服务名。此 Oracle Net

服务名被假定为已在备用数据库系统上正确配置, 可指向期望的 FAL 服务器。

值范围: Oracle Net 服务名的字符串值。

Fal_client:

说明: 指定供 FAL 服务 (通过 FAL_SERVER 参数配置) 来引用 FAL 客户机的 FAL

客户机名称。该参数的值是一个 Oracle Net 服务名。此 Oracle Net 服务名被假定为已在 FAL

服务器系统上正确配置, 可指向 FAL 客户机 (即: 此备用数据库)。

值范围: Oracle Net 服务名的字符串值。

Drs_start:

说明: 使 Oracle 可以确定是否应启动 DRMON 进程。DRMON 是一种不会导致致命错误的 Oracle 后台进程,

只要例程存在, 该进程就存在。

值范围: TRUE | FALSE。

默认值: FALSE

remote_archive_enable:

说明: 控制是否可向远程目标执行重做日志文件归档操作。必须将该参数值设置为 "TRUE", 以便 Oracle

数据库例程对重做日志文件进行远程归档, 并且/或者接收远程归档的重做日志文件。

值范围: FALSE | TRUE

默认值: TRUE

standby_preserves_names:

说明: 表明备用数据库上的文件名是否与主数据库上的文件名相同。

值范围: TRUE 或 FALSE。注: 如果将值设置为 True, 且备用数据库与主数据库位于同一系统上, 则主数据库文件可能被覆盖。

默认值: FALSE。

Standby_archive_dest:

说明: 指定来自一个主例程的归档日志的到达位置。STANDBY_ARCHIVE_DEST 和 LOG_ARCHIVE_FORMAT

用于在备用位置上虚拟完全合格的归档日志文件名。备用数据库上的 RFS 服务器将使用该值, 而不是

ARCHIVE_LOG_DEST。

值范围: NULL 字符串或非 RAW 类型的有效路径/设备名。

默认值: NULL

db_file_name_convert:

说明: 将主数据库上的一个新数据文件的文件名转换为备用数据库上的文件名。

值范围: 一个有效的主/备用目录和文件名对。

默认值: 无

max_enable_roles:

说明: 指定一个用户可以启用的数据库角色 (包括子角色) 的最大数量。用户可启用的角色的实际数量是 2 加上

MAX_ENABLED_ROLES 的值, 因为每个用户都有两个附加的角色: PUBLIC 和用户自己的角色。

值范围: 0 -148

默认值: 20

O7_DICTIONARY_ACCESSIBILITY:

说明: 主要用于从 Oracle7 移植到 Oracle8i。如果该值为 TRUE, SYSTEM 权限 (如

SELECT ANY TABLE) 将不限制对 SYS 方案中各对象的访问 (Oracle7 行为)。如果该值为

FALSE, 只有被授予了 SELECT_CATALOG_ROLE, EXECUTE_CATALOG_ROLE 或

DELETE_CATALOG_ROLE 权限的用户才能访问 SYS 方案中的各对象。

值范围: TRUE | FALSE

默认值: TRUE

sql92_security:

说明: 指定要执行一个更新或删除引用表列的值是否需要具有表级的

SELECT 权限

值范围: TRUE | FALSE

默认值: FALSE

audit_trail:

说明: 启用或禁用数据库审计。如果该参数为 TRUE 或 DB, 审计记录将被写入 SYS.AUD$ 表中; 如果参数为 OS,

则写入一个操作系统文件。

值范围: NONE | FALSE | DB | TRUE | OS

默认值: NONE

rdbms_server_dn:

说明: RDBMS 服务器的唯一判别名。它用于在一个企业目录服务中检索企业角色。有关详细信息, 请参阅“Oracle

Advanced Security Administrator's Guide”。

值范围: 所有 X.500 唯一判别名格式值。

默认值: 无

os_roles:

说明: 确定操作系统数据库是否为每个用户标识角色。如果设置为 TRUE, 将由操作系统完全管理对所有数据库用户的角色授予。否则,

角色将由数据库标识和管理。

值范围: TRUE | FALSE

默认值: FALSE

os_authent_prefix:

说明: 使用用户的操作系统帐户名和口令来验证连接到服务器的用户。该参数的值与各用户的操作系统帐户连接在一起。要去除 OS 帐户前缀,

请指定空值。

值范围: 任何标识符。

默认值: 根据操作系统而定 (通常是 'OPS$')

object_cache_max_size_percent:

说明: 指定会话对象的高速缓存增长可超过最佳高速缓存大小的百分比,

最大大小等于最佳大小加上该百分比与最佳大小的乘积。如果高速缓存大小超过了这个最大大小,

系统就会尝试将高速缓存缩小到最佳大小。

值范围: 0% 到根据操作系统而定的最大值。

默认值: 10%

object_cache_optimal_size:

说明: 指定在高速缓存超过最大大小的情况下, 会话对象高速缓存将被缩小到的大小。

值范围: 10K 到根据操作系统而定的最大值。

默认值: 100K

session_max_open_files:

说明: 指定可在任一给定会话中打开的 BFILE 的最大数量。一旦达到这个数量,

此后将无法在该会话中打开更多文件。该参数还取决于操作系统参数 MAX_OPEN_FILES。

值范围: 1 - 至少为 (50, OS 级上的 MAX_OPEN_FILES)。

默认值: 10

parallel_execution_message_size:

说明: 指定并行执行 (并行查询, PDML, 并行恢复和复制) 消息的大小。如果值大于 2048 或 4096,

就需要更大的共享池。如果 PARALLEL_AUTOMATIC_TUNING = TRUE,

将在大存储池之外指定消息缓冲区。

值范围: 2148 - 无穷大。

默认值: 如果 PARALLEL_AUTOMATIC_TUNING 为 FALSE, 通常值为 2148; 如果 PARALLEL_AUTOMATIC_TUNING 为 TRUE , 则值为 4096 (根据操作系统而定)。

Paralle_min_percent:

说明: 指定并行执行要求的线程的最小百分比。设置该参数, 可以确保并行执行在没有可用的恰当查询从属进程时, 会显示一个错误消息,

并且该查询会因此而不予执行。

值范围: 0 -100

默认值: 0, 表示不使用该参数。

Parallel_automatic_tuning:

说明: 如果设置为 TRUE, Oracle 将为控制并行执行的参数确定默认值。除了设置该参数外,

你还必须为系统中的表设置并行性。

值范围: TRUE | FALSE

默认值: FALSE

parallel_threads_per_cpu:

说明: 说明一个 CPU 在并行执行过程中可处理的进程或线程的数量,

并优化并行自适应算法和负载均衡算法。如果计算机在执行一个典型查询时有超负荷的迹象, 应减小该数值。

值范围: 任何非零值。

默认值: 根据操作系统而定 (通常为 2)

parallel_broadcast_enabled:

说明 : 通过使用一个散列联接或合并联接, 可以在将多个大结果集联接到一个小结果集 (以字节而不是行为单位来衡量大小)

时改善性能。如果该值设置为 TRUE, 优化程序可以将小结果集内的每个行都传播到大型集内的每个集群数据库处理行中。

值范围: TRUE | FALSE

默认值 : FALSE

parallel_adaptive_multi_user:

说明: 启用或禁用一个自适应算法, 旨在提高使用并行执行方式的多用户环境的性能。通过按系统负荷自动降低请求的并行度,

在启动查询时实现此功能。当 PARALLEL_AUTOMATIC_TUNING = TRUE 时, 其效果最佳。

值范围: TRUE | FALSE

默认值: 如果 PARALLEL_AUTOMATIC_TUNING = TRUE, 则该值为 TRUE; 否则为 FALSE

parallel_max_servers:

说明: 指定一个例程的并行执行服务器或并行恢复进程的最大数量。如果需要, 例程启动时分配的查询服务器的数量将增加到该数量。

值范围: 0 -256

默认值: 由 CPU_COUNT, PARALLEL_AUTOMATIC_TUNING 和 PARALLEL_ADAPTIVE_MULTI_USER 确定

parallel_min_servers

posted @ 2006-08-02 15:59 五指魅力 阅读(101) | 评论 (0)编辑 收藏

一、优化磁盘配置
  Oracle是一个磁盘I/O强烈的应用,要确保你恰当地配置磁盘和文件系统:


不要使用磁盘压缩
  Oracle数据文件不支持磁盘压缩。

不要使用超过70%的磁盘空间
  剩余的磁盘空间存放系统临时数据和作为磁盘碎片整理程序存放中间数据。

分离页面交换文件到多个磁盘物理卷
  跨越至少两个磁盘建立两个页面文件。你可以建立四个页面文件并在性能上受益,确保所有页面文件的大小之和至少是物理内存的两倍。

取消屏幕保护
  屏幕保护吸取大量的CPU资源而且提供的是对数据库服务器毫无意义的用处,特别要禁止3GL屏幕保护,如果你必须使用屏幕保护就用空屏幕减少CPU使用。

监视系统中消耗中断的硬件
  消耗CPU中断和时间的硬件应该避免使用。通常这样的硬件是便宜的因为它把工作载入CPU,而CPU要处理外围的高级性能的硬件,通常需要注意:
  1、支持总线控制的网卡
  2、支持DMA而不支持PIO的磁盘控制器
  使用性能监视器跟踪处理器对象的%Interrupt Time 计数器数值,和这个计数器的基线和标准,然后监视问题。
  3、有利避免中断的方式是使用硬件RAID控制器代替Windows 2000支持的软件RAID

在专用服务器上运行Oracle
  Oracle是内存消耗大户,不要在执行下列功能的系统上运行Oracle数据库:
  1、主域或备份域控制器(Windows 2000下都称域控制器)
  2、文件服务器
  3、打印服务器
  4、远程访问服务器
  5、路由器、代理或防火墙
  不要使用花哨的壁纸(如果使用,要尽量减小壁纸文件大小)

配置网卡使用最快速度和有效模式
  这针对自动检测,大多数缺省安装是NIC,如果这是可选的就尽量调整为全双工和最大化线速度。

优化网络协议绑定顺序
  在每个网卡上设置主协议,典型地是TCP/IP,到协议列表的顶端。


  四、内存调优
  内存优化是Windows平台的关键设置,首先了解一下Windows 2000平台的Oracle结构:
基于线程的结构
  Windows2000是基于线程的结构,相反,Unix操作系统是基于进程的结构。这意味着Windows中更多的应用,包括Oracle在内,是以带有多个线程的单个进程的形式执行,这种基于线程的结构的确给Window2000带来优势——更容易共享内存。内存空间为每个进程分配,进程间共享内存很笨拙,要使用附加编码,线程是进程的子集,使用比进程少得多的内存。特定进程的所有线程共享同样的进程内存空间,同一进程的线程间共享内存比不同进程共享内存要快,这给基于线程的结构很大优势,更有效。

  使用Task Manager的主要问题是看不到任何线程。Task Manager被设计成从进程层将应用程序作为整体看待。当然还可以使用性能监视器来监视Windows下的Oracle内存使用。

  进程观察器(Process Viewer)是比较容易检查线程和进程的方法之一。可以在 Windows 2000 Support Tools Windows 2000 Resource Kit内找到一些工具。Windows 2000 Support ToolsWindows 2000的一部分,但是并不自动安装。支持安装的Windows Installer文件在%CDROM%\\SUPPORT\\TOOLS\\目录下。只要在2000RKST.MSJ上右击,并从context菜单上选择安装即可。

  保留的内存是分配给线程的内存并且留作将来使用,但没有实际使用的内存。因为没有实际使用,因此它对其它进程仍然有效。但是,因为它已经被分配,它仍然由对拥有线程的进程的总的内存限制产生,因此,保留内存的计算针对2GB3GB的限制,并且进程保留的和使用的内存的总和不能超过这个限制。

  (二)AWEWindows 2000
  AWE允许你使用系统中任何附加的超过4GB的内存,为了体现这个优势,你必须有超过4GB的内存,必须有Pentium Pro或更新的处理器,必须运行Windows 2000高级服务器或Windows 2000数据中心服务器,不需要特殊的驱动程序,因为Windows 2000已经支持AWE

  (三)AWEOracle
  可以确定,Oracle8i所有发行号版本和Oracle9i发行号2只允许你为数据库块缓冲区配置超过4GB限制的内存空间,因此,要为用户连接释放标准进程地址空间的内存(低于3GB界限的内存)、PGA内存和组成SGA的不同内存缓冲池。

  在Oracle9i发行号2中,参数DB_BLOCK_BUFFERS被参数DB_CACHE_SIZE所代替,这样就改变了原来指定缓冲区块数到指定缓冲区字节数,同样,也解释了在Oracle9i发行号2的一个数据库中支持多个数据库块大小。无论用哪种办法,如果你设定参数USE_INDIRECT_BUFFERS=TRUE,你将只能定义和使用单个数据库块大小和块缓冲区(就象在9i以前的发行号中),因此,如果缺省数据库块大小是4k8k或其它,而设置DB_2k_CACHE_SIZE是不允许的。

  (四)解决与AWE相关的内存问题
  需要注意的是每个4GB界限以上的块缓冲区需要在常规地址空间保留大约200字节的缓冲区头,因此,在上面的例子中,我们大约有312000个缓冲区头指向扩展地址空间的缓冲区,缓冲区头大约占80MB常规内存空间,如果数据库块很小,那么这个数量会相当高,因此,必须确保这些缓冲区头、AWE_WINDOW_MEMORY、和所有Oracle.exe进程的内存需求,包括编码、SGA其它组件、PGA内存和每个用户连接栈都适合Oracle.exe进程的常规3GB虚拟地址空间。

  象前面所说的那样,/PAE开关只用于系统有超过4GB物理内存的时候,但如果系统内存少于4GB时,也可模仿这项功能。在boot.ini文件中设置MAXMEM参数的值,如下面例子,设为2GB,意味着任何2GB以上的内存都将保留为AWE内存。
  multi(0)disk(0)rdisk(0)partition(1)\\WINNT=\"Microsoft Windows 2000 Advanced
  Server\" /fastdetect /PAE /MAXMEM:2048

posted @ 2006-08-01 20:04 五指魅力 阅读(110) | 评论 (0)编辑 收藏

近日机器上的一个SQL被弄成了正在加载状态,试图删除,提示“错误3724,无法删除数据库,因为其正用于复制”,MSDN上的说法是:
解释

数据库中的对象经复制后,通常会在系统表 sysarticles(用于快照和事务性发布)或 sysmergearticles(用于合并发布)中标记为已复制。尝试删除复制的对象时,会引发此错误。

用户操作

尝试删除对象之前,请确保数据库对象未经复制。例如:

如果此错误发生在发布数据库中,则先从发布中删除项目,然后再删除对象。有关详细信息,请参阅向现有发布添加项目和从中删除项目。

如果此错误发生在订阅数据库中,则先删除订阅,然后再删除对象。有关详细信息,请参阅订阅发布。对于事务性发布的订阅,可以删除单个项目的订阅,而不用删除整个发布。有关详细信息,请参阅 sp_dropsubscription (Transact-SQL)。

如果此错误发生在未复制的数据库中,请执行 sp_removedbreplication (Transact-SQL),以确保此数据库中的对象不被标记为已复制


sp_removedbreplication的用法:
从数据库中删除所有复制对象。此存储过程在发布服务器上对发布数据库执行,或者在订阅服务器上对订阅数据库执行。在发布服务器上对发布数据库执行时,将尝试删除与分发服务器和订阅服务器上已发布的数据库相关的对象。

语法

sp_removedbreplication [ [ @dbname = ] 'dbname' ]
    [ , [ @type = ] type ]

参数

[ @dbname=] 'dbname'
数据库的名称。dbname 的数据类型为 sysname,默认值为 NULL。此参数值为 NULL 时,将使用当前数据库。

[ @type = ] type
要为其删除数据库对象的复制的类型。type 的数据类型为 nvarchar(5),可以是下列值之一。

 
tran
 删除事务复制发布对象。
 
merge
 删除合并复制发布对象。
 
both(默认值)
 删除所有复制发布对象。
 


备注

sp_removedbreplication 用于所有复制类型。

如果要还原的复制数据库没有需要还原的复制对象,sp_removedbreplication 将很有用。

sp_removedbreplication 不能用于标记为只读的数据库。

返回代码值

0(成功)或 1(失败)

权限

只有 sysadmin 固定服务器角色的成员才能执行 sp_removedbreplication。

试图执行:
DECLARE @subscriptionDB AS sysname
SET @subscriptionDB = N'AdventureWorksReplica'

-- Remove replication objects from a subscription database (if necessary).
USE master
EXEC sp_removedbreplication @subscriptionDB

提示错误为:
服务器: 消息 927, 14 级别、 状态 2, 行 1
无法打开数据库 ' msdb '。 是中间的还原。


查MSDN的结果:
症状
将对 msdb 系统数据库还原使数据库处于加载状态 (unrecovered) 并不应用差异中更改和日志备份如果下列条件为真: ? 从企业管理器 (SEM) 执行还原。 
? 还原操作是的组合:

a.  完整数据库备份和差异备份。 
b.  完整数据库备份和事务日志备份。 
c.  完整数据库备份和结合了差异和事务日志备份。 
 
注意 : 要在 SQL Server 2000, 执行的 msdb 数据库事务日志备份必须更改恢复模型来记录 " 容量 " 或 " 全部 "。 在 SQL Server 7.0, 必须 " trunc。 关闭 chkpt 登录 " 设置用于 msdb 数据库。


解决方案
要解决此问题, 获取最新服务包对于 Microsoft SQL Server 7.0。 有关其他信息, 请单击下列文章编号以查看 Microsoft 知识库中相应:
301511 (http://support.microsoft.com/kb/301511/EN-US/) INF: 如何获取最新 SQL Server 7.0 Service Pack


替代方法
要变通解决此问题, 从查询分析器还原 msdb 数据库通过 SEM. 代替 Transact-SQL RESTORE 命令


状态
Microsoft 已确认这是处本文列出 Microsoft 产品中问题。 早在 Microsoft SQL Server 7.0 Service Pack 4 中首先得到了解决此问题。
 

更多信息
从企业管理器, 还原 msdb 数据库时它报告以下错误信息:
无法打开数据库 ' msdb '。 它是中间的还原
无法插入备份或还原 msdb 数据库中历史记录 / 明细记录。 这可能表明 msdb 数据库有问题。 备份/还原操作仍成功。
以秒计 2.268 (4.392 MB / 秒) RESTOREDATABASE 成功处理 1217 页。
因为还原操作在 msdb restorehistory 表中插入项预计两初始行。 但是, 当还原 msdb , 还原操作无法将插入该表因为中间的还原 msdb 数据库是。 注意上述错误消息三行中报告还原处理一个备份文件, 即初始完整数据库备份。 当您单击 确定 返回到对话框中, 还原数据库 而且必须单击 取消 要从此对话框退出。 问题是差异更改或日志备份不适用于 msdb 和数据库, 是处于加载状态 (unrecovered)。 要恢复数据库可以在查询分析器中运行以下代码: RESTORE DATABASE msdb WITH RECOVERY
    
当从查询分析器, 还原 msdb 它报告错误 927 并为每个还原操作 3009 最后一个除外。 请记住所有下列还原操作, 除最后, 使用 WITHNORECOVERY 选项。 msdb 数据库但是, 是不处于加载状态。

执行RESTORE DATABASE msdb WITH RECOVERY后问题解决

posted @ 2006-08-01 20:03 五指魅力 阅读(2458) | 评论 (0)编辑 收藏

ORA-00600:internal error code,arguments:[num],[?],[?],[?],[?]

产生原因:这种错误通常为ORACLE的内部错误,只对OSS和ORACLE开发有用。ORA-600的错误经常伴随跟踪文件的状态转储(系统状态和进程状态),系统状态存储将包括ORACLE RDBMS持有的当前对象的信息,进程状态转储则将显示特殊进程持有的对象,当进程符合了某错误条件时,经常是由于一些信息取自它持有的一个块,如果我们知道这些错误进程持有的块,就容易跟踪问题的来源。

解决方法:一般来说出现这个错误我们本身是无法解决的,只有从提高系统本身各方面来解决这个内部问题,如增加硬件设备,调整系统性能,使用OPS(当然OPS从某种意义上说并不是一种好的解决方式)等。ORA-600错误的第一个变量用于标记代码中错误的位置(代码中的每个部分的第一变量都不一样),从第二个到第五个变量显示附加信息,告诉OSS代码在哪里出现了错误。

一个报错例子如下:

ORA-00600: internal error code, arguments: [1237], [], [], [], [], [], [], []

相应的英文如下:

Cause:This is a catchall internal error message for Oracle program exceptions.It indicates that a process has met a low-level,unexpected condition.Various causes of this message include:

Time-outs(超时)

File corruption(文件太老)

Failed data checks in memory(内存检索失败)

Hardware,memory,or I/O errors(硬件、内存或者磁盘错误)

Incorrectly restored files(错误的重建文件)


ORA-03113:end-of-file on communication channel

产生原因:通讯不正常结束,从而导致通讯通道终止

解决方法:1>.检查是否有服进程不正常死机,可从alert.log得知

2>.检查sql*Net Driver是否连接到ORACLE可执行程序

3>.检查服务器网络是否正常,如网络不通或不稳定等

4>.检查同一个网上是否有两个同样名字的节点

5>.检查同一个网上是否有重复的IP地址

相应的英文如下:

Cause:An unexpected end-of-file was processed on the communication channel.The problem could not be handled by the Net8,two task,software.This message could occur if the shadow two-task process associated with a Net8 connect has terminated abnormally,or if there is a physical failure of the interprocess communication vehicle,that is,the network or server machine went down.

Action:If this message occurs during a commection attempt,check the setup files for the appropriate Net8 driver and confirm Net8 software is correctly installed on the server.If the message occurs after a connection is well established,and the error is not due to a physical failure,check if a trace file was generated on the server at failure time.Existence of a trace file may suggest an Oracle internal error that requires the assistance of customer support.


ORA-00942:table or view does not exist

产生原因:这是由于装载的表或视图不存在,多半是CATEXP.SQL还没有运行,无法执行Export视图,如果CATEXP.SQL已经运行,则可能是版本错误。

解决方法:因为Import和Export共享的一些视图是通过运行CATEXP.SQL来装载的(它们具有相同的视图),并不生成单独的CATEXP.SQL,因而造成视图与Export代码不同步,较难保持彼此之间的兼容,用户就必须建立自己的Export应用,从而避免ORA-00942的错误。

相应的英文如下:

Cause:The table or view entered does not exist,a synonym that is jnot allowed here was used,or a view was referenced where a table is required.Existing user tables and views can be listed by querying the data dictionary.Certain privileges may required to access the table.If an application returned this message,the table the application tried to access does not exist in the database,or the application does not have access to it.

Action:Check each of the following:

The spelling of the table or view name.

That a view is not specified where a table is required

That an existing table or view name exists.

Contact the database administrator if the table needs to be created or if user or application priviledes are required to access the table.

Also, if attempting to access a table or view in another schema,make certain thecorrect schema is referenced and that access to the object is granted.


ORA-01598:rollback segment “name” is not online

Cause:The rollback segment was taken offline either manually or by SMON.

Action:Check the status of the rollback segment in DBA_ROLLBACK_SEGS.

ORA-1636: rollback segment “name” is already online

Cause:A rollback segment can only be used by one instance and an instance is trying to bring a rollback segment online that is already in use.

Action:Check that the values set in the initialization parameter file for parameters ROLLBACK_SEGMENTS,ROLLBACK_SEGMENT_INITIAL,and ROLLBACK_SEGMENT_COUNT are correctly set for the instance
whiththe problem,Also check that the instance is using the correct initialization parameter file.Make sure you are not confused about the difference between private and public rollback segments.See the Oracle8 Server Administrator's Guide for more information about using rollback segments in paraller mode.

上述错误均为我们在使用回滚段时比较常见的问题,ORA-01598指明当前使用的回滚段的状态为“not online”,不能使用,将它改为“online”状态即可使用;ORA-01636指明当前回滚段已经为“online”状态,可以直接使用,不用再集合它。

ORA-1636 signalled during: alter rollback segment rb00 online

我们在做统计时还可能遇到下述问题:一个rollback segment的状态为”Needs Recovery”的现象,这是由于ORACLE回退一个事物表中的没有提交的事物时失败所造成的。通常原因为一个datafile或者tablespace是在offline的状态或者一个undo的目标被破坏或者rollback segment被破坏。解决的办法是将所有的tablespace和datafile都置为online状态,如果不能解决则做下面的工作:1>.在initsid.ora中加入event=”10015 trace name context forever lever 10”;2>.shutdown数据库然后重启;3>.在$ORACLE_HOME/rdbms/log下,找到startup时生成的trace file;4>.在trace文件中,找到下列信息“error recovery tx(#,#) object #”;5>.根据object#(与sys.dba_objects表中的object_id相同)在sys.dba_objects表中查出该object的名字;6>.将该object drop掉;7>.在init.ora文件中将该rollback segment放回rollback_segments参数中,删除event;8>.shutdown数据库然后重启。此时”Needs Recovery”的问题应该是完全解决了,否则就是rollback segment被破坏了。


ORA-01688:unable to extend table name.name partition NAME by NUM in tablespace NAME

产生原因:指定的tablespace空间已经被占用满,无法扩展。

解决方法:使用“ALTER TABLESPACE ADD DATAFILE”命令增加文件系统文件和原始分区,或者增加INITIAL的大小(如:alter tablespace CDRS101 default storage(next 500M pctincrease 1))应该能够解决,否则就是有人使用你的表空间上创建了一个比较大的数据文件导致你的表空间不够用。

一个报错例子如下:

ORA-1688: unable to extend table RMMCDR.LOCAL_CDR partition LOCAL_CDR101 by 460800 in tablespace CDRS101

相应的英文如下:

Cause:An extent could not be allocated for a table segment in tablespace

Action:Use the ALTER TABLESPACE ADD DATAFILE statement to add one or more files to the specified tablespace

这几篇文章都来自 http://www.dbonline.cn/default.htm

posted @ 2006-08-01 08:54 五指魅力 阅读(91) | 评论 (0)编辑 收藏

在使用ORACLE的过程过,我们会经常遇到一些ORACLE产生的错误,对于初学者而言,这些错误可能有点模糊,而且可能一时不知怎么去处理产生的这些错误,本人就使用中出现比较频繁的错误代码一一做出分析,希望能够帮助你找到一个合理解决这些错误的方法,同时也希望你能够提出你的不同看法。毕竟作为一种交流的手段,个人意见难免过于偏颇,而且也必定存在着不足,出错之处在所难免。写这篇文章的目的就是想通过相互之间的交流共同促进,共同进步。

ORA-01650:unable to extend rollback segment NAME by NUM intablespace NAME

  产生原因:上述ORACLE错误为回滚段表空间不足引起的,这也是ORACLE数据管理员最常见的ORACLE错误信息。当用户在做一个非常庞大的数据操作导致现有回滚段的不足,使可分配用的回滚段表空间已满,无法再进行分配,就会出现上述的错误。

  解决方式:使用“ALTER TABLESPACE tablespace_name ADD DATAFILE filename SIZE size_of_file”命令向指定的数据增加表空间,根据具体的情况可以增加一个或多个表空间。当然这与还与你主机上的裸盘设备有关,如果你主机的裸盘设备已经没有多余的使用空间,建议你不要轻意的增加回滚段表空间的大小,可使用下列的语句先查询一下剩余的tablespace空间有多少:

Select user_name,sql_text from V$open_cursor where user_name='<user_name>';

  如果多余的空间比较多,就可以适当追加一个大的回滚段给表空间使用,从而避免上述的错误。你也可以用以下语句来检测一下rollback segment的竞争状况:

Select class,count from V$waitstat where calss in(‘system undo header','system undo block','undo
header','undo block');和

Select sum(value) from V$sysstat where name in (‘db_block_gets','consistents gets');

如果任何一个class in count/sum(value)大于1%,就应该考虑增加rollback segment。

相应的英文如下:

Cause:Failed to allocate extent from the rollback segment in tablespace

Action:Use the ALTER TABLESPACE ADD DATAFILE statement to add one or more files to the specified tablespace.

ORA-01652:unable to extend temp segment by num in tablespace name

  产生原因:ORACLE临时段表空间不足,因为ORACLE总是尽量分配连续空间,一但没有足够的可分配空间或者分配不连续就会出现上述的现象。

  解决方法:我们知道由于ORACLE将表空间作为逻辑结构-单元,而表空间的物理结构是数据文件,数据文件在磁盘上物理地创建,表空间的所有对象也存在于磁盘上,为了给表空间增加空间,就必须增加数据文件。先查看一下指定表空间的可用空间,使用视图SYS.DBA_FREE_SPACE,视图中每条记录代表可用空间的碎片大小:

SQL>Select file_id,block_id,blocks,bytes from sys.dba_free_space where tablespace_name='<users>';

  返回的信息可初步确定可用空间的最大块,看一下它是否小于错误信息中提到的尺寸,再查看一下缺省的表空间参数:

SQL>SELECT INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTENTS,PCT_INCREASE FROM SYS.DBA_TABLESPACES WHERE TABLESPACE_NAME=name;

通过下面的SQL命令修改临时段表空间的缺省存储值:

SQL>ALTER TABLESPACE name DEFAULT STORAGE (INITIAL XXX NEXT YYY);

适当增大缺省值的大小有可能解决出现的错误问题,也可以通过修改用户的临时表空间大小来解决这个问题:

SQL>ALTER USER username TEMPORARY TABLESPACE new_tablespace_name;

使用ALTER TABLESPACE命令,一但完成,所增加的空间就可使用,无需退出数据库或使表空间脱机,但要注意,一旦添加了数据文件,就不能再删除它,若要删除,就要删除表空间。

一个报错例子如下:

ORA-1652:unable to extend temp segment by 207381 in tablespace TEMPSPACE

相应的英文如下:

Cause: Failed to allocate extent for temp segment in tablespace

Action:Use the ALTER TABLESPACE ADD DATAFILE statement to add one or more files to the specified tablespace or create the object in another tablespace.

posted @ 2006-08-01 08:53 五指魅力 阅读(111) | 评论 (0)编辑 收藏

ORA-01578:Oracle data block corrupted(file # num,block # num)

产生原因:当ORACLE访问一个数据块时,由于1、硬件的I/O错误;2、操作系统的I/O错误或缓冲问题;3、内存或paging问题;4、ORACLE试图访问一个未被格式化的系统块失败;5、数据文件部分溢出等上述几种情况的一种引起了逻辑坏块或者物理坏块,这时就会报ORA-01578的错误。

解决方式:由于ORACLE只有在访问到有问题的数据文件时才会报错,所以报错的时间有可能会比实际出错的时间要晚,如果ORA-01578出错信息提示数据坏块指向的是用户自己的数据文件,则用以下方法来解决:


如果通过下面的SQL语句查出的坏块出现有索引上,则只需重建索引即可

SQL>Select owner,segment_name,segment_type from dba_extents where file_id=<F> and <B> between block_id and block_id+blocks-1;(<F>和<B>分别是ORA-01578报出的坏块出现的文件号和块号)


如果坏块出现在表上,先用以下语句分析是否为永久性坏块(建议多执行一两次,有助于鉴别数据坏块是永久性的(硬盘上的物理坏块)还是随机性的(内存或硬件错误引起)):

SQL>Analyze table <table_name> validate structure cascade;

执行该命令后,可能会出现以下的结果:

ORA-01578:与原先错误信息有相同的参数,为永久性的物理或逻辑坏块;与原先错误信息有不同的参数,可能与内存,page space和I/O设备有关。

如果用户有此表的最新备份,那么最好是用此备份来恢复此表,或者使用event 10231来取出坏块以外的数据:

<1>.先关闭数据库

<2>.编辑init<sid>.ora文件,加入:

event=”10231 trace name context forever,level 10”

<3>.startup restrict

<4>.创建一个临时表:SQL>create table errortemp as select * from error;(error是坏表的表名)

<5>.把event从init<sid>.ora文件中删掉并重起数据库

<6>.rename坏表,把临时表rename成坏表的表名

<7>.创建表上的INDEX等

如果ORA-01578出错信息提示数据坏块指向的是数据字典或者是回滚段的话,你应该立即与ORACLE公司联系,共同商量一个好的解决办法。

这里所讲的解决方法只是比较常见的一种,一些更为具体的解决办法可以查看一下ORACLE的故障解决手册,那里面有浞及使用ROWID方法来取出坏块以外的数据的方法,这里就不介绍了。

相应的英文如下:

Cause:The given data block was corrupted,probably due to program errors

Action:Try to restore the segment containing the given data block,This may involve dropping the segment and recreating it,If there is a trace file,report the messages recorded in it to customer support.

ORA-01628:max # of extents num reached for rollback segment num

产生原因:这种错误通常为一个回滚段和一个表空间已经达到MAXEXTENTS参数设置的极限。要注意的是这个MAXEXTENTS不是该回滚段或表空间的硬件极限,硬件极限取决于数据库创建时在init.ora文件中指定的DB_BLOCK_SIZE参数的值。

解决方法:使用SQL命令ALTER TABLESPACE…STORAGE(MAXEXTENTS XXXX)来增加 MAXEXTENTS,其中“XXXX”值必须大于错误信息中所指的数值,但不能大于LARGEST MAXEXTENT的值,如果已经达到了LARGEST MAXEXTENT VALUE,解决的办法就是重新创建较大的范围尺寸,使用带有选项COMPRESS=Y的Export工具导出表,如果表空间有可用空间,先给表做一个备份,用alter tablespace tablespace_name更改其名字,然后再装载表回数据库。

查看其错误出现的地方,如果出现在回滚段或索引上,那么必须将其删除并重建,如果出现在临时表空间,修改临时表空间的存储字段,便可解决这个问题。

一个报错例子如下:

ORA-1628:max # extents 50 reached for rollback segment RBS_1

相应的英文如下:

Cause: An attempt was made to extend a rollback segment that already has reached its maximum size or space could not be allocated in the data dictionary to contain the definition of the object.

Action:If possible,increase the value of either the MAXEXTENTS or PCTINCREASE initialization parameters or find the data dictionary table lacking space and alter the storage parameters,as described in the Oracle8 Server Administrator's Guide.

posted @ 2006-08-01 08:53 五指魅力 阅读(84) | 评论 (0)编辑 收藏

posted @ 2006-07-31 13:33 五指魅力 阅读(81) | 评论 (0)编辑 收藏

猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒
要求:1。要有联动性,老鼠和主人的行为是被动的
2。考虑可扩展性,猫的叫声可能引起其他联动效应

两种方法
1 使用观察者模式
 public interface Observer
 {
 void Response(); //观察者的响应,如是老鼠见到猫的反映
 }
 public interface Subject
 {
 void AimAt(Observer obs); //针对哪些观察者,这里指猫的要扑捉的对象---老鼠
 }
 public class Mouse : Observer
 {
 private string name;
 public Mouse(string name, Subject subj)
 {
 this.name = name;
 subj.AimAt(this);
 }

 public void Response()
 {
 Console.WriteLine(name + " attempt to escape!");
 }
 }
 public class Master : Observer
 {
 public Master(Subject subj)
 {
 subj.AimAt(this);
 }

 public void Response()
 {
 Console.WriteLine("Host waken!");
 }
 }

 public class Cat : Subject
 {
 private ArrayList observers;
 public Cat()
 {
 this.observers = new ArrayList();
 }
 public void AimAt(Observer obs)
 {
 this.observers.Add(obs);
 }
 public void Cry()
 {
 Console.WriteLine("Cat cryed!");
 foreach (Observer obs in this.observers)
 {
 obs.Response();
 }
 }
 }
 class MainClass
 {
 static void Main(string[] args)
 {
 Cat cat = new Cat();
 Mouse mouse1 = new Mouse("mouse1", cat);
 Mouse mouse2 = new Mouse("mouse2", cat);
 Master master = new Master(cat);
 cat.Cry();
 }
 }

2 使用事件
public delegate void SubEventHandler();
 public abstract class Subject
 {
 public event SubEventHandler SubEvent;
 protected void FireAway()
 {
 if (this.SubEvent != null)
 this.SubEvent();
 }
 }
 public class Cat : Subject
 {
 public void Cry()
 {
 Console.WriteLine("cat cryed.");
 this.FireAway();
 }
 }
 public abstract class Observer
 {
 public Observer(Subject sub)
 {
 sub.SubEvent += new SubEventHandler(Response);
 }
 public abstract void Response();
 }
 public class Mouse : Observer
 {
 private string name;
 public Mouse(string name, Subject sub) : base(sub)
 {
 this.name = name;
 }
 public override void Response()
 {
 Console.WriteLine(name + " attempt to escape!");
 }
 }
 public class Master : Observer
 {
 public Master(Subject sub) : base(sub){}
 public override void Response()
 {
 Console.WriteLine("host waken");
 }
 }
 class Class1
 {
 static void Main(string[] args)
 {
 Cat cat = new Cat();
 Mouse mouse1 = new Mouse("mouse1", cat);
 Mouse mouse2 = new Mouse("mouse2", cat);
 Master master = new Master(cat);
 cat.Cry();
 }
 }

posted @ 2006-07-29 08:02 五指魅力 阅读(133) | 评论 (0)编辑 收藏

仅列出标题
共7页: 1 2 3 4 5 6 7