可以在创建新数据库之前添加或编辑基本初始化参数。
关于初始化参数和初始化参数文件
当 Oracle 实例启动时,它从初始化参数文件中读取初始化参数。这个文件必须至少指定 DB_NAME 参数。所有其他参数都有默认值。
初始化参数文件可以是只读文本文件、PFILE 或读/写二进制文件。
二进制文件称为服务器参数文件。服务器参数文件允许您使用 ALTER SYSTEM 命令更改初始化参数,并在关闭和启动过程中保持更改。它还为 Oracle 数据库的自调优提供了基础。由于这些原因,建议您使用服务器参数文件。您可以从您编辑的文本初始化文件手动创建一个,或使用数据库配置助手(DBCA)自动创建您的数据库。
在手动创建服务器参数文件之前,可以使用文本初始化参数文件启动实例。在启动时,Oracle 实例首先在默认位置搜索服务器参数文件,如果没有找到,则搜索文本初始化参数文件。您还可以通过将文本初始化参数文件命名为 STARTUP 命令的参数来覆盖现有的服务器参数文件。
下表显示了文本初始化参数文件的默认名称和位置:
| 平台 | 默认名称 | 默认地址 |
|---|---|---|
| UNIX 和 Linux | initORACLE_SID.ora例如,mynewdb 数据库的初始化参数文件名为: initmynewdb.ora |
ORACLE_HOME/dbs |
| Windows | initORACLE_SID.ora |
ORACLE_HOME`database` |
如果您是第一次创建 Oracle 数据库,Oracle 建议您尽量减少要更改的参数值的数量。随着您对数据库和环境越来越熟悉,您可以使用 ALTER SYSTEM 语句动态调优许多初始化参数。如果您使用的是文本初始化参数文件,那么您的更改仅对当前实例有效。要使它们永久存在,必须在初始化参数文件中手动更新它们,否则它们将在下一次关闭和启动数据库时丢失。如果使用的是服务器参数文件,那么 ALTER SYSTEM 语句对初始化参数文件的更改可以在关闭和启动过程中持续存在。
初始化参数文件样例
Oracle 数据库在示例文本初始化参数文件中提供了一般合适的值。您可以编辑这些 Oracle 提供的初始化参数,并添加其他参数,这取决于您的配置和选项以及您计划如何调优数据库。
示例文本初始化参数文件名为 init.ora,在大多数平台上可以在以下位置找到:
ORACLE_HOME/dbs
示例文件内容如下:
##############################################################################
# Example INIT.ORA file
#
# This file is provided by Oracle Corporation to help you start by providing
# a starting point to customize your RDBMS installation for your site.
#
# NOTE: The values that are used in this file are only intended to be used
# as a starting point. You may want to adjust/tune those values to your
# specific hardware and needs. You may also consider using Database
# Configuration Assistant tool (DBCA) to create INIT file and to size your
# initial set of tablespaces based on the user input.
###############################################################################
# Change '<ORACLE_BASE>' to point to the oracle base (the one you specify at
# install time)
db_name='ORCL'
memory_target=1G
processes = 150
db_block_size=8192
db_domain=''
db_recovery_file_dest='<ORACLE_BASE>/flash_recovery_area'
db_recovery_file_dest_size=2G
diagnostic_dest='<ORACLE_BASE>'
dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)'
open_cursors=300
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
# You may want to ensure that control files are created on separate physical
# devices
control_files = (ora_control1, ora_control2)
compatible ='12.0.0'
文本初始化参数文件格式
文本初始化参数文件(PFILE)必须包含以下形式之一的 name/value 对:
-
对于只接受单一值的参数:
parameter_name=value -
对于接受一个或多个值的参数(如 CONTROL_FILES 参数):
parameter_name=(value[,value] ...)
string 类型的参数值必须用单引号括起来(’)。只有在主机操作系统上大小写重要时,文件名中的大小写才有意义。
对于接受多个值的参数,为了使您能够轻松地从警报日志复制和粘贴名称/值对,您可以在多行上重复参数,其中每一行包含不同的值。
control_files='/u01/app/oracle/oradata/orcl/control01.ctl'
control_files='/u01/app/oracle/oradata/orcl/control02.ctl'
control_files='/u01/app/oracle/oradata/orcl/control03.ctl'
如果重复不接受多个值的参数,则只有最后指定的值生效。
确定全局数据库名称
全局数据库名称由用户指定的本地数据库名称和数据库在网络结构中的位置组成。
- 设置
DB_NAME和DB_DOMAIN初始化参数。
DB_NAME 初始化参数确定数据库名称的本地名称组件,DB_DOMAIN 参数(可选)指示网络结构中的域(逻辑位置)。这两个参数的设置组合必须形成一个在网络中惟一的数据库名称。
例如,要创建一个全局数据库名为 test.us.example.com 的数据库,编辑新参数文件的参数如下:
DB_NAME = test
DB_DOMAIN = us.example.com
可以使用 ALTER DATABASE RENAME GLOBAL_NAME 语句重命名数据库的 GLOBAL_NAME。但是,在首先更改 DB_NAME 和 DB_DOMAIN 初始化参数并重新创建控制文件之后,还必须关闭和重新启动数据库。使用命令 ALTER DATABASE BACKUP CONTROLFILE TO TRACE 可以轻松地重新创建控制文件。
DB_NAME 初始化参数
DB_NAME 初始化参数指定数据库标识符。
DB_NAME 必须设置为不超过 8 个字符的文本字符串。数据库名称必须以字母字符开头。在创建数据库期间,为 DB_NAME 提供的名称将记录在数据库的数据文件、重做日志文件和控制文件中。如果在数据库实例启动期间 DB_NAME 参数的值(在参数文件中)和控制文件中的数据库名称不同,则数据库不会启动。
DB_DOMAIN 初始化参数
在分布式数据库系统中,DB_DOMAIN 初始化参数指定数据库在网络结构中的逻辑位置。
DB_DOMAIN 是一个文本字符串,它指定创建数据库的网络域。如果要创建的数据库将成为分布式数据库系统的一部分,那么在创建数据库之前要特别注意这个初始化参数。这个参数是可选的。
指定 Fast Recovery Area
Fast Recovery Area 是 Oracle 数据库可以存储和管理与备份和恢复相关的文件的位置。它与数据库区域不同,后者是当前数据库文件(数据文件、控制文件和在线重做日志)的位置。
使用以下初始化参数指定快速恢复区域:
-
DB_RECOVERY_FILE_DEST:Fast Recovery Area 的位置。可以是目录、文件系统或自动存储管理(Oracle ASM)磁盘组。在 Oracle Real Application Clusters (Oracle RAC) 环境中,此位置必须位于集群文件系统、Oracle ASM 磁盘组或通过 NFS配置的共享目录上。
-
DB_RECOVERY_FILE_DEST_SIZE:指定 Fast Recovery Area 使用的最大总字节数。必须在启用DB_RECOVERY_FILE_DEST之前指定此初始化参数。
在 Oracle RAC 环境中,这两个参数的设置必须在所有实例上相同。
如果设置了 LOG_ARCHIVE_DEST 和 LOG_ARCHIVE_DUPLEX_DEST 参数的值,则无法启用这些参数。在设置 Fast Recovery Area 之前,必须禁用这些参数。相反,您可以为 LOG_ARCHIVE_DEST_ n 参数设置值。
Oracle 建议使用快速恢复区域,因为它可以简化数据库的备份和恢复操作。
指定控制文件
数据库结构的条目(例如它的名称、创建它的时间戳以及它的数据文件和重做文件的名称和位置)。CONTROL_FILES 初始化参数指定一个或多个控制文件的名称,用逗号分隔。
- 设置
CONTROL_FILES初始化参数。
执行 CREATE DATABASE 语句时,将创建 CONTROL_FILES 参数中列出的控制文件。
如果在初始化参数文件中不包含 CONTROL_FILES,那么 Oracle 数据库将使用默认的操作系统相关文件名在初始化参数文件所在的目录中创建一个控件文件。如果启用了Oracle 托管文件,数据库将创建 Oracle 托管控制文件。
如果希望数据库在创建数据库控件文件时创建新的操作系统文件,CONTROL_FILES 参数中列出的文件名必须与当前系统上存在的任何文件名不匹配。如果希望数据库在创建数据库控件文件时重用或覆盖现有文件,请确保 CONTROL_FILES 参数中列出的文件名与要重用的文件名匹配,并在 CREATE DATABASE 语句中包含 CONTROLFILE REUSE 子句。
Oracle 强烈建议您为每个数据库使用至少两个存储在单独物理磁盘驱动器上的控制文件。
指定数据库块大小
DB_BLOCK_SIZE 初始化参数指定数据库的标准块大小。
- 设置
DB_BLOCK_SIZE初始化参数。
这个块大小用于 SYSTEM 表空间,默认情况下用于其他表空间。Oracle 数据库可以支持最多四个额外的非标准块大小。
B_BLOCK_SIZE 初始化参数
应该选择最常用的块大小作为标准块大小。在许多情况下,这是您必须指定的惟一块大小。
- 设置
DB_BLOCK_SIZE初始化参数。
通常,DB_BLOCK_SIZE 被设置为 4K 或 8K。如果没有为该参数设置值,则默认数据块大小是特定于操作系统的,这通常是足够的。
在创建数据库之后,您不能更改块大小,除非重新创建数据库。如果数据库块大小与操作系统块大小不同,则确保数据库块大小是操作系统块大小的倍数。例如,如果您的操作系统块大小为 2K (2048字节),则 DB_BLOCK_SIZE 初始化参数的以下设置是有效的:
DB_BLOCK_SIZE=4096
较大的数据块大小可以提高磁盘和内存 I/O(访问和存储数据)的效率。因此,如果存在以下条件,请考虑指定一个大于操作系统块大小的块:
-
Oracle 数据库是在一个具有大量内存和高速磁盘驱动器的大型计算机系统上运行的。例如,由拥有大量硬件资源的大型计算机控制的数据库通常使用 4K 或更大的数据块。
-
运行 Oracle 数据库的操作系统使用较小的操作系统块大小。例如,如果操作系统块大小为 1K,并且默认数据块大小与此匹配,那么数据库可能在正常操作期间执行了过多的磁盘 I/O。在这种情况下,为了获得最佳性能,数据库块应该由多个操作系统块组成。
非标准块尺寸
您可以创建非标准块大小的表空间。
创建非标准块大小的表空间:
- 在
CREATE TABLESPACE语句中指定BLOCKSIZE子句。
这些非标准块大小可以有以下任意两个幂的值:2K、4K、8K、16K 或 32K。有关最大块大小的特定于平台的限制适用,因此某些平台可能不允许这些大小中的一些。
要使用非标准块大小,必须在 SGA 内存的缓冲缓存区域内为您打算使用的所有非标准块大小配置子缓存。
如果要在数据库之间传输表空间,那么为数据库指定多个块大小的能力尤其有用。例如,可以将使用 4K 块大小的表空间从 OLTP 环境传输到使用 8K 标准块大小的数据仓库环境。
指定进程的最大数量
PROCESSES 初始化参数决定可以同时连接到 Oracle 数据库的操作系统进程的最大数量。
- 设置
PROCESSES初始化参数。
此参数的值必须为每个后台进程的最小值为 1,再加上每个用户进程的最小值为 1。后台进程的数量将根据使用的数据库特性而异。例如,如果您正在使用高级队列或文件映射特性,那么您将拥有额外的后台进程。如果使用自动存储管理,则为数据库实例添加三个附加进程。
如果您计划运行50个用户进程,那么最好将 PROCESSES 初始化参数设置为 70。
指定 DDL 锁定超时
您可以指定阻塞 DDL 语句等待锁定的时间量。
数据定义语言(DDL)语句要么是非阻塞的,要么是阻塞的,这两种类型的DDL语句都需要内部结构上的独占锁。如果这些锁在DDL语句运行时不可用,那么非阻塞和阻塞DDL语句的行为是不同的:
- 非阻塞的 DDL 等待,直到引用受 DDL 影响的对象的每个并发 DML 事务提交或回滚。
- 阻塞 DDL 失败,但如果在锁定可用的几秒钟后执行DDL,那么它可能已经成功。
要使阻塞 DDL 语句能够等待锁,请指定 DDL 锁超时—DDL 命令在失败之前等待所需锁的秒数。
- 要指定 DDL 锁定超时,请设置
DDL_LOCK_TIMEOUT参数。
DDL_LOCK_TIMEOUT 允许的值范围是 0 到 1,000,000。默认值是 0。您可以使用 ALTER SESSION 语句在系统级或会话级设置 DDL_LOCK_TIMEOUT。
指定 Undo 空间管理的方法
每个 Oracle 数据库都必须有一种方法来维护用于 undo 数据库更改的信息。这些信息主要由事务提交之前的操作记录组成。这些记录统称为 undo 数据。
使用 Undo 表空间为自动 Undo 管理设置一个环境。
- 将
UNDO_MANAGEMENT初始化参数设置为 AUTO,这是默认值。
UNDO_MANAGEMENT 初始化参数
UNDO_MANAGEMENT 初始化参数确定实例是否可以自动 Undo 管理模式启动,该模式将 Undo 存储在 Undo 表空间中。将此参数设置为 AUTO,以启用自动 Undo 管理模式。如果参数被省略或为空,AUTO 是默认值。
UNDO_TABLESPACE 初始化参数
初始化参数 UNDO_TABLESPACE 使您能够覆盖实例的默认 Undo 表空间。
当实例以自动 Undo 管理模式启动时,它尝试选择一个 Undo 表空间来存储 Undo 数据。如果数据库是在自动 Undo 管理模式下创建的,那么默认的 Undo 表空间(系统创建的 SYS_UNDOTBS 表空间或用户指定的 Undo 表空间)是实例启动时使用的 Undo 表空间。您可以通过为 UNDO_TABLESPACE 初始化参数指定一个值来覆盖实例的默认值。这个参数对于在 Oracle 实际应用程序集群环境中为实例分配特定的 Undo 表空间特别有用。
如果 UNDO_TABLESPACE 初始化参数没有指定 Undo 表空间,则选择数据库中第一个可用的 Undo 表空间。如果没有可用的 Undo 表空间,则实例在没有 Undo 表空间的情况下启动,并将 Undo 数据写入 SYSTEM 表空间。您应该避免在这种模式下运行。
指定数据库兼容性级别
COMPATIBLE 初始化参数控制数据库兼容性级别。
- 将
COMPATIBLE的初始化参数设置为发布号。
关于 COMPATIBLE 初始化参数
COMPATIBLE 初始化参数启用或禁用数据库中影响磁盘上文件格式的特性的使用。例如,如果您创建了一个 Oracle Database 19c 数据库,但是在初始化参数文件中指定 COMPATIBLE=12.0.0,那么如果尝试使用需要 Oracle Database 19c 兼容性的特性,就会生成一个错误。这样的数据库据说处于 12.0.0 兼容性级别。
您可以通过更改 COMPATIBLE 初始化参数来提高数据库的兼容性级别。如果这样做,则无法使用较低的兼容性级别设置启动数据库,除非对兼容性升级之前的时间点进行时间点恢复。
COMPATIBLE 参数的默认值是最近的主要版本的版本号。
设置许可参数
如果使用命名用户许可,Oracle 数据库可以帮助您执行这种形式的许可。可以对数据库中创建的用户数量设置限制。一旦达到此限制,就不能创建更多用户。
要限制在数据库中创建的用户数量,请在数据库初始化参数文件中设置 LICENSE_MAX_USERS 初始化参数。
下面的示例设置 LICENSE_MAX_USERS 初始化参数:
LICENSE_MAX_USERS = 200




