oracle10g初始化参数说明
参数名: 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
参数名:active_instance_count
类别:群集数据库
说明: 允许在由两个例程构成的集簇中指定一个例程作为主例程, 另一个例程为次例程。 如果集簇中包含的例程多于两个,该参数没有作用。
值范围: 1 或 >= 集簇中的例程数。
默认值: 无
参数名:aq_tm_processes
类别:其他
说明: 如果大于零, 就会启用对队列消息的时间监视。该时间值可用于指定消息的延迟和失效属性 (用于应用程序的开发)。
值范围: 0 - 10
默认值: 0
参数名:archive_lag_target
类别:备用数据库
说明: 此参数与基于时间的线程高级功能相关联。
值范围: 0 或 [60, 7200] 中的任意整数。
默认值: 0 为默认值, 此时将禁用基于时间的线程高级功能。否则, 值将代表秒数
参数名:audit_file_dest
类别:安全性和审计
说明: 对于每个与数据库的 SYSDBA 或 INTERNAL 连接, 都将在该目录中生成一个审计文件 (仅用于 UNIX)。
值范围: 任何有效的目录名
默认值: ORACLE_HOME/rdbms/audit
参数名:audit_trail
类别:安全性和审计
说明: 启用或禁用数据库审计。如果该参数为 TRUE 或 DB, 审计记录将被写入 SYS.AUD$ 表中; 如果参数为 OS,
则写入一个操作系统文件。
值范围: NONE | FALSE | DB | TRUE | OS
默认值: NONE
参数名:background_core_dump
类别:诊断和统计
说明: 是否将 SGA 信息转储到一个生成的核心文件中 (用于 UNIX)。
值范围: FULL | PARTIAL
默认值: FULL
参数名:background_dump_dest
类别:诊断和统计
说明: 指定在 Oracle 操作过程中为后台进程 (LGWR, DBW n 等等) 写入跟踪文件的路径名(目录或磁盘)。它还定义记录着重要事件和消息的数据库预警文件的位置。
值范围: 任何有效的目录名。
默认值: ORACLE_HOME/rdbms/log (根据操作系统而定)
参数名:background_tape_io_slaves
类别:备份和恢复
说明: 一个 Recovery Manager 参数, 用于确定读取或写入磁带是否要使用服务器进程或一个附加的 I/O 从属。
值范围: TRUE | FALSE
默认值: FALSE
参数名:bitmat_merge_area_size
类别:排序,散列联接,索引
说明: 指定合并从对索引的某一范围进行扫描而检索得到的位图要使用的内存量。
值范围: 根据系统而定。
默认值: 1MB
参数名:blank_trimming
类别:ANSI相容性
说明: 如果值为 TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据。
值范围: TRUE | FALSE
默认值: FALSE
参数名:buffer_pool_keep
类别:高速缓存和I/O
说明: 保留池大小 (从 DB_BLOCK_BUFFERS 分配)。目的是将对象保留在内存中, 以减少 I/O。
值范围: 特定的字符串值 (例如: buffers:400, lru_latches:3)。
默认值: 无
参数名:buffer_pool_recycle
类别:高速缓存和I/O
说明: 循环池大小 (从 DB_BLOCK_BUFFERS 分配)。目的是使用对象后将其清除, 以便重复使用内存。
值范围: 一个特定的字符串值 (例如: buffers:50, lru_latches:1)。
默认值: 无
参数名:circuits
类别:MTS
说明 : 指定可用于入站和出站网络会话的虚拟电路总数。 该参数是构成某个例程的总 SGA 要求的若干参数之一。
默认值 : 派生: SESSIONS 参数的值 (如果正在使用共享服务器体系结构); 否则为 0。
参数名:cluster_databse
类别:群集数据库
说明: 将 CLUSTER_DATABASE 设置为 TRUE 可以启用 Real Application Clusters
选项。
值范围: TRUE | FALSE
默认值: FALSE
参数名:cluster_databse_instance
类别:群集数据库
说明: 当前已配置为群集数据库的一部分的例程数。它用于确定 SGA 结构的大小,该结构由已配置的例程数来确定。正确设置此参数将改善 SGA 的内存使用情况。有几个参数是用此参数值计算得到的。
值范围: 任何非零值。
默认值: 1
参数名:cluster_interconnects
类别:群集数据库
说明: 可在 Real Application Clusters 环境中使用的其他互连。当单个互连不能满足群集数据库的带宽要求时, 应设置此参数。如果未设置此参数, Oracle 保留当前为 Oracle9i Real Application Clusters 节点之间的通信确定适当互连的语义。
值范围: 用冒号分隔的一个或多个 IP 地址。
默认值: NONE
参数名:commit_point_strength
类别:分布式、复制和快照
说明: 一个用于确定分布式事务处理中提交点的位置的值。
值范围: 0 -255
默认值: 根据操作系统而定
参数名:compatible
类别:其他
说明: 允许您使用一个新的发行版, 同时保证与先前版本的向后兼容性。
值范围: 默认为当前发行版。
默认值: 由发行版确定
参数名:control_file_record_keep_time
类别:重做日志和恢复
说明: 控制文件中可重新使用部分中的记录必须保留的最短时间 (天数)。
值范围: 0 -365
默认值: 7
参数名:control_files
类别:文件配置
说明: 指定一个或多个控制文件名。Oracle 建议对于不同设备或 OS 文件镜像使用多个文件。
值范围: 1 - 8 文件名 (带路径名)。
默认值: 根据操作系统而定
参数名:core_dump_dest
类别:诊断和统计
说明: 指定核心转储位置的目录名 (用于 UNIX)。
值范围: 任何有效的目录名。
默认值: ORACLE_HOME/dbs
参数名:cpu_count
类别:进程和会话
说明: Oracle 可用的 CPU 的数目 (用于计算其他参数值)。请勿更改该值。
值范围: 0 - 无限制。
默认值: 由 Oracle 自动设置
参数名:create_bitmap_area_size
类别:排序、散列联接、位图索引
说明: CREATE_BITMAP_AREA_SIZE 指定为创建位图索引而分配的内存量。
值范围: 根据操作系统而定。
默认值: 8 MB
参数名:cursor_sharing
类别:游标和库高速缓存
说明: 控制可以终止共享相同的共享游标的 SQL 语句类型。
值范围:
强制: 强制表达方式不同但语句意思相同的语句共享一个游标。
EXACT: 只令完全相同的 SQL 语句共享一个游标。
默认值: EXACT
参数名:cursor_space_for_time
类别:游标和库高速缓存
说明: 在一个游标引用共享 SQL 区时, 确定将 SQL 区保留在共享池中还是从中按过期作废处理。
值范围: TRUE | FALSE
默认值: FALSE (过期作废)
参数名:db_16k_cache_size
类别:高速缓存和I/O
说明: 指定高速缓存的大小为 16K 缓冲区。只有在 db_block_size 的值不是 16K 时, 才能设置此参数。
值范围: 0M 或至少 16M。块大小的值还要满足特定平台的具体要求。
默认值: 0M
参数名:db_2k_cache_size
类别:高速缓存和I/O
说明: 指定高速缓存的大小为 2K 缓冲区。只有在 db_block_size 的值不是 2K 时, 才能设置此参数。
值范围: 0M 或至少 16M。块大小的值还要满足特定平台的具体要求。
默认值: 0M
参数名:db_4k_cache_size
类别:高速缓存和I/O
说明: 指定高速缓存的大小为 4K 缓冲区。只有在 db_block_size 的值不是 4K 时, 才能设置此参数。
值范围: 0M 或至少 16M。块大小的值还要满足特定平台的具体要求。
默认值: 0M
参数名:db_8k_cache_size
类别:高速缓存和I/O
说明: 指定高速缓存的大小为 8K 缓冲区。只有在 db_block_size 的值不是 8K 时, 才能设置此参数。
值范围: 0M 或至少 16M。块大小的值还要满足特定平台的具体要求。
默认值: 0M
参数名:db_block_buffers
类别:高速缓存和I/O
说明: 缓冲区高速缓存中 Oracle 块的数量。该参数会显著影响一个例程的 SGA 总大小。
值范围: 4 - 根据操作系统而定。
默认值: 32768
参数名:db_block_checking
类别:诊断和统计
说明: 用于控制是否检查事务处理管理的块有无损坏。
值范围: TRUE | FALSE
默认值: FALSE
参数名:db_block_checksum
类别:诊断和统计
说明: DBWn, ARCH 和 SQL*loader 是否为每一个数据块读或写计算或校验块的校验和。
值范围: TRUE | FALSE
默认值: FALSE
参数名:db_block_size
类别:高速缓存和I/O
说明: 一个 Oracle 数据库块的大小 (字节)。该值在创建数据库时设置, 而且此后无法更改。
值范围: 1024 - 65536 (根据操作系统而定)。
默认值: 2048 (根据操作系统而定)
参数名:db_block_advice
类别:高速缓存和I/O
说明: 为预计各种容量的高速缓存的行为而启用和禁用统计信息收集。在 V$DB_CACHE_ADVICE 视图中收集信息。
值范围: OFF--关闭咨询, 并且不为咨询分配内存; ON--打开咨询 (即: 将带来 CPU 和内存开销); READY--关闭咨询, 但保留分配给咨询的内存。
默认值: OFF
参数名:db_cache_size
类别:高速缓存和I/O
说明: 为高速缓存指定标准块大小的缓冲区。
值范围: 至少 16M。
默认值: 48M
参数名:db_create_file_dest
类别:文件配置
说明: 设置所创建的数据文件, 控制文件和联机日志的默认位置。
值范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其中创建文件的许可。
参数名:db_create_online_log_dest_1
类别:文件配置
说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。
值范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其中创建文件的许可。
参数名:db_create_online_log_dest_2
类别:文件配置
说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。
值范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其中创建文件的许可。
参数名:db_create_online_log_dest_3
类别:文件配置
说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。
值范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其中创建文件的许可。
参数名:db_create_online_log_dest_4
类别:文件配置
说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。
值范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其中创建文件的许可。
参数名:db_create_online_log_dest_5
类别:文件配置
说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。
值范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其中创建文件的许可。
参数名:db_domain
类别:数据库识别
说明: 指定数据库名的扩展名 (例如:US.ORACLE.COM) 为使一个域中创建的数据库名唯一, 建议指定该值。
值范围: 由句点分隔的任何字符串, 最长可以有 128 个字符。
默认值: WORLD
参数名:db_file_multiblock_read_count
类别:高速缓存和I/O
说明: 在涉及一个完全连续扫描的一次 I/O 操作过程中读取的块的最大数量。
值范围: 根据操作系统而定。
默认值: 8
参数名:db_file_name_convert
类别:备用数据库
说明: 将主数据库上的一个新数据文件的文件名转换为备用数据库上的文件名。
值范围: 一个有效的主/备用目录和文件名对。
默认值: 无
参数名:db_files
类别:文件配置
说明: 可为该数据库打开的数据文件的最大数量。
值范围: MAXDATAFILES - 根据操作系统而定。
默认值: 根据操作系统而定 (在 Solaris 系统上为 200)
参数名:db_keep_cache_size
类别:高速缓存和I/O
说明: 指定 KEEP 缓冲池中的缓冲区数。KEEP 缓冲池中的缓冲区大小是主要块大小 (即 db_block_size 定义的块大小)。
值范围: 0 或至少一个区组大小 (更小的值将自动舍入到区组大小)。
默认值: 0M
参数名:db_name
类别:数据库识别
说明: 一个数据库标识符, 应与 CREATE DATABASE 语句中指定的名称相对应。
值范围: 任何有效名称最多可有 8 个字符。
默认值: 无 (但应指定)
参数名:db_recycle_cache_size
类别:高速缓存和I/O
说明: 指定 RECYCLE 缓冲池的大小。RECYCLE 池中的缓冲区大小是主要块大小。
值范围: 0 或至少一个区组大小 (更小的值将自动舍入到区组大小)。
默认值: 0M
参数名:db_writer_processes
类别:高速缓存和I/O
说明: 一个例程的数据库写进程的初始数量。如果使用了 DBWR_IO_SLAVES, 则只能使用一个数据库写进程。
值范围: 1 - 10
默认值: 1
参数名:dbwr_io_slaves
类别:高速缓存和I/O
说明: DBW0 进程使用的 I/O 从属的数量。DBW0 进程及其从属始终写入磁盘。
值范围: 0 - 根据操作系统而定。
默认值: 0
参数名:dbwr_io_slaves
类别:高速缓存和I/O
说明: DBW0 进程使用的 I/O 从属的数量。DBW0 进程及其从属始终写入磁盘。
值范围: 0 - 根据操作系统而定。
默认值: 0
参数名:disk_asynch_io
类别:高速缓存和I/O
说明: 控制数据文件, 控制文件和日志文件的 I/O 是否异步 (即在表扫描过程中进程是否重叠 I/O 和CPU请求)。只有在您的平台支持磁盘异步 I/O的情况下才能更改该参数。
值范围: TRUE | FALSE
默认值: TRUE
参数名:dispatchers
类别:MTS
说明 : 为设置使用共享服务器的共享环境而设置调度程序的数量和类型。可以为该参数指定几个选项。有关详细信息,请参阅"Oracle8i 管理员指南"和"Oracle Net Administrators Guide"。这是字符串值的一个示例: (PROTOCOL=TCP)(DISPATCHERS=3)。
值范围: 参数的有效指定值。
默认值 : NULL
参数名:distributed_lock_timeout
类别:分布式、复制和快照
说明: 分布式事务处理将等待被锁定资源的时间 (以秒为单位)。此值在 8.1.3 版中已废弃。
值范围: 1 - 无限制。
默认值: 60 秒
参数名:dml_locks
类别:事务处理
说明: 所有用户获取的表锁的最大数量。对每个表执行 DML 操作均需要一个 DML 锁。例如, 如果 3 个用户修改 2 个表,就要求该值为 6。
值范围: 0 或 20 到无限制。
默认值: 4 * TRANSACTIONS (派生)
参数名:drs_start
类别:备用数据库
说明: 使 Oracle 可以确定是否应启动 DRMON 进程。DRMON 是一种不会导致致命错误的 Oracle 后台进程,只要例程存在, 该进程就存在。
值范围: TRUE | FALSE。
默认值: FALSE
参数名:enqueue_resources
类别:事务处理
说明: 入队可使并行进程能够共享资源。例如, Oracle 允许一个进程以共享模式锁定一个表, 以共享更新模式锁定另一个表。
值范围: 10 - 65535 (7.3) 或 10 - 无限制 (8.1)。
默认值: 派生 (该值大于 DML_LOCKS + 20 即已足够)
参数名:event
类别:诊断和统计
说明: Oracle Support Services 人员用来调试系统。通常不应该变更。
值范围: 不可用。
默认值: 无
参数名:fal_client
类别:备用数据库
说明: 指定供 FAL 服务 (通过 FAL_SERVER 参数配置) 来引用 FAL 客户机的 FAL客户机名称。该参数的值是一个 Oracle Net 服务名。此 Oracle Net 服务名被假定为已在 FAL 服务器系统上正确配置, 可指向 FAL 客户机 (即: 此备用数据库)。
值范围: Oracle Net 服务名的字符串值。
参数名:fast_start_io_target
类别:重做日志和恢复
说明: 指定在系统崩溃或例程恢复期间需要的 I/O 数量。该值比 DB_BLOCK_MAX_DIRTY_TARGET 对恢复过程的控制更加精确。
值范围: 0 (禁用 I/O 恢复限制) 或 1000, 到高速缓存中的所有缓冲区数。
默认值: 高速缓存中的所有缓冲区数
参数名:fast_start_mttr_target
类别:重做日志和恢复
说明: 指定从单个数据库例程崩溃中恢复所需的时间 (估计秒数)。FAST_START_MTTR_TARGET 将在内部被转换为一组参数, 用于修改数据库的操作, 从而将它的恢复时间控制在总 "恢复平均时间 (MTTR)" 中的一定范围之内。只有具有 "快速启动故障恢复" 功能的版本才支持此参数。值范围: [0, 3600]。它将计算数据缓冲区高速缓存条目数之上, 且大于最大日志中的块数的限值。
默认值: 0
参数名:fast_start_parallel_rollback
类别:事务处理
说明: 执行并行回退时确定进程的最大数量。在多数事务处理的运行时间都较长的系统上, 该值很有用。
值范围: FALSE | LOW | HIGH
默认值: LOW (2 * CPU_COUNT)
参数名:fixed_date
类别:其他
说明: SYSDATE 返回的数据。对于必须始终返回固定日期而非系统日期的测试,该值很有用。使用双引号或不使用引号。请勿使用单引号。
值范围: YYYY-MM-DD-HH24:MI:SS (或默认的 Oracle 日期格式)。
默认值: NULL
参数名:gc_files_to_locks
类别:群集数据库
说明: 一个群集数据库参数, 用于控制将并行高速缓存管理 (PCM) 锁映射到数据文件。
语法: GC_FILES_TO_LOCKS = file_list=lock_count[!blocks][R][EACH][:...]
默认值 : NULL
参数名:global_context_pool_size
类别:SGA内存
说明: 从 SGA 分配的用于存储和管理全局应用程序上下文的内存量。
值范围: 任意整数值。
默认值: 1 M
参数名:global_names
类别:分布式、复制和快照
说明: 指定是否要求数据库链接与所连接的数据库同名。如果该值为 FALSE, 则不执行检查。要使分布式处理中的命名约定一致,请将该参数设置为 TRUE。
值范围: TRUE | FALSE
默认值: TRUE
参数名:hash_area_size
类别:排序、散列联接、位图索引
说明: 与并行执行操作和 DML 或 DDL 语句相关。它以字节为单位, 指定要用于散列联接的最大内存量。有关详细信息,请参阅手册 Oracle8i Concepts。
值范围: 0 到根据操作系统而定的值。
默认值: 派生:2 * SORT_AREA_SIZE 参数值
参数名:hl_shared_memory_address
类别:SGA内存
说明: 指定系统全局区 (SGA) 的运行时起始地址。在指定 SGA 连接时起始地址的平台上, 该值被忽略。在 64 位平台上,请使用该值来指定高 32 位和低 32 位。如果不指定该值, 默认值是平台指定的位置。
值范围: 任何整数值。
默认值: 0
参数名:hs_autoregister
类别:分布式、复制和快照
说明: 启用或禁用"异构服务 (HS)"代理的自动自注册。如果启用, 信息将被上载到数据字典中, 以便在通过同一代理建立后续连接时降低开销。
值范围: TRUE | FALSE
默认值: TRUE
参数名:ifile
类别:其他
说明: 用于在当前参数文件中嵌入其他参数文件。您可以在一个参数文件的多个行上多次使用该参数, 但最多只能有三级嵌套。
值范围: 任何有效的参数文件名 (语法是 IFILE = parameter_file_name)。
默认值: NULL
参数名:instance_groups
类别:群集数据库
说明 : 一个群集数据库参数, 可以使用以逗号分隔的列表,把当前例程指定给特定组。为并行操作分配查询从属进程时要用到例程组。
值范围: 一系列组名, 由逗号分隔。
默认值 : NULL
参数名:instance_name
类别:例程识别
说明: 在多个例程使用相同服务名的情况下, 用来唯一地标识一个数据库例程。INSTANCE_NAME 不应与 SID 混淆,它实际上是对在一台主机上共享内存的各个例程的唯一标识。
值范围: 任何字母数字字符。
默认值: 数据库 SID
参数名:instance_number
类别:群集数据库
说明 : 一个群集数据库参数, 用于指定一个唯一编号, 以便将例程映射到一个使用 FREELIST GROUPS 存储参数创建的数据库对象所拥有的空闲列表中。在ALTER TABLE ... 的 INSTANCE 子句中使用该值。ALLOCATE EXTENT语句可以为该例程动态分配区。
值范围: 1 到 MAX_INSTANCES (创建数据库时指定)。
参数名:java_max_sessionspace_size
类别:进程和会话
说明: 以字节为单位, 指定可供在服务器中运行的 Java 程序所使用的最大内存量。它用于存储每次数据库调用的 Java 状态。如果用户的会话持续时间 Java 状态超过了该值, 则该会话会由于内存不足而终止。
值范围: 根据操作系统而定。
默认值: 0
参数名:java_pool_size
类别:池
说明: 以字节为单位, 指定 Java 存储池的大小, 它用于存储 Java 的方法和类定义在共享内存中的表示法,以及在调用结束时移植到 Java 会话空间的 Java 对象。有关详细信息, 请参阅 Oracle8i Java Developers Guide。
值范围: 根据操作系统而定。
默认值: 根据操作系统而定
参数名:java_soft_sessionspace_limit
类别:进程和会话
说明: 以字节为单位, 指定在 Java 会话中使用的 Java 内存 的 软限制。如果用户的会话持续时间 Java 状态使用过多的内存, Oracle 将生成一个警告并向跟踪文件写入一则消息。
值范围: 0 - 4GB
默认值: 0
参数名:job_queue_processes
类别:作业队列
说明: 只用于复制环境。它指定每个例程的 SNP 作业队列进程的数量 (SNP0, ... SNP9, SNPA, ... SNPZ)。要自动更新表快照或执行由 DBMS_JOB 创建的请求, 请将该参数设置为 1 或更大的值。
值范围: 0 到 36
默认值: 0
参数名:large_pool_size
类别:池
说明 : 指定大型池的分配堆的大小, 它可被共享服务器用作会话内存, 用作并行执行的消息缓冲区以及用作 RMAN备份和恢复的磁盘 I/O 缓冲区。
值范围: 600K (最小值); >= 20000M (最大值是根据操作系统而定的)。
默认值 : 0, 除非配置了并行执行或 DBWR_IO_SLAVES
参数名:license_max_sessions
类别:许可限制
说明: 指定允许同时进行的并行用户会话的最大数量。达到该限制后, 只有具有 RESTRICTED SESSION 权限的用户才能连接到服务器。所有其他用户都会收到一条警告消息, 表明已达到系统最大容量的限制。
值范围: 0 - 会话许可的数量。
默认值: 0
参数名:license_max_users
类别:许可限制
说明:指定您可在该数据库中创建的用户的最大数量。并行会话使用许可和用户使用许可不应被同时启用。LICENSE_MAX_SESSIONS 或 LICENSE_MAX_USERS 或这两者的值应为零。
值范围: 0 - 用户许可的数量。
默认值: 0
参数名:license_sessions_warning
类别:许可限制
说明: 指定对并行用户会话数量的警告限制。达到该限制后, 其他用户仍然可以连接, 但一条消息将被写入 ALERT 文件。具有RESTRICTED SESSION 权限的用户将收到一条警告消息, 表明系统已接近最大容量。
值范围: 0 - LICENSE_MAX_SESSIONS
默认值: 0
参数名: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)))
参数名:lock_name_space
类别:群集数据库
说明: 指定分布式锁管理器 (DLM) 用来生成锁名称的命名空间。如果同一个簇上存在一个同名的备用数据库或克隆数据库,最好设置该值。
值范围: 最多有 8 个字符, 不允许使用特殊字符。
默认值: NULL
参数名:lock_sga
类别:SGA内存
说明: 用于将整个 SGA 锁定在物理内存中。在不支持这种功能的平台上, 该值将被忽略。
值范围: TRUE | FALSE
默认值: FALSE
参数名:log_archive_dest
类别:归档
说明: 只适用于数据库正以"归档日志"模式运行的情况, 或正在从已归档的重做日志恢复数据库的情况。在 8.1 企业版中, 应使用 LOG_ARCHIVE_DEST_n。
值范围: 一个 NULL 字符串, 或者任何有效的路径或设备名, 原始分区除外。
默认值: NULL
参数名:log_archive_dest_1
类别:归档
说明: 五个本地 (指定 LOCATION) 或远程 (指定 SERVICE) 目标位置中的第一个,归档重做日志文件可以在这些目标位置上被复制。该参数只在企业版 oracle8i 数据库或更高版本的数据库中有效。
值范围: 语法为 (null_string | SERVICE=tnsnames-service | LOCATION=directory-spec)[MANDATORY | OPTIONAL][REOPEN=integer]
默认值: NULL
参数名:log_archive_dest_2
类别:归档
说明: 五个本地 (指定 LOCATION) 或远程 (指定 SERVICE) 目标位置中的第二个,归档重做日志文件可以在这些目标位置上被复制。该参数只在企业版 oracle8i 数据库或更高版本的数据库中有效。
值范围: 语法为 (null_string | SERVICE=tnsnames-service | LOCATION=directory-spec)[MANDATORY | OPTIONAL][REOPEN=integer]
默认值: NULL
参数名:log_archive_dest_3
类别:归档
说明: 五个本地 (指定 LOCATION) 或远程 (指定 SERVICE) 目标位置中的第三个,归档重做日志文件可以在这些目标位置上被复制。该参数只在企业版 oracle8i 数据库或更高版本的数据库中有效。
值范围: 语法为 (null_string | SERVICE=tnsnames-service | LOCATION=directory-spec)[MANDATORY | OPTIONAL][REOPEN=integer]
默认值: NULL
参数名:log_archive_dest_state_1
类别:归档
说明: 指定相应的归档日志目标参数 (仅 LOG_ARCHIVE_DEST_1) 的可用性状态。如果启用,日志目标将被归档。如果延迟, 该目标将被排除在归档操作之外直至重新启用。
值范围: ENABLE | DEFER
默认值: ENABLE
参数名:log_archive_dest_state_2
类别:归档
说明: 指定相应的归档日志目标参数 (仅 LOG_ARCHIVE_DEST_2) 的可用性状态。如果启用,日志目标将被归档。如果延迟, 该目标将被排除在归档操作之外直至重新启用。
值范围: ENABLE | DEFER
默认值: ENABLE
参数名: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_min_succeed_dest
类别:归档
说明: 定义在可以覆盖日志文件前必须将其复制到的目标的最小数量。该值应大于或等于 LOG_ARCHIVE_DEST_n 中MANDATORY 目标的数量。
值范围: 1 - 5 (如果与 LOG_ARCHIVE_DEST 和 LOG_ARCHIVE_DUPLEX_DEST 共同使用, 则限制在 1-2)。
默认值: 1
参数名:log_archive_start
类别:归档
说明: n只在数据库处于"归档日志"模式的情况下适用。它指定重做日志是自动还是手动复制。建议值是 TRUE, 即执行自动归档;否则就需要手动干预, 使用ALTER SYSTEM ARCHIVE LOG ... 命令来阻止例程挂起。
值范围: TRUE | FALSE
默认值: FALSE
参数名:log_archive_trace
类别:归档
说明: 控制归档日志进程生成的输出。此进程可以通过下列方式启动ARCn 后台进程 (在输出日志中指定为 ARCn)明确的会话调用的前台进程 (在输出日志中指定为 ARCH) 或"受管备用数据库"的远程文件服务器 (RFS) 进程。
值范围:
0: 禁用归档日志跟踪 (这是默认设置)
1: 重做日志文件的追踪归档
2: 每个归档日志目标的追踪归档状态
4: 追踪归档操作阶段
8: 追踪归档日志目标活动
16: 追踪详细的归档日志目标活动
32: 追踪归档日志目标参数修改
64: 追踪 ARCn 进程状态活动
默认值: 0
参数名:log_buffer
类别:重做日志和恢复
说明: 以字节为单位, 指定在 LGWR 将重做日志条目写入重做日志文件之前,用于缓存这些条目的内存量。重做条目保留对数据库块所作更改的一份记录。如果该值大于 65536, 就能减少重做日志文件 I/O, 特别是在有长时间事务处理或大量事务处理的系统上。
值范围: 根据操作系统而定。
默认值: 最大值为 500K 或 128K * CPU_COUNT, 两者之中取较大者
参数名:log_checkpoint_interval
类别:重做日志和恢复
说明: 指定在出现检查点之前, 必须写入重做日志文件中的 OS 块 (而不是数据库块) 的数量。无论该值如何,在切换日志时都会出现检查点。较低的值可以缩短例程恢复所需的时间, 但可能导致磁盘操作过量。
值范围: 无限制 (指定 0 即可禁用该参数)。
默认值: 根据操作系统而定
参数名:log_checkpoint_timeout 类别:重做日志和恢复
说明: 指定距下一个检查点出现的最大时间间隔 (秒数)。将该时间值指定为 0,将禁用以时间为基础的检查点。较低的值可以缩短例程恢复的时间, 但可能导致磁盘操作过量。
值范围: 0 - 无限制。
默认值: Oracle8i:900 秒。企业版: 1800 秒
参数名:log_checkpoint_to_alert 类别:重做日志和恢复
说明: 指定将检查点信息记录到预警文件中。该参数对于确定检查点是否按所需频率出现很有用。
值范围: TRUE | FALSE
默认值: FALSE
参数名:log_file_name_convert 类别:备用数据库
说明: 将主数据库上的一个日志文件的文件名转换为备用数据库上对等的路径和文件名。将一个日志文件添加到一个主数据库后,必须将一个相应的文件添加到备用数据库中。该参数替代 Oracle7 中的 LOG_FILE_NAME_CONVERT参数。
值范围: 任何格式为 主体日志文件的路径/文件名 和 备用日志文件的路径/文件名 的有效路径/文件名
默认值: NULL
参数名:max_commit_propagation_delay 类别:群集数据库
说明 : 一个群集数据库参数, 用于指定一个例程的 SGA 中所包含的系统更改编号 (SCN) 被 LGWR 刷新之前,允许保留的最长时间 (以 1/100 秒为单位)。这是一个极少需要改动的性能参数, 因为 SCN可能不会以时间为依据进行刷新。
值范围: 0 - 90000
默认值 : 700
参数名:max_dispatchers 类别:MTS
说明 : 指定在一个共享服务器环境中可同时运行的调度程序进程的最大数量。
值范围: 根据操作系统而定。
默认值 : 如果已配置了调度程序, 则默认值为大于 5 的任何数目或配置的调度程序的数目
参数名:max_dump_file_size 类别:MTS
说明: 指定每个跟踪文件的最大大小。如果您担心跟踪文件会占用太多空间, 可更改该限制。如果转储文件可以达到操作系统允许的最大大小,请将该值指定为"无限制"。
值范围: 0 - 无限制 (可以用 K 或 M 为单位)
默认值: 10000 块
参数名:max_enabled_roles 类别:安全性和审计
说明: 指定一个用户可以启用的数据库角色 (包括子角色) 的最大数量。用户可启用的角色的实际数量是 2 加上MAX_ENABLED_ROLES 的值, 因为每个用户都有两个附加的角色: PUBLIC 和用户自己的角色。
值范围: 0 -148
默认值: 20
参数名:max_shared_servers
类别:MTS
说明 : 指定在一个共享服务器环境中可同时运行的共享服务器进程的最大数量。
值范围: 根据操作系统而定。
默认值 : 20
参数名:nls_calendar
类别:NLS
说明: 指定 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
参数名:nls_comp
类别:NLS
说明: 在 SQL 语句中, 应避免使用繁琐的 NLS_SORT 进程。正常情况下,WHERE 子句中进行的比较是二进制的, 但语言比较则需要 NLSSORT 函数。可以使用 NLS_COMP 指定必须根据 NLS_SORT 会话参数进行语言比较。
值范围: Oracle8i National Language Support Guide 中指定的任何有效的 10 字节字符串。
默认值: BINARY
参数名:nls_currency
类别:NLS
说明: 为 L 数字格式元素指定用作本地货币符号的字符串。该参数的默认值由 NLS_TERRITORY 确定。
值范围: Oracle8i National Language Support Guide 中指定的任何有效的 10 字节字符串。
默认值: 从 NLS_TERRITORY 中获得
参数名:nls_date_format
类别:NLS
说明: 指定与 TO_CHAR 和 TO_DATE 函数一同使用的默认日期格式。该参数的默认值由 NLS_TERRITORY 确定。该参数的值可以是包含在双引号内的任何有效的日期格式掩码。例如: MMM/DD/YYYY。
值范围: 任何有效的日期格式掩码, 但不得超过一个固定长度。
默认值: 派生
参数名:nls_date_language
类别:NLS
说明: 指定拼写日期名, 月名和日期缩写词 (AM, PM, AD, BC) 的语言。该参数的默认值是由 NLS_LANGUAGE 指定的语言。
值范围: 任何有效的 NLS_LANGUAGE 值。
默认值: NLS_LANGUAGE 的值
参数名:nls_dual_currency
类别:NLS
说明: 用于覆盖 NLS_TERRITORY 中定义的默认双重货币符号。如果不设置该参数, 就会使用默认的双重货币符号; 否则就会启动一个值为双重货币符号的新会话。
值范围: 任何有效的格式名。
默认值: 双重货币符号
参数名:nls_iso_currency
类别:NLS
说明: 为 C 数字格式元素指定用作国际货币符号的字符串。该参数的默认值由 NLS_TERRITORY 确定。
值范围: 任何有效的 NLS_TERRITORY 值。
默认值: 从 NLS_TERRITORY 中获得
参数名:nls_language
类别:NLS
说明: 指定数据库的默认语言, 该语言将用于消息, 日期和月份名, AD, BC, AM 和 PM 的符号, 以及默认的排序机制。可支持的语言包括英语, 法语和日语等等。
值范围: 任何有效的语言名。
默认值: 根据操作系统而定
参数名:nls_length_semantics
类别:NLS
说明: 使用字节或码点语义来指定新列的创建, 如 char, varchar2, clob, nchar, nvarchar2, nclob 列。各种字符集对字符都有各自的定义。在客户机和服务器上使用同一字符集时, 应以该字符集所定义的字符来衡量字符串。现有的列将不受影响。
值范围: BYTE 或 CHAR。
默认值: nls_length_semantics 的数据库字符集的字符所使用的度量单位。BYTE。
参数名:nls_nchar_conv_excp
类别:NLS
说明: (如果值为 TRUE) 当在隐式转换中丢失数据时返回错误的参数。
值范围: FALSE | TRUE
默认值: TRUE
参数名:nls_numeric_characters
类别:NLS
说明: 指定将用作组分隔符和小数位的字符。组分隔符就是用来分隔整数位组 (如千, 百万等等) 的字符。小数分隔符用来将一个数字的整数部分与小数部分分隔开。其格式是<decimal_character><group_separator>。
值范围: 任何单字节字符, +, -, <, > 除外。
默认值: 从 NLS_TERRITORY 中获得
参数名:nls_sort 类别:NLS
说明: 指定 ORDER BY 查询的比较顺序。对于二进制排序, ORDER BY 查询的比较顺序是以数值为基础的。对于语言排序, 则需要进行全表扫描, 以便将数据按照所定义的语言排序进行整理。
值范围: BINARY 或有效的语言定义名。
默认值: 从 NLS_LANGUAGE 中获得
参数名:nls_territory
类别:NLS
说明: 为以下各项指定命名约定, 包括日期和星期的编号, 默认日期格式, 默认小数点字符和组分隔符, 以及默认的 ISO 和本地货币符号。可支持的区域包括美国, 法国和日本。有关所有区域的信息, 请参阅 Oracle8i National Language Support Guide。
值范围: 任何有效的地区名。
默认值: 根据操作系统而定
参数名:nls_time_format
类别:NLS
说明: 指定一个字符串值, 设置 TIME 数据类型的默认值, 该数据类型包含 HOUR, MINUTE 和 SECOND 这几个日期时间字段。
语法: TIME 09:26:50 (将值存储为 7 个字节)。
默认值: 从 NLS_TERRITORY 中获得
参数名:nls_time_tz_format
类别:NLS
说明: 指定一对值 (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_timestamp_format
类别:NLS
说明: 与 NLS_TIME_FORMAT 相似, 只不过它设置的是 TIMESTAMP 数据类型的默认值, 该数据类型既存储 YEAR, MONTH 和 DAY 这几个日期值, 也存储 HOUR, MINUTE 和 SECOND 这几个时间值。
语法: TIMESTAMP 1997-01-31 09:26:50.10 (将值存储为 11 个字节)。
默认值: 从 NLS_TERRITORY 中获得
参数名:nls_timestamp_tz_format
类别:NLS
说明: 与 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 中获得
参数名:object_cache_max_size_percent
类别:对象和LOB
说明: 指定会话对象的高速缓存增长可超过最佳高速缓存大小的百分比,最大大小等于最佳大小加上该百分比与最佳大小的乘积。如果高速缓存大小超过了这个最大大小, 系统就会尝试将高速缓存缩小到最佳大小。
值范围: 0 到根据操作系统而定的最大值。
默认值: 10
参数名:object_cache_optimal_size
类别:对象和LOB
说明: 指定在高速缓存超过最大大小的情况下, 会话对象高速缓存将被缩小到的大小。
值范围: 10K 到根据操作系统而定的最大值。
默认值: 100K
参数名:open_cursors
类别:游标和库高速缓存
说明: 指定一个会话一次可以打开的游标 (上下文区域) 的最大数量, 并且限制 PL/SQL 使用的 PL/SQL 游标高速缓存的大小, 以避免用户再次执行语句时重新进行语法分析。请将该值设置得足够高, 这样才能防止应用程序耗尽打开的游标。
值范围: 1 - 操作系统限制值。
默认值: 64
参数名:open_links
类别:分布式、复制和快照
说明: 指定在一次会话中同时打开的与远程数据库的连接的最大数量。该值应等于或超过一个引用多个数据库的单个 SQL 语句中引用的数据库的数量, 这样才能打开所有数据库以便执行该语句。
值范围: 0 - 255 (如果为 0, 不允许分布式事务处理)。
默认值: 4
参数名:open_links_per_instance
类别:分布式、复制和快照
说明: 指定 XA 应用程序中可移植的打开连接的最大数量。XA 事务处理使用可移植的打开的连接,以便在提交一个事务处理后能将这些连接高速缓存。如果创建连接的用户就是拥有事务处理的用户, 各事务处理则可共享连接。
值范围: 0 - UB4MAXVAL
默认值: 4
参数名: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
参数名:optimizer_index_caching
类别:优化程序
说明: 调整基于成本的优化程序的假定值,即在缓冲区高速缓存中期望用于嵌套循环联接的索引块的百分比。它将影响使用索引的嵌套循环联接的成本。将该参数设置为一个较高的值,可以使嵌套循环联接相对于优化程序来说成本更低。
值范围: 0 - 100 。
默认值: 0
参数名:optimizer_index_cost_adj
类别:优化程序
说明: 在考虑太多或太少索引访问路径的情况下, 可以用来优化优化程序的性能。该值越低, 优化程序越容易选择一个索引。也就是说,如果将该值设置为 50, 索引访问路径的成本就是正常情况下的一半。
值范围: 1 -10000
默认值: 100 (一个索引访问路径的常规成本)
参数名:optimizer_mode
类别:优化程序
说明: 指定优化程序的行为。如果设置为 RULE, 就会使用基于规则的优化程序, 除非查询含有提示。如果设置为 CHOOSE, 就会使用基于成本的优化程序, 除非语句中的表不包含统计信息。ALL_ROWS 或 FIRST_ROWS 始终使用基于成本的优化程序。
值范围: RULE | CHOOSE | FIRST_ROWS | ALL_ROWS
默认值: CHOOSE
参数名:os_authent_prefix
类别:安全性和审计
说明: 使用用户的操作系统帐户名和口令来验证连接到服务器的用户。该参数的值与各用户的操作系统帐户连接在一起。要去除 OS 帐户前缀,请指定空值。
值范围: 任何标识符。
默认值: 根据操作系统而定 (通常是 OPS$)
参数名:os_roles
类别:安全性和审计
说明: 确定操作系统或数据库是否为每个用户标识角色。如果设置为 TRUE, 将由操作系统完全管理对所有数据库用户的角色授予。否则,角色将由数据库标识和管理。
值范围: TRUE | FALSE
默认值: FALSE
参数名:parallel_adaptive_multi_user
类别:并行执行
说明: 启用或禁用一个自适应算法, 旨在提高使用并行执行方式的多用户环境的性能。通过按系统负荷自动降低请求的并行度, 在启动查询时实现此功能。当 PARALLEL_AUTOMATIC_TUNING = TRUE 时, 其效果最佳。
值范围: TRUE | FALSE
默认值: 如果 PARALLEL_AUTOMATIC_TUNING = TRUE, 则该值为 TRUE; 否则为 FALSE
参数名:parallel_utomatic_tuning 类别:并行执行
说明: 如果设置为 TRUE, Oracle 将为控制并行执行的参数确定默认值。除了设置该参数外, 你还必须为系统中的表设置并行性。
值范围: TRUE | FALSE
默认值: FALSE
参数名:parallel_execution_message_size
类别:并行执行
说明: 指定并行执行 (并行查询, PDML, 并行恢复和复制) 消息的大小。如果值大于 2048 或 4096, 就需要更大的共享池。如果 PARALLEL_AUTOMATIC_TUNING = TRUE, 将在大存储池之外指定消息缓冲区。
值范围: 2148 - 无穷大。
默认值: 如果 PARALLEL_AUTOMATIC_TUNING 为 FALSE, 通常值为 2148; 如果 PARALLEL_AUTOMATIC_TUNING 为 TRUE, 则值为 4096 (根据操作系统而定)。
参数名:parallel_instance_group
类别:群集数据库
说明 : 一个群集数据库参数, 标识用来大量产生并行执行从属的并行例程组。并行操作只对在其 INSTANCE_GROUPS参数中指定一个匹配组的例程大量产生并行执行从属。
值范围: 一个代表组名的字符串。
默认值 : 由所有当前活动例程构成的组
参数名:parallel_max_servers
类别:并行执行
说明: 指定一个例程的并行执行服务器或并行恢复进程的最大数量。如果需要, 例程启动时分配的查询服务器的数量将增加到该数量。
值范围: 0 -256
默认值: 由 CPU_COUNT, PARALLEL_AUTOMATIC_TUNING 和 PARALLEL_ADAPTIVE_MULTI_USER 确定
参数名:parallel_max_percent
类别:并行执行
说明: 指定并行执行要求的线程的最大百分比。设置该参数, 可以确保并行执行在没有可用的恰当查询从属进程时, 会显示一个错误消息,并且该查询会因此而不予执行。
值范围: 0 -100
默认值: 0, 表示不使用该参数。
参数名:parallel_min_percent
类别:并行执行
说明: 指定并行执行要求的线程的最小百分比。设置该参数, 可以确保并行执行在没有可用的恰当查询从属进程时, 会显示一个错误消息, 并且该查询会因此而不予执行。
值范围: 0 -100
默认值: 0, 表示不使用该参数。
参数名:parallel_min_servers
类别:并行执行
说明: 指定为并行执行启动例程后, Oracle 创建的查询服务器进程的最小数量。
值范围: 0 - PARALLEL_MAX_SERVERS。
默认值: 0
参数名:parallel_server
类别:群集数据库
说明 : 将 PARALLEL_SERVER 设置为 TRUE, 可以启用群集数据库选项。
值范围: TRUE | FALSE
默认值 : FALSE
参数名:parallel_server_instance
类别:群集数据库
说明: 当前已配置的例程的数量。它用于确定 SGA 结构的大小, 该结构由已配置的例程数量来确定。正确设置该参数将改善 SGA 的内存使用情况。 有几个参数是用该数量计算得到的。
值范围: 任何非零值。
默认值: 1
参数名:parallel_threads_per_cpu
类别:并行执行
说明: 说明一个 CPU 在并行执行过程中可处理的进程或线程的数量, 并优化并行自适应算法和负载均衡算法。如果计算机在执行一个典型查询时有超负荷的迹象, 应减小该数值。
值范围: 任何非零值。
默认值: 根据操作系统而定 (通常为 2)
参数名:pga_aggregate_target
类别:排序、散列联接、位图索引
说明: 指定连接到例程的所有服务器进程的目标 PGA 总内存。请在启用自动设置工作区之前将此参数设置为一个正数。这部分内存不驻留在SGA 中。数据库将此参数值用作它所使用的目标 PGA 内存量。设置此参数时, 要将 SGA 从可用于 Oracle例程的系统内存总量中减去。然后可将剩余内存量分配给 pga_aggregate_target。
值范围: 整数加字母 K, M 或 G, 以将此限值指定为千字节, 兆字节或千兆字节。最小值为 10M, 最大值为 4000G
默认值: "未指定", 表示完全禁用对工作区的自动优化。
参数名:plsql_compiler_flags
类别:PL/SQL
说明: 由 PL/SQL 编译程序使用。它将编译程序标志列表指定为一个用逗号分隔的字符串列表。
值范围: native (PL/SQL 模块将按本机代码来编译), interpreted (然后 PL/SQL 模块将被编译为 PL/SQL 字节代码格式), debug (PL/SQL 模块将用探测调试符号来编译), non_debug。
默认值: " interpreted, non_debug "
参数名:plsql_native_library_dir
类别:PL/SQL
说明: 由 PL/SQL 编译程序使用。它指定目录名, 其中存储了本机编译程序生成的共享对象。
范围值: 目录名。
默认值: 无
参数名:plsql_v2_compatibility
类别:PL/SQL
说明: 设置 PL/SQL 兼容级。如果设置为 FALSE, 将执行 PL/SQL V3 行为, 而不允许 V2 行为;否则在运行 PL/SQL V3 时将接受某些 PL/SQL V2 行为。
值范围: TRUE | FALSE
默认值: FALSE
参数名:pre_page_sga
类别:SGA内存
说明: 一个根据平台而定的参数, 如果该参数为 TRUE, 将把所有 SGA 页装载到内存中,以便使该例程迅速达到最佳性能状态。这将增加例程启动和用户登录的时间, 但在内存充足的系统上能减少缺页故障的出现。
值范围: TRUE | FALSE
默认值: FALSE
参数名:processes
类别:进程和会话
说明: 指定可同时连接到一个 Oracle Server 上的操作系统用户进程的最大数量。该值应允许执行所有后台进程, 如:作业队列 (SNP) 进程和并行执行 (Pnnn) 进程。
值范围: 6 到根据操作系统而定的一个值。
默认值: 由 PARALLEL_MAX_SERVERS 确定
参数名:query_rewrite_enabled
类别:优化程序
说明: 启用或禁用对实体化视图的查询重写。一个特定实体化视图只在如下条件下启用: 会话参数和单独实体化视图均已启用,并且基于成本的优化已启用。
值范围: TRUE | FALSE
默认值: FALSE
参数名:query_rewrite_integrity
类别:优化程序
说明: Oracle Server 执行的查询重写的程度。如果设置为 ENFORCED, Oracle将保证其一致性和完整性。如果设置为 TRUSTED, 将使用明确声明的关系来允许重写。如果设置为 STALE_TOLERATED, 即使实体化视图与基础数据不一致, 也仍可以进行重写。
值范围: ENFORCED, TRUSTED, STALE_TOLERATED
默认值: ENFORCED
参数名:rdbms_server_dn
类别:安全性和审计
说明: RDBMS 服务器的唯一判别名。它用于在一个企业目录服务中检索企业角色。有关详细信息, 请参阅"Oracle Advanced Security Administrators Guide"。
值范围: 所有 X.500 唯一判别名格式值。
默认值: 无
参数名:read_only_open_delayed
类别:高速缓存和I/O
说明: 用于加速某些操作, 如: 启动一个很大的数据库而其中大多数数据存储在只读的表空间中。如果设置为 TRUE, 从表空间中读取数据时, 将首先访问只读表空间中的数据文件。有关可能产生的副作用, 请参阅 Server Referencemanual。
值范围: TRUE | FALSE
默认值: FALSE
参数名:recovery_parallelism
类别:重做日志和恢复
说明: 指定参与例程或介质恢复的进程的数量。如果值为 0 或 1, 就表明恢复将由一个进程以串行方式执行。
值范围: 根据操作系统而定 (不能超过 PARALLEL_MAX_SERVERS)。
默认值: 根据操作系统而定
参数名:remote_archive_enable
类别:备用数据库
说明: 控制是否可向远程目标执行重做日志文件归档操作。必须将该参数值设置为 "TRUE", 以便 Oracle数据库例程对重做日志文件进行远程归档, 并且/或者接收远程归档的重做日志文件。
值范围: FALSE | TRUE
默认值: TRUE
参数名:remote_dependencies_mode
类别:PL/SQL
说明: 用于指定数据库为远程 PL/SQL 存储的过程处理被依赖对象的方式。如果设置为 TIMESTAMP,只有在服务器与本地时间戳相匹配的情况下, 才能执行该过程。如果设置为 SIGNATURE,在签名安全的情况下即可执行该过程。
值范围: TIMESTAMP | SIGNATURE
默认值: TIMESTAMP
参数名:remote_login_passworkfile
类别:安全性和审计
说明: 指定操作系统或一个文件是否检查具有权限的用户的口令。如果设置为 NONE, Oracle 将忽略口令文件。如果设置为EXCLUSIVE, 将使用数据库的口令文件对每个具有权限的用户进行验证。如果设置为 SHARED, 多个数据库将共享SYS 和 INTERNAL 口令文件用户。
值范围:NONE | SHARED | EXCLUSIVE
默认值: NONE
参数名:remote_os_authent
类别:安全性和审计
说明: 将 REMOTE_OS_AUTHENT 设置为 TRUE, 允许使用 OS_AUTHENT_PREFIX的值来验证远程客户机。
值范围: TRUE | FALSE
默认值: FALSE
参数名:remote_os_roles
类别:安全性和审计
说明: 将 REMOTE_OS_ROLES 设置为 TRUE, 允许由远程客户机的操作系统来分配角色。如果设置为 FALSE, 则由远程客户机的数据库来识别和管理角色。
值范围: TRUE | FALSE
默认值: FALSE
参数名:replication_dependency_tracking
类别:分布式、复制和快照
说明: 跟踪相关性对复制服务器以并行方式传播所作的更改至关重要。如果设置为 FALSE, 数据库上的读/写操作将运行得更快, 但无法为复制服务器产生并行传播的相关性信息。
值范围: TRUE | FALSE
默认值: TRUE (即启用读/写相关性跟踪)
参数名:resource_limit
类别:资源管理器
说明: 确定是否在数据库概要文件中实行资源限制。如果设置为 FALSE, 将禁用资源限制。如果值为 TRUE, 即启用资源限制。
值范围: TRUE | FALSE
默认值: FALSE
参数名:resource_manager_plan
类别:资源管理器
说明: 如果指定该值, 资源管理器将激活计划和例程的所有子项 (子计划, 指令和使用者组)。如果不指定, 资源管理器将被禁用, 但使用ALTER SYSTEM 命令还可以启用。
值范围: 任何有效的字符串。
默认值: NULL
参数名:rollback_segments
类别:系统管理的还原和回退段
说明: 指定要在例程启动过程中获取的一个或多个回退段, 即使其数量超过了 TRANSACTIONS /TRANSACTIONS_PER_ROLLBACK_SEGMENT 的值。公式为 ROLLBACK_SEGMENTS =(rbseg_name [, rbseg_name] ...)
值范围:除 SYSTEM 外, DBA_ROLLBACK_SEGS 中列出的任何回退段。
默认值: NULL (默认情况下使用公用回退段)
参数名:serial_reuse
类别:游标和库高速缓存
说明: 指定何种类型的 SQL 游标应利用串行可重用内存功能。如果 CURSOR_SPACE_FOR_TIME = TRUE,那么 SERIAL_REUSE 值将被忽略, 当作被设置为DISABLE 或 NULL 的情况处理。
值范围: DISABLE | SELECT | DML | PLSQL | ALL | NULL
默认值: NULL
参数名:service_names
类别:网络注册
说明 : 为 Oracle Net 监听程序用来识别一个服务 (如: 复制环境中的一个特定数据库)的例程指定服务名。如果该服务没有域, 将附加 DB_DOMAIN 参数。
语法: SERVICE_NAMES = name1.domain, name2.domain
默认值: DB_NAME.DB_DOMAIN (如果已定义)
参数名:session_cached_cursors
类别:游标和库高速缓存
说明: 指定要高速缓存的会话游标的数量。对同一 SQL 语句进行多次语法分析后,它的会话游标将被移到该会话的游标高速缓存中。这样可以缩短语法分析的时间, 因为游标被高速缓存, 无需被重新打开。
值范围: 0 到根据操作系统而定的值。
默认值: 0
参数名:session_max_open_files
类别:对象和LOB
说明: 指定可在任一给定会话中打开的 BFILE 的最大数量。一旦达到这个数量,此后将无法在该会话中打开更多文件。该参数还取决于操作系统参数 MAX_OPEN_FILES。
值范围: 1 - 至少为 (50, OS 级上的 MAX_OPEN_FILES)。
默认值: 10
参数名:sessions
类别:进程和会话
说明: 指定用户会话和系统会话的总量。默认数量大于 PROCESSES, 以允许递归会话。
值范围: 任何整数值。
默认值: 派生 (1.1 * PROCESSES + 5)
参数名:sga_max_size
类别:SGA内存
说明: 指定例程存活期间所占用的系统全局区的最大大小。
值范围: 0 到各操作系统所允许的最大值。请注意, 由于该参数值的最小值在启动时已经调整完毕, 因而它无关紧要。
默认值: 如果未指定值, sga_max_size 的默认值将与启动时 SGA 的最初大小 (比如说 X) 相同。该大小取决于 SGA 中各种池的大小, 如缓冲区高速缓存, 共享池, 大型池等。如果指定的值小于 X, 则所使用的 sga_max_size 的值将为 X。也就是说, 它是 X 与用户指定的 sga_max_size 值两者之间的较大
参数名:shadow_core_dump
类别:诊断和统计
说明: 一个针对 UNIX 的参数, 用于指定是否将 SGA 信息转储到一个生成的核心文件中。如果设置为 FULL, SGA将被包括在核心转储中。如果设置为 PARTIAL, SGA 将不被转储。
值范围: FULL | PARTIAL
默认值: FULL
参数名:shared_memory_address
类别:SGA内存
说明: SHARED_MEMORY_ADDRESS 和 HI_SHARED_MEMORY_ADDRESS 指定运行时 SGA的起始地址。许多平台在链接时间指定 SGA 起始地址, 在这类平台上这些参数将被忽略。如果两个参数都设置为 0 或NULL, 那么地址将根据平台而定。
值范围: 任何整数值。
默认值: 0
参数名:shared_pool_reserved_size
类别:池
说明: 指定要为较大连续共享池内存请求而保留的空间,以避免由碎片引起的性能下降。该池的大小应符合这样的条件:能存储为防止对象从共享池刷新而普遍要求的所有大型过程和程序包。
值范围: SHARED_POOL_RESERVED_MIN_ALLOC 到 SHARED_POOL_SIZE 的一半 (字节)。
默认值: SHARED_POOL_SIZE 值的 5
参数名:shared_pool_size
类别:池
说明: 以字节为单位, 指定共享池的大小。共享池包含如: 共享游标, 存储的过程,控制结构和并行执行消息缓冲区等对象。较大的值能改善多用户系统的性能。
值范围:300 KB - 根据操作系统而定。
默认值: 如果是 64 位操作系统, 值为 64MB; 其他情况下, 值为 16MB。
参数名:shared_server_sessions
类别:MTS
说明 : 指定允许的共享服务器体系结构用户会话的总数。设置此参数可为专用服务器保留一些用户会话。
值范围: 0 到 SESSIONS - 5
默认值 : 派生: MTS_CIRCUITS 和 SESSIONS - 5 两者中的较小值
参数名:shared_servers
类别:MTS
说明 : 指定在启动例程后, 要为共享服务器环境创建的服务器进程的数量。
值范围: 根据操作系统而定。
默认值 : 1
参数名:sort_area_retained_size
类别:排序、散列联接、位图索引
说明: 以字节为单位, 指定在一个排序运行完毕后保留的用户全局区 (UGA) 内存量的最大值。最后一行从排序空间中被提取后, 该内存将被释放回 UGA, 而不是释放给操作系统。
值范围: 从相当于两个数据库块的值到 SORT_AREA_SIZE 的值。
默认值: SORT_AREA_SIZE 的值
参数名:sort_area_size
类别:排序、散列联接、位图索引
说明: SORT_AREA_SIZE 以字节为单位, 指定排序所使用的最大内存量。排序完成后, 各行将返回,并且内存将释放。增大该值可以提高大型排序的效率。如果超过了该内存量, 将使用临时磁盘段。
值范围: 相当于 6 个数据库块的值 (最小值) 到操作系统确定的值 (最大值)。
默认值: 根据操作系统而定
参数名:spfile
类别:其他
说明: 指定当前使用的服务器参数文件的名称。
值范围: 静态参数
默认值: SPFILE 参数可在客户端 PFILE 中定义, 以指明要使用的服务器参数文件的名称。服务器使用默认服务器参数文件时, SPFILE 的值要由服务器在内部设置。
参数名:sql92_security
类别:安全性和审计
说明: 指定要执行更新或删除引用表列值是否需要具有表级的SELECT 权限。
值范围: TRUE | FALSE
默认值: FALSE
参数名:sql_trace
类别:诊断和统计
说明: 禁用或启用 SQL 跟踪设备。如果设置为 TRUE, 将收集优化信息, 这些信息对改善性能很有用。由于使用 SQL跟踪设备将引发系统开销, 只应在需要优化信息的情况下使用 TRUE。
值范围: TRUE | FALSE
默认值: FALSE
参数名:standby_archive_dest
类别:备用数据库
说明: 指定来自一个主例程的归档日志的到达位置。STANDBY_ARCHIVE_DEST 和 LOG_ARCHIVE_FORMAT用于在备用位置上虚拟完全合格的归档日志文件名。备用数据库上的 RFS 服务器将使用该值, 而不是ARCHIVE_LOG_DEST。
值范围: NULL 字符串或非 RAW 类型的有效路径/设备名。
默认值: NULL
参数名:star_transformation_enabled
类别:优化程序
说明: 确定基于成本的查询转换是否将被应用到星型查询中。如果设置为 TRUE, 优化程序将考虑将基于成本的转换应用于星型查询中; 如果设置为 FALSE, 将不使用任何转换; 如果设置为 TEMP_DISABLE, 将考虑查询转换, 但不使用临时表。
值范围: TRUE | FALSE | TEMP_DISABLE
默认值: FALSE
参数名:tape_asynch_io
类别:备份和复原
说明: 用于控制对顺序设备的 I/O 操作 (例如, 将 Oracle 数据备份或复原到磁带上, 或从磁带上备份或复原Oracle 数据) 是否异步。只有在您的平台支持对顺序设备的异步 I/O 操作的情况下, 将该值设置为 TRUE 才有效; 如果异步 I/O 的执行情况不稳定, 请将该值设置为 FALSE。
值范围: TRUE | FALSE
默认值: FALSE
参数名:thread
类别:群集数据库
说明 : 一个群集数据库参数, 用于为每个例程指定一个唯一的重做线程号。在例程的重做线程被禁用的情况下, 该例程无法启动。如果该值为零, 就表示有一个已启用的公用线程可供选择。
值范围: 0 - 已启用线程的最大数量。
默认值 : 0
参数名:timed_os_statistics
类别:诊断和统计
说明 : 由系统管理员使用, 以收集操作系统统计信息。为了有效地使用资源, 请只在需要时才设置该值。对于专用服务器,会在用户连接, 断开连接以及弹出调用 (如果超出了指定的时间限制) 的情况下收集操作系统统计信息。对于共享服务器, 将为推入或弹出的调用收集统计信息。
值范围: 以秒为单位的时间。
默认值 : 0 (操作系统统计信息不被刷新)
参数名:timed_statistics
类别:诊断和统计
说明: 收集操作系统的计时信息, 这些信息可被用来优化数据库和 SQL 语句。要防止因从操作系统请求时间而引起的开销, 请将该值设置为零。将该值设置为 TRUE 对于查看长时间操作的进度也很有用。
值范围: TRUE | FALSE
默认值: FALSE
参数名:transactions
类别:事务处理
说明: 指定并行事务处理的最大数量。如果将该值设置得较大, 将增加 SGA 的大小,并可增加例程启动过程中分配的回退段的数量。默认值大于 SESSIONS, 以实现递归事务处理。
值范围: 一个数值。
默认值: 派生 (1.1 * SESSIONS)
参数名:transactions_per_rollback_segment
类别:系统管理的还原和回退段
说明: 指定每个回退段允许的并行事务处理的数量。启动时获取的回退段的最小数量为 TRANSACTIONS 除以该参数值的结果。如果在参数 ROLLBACK_SEGMENTS 中命名了其他回退段, 就可以获取这些回退段。
值范围: 1 - 根据操作系统而定。
默认值: 5
参数名:undo_management
类别:系统管理的还原和回退段
说明: 指定系统应使用哪种还原空间管理模式。如果设置为 AUTO, 例程将以 SMU 模式启动。否则将以 RBU 模式启动。在 RBU 模式下, 还原空间会象回退段一样在外部分配。在 SMU 模式下, 还原空间会象还原表空间一样在外部分配。
值范围: AUTO 或 MANUAL
默认值: 如果启动第一个例程时忽略了 UNDO_MANAGEMENT 参数, 则将使用默认值 MANUAL, 并且例程将以 RBU 模式启动。如果这不是第一个例程, 则将按其他现有例程启动时使用的还原模式来启动该例程
参数名:undo_retention
类别:系统管理的还原和回退段
说明: UNDO_RETENTION参数用来指定要在数据库中保留的已提交的还原信息总量。可在例程启动时设置该参数值。可以计算满足撤消保留要求所需的还原空间量:UndoSpace = RD * UPS, 其中 UndoSpace 以还原块数来表示, RD 用以秒为单位的UNDO_RETENTION 来表示, UPS 以每秒还原块数来表示。
值范围: 所允许的最大值为 (2 ** 32) 秒。
默认值: 30 秒。
参数名:undo_tablespace
类别:系统管理的还原和回退段
说明: 还原表空间仅用于存储还原信息。UNDO_TABLESPACE 仅允许在系统管理还原 (SMU)模式下使用。例程将使用指定的还原表空间, <undoname>。如果该表空间不存在, 或不是还原表空间,或正在由另一例程使用, 则例程 STARTUP 将失败。
默认值: 每个数据库都包含 0 个或更多的还原表空间。在 SMU 模式下, 将为每个 ORACLE 例程分配一个 (且仅限一个) 还原表空间。
参数名:use_indirect_data_buffers
类别:高速缓存和I/O
说明: 控制可支持超过 4GB 物理内存的 32 位平台对扩展缓冲区高速缓存机制的使用情况。在其他平台上, 该参数将被忽略。
值范围: TRUE | FALSE
默认值: FALSE
参数名:user_dump_dest
类别:诊断和统计
说明: 为服务器将以一个用户进程身份在其中写入调试跟踪文件的目录指定路径名。例如, 该目录可这样设置: NT 操作系统上的 C:/ORACLE/UTRC; UNIX 操作系统上的 /oracle/utrc; 或 VMS 操作系统上的DISK$UR3:[ORACLE.UTRC]。
值范围: 一个有效的本地路径名, 目录或磁盘。
默认值: 根据操作系统而定
参数名:utl_file_dir
类别:PL/SQL
说明: 允许数据库管理员指定 PL/SQL 文件 I/O 许可的目录。使用多个 UTL_FILE_DIR参数即可指定多个目录。请注意所有用户均可读取或写入 UTL_FILE_DIR 参数中指定的所有文件。
值范围: 任何有效的目录路径。
默认值: 无
参数名:workarea_size_policy
类别:排序、散列联接、位图索引
说明: 指定调整工作区大小的策略。此参数控制优化工作区时所处的模式。
值范围: AUTO, MANUAL。
默认值: 如果设置了 PGA_AGGREGATE_TARGET, 则为 AUTO; 否则为 MANUAL。
richking 发表于:2006.01.18 17:31 ::分类: ( oracle ) ::阅读:(160次) :: 评论 (0) :: 引用 (0)
Linux性能分析工具
vmstat监视内存使用情况
iostat监视I/O子系统情况
使用sar进行综合分析
CCNA专业词汇全集
通俗易懂的《路由和交换》
在Linux下有很多系统性能分析工具,比较常见的有top、free、ps、time、timex、uptime等。下文将介绍几个较为重要的性能分析工具vmstat、iostat和sar及其使用。
用vmstat监视内存使用情况
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监视。它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。
vmstat [-V] [-n] [delay [count]]
其中,-V表示打印出版本信息;-n表示在周期性循环输出时,输出的头部信息仅显示一次;delay是两次输出之间的延迟时间;count是指按照这个时间间隔统计的次数。对于vmstat输出各字段的含义,可运行man vmstat查看。
用iostat监视I/O子系统情况
iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。
iostat [ -c | -d ] [ -k ] [ -t ] [ -V ] [ -x [ device ] ] [ interval [ count ] ]
其中,-c为汇报CPU的使用情况;-d为汇报磁盘的使用情况;-k表示每秒按kilobytes字节显示数据;-t为打印汇报的时间;-v表示打印出版本信息和用法;-x device指定要统计的设备名称,默认为所有的设备;interval指每次统计间隔的时间;count指按照这个时间间隔统计的次数。
使用sar进行综合分析
sar是System Activity Reporter(系统活动情况报告)的缩写。顾名思义,sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据;取样数据和分析的结果都可以存入文件,所需的负载很小。sar是目前Linux上最为全面的系统性能分析工具之一,可以从14个大方面对系统的活动进行报告,包括文件的读写情况、系统调用的使用情况、串口、CPU效率、内存使用状况、进程活动及IPC有关的活动等,使用也是较为复杂。
sar [-option] [-o file] t [n]
它的含义是每隔t秒取样一次,共取样n次。其中-o file表示取样结果将以二进制形式存入文件file中。
sar [-option] [-s time] [-e time] [-i sec] [-f file]
含义是表示从file文件中取出数据,如果没有指定-f file,则从标准数据文件/var/adm/sa/sadd取数据,其中dd表示当前天。另外,-s time表示起始时间;-e time表示停止时间;-i sec表示取样的时间间隔,如果不指定则表示取文件中所有的数据。对于具体的选项参见表1。
一般它与-q和-u联合使用,以便对每个CPU的使用情况进行分析,比如运行如下命令: sar -q -u 5 1
-A 汇总所有的报告
-a 报告文件读写使用情况
-B 报告附加的缓存的使用情况
-b 报告缓存的使用情况
-c 报告系统调用的使用情况
-d 报告磁盘的使用情况
-g 报告串口的使用情况
-h 报告关于buffer使用的统计数据
-m 报告IPC消息队列和信号量的使用情况
-n 报告命名cache的使用情况
-p 报告调页活动的使用情况
-q 报告运行队列和交换队列的平均长度
-R 报告进程的活动情况
-r 报告没有使用的内存页面和硬盘块
-u 报告CPU的利用率
-v 报告进程、i节点、文件和锁表状态
-w 报告系统交换活动状况
-y 报告TTY设备活动状况
-------------------------------------------------------------------
如果没有该命令,请先安装sysstat-4.0.7-4.EL3.3.i386.rpm 软件包
rpm -ivh sysstat-4.0.7-4.EL3.3.i386.rpm
richking 发表于:2006.01.18 16:59 ::分类: ( linux ) ::阅读:(130次) :: 评论 (0) :: 引用 (0)
oracle优化
世界上最痛苦的事莫过于,不懂装懂,我不想装,可是公司逼我装.LINUX和ORACLE我真的不懂,费了好大的劲才把系统建起来,可是我不知道怎么优化.这个优化方案是我在网上找的,不好用,太复杂了我不明白,很多操作做起来会报错,希望各位朋友能帮帮我.
我还是把我找到的发出来,供大家参考下:
Oracle9i的优化调整
一、SGA
1、Shared pool tunning
Shared pool的优化应该放在优先考虑,因为一个cache miss在shared pool中发生比在data buffer中发生导致的成本更高,由于dictionary数据一般比library cache中的数据在内存中保存的时间长,所以关键是library cache的优化。
Gets:(parse)在namespace中查找对象的次数;
Pins:(execution)在namespace中读取或执行对象的次数;
Reloads:(reparse)在执行阶段library cache misses的次数,导致sql需要重新解析。
1) 检查v$librarycache中sql area的gethitratio是否超过90%,如果未超过90%,应该检查应用代码,提高应用代码的效率。
Select gethitratio from v$librarycache where namespace=’sql area’;
2) v$librarycache中reloads/pins的比率应该小于1%,如果大于1%,应该增加参数shared_pool_size的值。
Select sum(pins) “executions”,sum(reloads) “cache misses”,sum(reloads)/sum(pins) from v$librarycache;
reloads/pins>1%有两种可能,一种是library cache空间不足,一种是sql中引用的对象不合法。
3)shared pool reserved size一般是shared pool size的10%,不能超过50%。V$shared_pool_reserved中的request misses=0或没有持续增长,或者free_memory大于shared pool reserved size的50%,表明shared pool reserved size过大,可以压缩。
4)将大的匿名pl/sql代码块转换成小的匿名pl/sql代码块调用存储过程。
5)从9i开始,可以将execution plan与sql语句一起保存在library cache中,方便进行性能诊断。从v$sql_plan中可以看到execution plans。
6)保留大的对象在shared pool中。大的对象是造成内存碎片的主要原因,为了腾出空间许多小对象需要移出内存,从而影响了用户的性能。因此需要将一些常用的大的对象保留在shared pool中,下列对象需要保留在shared pool中:
a. 经常使用的存储过程;
b. 经常操作的表上的已编译的触发器
c. Sequence,因为Sequence移出shared pool后可能产生号码丢失。
查找没有保存在library cache中的大对象:
Select * from v$db_object_cache where sharable_mem>10000 and type in ('PACKAGE','PROCEDURE','FUNCTION','PACKAGE BODY') and kept='NO';
将这些对象保存在library cache中:
Execute dbms_shared_pool.keep(‘package_name’);
对应脚本:dbmspool.sql
7)查找是否存在过大的匿名pl/sql代码块。两种解决方案:
A.转换成小的匿名块调用存储过程
B.将其保留在shared pool中
查找是否存在过大的匿名pl/sql块:
Select sql_text from v$sqlarea where command_type=47 and length(sql_text)>500;
8)Dictionary cache的 优化
避免出现Dictionary cache的misses,或者misses的数量保持稳定,只能通过调整shared_pool_size来间接调整dictionary cache的大小。
Percent misses应该很低:大部分应该低于2%,合计应该低于15%
Select sum(getmisses)/sum(gets) from v$rowcache;
若超过15%,增加shared_pool_size的值。
2、Buffer Cache
1)granule大小的设置,db_cache_size以字节为单位定义了default buffer pool的大小。
如果SGA<128M,granule=4M,否则granule=16M,即需要调整sga的时候以granule为单位增加大小,并且sga的大小应该是granule的整数倍。
2) 根据v$db_cache_advice调整buffer cache的大小
SELECT size_for_estimate,buffers_for_estimate,estd_physical_read_factor,estd_physical_reads FROM v$db_cache_advice WHERE NAME='DEFAULT' AND advice_status='ON' AND block_size=(SELECT Value FROM v$parameter WHERE NAME='db_block_size');
estd_physical_read_factor<=1
3) 统计buffer cache的cache hit ratio>90%,如果低于90%,可以用下列方案解决:
增加buffer cache的值;
使用多个buffer pool;
Cache table;
为 sorting and parallel reads 建独立的buffer cache;
SELECT NAME,value FROM v$sysstat WHERE NAME IN ('session logical reads','physical reads','physical reads direct','physical reads direct(lob)');
Cache hit ratio=1-(physical reads-physical reads direct-physical reads direct (lob))/session logical reads;
Select 1-(phy.value-dir.value-lob.value)/log.value from v$sysstat log, v$sysstat phy, v$sysstat dir, v$sysstat LOB where log.name='session logical reads' and phy.name='physical reads' and dir.name='physical reads direct' and lob.name='physical reads direct (lob)';
影响cache hit ratio的因素:
全表扫描;应用设计;大表的随机访问;cache hits的不均衡分布
4)表空间使用自动空间管理,消除了自由空间列表的需求,可以减少数据库的竞争
3、其他SGA对象
1)redo log buffer
对应的参数是log_buffer,缺省值与 OS相关,一般是500K。检查v$session_wait中是否存在log buffer wait,v$sysstat中是否存在redo buffer allocation retries
A、检查是否存在log buffer wait:
Select * from v$session_wait where event=’log buffer wait’ ;
如果出现等待,一是可以增加log buffer的大小,也可以通过将log 文件移到访问速度更快的磁盘来解决。
B、Select name,value from v$sysstat where name in (‘redo buffer allocation retries’,’redo entries’)
Redo buffer allocation retries接近0,小于redo entries 的1%,如果一直在增长,表明进程已经不得不等待redo buffer的空间。如果Redo buffer allocation retries过大,增加log_buffer的值。
C、检查日志文件上是否存在磁盘IO竞争现象
Select event,total_waits,time_waited,average_wait from v$system_event where event like ‘log file switch completion%’;
如果存在竞争,可以考虑将log文件转移到独立的、更快的存储设备上或增大log文件。
D、检查点的设置是否合理
检查alert.log文件中,是否存在‘checkpoint not complete’;
Select event,total_waits,time_waited,average_wait from v$system_event where event like ‘log file switch (check%’;
如果存在等待,调整log_checkpoint_interval、log_checkpoint_timeout的设置。
E、检查log archiver的工作
Select event,total_waits,time_waited,average_wait from v$system_event where event like ‘log file switch (arch%’;
如果存在等待,检查保存归档日志的存储设备是否已满,增加日志文件组,调整log_archiver_max_processes。
F、DB_block_checksum=true,因此增加了性能负担。(为了保证数据的一致性,oracle的写数据的时候加一个checksum在block上,在读数据的时候对checksum进行验证)
2)java pool
对于大的应用,java_pool_size应>=50M,对于一般的java存储过程,缺省的20M已经够用了。
3)检查是否需要调整DBWn
Select total_waits from v$system_event where event=’free buffer waits’;
二、数据库配置和IO问题
降低磁盘的IO
分散磁盘的IO
表空间使用本地管理
1、将文件分散到不同的设备上
1)将数据文件与日志文件分开
2)减少与服务器无关的磁盘IO
3)评估裸设备的使用
4)分割表数据
2、表空间的使用
系统表空间保留给数据字典对象
创建本地管理表空间以避免空间管理问题
将表和索引分散到独立的表空间中
使用独立的回滚表空间
将大的数据库对象保存在各自独立的表空间中
创建一个或多个独立的临时表空间
下列数据库对象应该有单独的表空间:
数据字典、回滚段、索引、临时段、表、大对象
3、检查IO统计数据
Select phyrds,phywrts,d.name from v$datafile d,v$filestat f where f.file#=d.file# order by d.name;
检查最有可能引起磁盘IO瓶颈的文件。
4、分割文件
可以通过RAID和手工进行
Alter table table_name allocate extent (datafile ‘fiile_name’ size 10M);
但手工操作工作量很大。
5、优化全表扫描操作
1)检查有多少全表发生:
Select name,value from v$sysstat where name like ‘%table scan%’;
table scans (short tables)/ table scans (long tables)与全表扫描相关,如果table scans (long tables)的值很高,说明大部分的table access 没有经过索引查找,应该检查应用或建立索引,要确保有效的索引在正确的位置上。
合理的DB_FILE_MULTIBLOCK_READ_COUNT能减少table scan需要调用的IO次数,提高性能(与OS相关)。
2)查看full table scan操作:
Select sid,serial#,opname,target,to_char(start_time,’HH24:MI:SS’) “start”,(sofar/totalwork)*100 “percent_complete” from v$session_longops;
通过v$session_longops里的sql_hash_value与v$sqltext关联,可以查询导致full table scan的sql。
6、Checkpoint
Checkpoint进行的操作:DBWn进行IO操作;CKPT更新数据文件头和控制文件。
经常进行Checkpoint的结果:减少恢复所需的时间;降低了系统运行时的性能。
LGWR以循环的方式将日志写到各个日志组,当一个日志组满时,oracle server必须进行一个Checkpoint,这意味着:DBWn将对应log覆盖的所有或部分脏数据块写进数据文件;CKPT更新数据文件头和控制文件。如果DBWn没有完成操作而LGWR需要同一个文件,LGWR只能等待。
在OLTP环境下,如果SGA很大并且checkpoint的次数不多,在Checkpoint的过程中容易出现磁盘竞争的状况,在这种情况下,经常进行Checkpoint可以减少每次Checkpoint涉及到的脏数据块的数目。
调节Checkpoint次数的办法:
增大日志文件;增加日志组以增加覆盖的时间间隔。
7、日志文件
建立大小合适的日志文件以最小化竞争;
提供足够的日志文件组以消除等待现象;
将日志文件存放在独立的、能快速访问的存储设备上(日志文件可以创建在裸设备上)。
日志文件以组的方式组织管理,每个组里的日志文件的内容完全相同。
8、归档日志文件
如果选择归档模式,必须要有两个或两个以后的日志组,当从一个组切换到另一个组时,会引起两种操作:DBWn进行Checkpoint;一个日志文件进行归档。
归档有时候会报错:
ARC0:Beginning to archive log# 4 seq# 2772
Current log# 3 seq# 2773……
ARC0: Failed to archive log# 4 seq# 2772
ARCH: Completed to archiving log#4 seq# 2772
建议init参数修改如下:
log_archive_max_processes=2
#log_archive_dest = ‘/u05/prodarch’
log_archive_dest_1 = "location=/u05/prodarch MANDATORY’
log_archive_dest_state_1 = enable
log_archive_dest_2 = "location=/u05/prodarch2 OPTIONAL reopen=10" (或其它目录)
log_archive_dest_state_2 = enable
log_archive_min_succeed_dest=1
log_archive_dest_state_3 = DEFER
log_archive_dest_state_4 = DEFER
log_archive_dest_state_5 = DEFER
三、优化排序操作
1、概念
服务器首先在sort_area_size指定大小的内存区域里排序,如果所需的空间超过sort_area_size,排序会在临时表空间里进行。在专用服务器模式下,排序空间在PGA中,在共享服务器模式下,排序空间在UGA中。如果没有建立large pool,UGA处于shared pool中,如果建立了large pool,UGA就处于large pool中,而PGA不在sga中,它是与每个进程对应单独存在的。
PGA:program global area,为单个进程(服务器进程或后台进程)保存数据和控制信息的内存区域。PGA与进程一一对应,且只能被起对应的进程读写,PGA在用户登录数据库创建会话的时候建立。
有关排序空间自动管理的两个参数:
Pga_aggregate_target: 10M-4000G,等于分配给oracle instance的所有内存减去SGA后的大小。
Workarea_size_policy: auto/manual,只有Pga_aggregate_target已定义时才能设置为auto。
这两个参数会取代所有的*_area_size参数。
措施:
尽可能避免排序;尽可能在内存中排序;分配合适的临时空间以减少空间分配调用。
2、需要进行排序的操作:
A、创建索引;
B、涉及到索引维护的并行插入
C、order by或者group by(尽可能对索引字段排序)
D、Distinct
E、union/intersect/minus
F、sort-merge join
G、analyze命令(仅可能使用estamate而不是compute)
3、诊断和措施
Select * from v$sysstat where name like ‘%sort%’;
Sort(disk):要求Io去临时表空间的排序数目
Sort(memory):完全在memory中完成的排序数目
Sort(rows):被排序的行数合计
Sort(disk)/ Sort(memory)<5%,如果超过5%,增加sort_area_size的值。
SELECT disk.Value disk,mem.Value mem,(disk.Value/mem.Value)*100 ratio FROM v$sysstat disk,v$sysstat mem WHERE mem.NAME='sorts (memory)' AND disk.NAME='sorts (disk)';
4、监控临时表空间的使用情况及其配置
Select tablespace_name,current_users,total_extents,used_extents,extent_hits,max_used_blocks,max_sort_blocks FROM v$sort_segment ;
Column Description
CURRENT_USERS Number of active users
TOTAL_EXTENTS Total number of extents
USED_EXTENTS Extents currently allocated to sorts
EXTENT_HITS Number of times an unused extent was found in the pool
MAX_USED_BLOCKS Maximum number of used blocks
MAX_SORT_BLOCKS Maximum number of blocks used by an individual sort
临时表空间的配置:
A、initial/next设置为sort_area_size的整数倍,允许额外的一个block作为segment的header
B、pctincrease=0
C、基于不同的排序需要建立多个临时表空间
D、将临时表空间文件分散到多个磁盘上
四、诊断latch竞争
1、概念
Latch是简单的、低层次的序列化技术,用以保护SGA中的共享数据结构,比如并发用户列表和buffer cache里的blocks信息。一个服务器进程或后台进程在开始操作或寻找一个共享数据结构之前必须获得对应的latch,在完成以后释放latch。不必对latch本身进行优化,如果latch存在竞争,表明SGA的一部分正在经历不正常的资源使用。
1)Latch的作用:
A、序列化访问:保护SGA中的共享数据结构;保护共享内存的分配。
B、序列化执行:避免同时执行某些关键代码;避免互相干扰。
2)Latch请求的两种类型:
A、willing-to-wait:请求的进程经过短时间的等待后再次发出请求,直到获得latch
B、immediate:如果没有获得latch,请求的进程不等待,而是继续处理其他指令。
2、检查Latch竞争
检查latch free是不是主要的wait event:
Select * from v$system_event order by time_waited;
检查latch的使用情况:
Select * from v$latch:
与willing-to-wait请求有关的列:gets、misses、sleeps、wait_time、cwait_time、spin_gets
与immediate请求有关的列:immediate_gets、immediate_misses
Gets: number of successful willing-to-wait requests for a latch;
Misses: number of times an initial wiling-to-wait request was unsuccessful;
Sleeps: number of times a process waited after an initial willing-to-wait request;
Wait_time: number of milliseconds waited after willing-to-wait request;
Cwait_time: a measure of the cumulative wait time including the time spent spinning and sleeping,the overhead of context switches due to OS time slicing and page faults and interrupts;
Spin_gets: gets that misses first try but succeed after spinning.
Immediate_gets: number of successful immediate requests for each latch;
Immediate_misss: number of unsuccessful immediate requests for each latch;
一般无需调整latch,但是下列的措施是有用的:
A、对处于竞争中的latch做进一步的调查
B、如果竞争主要存在于shared pool和library cache中,可以考虑调整应用
C、如果进一步的调查显示需要调整shared pool和buffer cache,就进行调整
Select * from v$latch where name like ‘%shared pool%’ or name like ‘%library cache%’;
如果竞争是在shared pool或library cache上,表示下列集中情况:
A、不能共享的sql,应检查他们是否相似,考虑以变量代替sql中的常量:
Select sql_text from v$sqlarea where executions=1 order by upper(sql_text);
B、共享sql被重新编译,考虑library cache的大小是否需要调整:
SELECT sql_text,parse_calls,executions FROM v$sqlarea where parse_calls>5;
C、library cache不够大。
五、Rollback(undo) Segment 优化
1、概念
Transaction以轮循的方式使用rollback segment里的extent,当前所在的extent满时就移动到下一个extent。可能有多个transaction同时向同一个extent写数据,但一个rollback segment block中只能保存一个transaction的数据。
Oracle 在每个Rollback segment header中保存了一个transaction table,包括了每个rollback segment中包含的事务信息,rollback segment header的活动控制了向rollbak segment写入被修改的数据。rollback segment header是经常被修改的数据库块,因此它应该被长时间留在buffer cache中,为了避免在transaction table产生竞争导致性能下降,应有多个rollback segment或应尽量使用oracle server 自动管理的rollback segment。
2、诊断rollback segment header的竞争
如果rollback segment 由手工管理,下列措施诊断rollback segment header的竞争
SELECT class,count FROM v$waitstat WHERE class LIKE '%undo%' ;
SELECT Sum(Value) sum FROM v$sysstat WHERE NAME IN ('db block gets','consistent gets');
任何类型的等待次数(count)与总请求数(sum)的比率,不能超过1%。
或
select sum(waits)*100/sum(gets) "Ratio", sum(waits) "Waits", sum(gets) "Gets" from v$rollstat;
waits的汇总数与gets的汇总数的比率应低于1%,如果超过1%,应创建更多的rollback segment。
下列字段数值如果大于0,则表明在rollback segment header上存在竞争:
A、v$rollstat 中的waits
B、v$waitstat中的undo header行
C、v$system_event中的undo segment tx slot事件
3、消耗更少的rollback segment
1)如果是删除表里所有的数据,尽可能使用trauncate而不是delete。
2)在应用中允许用户有规律的提交,尽可能不用长事务。
3)? Import
– Set COMMIT = Y
– Size the set of rows with BUFFER
? Export: Set CONSISTENT=N
? SQL*Loader: Set the COMMIT intervals with ROWS
4、小回滚段可能出现的问题
A、事务由于缺少回滚空间失败
B、由于下列原因导致的“Snapshot too old”问题:
Block里的事务列表被刷新,block里的SCN比列表Interested Transaction List(ITL)里起始事务的SCN更新;
Rollback segment header里的Transaction slot被重用;
回滚数据已经被重写;
5、9i的自动回滚管理
Undo_managment指定了回滚空间的管理方式:Auto:自动管理;Manual:手工管理回滚段。
Undo_retention指定了回滚数据的保留期限;
Undo_tablespace指定了被使用的回滚表空间;
Oracle自动管理的表空间可以在常见数据库的时候创建,也可以单独建立。回滚表空间可以相互转换(switch),但在某一时刻只能有一个回滚表空间处于活动状态。回滚表空间处于非活动状态时可以删除,如果有对处于被删除回滚表空间里的已提交事务的查询时,oracle会返回一个错误。
估计undo tablespace大小的公式:
Undo space = (undo_retention * (undo blocks per second * db_block_size)) + db_block_size;
可以使用下列的sql设定undo_retention和undo tablespace:
select (rd*(ups*overhead)+overhead) "bytes" from (select value rd from v$parameter where name ='undo_retention'),(select (sum(undoblks)/sum(((end_time-begin_time)*10800))) ups from v$undostat),(select value overhead from v$parameter where name='db_block_size');
其中:
Rd:undo_retention设置的时间;
Ups:undo blocks per second;
Overhead:rollback segment header;
六、Lock Contention
1、概念
DML事务使用row-level locks,查询不会锁定数据。锁有两种模式:exlusive、share。
锁的类型:
? DML or data locks:
– Table-level locks(TM)
– Row-level locks(TX)
? DDL or dictionary locks
一个transaction至少获得两个锁:一个共享的表锁,一个专有的行锁。Oracle server将所有的锁维护在一个队列里,队列跟踪了等待锁的用户、申请锁的类型以及用户的顺序信息。
Lock在下列情况会释放:commit;rollback;terminated(此时由pmon清理locks)。
Quiesced database:一个数据库如果除了sys和system之外没有其他活动session,这个数据库即处于quiesced状态。活动session是指这个session当前处于一个transaction中,或一个查询中,一个fetch中,或正占有某种共享资源。
2、可能引起lock contention的原因
不必要的高层次的锁;
长时间运行的transaction;
未提交的修改;
其他产品施加的高层次的锁。
解决lock contention的方法:锁的拥有者提交或回滚事务;杀死用户会话。
3、死锁
Oracle自动检测和解决死锁,方法是通过回滚引起死锁的语句(statement),但是这条语句对应的transaction并没有回滚,因此当收到死锁的错误信息后,应该去回滚改transaction的剩余部分。
七、应用优化
1、概念
为了提高性能,可以使用下列数据访问方法:
A、Clusters
B、Indexes
-B-tree(normal or reverse key)
-bitmap
-function-based
C、Index-organized tables
D、Materialized views
索引的层次越多,效率越低,如果索引中含有许多已删除的行,这个索引也会变得低效,如果索引数据的15%已经被删除,应该考虑重建索引。
2、应用问题
A、使用可声明的约束而不是通过代码限制
B、代码共享
C、使用绑定变量而不是文字来优化共享sql
D、调整cursor_sharing的值(EXACT/SIMILAR/FORCE)
八、提升block的效率
1、避免动态分配的缺陷
创建本地管理的表空间;
合理设置segment的大小;
监控将要扩展的segment:
SELECT owner, table_name, blocks, empty_blocks FROM dba_tables WHERE empty_blocks / (blocks+empty_blocks) < .1;
2、high water mark
记录在segment header block中,在segment创建的时候设定在segment的起始位置,当记录被插入的时候以5个block的增量增加,truncate可以重设high water mark的位置,但delete不能。
在full table scan中,oracle会读取high water mark以下的所有的数据块,所以high water mark以上的块也许会浪费存储空间,但不会降低性能。
可以通过下列方法收回表中high water mark以上的块:
Alter table_name deallocate unused;
对于high water mark以下的块:
使用import/export工具:export数据;drop或truncate表;import数据。或者利用alter table tanle_name move命令去移动表的存储位置(此时需要重建索引)。
3、表统计
用analyize命令生成表统计,然后到dba_table查询相关信息。
ANALYZE TABLE ndls.t_wh_shipping_bill COMPUTE STATISTICS;
SELECT num_rows, blocks, empty_blocks as empty,avg_space, chain_cnt, avg_row_len FROM dba_tables WHERE owner ='NDLS' AND table_name='T_WH_SHIPPING_BILL';
Columns Description
NUM_ROWS Number of rows in the table
BLOCKS Number of blocks below the table high-water mark
EMPTY_BLOCKS Number of blocks above the table high-water mark
AVG_SPACE Average free space in bytes in the blocks below high-water mark
AVG_ROW_LEN Average row length, including row overhead
CHAIN_CNT Number of chained or migrated rows in the table
4、block size
通过下列方法可以最小化block的访问次数:
使用更大的block size;紧密压缩行;阻止行镜像。后两者存在冲突,越多的行被压缩在一个block里,越容易产生镜像。
Block size 在数据库创建的时候设定,不能被轻易改变,是读取数据文件时最小的IO单元,大小范围是2K-64K,应该设置成OS块的整数倍,小于或等于OS IO时能读取的存储区域。
较小的block size的优点:极少block竞争;有利于较小的行和随机访问。缺点是存在相当高的成本,每个block的行数更少,可能需要读取更多的index块。
Block size的选择影响系统的性能,在一个OLTP环境中,较小的block size更合适,而在DSS环境中,适宜选择较大的block size。
5、PCTFREE、PCTUSED
1)PCTFREE、PCTUSED使你能控制一个segment里所有数据块里free space的使用。
PCTFREE:一个数据块保留的用于块里已有记录的可能更新的自由空间占block size的最小比例。
PCTUSED:在新记录被插入block里之前这个block可以用于存储行数据和其他信息的空间所占的最小比率。
2)这两个参数的使用
如果创建表的时候指定pctfree=20%,oracle会在这个表的data segment的每个block都保留20%的空间用于已有记录的更新。Block的已使用空间上升到整个block size的80%时,这个block将移出free list;在提交了delete、update之后,oracle server处理这条语句并检查对应block的已使用空间是否低于PCTUSED,如果是,则这个block放进free list。
3)PCTFREE、PCTUSED的设定
? PCTFREE
– Default 10
– Zero if no UPDATE activity
– PCTFREE = 100 × upd / (average row length)
? PCTUSED
– Default 40
– Set if rows deleted
– PCTUSED = 100 – PCTFREE – 100 × rows × (average row length) / blocksize
其中,upd : the average amount added by updates, in bytes。This is determined by subtracting the average row length of intercurrent average row length;
average row length:在运行了analyize命令之后,这个值可以从dba_tables中的avg_row_len列中获得。
rows : the number of rows to be deleted before free list maintenance occurs。
4)Delete、update可以增加block的自由空间,但是释放出来的空间有可能是不连续的,oracle在下列情况下会对碎片进行整理:一个block有足够的自由空间容纳row piece,但是由于每个碎片都较小以至这个row piece不能存放在一个连续的section中。
6、Migration和Chaining
1)如果一行的数据太大以至一个单独的block容纳不下,会产生两种现象:
A、Chaining:行数据太大以至一个空block容纳不下,oracle会将这一行的数据存放在一个或多个block 组成的block chain中,insert、update都可能导致这个问题,在某些情况下row chaining是不能避免的。
B、Migration:一次update操作可能导致行数据增大,以至它所在的block容纳不下,oracle server会去寻找一个有足够自由空间容纳整行数据的block,如果这样的block存在,oracle server把整行移到新的block,在原位置保存一个指向新存放位置的镜像行,镜像行的rowid和原来的rowid一致。
Chaining、Migration的弊端:insert、update的性能降低,索引查询增加了IO次数。
2)检测migration和chaining:
Analyize table table_name compute statistics;
Select num_rows,chain_cnt from dba_tables where table_name=’...’;
查询镜像行:
Analyize table table_name list chained rows;
Select owner_name,table_name,head_rowid from chained_rows where table_name=’...’;
产生Migration的原因可能是由于PCTFREE设置的太低以至没有保留足够的空间用于更新。
可以通过增加PCTFREE的值避免行镜像产生。
3)消除镜像行的步骤:
运行analyize table ... list chained rows;
复制镜像行到另一个表tmp;
从源表中删除这些行;
从tmp中将这些行插回到源表中。
脚本:
/* Get the name of the table with migrated rows */
accept table_name prompt ’Enter the name of the table with migrated rows: ’
/* Clean up from last execution */
set echo off
drop table migrated_rows;
drop table chained_rows;
/* Create the CHAINED_ROWS table */
@?/rdbms/admin/utlchain
set echo on
spool fix_mig
/* List the chained & migrated rows */
analyze table &table_name list chained rows;
/* Copy the chained/migrated rows to another table */
create table migrated_rows as
select orig.* from &table_name orig, chained_rows cr
where orig.rowid = cr.head_rowid
and cr.table_name = upper(’&table_name’);
/* Delete the chained/migrated rows from the original table */
delete from &table_name
where rowid in ( select head_rowid from chained_rows );
/* Copy the chained/migrated rows back into the original table */
insert into &table_name select * from migrated_rows;
spool off
使用这个脚本时,必须将涉及到的外键约束去掉。
7、索引重组
在一个不稳定的表上建索引会影响性能,一个索引block只有完全空时才能进入free list,即使一个索引block里只含有一个条目,它也必须被维护,因此索引需要进行阶段性的重建。
1)检查索引是否需要重组
A、收集一个index的使用统计
ANALYZE INDEX acct_no_idx VALIDATE STRUCTURE;
B、查看收集的统计数据
SELECT NAME,(DEL_LF_ROWS_LEN/LF_ROWS_LEN) * 100 AS index_usage FROM index_stats;
Column Description
LF_ROWS Number of values currently in the index
LF_ROWS_LEN Sum in bytes of the length of all values
DEL_LF_ROWS Number of values deleted from the index
DEL_LF_ROWS_LEN Length of all deleted values
C、如果浪费超过20%则索引需要重建
ALTER INDEX acct_no_idx REBUILD;
D、或者对索引进行整理
Alter index acct_no_idx coalesce;
2)标记未使用的索引
A、 开始监测索引的使用
Alter index hr.emp_name_ix monitoring usage;
B、 停止监测索引的使用
Alter index hr.emp_name_ix nomonitoring usage;
C、 查询索引的使用情况
Select index_name,used from v$object_usage;
删除未使用过的索引,可以降低DML操作的成本,从而提升系统性能。
为了尽可能经济的利用block,应对存在较多空block、镜像行的表进行重建,对建立不稳定表上的索引应有规律的进行重建,并尽可能创建本地管理的表空间。
九、SQL优化
1、优化器模式
Oracle9i有两种优化器模式可以选择:
? Rule-based:
– Uses a ranking system
– Syntax- and data dictionary–driven
? Cost-based:
– Chooses least-cost path
– Statistics-driven
Rule-based模式满足向后兼容,而Cost-based模式中的成本大部分来自于逻辑读的次数,推荐使用Cost-based模式。
2、固定optimizer plan
1)概念
对于每一个查询,optimizer都会准备一个定义了操作执行顺序和方法的操作树(执行计划),oracle server根据这个执行计划执行语句。通过固定执行计划,可以强制应用通过一种理想的方式访问数据,并且一个稳定的执行计划可以经历数据库的变化而保持不变。固定执行计划通过创建stored outline实现,outline使用cost-based的optimizer,因为其由一系列的hints组成。
执行计划的固定依赖于当判定一个查询是否存在stored outline时查询语句是否完全一致,与判定shared pool里一个执行计划是否可以重用时的匹配方式是一致的。
Outline被保存在outln schema中。
2) 创建stored outline
alter session set CREATE_STORED_OUTLINES = train;
create or replace OUTLINE co_cl_join
FOR CATEGORY train ON
select co.crs_id, ...
from courses co,classes cl
where co.crs_id = cl.crs_id;
stored outline通过category组织,相同的sql语句可以在多个category同时拥有stored outline,如果categoey没有指定,缺省是default category。
当CREATE_STORED_OUTLINES等于true或category名时,oracle会为所有被执行的sql语句创建stored outline,也可以通过create outline手工创建。
3) 使用stored outline
将USE_STORED_OUTLINES设置为true或category名。
alter session set USE_STORED_OUTLINES = train;
当为一个查询寻找stored outline时,查询语句与stored outline里的语句必须完全一致,在outline里的hints也必须在查询语句中出现。
3、private outline
Private outline是当前保存的stored outline的副本,可以被编辑而不影响正在运行的系统,一个private outline只能被当前session看到,它的数据被保存在当前被解析的schema里。,知道显示的将其公布。
当USE_PRIVATE_OUTLINES=TRUE时,一个已有outline的sql被提交时,optimizer会检查是否存在private outline,如果不存在,optimizer就不使用optimizer编译语句,而不会去检查公布的stored outline。
4、在sql中使用hints
Create index gen_idx on customers(cust_gender);
Select /*+ index(customers gen_idx)*/
Cust_last_name,cust_street_address,cust_postal_code
From sh.customers where upper(gender)=’M’;
5、EXPLAIN PLAN
可以不通过tracing,需要建立plan_table表:
Sql>@oracle_home/rdbms/admin/utlxplan;
建立explain plan:
Explain plan for select last_name from hr.emp;
查询plan_table中的explain plan,可以直接查询,也可以通过脚本utlxplx.sql(隐藏并行查询信息)、utlxplp.sql(显示并行查询信息)查询。
6、管理统计信息
利用analyize命令收集或删除信息。
参数:
Compute:统计精确的数据;
Estimate:估计的统计数据。
各类统计数据的位置:
表:dba_tables;
索引:dba_indexes;
列:user_tab_col_statistics;
柱状图(histogram)详细的描述了一个特定列中数据的分布情况,可以通过analyize table ... for columns... 命令创建,保存在dba_histogram/dba_tab_histograms中。
十、操作系统优化和使用资源管理器
1、操作系统优化
1)概念
操作系统优化时应该考虑的因素有:内存的使用;Cpu的使用;IO级别;网络流量。各个因素互相影响,正确的优化次序是内存、IO、CPU。
操作系统使用了虚拟内存的概念,虚拟内存使每个应用感觉自己是使用内存的唯一的应用,每个应用都看到地址从0开始的单独的一块内存,虚拟内存被分成4K或8K的page,操作系统通过MMU(memory management unit)将这些page与物理内存映射起来,这个映射关系通过page table控制。
Raw device是没有文件结构或目录结构的磁盘或磁盘分区,由于它忽略了操作系统缓存,在某些情况下可以显著提升性能,但是在windows NT下,由于操作系统IO操作本身不使用文件系统缓存,所以raw device不能显示性能上的优点。
2)Guideline
CPU的最高使用率:90%;
OS/USER进程数之比:40/60;
各个CPU的负载应该大致均衡。
3)服务器安全性检查
A、检查UNIX系统用户口令
检查:/etc/passwd、/etc/shadow,UNIX密码采用了shadow机制,安全性能高
建议:参考UNIX命令passwd,修改/etc/default/passwd文件的某些设置如MAXWEEKS、MINWEEKS、PASSLENGTH使口令修改更加合理化。
建议:定期更改UNIX系统的如下用户口令:
root、oraprod、applprod、appprod
B、检查 Remote Login
启动了rlogin,服务器数据库a、数据库b、数据库c,终端console1、console2、console3及T3形成相互非常信任的关系,用户只要拥有一个服务器的超级权限就可以rlogin到.rhosts指明的任一主机而无需要口令。
建议:非常不安全,参考UNIX命令rlogin和/目录下的文件.rhosts。在正式环境服务器和测试环境服务器之间不要建立这种远程信任的机制。
C、检查FTP服务
检查可以FTP到服务器的用户(/etc/ftpusers),注释了root用户,就是说用户可以用root权限FTP到服务器上。权限太大。
建议:把这种权力取消,将/etc/ftpusers中root的注释符号(#)去掉,在列表中添加oraprod、applprod、appprod等用户使之不能FTP服务器。必要时(如上传PATCH时)再打开applprod的FTP权限。
D、建议:UNIX系统管理员定期检查/var/adm下的messages、sulog;/etc/syslog.conf 等信息。检查是否有非法用户登陆UNIX。
建议:与UNIX工程师探讨更好的监控方式
4)数据库与应用产品安全性检查
A、建议:修改oracle用户根目录下的.profile文件,修改该文件的权限为500。即使得用户登陆时并不执行和数据库或应用相关的环境变量,增加安全性。
B、检查数据库DBA权限的用户密码和应用系统用户密码:SYSTEM、APPS密码都已经改变,SYS密码还是初始安装密码Change_on_install
建议:立即修改SYS用户密码,定期更改APPS、SYSTEM、SYS密码。
C、定期检查并清除$ORACLE_HOME/admin/bdump目录下的alert_PROD.log文件和后台进程trace文件。定期清除$ORACLE_HOME/admin/udump目录下的trc文件。
D、建议:给应用产品登陆的用户设置口令过期限制,如口令访问次数限制或时间(天数)限制。
建议:不要给使用应用产品的用户共享用户名和口令,每个用户分配一个应用产品用户名。
建议:对有应用系统管理员权限的用户登记,不适合有系统管理员权限的用户要把权限回收,统一管理。
E、定期检查并清除与Apache Server有关的log文件,目录为:
/u01/prodora/iAS/Apache/Apache/logs/acccess_log、error_log
/u01/prodora/iAS/Apache/Jserv/logs/jserv.log、mod_jserv.log
F、定期检查清除listener、tnsname的log文件,文件存放在:
/u01/prodora/8.0.6/network/admin/apps_prod.log、
/u01/proddb/8.1.7/network/admin/prod.log
/u01/proddb/8.1.7/network/log/listener.log、sqlnet.log…
G、数据库控制文件做多个镜像,放在多个磁盘位置,提高安全性。
5)网络安全性检查
检查$ORACLE_HOME/dbs/initPROD.ora文件
#remote_login_passwordfile=EXCLUSIVE
设置为REMOTE_LOGIN_PASSWORDFILE=NONE,不允许远程客户用INTERNAL方式登陆。
2、资源管理器(Resource Manager)
通过资源管理器可以管理混合工作负载,控制系统性能。数据库资源管理器包括:
? Resource plans:包括 resource plan directives, 它指定了被分配到各个 resource consumer group的资源。
? Resource consumer groups:定义了具有类似资源使用需求的一组用户。
? Resource plan directives:包括下列内容:为consumer groups 或 subplans 指定resource plans;在各个 consumer groups 或资源计划的subplans 分配资源。