欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

oracle的初始化参数文件相关知识学习

程序员文章站 2022-05-23 09:49:17
一、服务器初始化参数文件概述 oracle的初始化参数文件保存了数据库实例创建和启动时所必须的初始化参数配置信息。 初始化参数文件损坏,数据库无法启动。 11g中,初始化参数...

一、服务器初始化参数文件概述

oracle的初始化参数文件保存了数据库实例创建和启动时所必须的初始化参数配置信息。

初始化参数文件损坏,数据库无法启动。

11g中,初始化参数有341个,分显式和隐式两种。

9i之前的版本,将显式参数及其存储在一个文本文件中,称之为文本初始化参数文件。默认名称为INIT.ORA。默认位置为%ORACLE_HOME%/database目录。

11g数据库在创建的时候,自动在%ORACLE_DATABASE%/admin//pfile目录。

文本初始化参数文件时本地的一个初始化参数文件,无论启动本地数据库还是远程数据库,都需要读取本地的一个文本初始化参数文件,并使用其中的参数设置来配置数据库实例。因此要远程启动数据库,必须在远程主机中保存一份初始化参数文件的副本。此外,文本初始化参数文件的修改必须通过管理手动进行。

由于以上原因,9i之后的数据库中引入了服务器初始化参数文件。服务器初始化参数文件是一个保存在数据库服务器端的二进制文件。实例会自动从服务器中读取服务器初始化参数文件。此外,在数据中执行alter system语句对初始化参数进行了修改,在默认情况下(socope=both),都会永久的记录在服务器初始化参数文件中。

服务器初始化参数文件是使用create spfile 语句基于已有的文本初始化参数文件创建的。在使用dbca创建数据库时自动创建服务器初始化参数文件。服务器初始化参数文件默认名称为SPFILE.ORA。默认位置存放于%ORACLE_HOME%/dbs目录。

可以使用记事本或者写字板等方式打开服务器初始化参数文件,并查看其中内容。但是不可以修改其中内容。否则导致文件损坏。

在执行startup语启动数据库时,系统按照下列顺序寻找初始化参数文件:

1、检查是否用pfile参数指定了文本初始化参数文件

2、如果没有使用pfile参数,则在默认位置寻找默认名称服务器初始化参数文件

3、没有找到默认的服务器初始化参数文件,则在默认的位置寻找默认名称的文本初始化参数文件

可以用show parameter spfile 命令或者查询动态性能视图v$parameter查看当前数据库所使用的服务器初始化参数文件

二、创建服务器初始化参数文件

1、创建一个文本初始化参数文件,文件中包含显式初始化参数,并将该文件存放在数据库服务器上。

文本初始化参数文件创建时需要注意以下事项:

*初始化参数文件中只对需要设置的初始化参数进行设置,其他采用系统默认

*初始化参数文件只能包括赋值语句和注释语句,注释语句以#开头,单行

*初始化参数文件的参数部分前后次序,参数名称与值不区分大小写

*如果一行设置多个参数,需要用空格隔开

*如果参数具有多个值,将这些值用括号括起来,用逗号隔开

*对于具有字符串类型值的参数,如果字符创中包含空格或者制表符,必须使用单引号或双引号字符串引起来

2、以sysoper或者sysdba身份连接到oracle数据库

3、利用文本初始化参数文件创建服务器初始化参数文件

create spfile=[='spfile name'] from pfile[='spfile name']|memory;

三、常用初始化参数:

processes = 150 说明: 指定可同时连接到一个 Oracle Server上的操作系统用户进程的最大数量。该值应允许执行所有后台进程, 如: 作业队列 (SNP) 进程和并行执行 (Pnnn) 进程。 值范围:6 到根据操作系统而定的一个值。 默认值: 由 PARALLEL_MAX_SERVERS 确定 timed_statistics= TRUE 说明: 收集操作系统的计时信息, 这些信息可被用来优化数据库和 SQL 语句。要防止因从操作系统请求时间而引起的开销, 请将该值设置为零。将该值设置为 TRUE 对于查看长时间操作的进度也很有用。 值范围: TRUE | FALSE 默认值:FALSE shared_pool_size = 50331648 说明: 以字节为单位, 指定共享池的大小。共享池包含如: 共享游标,存储的过程, 控制结构和并行执行消息缓冲区等对象。较大的值能改善多用户系统的性能。 值范围:300 KB - 根据操作系统而定。默认值: 如果是 64 位操作系统, 值为 64MB; 其他情况下, 值为 16MB。 large_pool_size = 8388608 说明 : 指定大型池的分配堆的大小, 它可被共享服务器用作会话内存,用作并行执行的消息缓冲区以及用作 RMAN备份和恢复的磁盘 I/O 缓冲区。 值范围: 600K (最小值); >= 20000M (最大值是根据操作系统而定的)。 默认值 : 0, 除非配置了并行执行或 DBWR_IO_SLAVES java_pool_size = 33554432 说明: 以字节为单位, 指定 Java 存储池的大小, 它用于存储 Java的方法和类定义在共享内存中的表示法, 以及在调用结束时移植到 Java 会话空间的 Java 对象。 值范围: 根据操作系统而定。

默认值: 根据操作系统而定 control_files = d:\oracle\oradata\mydb\CONTROL01.CTL,d:\oracle\oradata\mydb\CONTROL02.CTL,d:\oracle\oradata\mydb\CONTROL03.CTL 说明: 指定一个或多个控制文件名。Oracle建议对于不同设备或 OS 文件镜象使用多个文件。 值范围: 1 - 8 文件名 (带路径名)。 默认值: 根据操作系统而定 db_block_size = 8192 说明: 一个 Oracle 数据库块的大小 (字节)。该值在创建数据库时设置,而且此后无法更改。 值范围: 1024 - 65536 (根据操作系统而定)。 默认值: 2048 (根据操作系统而定) db_cache_size = 25165824 说明: 为高速缓存指定标准块大小的缓冲区。 值范围: 至少 16M。 默认值: 48M compatible = 9.2.0.0.0 说明: 允许您使用一个新的发行版, 同时保证与先前版本的向后兼容性。 值范围:默认为当前发行版。 默认值: 由发行版确定 db_file_multiblock_read_count= 16 说明: 在涉及一个完全连续扫描的一次 I/O操作过程中读取的块的最大数量。 值范围: 根据操作系统而定。 默认值: 8 fast_start_mttr_target = 300 说明: 指定从单个数据库例程崩溃中恢复所需的时间 (估计秒数)。 FAST_START_MTTR_TARGET 将在内部被转换为一组参数, 用于修改数据库的操作, 从而将它的恢复时间控制在总 “恢复平均时间 (MTTR)” 中的一定范围之内。只有具有 “快速启动故障恢复” 功能的版本才支持此参数。 值范围: [0,3600]。它将计算数据缓冲区高速缓存条目数之上, 且大于最大日志中的块数的限值。 默认值: 0 undo_management = AUTO 说明: 指定系统应使用哪种撤消空间管理模式。如果设置为 AUTO, 例程将以 SMU模式启动。否则将以 RBU 模式启动。在RBU 模式下, 撤消空间会象回退段一样在外部分配。在 SMU 模式下,撤消空间会象撤消表空间一样在外部分配。 值范围: AUTO 或 MANUAL 默认值: 如果启动第一个例程时忽略了UNDO_MANAGEMENT 参数, 则将使用默认值 MANUAL, 并且例程将以 RBU模式启动。如果这不是第一个例程, 则将按其他现有例程启动时使用的撤消模式来启动该例程。

undo_tablespace = UNDOTBS1 说明: 撤消表空间仅用于存储撤消信息。UNDO_TABLESPACE仅允许在系统管理撤消 (SMU)模式下使用。例程将使用指定的撤消表空间,。如果该表空间不存在,或不是撤消表空间, 或正在由另一例程使用, 则例程 STARTUP 将失败。 默认值: 每个数据库都包含 0 个或更多的撤消表空间。在SMU 模式下, 将为每个 ORACLE 例程分配一个 (且仅限一个) 撤消表空间。

undo_retention = 10800 说明: UNDO_RETENTION

参数用来指定要在数据库中保留的已提交的撤消信息总量。可在例程启动时设置该参数值。可以计算满足撤消保留要求所需的撤消空间量:UndoSpace = RD * UPS, 其中 UndoSpace 以撤消块数来表示, RD 用以秒为单位的UNDO_RETENTION 来表示, UPS 以每秒撤消块数来表示。 值范围: 所允许的最大值为 (2 ** 32) 秒。默认值: 30 秒。

remote_login_passwordfile= EXCLUSIVE 说明:指定操作系统或一个文件是否检查具有权限的用户的口令。如果设置为 NONE, Oracle将忽略口令文件。如果设置为EXCLUSIVE, 将使用数据库的口令文件对每个具有权限的用户进行验证。如果设置为 SHARED,多个数据库将共享 SYS 和 INTERNAL 口令文件用户。 值范围:NONE | SHARED | EXCLUSIVE默认值: NONE

db_domain = 说明: 指定数据库名的扩展名 (例如:US.ORACLE.COM) 为使一个域中创建的数据库名唯一,建议指定该值。 值范围: 由句点分隔的任何字符串, 最长可以有 128 个字符。 默认值: WORLD

instance_name = mydb 说明: 在多个例程使用相同服务名的情况下,用来唯一地标识一个数据库例程。INSTANCE_NAME 不应与 SID 混淆,它实际上是对在一台主机上共享内存的各个例程的唯一标识。 值范围: 任何字母数字字符。 默认值: 数据库 SID

dispatchers = (PROTOCOL=TCP) (SERVICE=mydbXDB) 说明 :为设置使用共享服务器的共享环境而设置调度程序的数量和类型。可以为该参数指定几个选项。有关详细信息, 请参阅“Oracle8i管理员指南”和“Oracle Net Administrator's Guide”。这是字符串值的一个示例:’(PROTOCOL=TCP)(DISPATCHERS=3)‘。 值范围: 参数的有效指定值。 默认值 : NULL

job_queue_processes = 10 说明: 只用于复制环境。它指定每个例程的 SNP 作业队列进程的数量 (SNP0, ... SNP9, SNPA, ... SNPZ)。要自动更新表快照或执行由 DBMS_JOB 创建的请求,请将该参数设置为 1 或更大的值。 值范围: 0 到 36 默认值: 0

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

background_dump_dest = d:\oracle\admin\mydb\bdump 说明: 指定在Oracle操作过程中为后台进程 (LGWR, DBW n 等等)写入跟踪文件的路径名(目录或磁盘)。它还定义记录着重要事件和消息的数据库预警文件的位置。 值范围: 任何有效的目录名。 默认值: ORACLE_HOME/rdbms/log(根据操作系统而定)

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

C:/ORACLE/UTRC; UNIX 操作系统上的 /oracle/utrc; 或 VMS操作系统上的DISK$UR3:[ORACLE.UTRC]。 值范围: 一个有效的本地路径名, 目录或磁盘。 默认值: 根据操作系统而定

core_dump_dest = d:\oracle\admin\mydb\cdump 说明: 指定核心转储位置的目录名(用于UNIX)。 值范围: 任何有效的目录名。 默认值: ORACLE_HOME/dbs

sort_area_size = 524288说明: SORT_AREA_SIZE 以字节为单位,指定排序所使用的最大内存量。排序完成后, 各行将返回,并且内存将释放。增大该值可以提高大型排序的效率。如果超过了该内存量,将使用临时磁盘段。 值范围: 相当于 6 个数据库块的值(最小值) 到操作系统确定的值 (最大值)。 默认值: 根据操作系统而定

db_name = mydb 说明: 一个数据库标识符, 应与CREATE DATABASE 语句中指定的名称相对应。 值范围:任何有效名称最多可有 8 个字符。 默认值: 无 (但应指定)

open_cursors = 300 说明: 指定一个会话一次可以打开的游标 (环境区域) 的最大数量, 并且限制 PL/SQL使用的 PL/SQL游标高速缓存的大小, 以避免用户再次执行语句时重新进行语法分析。请将该值设置得足够高,这样才能防止应用程序耗尽打开的游标。 值范围: 1 - 操作系统限制值。 默认值: 64

star_transformation_enabled= FALSE 说明: 确定基于成本的查询转换是否将被应用到星型查询中。如果设置为TRUE, 优化程序将考虑将基于成本的转换应用于星型查询中; 如果设置为FALSE, 将不使用任何转换; 如果设置为TEMP_DISABLE, 将考虑查询转换, 但不使用临时表。 值范围: TRUE |FALSE | TEMP_DISABLE 默认值: FALSE

query_rewrite_enabled = FALSE 说明:启用或禁用对实体化视图的查询重写。一个特定实体化视图只在如下条件下启用: 会话参数和单独实体化视图均已启用,并且基于成本的优化已启用。 值范围: TRUE | FALSE 默认值: FALSE

pga_aggregate_target = 25165824 说明: 指定连接到例程的所有服务器进程的目标 PGA总内存。请在启用自动设置工作区之前将此参数设置为一个正数。这部分内存不驻留在SGA 中。数据库将此参数值用作它所使用的目标 PGA内存量。设置此参数时, 要将 SGA 从可用于 Oracle例程的系统内存总量中减去。然后可将剩余内存量分配给pga_aggregate_target。 值范围: 整数加字母 K, M 或 G, 以将此限值指定为千字节,兆字节或千兆字节。最小值为 10M, 最大值为 4000G 默认值: “未指定”, 表示完全禁用对工作区的自动优化。

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

四、修改初始化参数:

1、alter session set····· 回话级修改

2、alter system set·····

动态初始化参数:修改后立即生效,作用于当前数据库实例

静态初始化参数:初始化参数修改后在当前实例中不会生效,参数被保存到服务器初始化参数文件中,下次重新启动数据库生效

scope=spfile。只能修改服务器初始化参数文件的参数值,对于当前数据库实例没有影响。适用于动态参数和静态参数的修改scope=memory。只能修改内存中的初始化参数值。只适合于动态参数的修改,当前实例立即生效

scope=both。 修改内存中的和初始化参数文件中的。是适合动态参数文件修改

3、可用alter system resetparameter_name=parameter_value;清除某个显式参数。清除后恢复系统默认

五、导出服务器初始化文件参数

可以使用create pfile语句将服务器初始化参数文件导出为一个文本初始化参数文件。下列情况下可以考虑导出:

1、创建服务器初始化参数文件的备份

2、为了便于诊断数据库故障原因,需要获取当前数据库实例使用的所有初始化参数的设置信息。其效果等同于执行show parameter

命令或查询动态性能视图v$parameter

3、为了修改服务器初始化参数文件中的参数值,先将服务器初始化参数文件导出文本初始化参数文件,然后对于文本初始化参数文件中的参数进行手动修改,根据修改后的文本化参数文件,创建新的服务器初始化参数文件。

六、恢复丢失或损坏的服务器初始化参数文件

1、如果数据库处于运行状态,可以执行create spfile from memory 语句,根据当前内存中的初始化参数重建服务器初始化参数

2、如果有有效的文本初始化参数,可以用文本参数进行创建:create spfile from pfile 重建服务器初始化参数

3、利用服务器初始化参数文件的备份恢复丢失或损坏的服务器化参数文件

4、上述方法都不可用时,可以首先利用报警文件中显示的初始化参数值(数据库启动时会使用初始化参数文件写入报警文件)重建文本的初始化参数文件,然后利用create spfile from pfile的方式。