一、概念
(1)Oracle有很多的初始化参数项,并且它们都有默认值。
(2)在数据库创建后,有些参数是可以修改的,有些则不可以。
(3)参数文件,是数据库从shutdown状态启动到nomount状态的过程中使用的。
二、对参数的修改
- SYS> alter session set 参数名 = 值; ---> # 对参数的修改,只在当前session中生效
- SYS> alter system set 参数名 = 值 scope = memory | spfile | both;
- ---> # memory 在当前实例中立即生效
- spfile 写入spfile文件中,数据库重启后生效
- both 两者皆有
[ 在“可以修改的”参数中,一些是可以立即生效的,另一些则需要重启后才能生效。]
三、初始化参数详解
1、审计相关
- audit_trail --> # 是否开始审计功能
- audit_file_dest --> # 审计文件存放的目录
- audit_sys_operations --> # 是否审计sysdba角色的用户
2、数据库相关
- db_name --> # 数据库的名字 (在创建数据库后“不可以修改”)
// 可以与$ORACLE_SID一样,也可以不一样
- db_unique_name --> # (RAC中使用,暂不深入)
- db_domain --> # 数据库的完全限定名(Internet点表示法)
// 用于网格环境下确定数据库的逻辑位置
- instance_name --> # 实例的名字
// 可设为与$oracle_sid一样,也可以不一样
// 在RAC环境下,一个database可以对应多个instance
- service_name --> # 数据库对外提供服务的名字 (用于监听和远程连接)
// 名字可以任意取,但一般为$db_name.$db_doman
- compatible --> # 控制Oracle软件的版本号,用于去除当前版本中的一些特性
- // 比如说:在11g的oracle中,设置其为10.2。则这个数据
库只具备10.2版本的特性,无法使用11g的新特性。
- // 如果版本跨度很大,则无法使用此功能。
-
- instance_type --> # 实例的类型 [ ASM | RDBMS ]
// 用于指定“当前实例”是ASM的实例,还是普通的RDBMS实例
-
- nls_date_format --> # 指定日期数据类型的格式
// 如: yyyy-mm-dd hh24:mi:ss
3、OMF(Oracle Managed File)相关
--> # 即:由oracle来自动管理相关数据文件 (非重点内容,暂不考虑)
- db_create_file_dest
- DB_CREATE_ONLINE_LOG_DEST_n
- db_recovery_file_dest
4、信息收集相关
- statistics_level --> # Oracle收集统计数据的级别 [ BASIC | TYPICAL | ALL ]
- // TYPICAL --> Oracle会自动收集与自身性能相关的所有信息
- // ALL --> 同时还收集OS相关的数据
- sql_trace --> # 是否打开SQL语句跟踪功能 [ true | false ]
5、优化器相关
- optimizer_mode --> # Oracle优化器需要优化的指导思想 [ all_rows | first_rows_n ]
- // all_rows --> 使用CBO(基于成本)的方式进行优化,以“使
用最少资源查询出所有数据”为最佳方案
- // first_rows_n --> 使用CBO(基于成本)的方式进行优化,以“最
短的响应时间内返回前n行”为最佳方案
-
optimizer_features_enable --> # Oracle查询优化器的版本控制 (同数据库的版本控制)
- // 用于“对数据库升级后,却仍然只使用旧版本的优化器特性”的情况
-
optimizer_dynamic_sampling --> # 动态采样数据库统计信息的级别
6、控制文件相关
- control_fiels --> # 控制文件的个数及路径
// 指定多个完全一样的“控制文件”,是为了保证控制文件的安全
// 即“多路冗余复用”
control_file_record_keep_time --> 控制文件中的旧记录保留多久
// 用于RMAN备份时,指定记录在控制文件中的信息的保留时长
7、归档文件相关
- log_archive_dest_n --> # 归档日志存放的目录
// 一个归档进程对应一个,最多10个
- log_archive_format --> # 归档日志的文件名格式
// %t 进程号
// %s 日志序号
// %r 重置日志(resetlogs)ID
// 示例:LOG_ARCHIVE_FORMAT = 'log%t_%s_%r.arc'
8、“闪回区”相关
- db_recovery_file_dest --> 指定“闪回区域”目录路径
- db_recovery_file_dest_size --> 指定“闪回区域”最大容量(单位“k”)
- db_flashback_retention_target --> 指定“闪回区域”中数据的保留时长(单位“分钟”)
// 默认为1440分钟上,即1天
9、读取“外部文件”相关
- utl_file_dir --> 将oracle用户对OS(操作系统)上的文件进行读取时,限定在某一个目录中
// 用于通过“外部表”读取OS上的平面文件
// 当然,前提条件是:oracle用户对OS上的这个目录具有“读写”权限
10、登陆验证相关
- remote_login_passwordfile --> # 启动数据库时,对远程登录的用户是否需要进行密码验证
- // none - (不通过密码文件验证)全部使用操作系统的验证方式
- // shared - 多个数据库使用同一个密码文件进行验证
- // exclusive - 一个密码文件只能变一个数据库使用
-
*** 注意:
(1)这里所说得“验证”,是指对“具有sysdba角色权限的用户”(如sys、system)的身份验证。
而普通用户的身体验证,是在数据库启动之后,通过“数据字典”在share pool中完成的。
(2)要启动一个数据库,拥有sysdba角色权限的用户需要在本机或通过网络连接到操作系统上。
a. 若是本机登录,则不验证。
(因为你能够使用操作系统,说明已经通过了OS层面的身份验证,说明是合法用户)
b. 若是通过网络登录,则通过此参数指定“是否验证”,及对密码文件的使用方式。
- sqlplus 用户名/密码@IP地址 as sysdba --> # 此参数在这种情况下起作用
11、SGA相关
- processes --> # 可以连接到Oracle实例的“最大进程数”
// 包括backgroup proceses ,及 server processes
- db_writer_processes --> # DBWn进程的最小数量(最大为20个)
- open_cursors --> # 单个session中,可以打开的游标的最大数量(默认为50个)
- sessiones --> # 最大会话数
- log_buffer --> # 指定log buffer(日志缓冲区)的大小(单位为“k”)
// 必须是OS(操作系统)block的整数倍
- sga_target --> # 启动/关闭ASMM(Automatic Shared Memory Management)功能
-
说明:
- sga_target = 0 --> # 关闭ASMM功能
- // 即“SGA内存区域不再由Oracle自动管理,所有SGA参数(DB_CACHE_SIZE,
SHARED_POOL_SIZE,LARGE_POOL_SIZE,JAVA_POOL_SIZE等都需要手工指定”。
- sga_target > 0 --> # 开启ASMM功能
// 即“只需要指定SGA内存的总大小,其内部的各功能内存块是由oracle自动维护、
调整的”。
fast_start_mttr_target --> # 指定当实例Crash(崩溃)掉后,需要的最长恢复时间时间
// 0 由Oracle自动调整checkpoint时机
// 1800 如果实例崩溃,则重启恢复到Open状态,最长只需要3分钟
(也就是说,在平时实例正常运行时,也是每3分钟做一次checkpoint,
可能会影响数据库日常运行时的性能)
-
- plsql_code_type --> # 对PL/SQL语句的解释方式 [ native | interpreted]
- // native -> 编译
- // interpreted -> 解释
-
- cursor_sharing --> # 共享SQL语句的方式 [forced | exact | similar]
- // forced -- 强迫Oracle使用“绑定变量”的方式来解析SQL查询语句
(将没有使用“绑定变量”的SQL语句,转化为使用绑定变量
的方式,以此来提高对SQL语句解析的复用率)
- db_block_size --> # 数据块大小(单位“k”)
// 它总是OS(操作系统)上block的整数倍
// 这样设置,对磁盘读写的速度快、方便,且不会产生过多的磁盘碎片
-
-
- OLDP(数据仓库用途的数据库)中,可以将DB_BLOCK_SIZE设大。
- // 因为DSS系统中,有大量的读操作,可能会用到全表扫描。
// 这时一次读取大块数据,就会提高查询的性能。
- OLTP(联机事务处理的数据库)中,不宜将此值设得过大。
// 因为涉及到大量的写操作,所以小一点的“块”反而可以提高效率及节约存贮空间。
- db_file_multiblock_read_count --> # 一个I/O可以最多读取多少块。
//(默认为16个block,10g版本最大支持1M)
// 一般DSS系统中,可以将其设大,以节约I/O成本,从而提高SQL查询的性能。
// 11g时,若此参数不设置,则由oracle自动管理。
12、undo表空间相关
- undo_management --> # undo表空间的管理方式 [ auto | manual ]
// auto 自动
(指定为auto,则在创建数据库时,必须创建一个undo表空间,
并且此表空间名要与参数文件中指定的一致)
// manual 手工
- undo_tablespace --> # 指定默认的undo表空间
// 如果数据库中只有一个undo表空间,则可以不指定
// 如果数据库中没有undo表空间,则使用system表空间中的undo段作为数据库
的undo表空间使用
- undo_retention --> # undo表空间中的数据,可以存放的最大时长
// 但根据instance运行时所需要undo表空间的容量不同,
实际保留的时长可能会 <= undo_retention参数值
// “闪回”操作能否成功,与此参数有一定的关系
-
(1)示例: undo_retention = 14400 // 单位为“秒”,即4小时。
(2)“快照太旧(Ora-01555 snapshot-too-old)”错误,则说明undo表空间太小,需要增大,
并延长对undo数据的保留时长。
- undo_managemnet --> # undo表空间(撤销表空间)的管理方式 [auto | manual]
- // auto 由oracle自动管理
- // manual 手工管理
13、PGA相关
- pga_aggregate_target --> # 指定server process进程的PGA总和的最大值 (单位“M”)
// 不包括 backgroup process的PGA空间大小????
- (1)当pga_aggregate_target参数值 > 0时,
workarea_size_policy参数会自动设置成AUTO。
- (2)若一个会话中排序操作使用了 pga_aggregate_target * 5%的空间(“内存排序”)还不够,
则不够的部分使用“临时表空间”进行排序(磁盘排序)。
Ps: 什么情况下,会出现“排序”操作?
1)在SQL语句中,出现 order by / group by / hash join 子句时。
2)在创建索引时。
workarea_size_policy --> # PGA中工作区的管理方式 [auto | manual]
// auto 即:“排序操作”所需要的PGA空间大小,由Oracle自动分配和管理。
在使用完后,自动回收。
(完结)
阅读(1695) | 评论(0) | 转发(0) |