一、设置数据库初始化参数
1、Oracle服务器在启动例程时读取初始化参数文件。共有两种类型的初始化参数文件:
(1) 静态参数文件pfile,一般名为 initSID.ora。
a) 文本文件
b) 使用操作系统编辑器进行修改
c) 手动进行修改
d) 所作更改在下次启动时生效
e) 仅在例程启动过程中打开
f) 缺省位置为 $ORACLE_HOME/dbs
(2) 动态参数文件spfile,一般名为 spfileSID.ora。
a) 二进制文件
b) 由 Oracle 服务器进行维护
c) 始终驻留在服务器端
d) 所做更改永久有效,不受关闭和启动的影响
e) 可以自行调节参数值
f) 使恢复管理器能够备份初始化参数文件
(3)查参数
v$parameter --显示当前在运行的实例中生效的参数值。
v$spparameter--显示磁盘上的spfile中存储的值。
selectname,value,DESCRIPTION from v$parameter where name like '%proces%';
show parameter processes
v$pramater(X$KSPPI,X$KSPPCV)
processes --ORA-00020:maxnum number of processes(150) exceeded;
session 1.5processes+22(11g) 1.1processes+5(10g)
memory_max_target --控制、预留
memory_target
sga_max_size
sga_target_size
db_cache_size
shared_pool_size
pga_aggregate_target
log_archive_dest_1
open_cursours
session_cached_cursors
undo_managemnet
_allow_resetlogs_corruption
_corrupted_rollback_segments
--(select segment_name formdba_rollback_segs;undo_managemnet=MANUAL)
(4)修改参数
pfile --纯文本
spfile --二进制
alter system|session reset|set parameter_name= scope=both,spfile,memory [sid=’sid’|’*’]
#SID是指实例。在RAC中,一个数据库对应多个实例,可以使用此选项,只针对某个实例修改某个参数的值
二、数据库启动和关闭的多个阶段
1、数据库的四种状态
SHUTDOWN
NOMOUNT
MOUNT
OPEN
2、在启动时按顺序搜索实例参数文件
这里SID指的是参数文件要启动的实例名称。
参数默认存放在位置在:$ORACLE_HOME/dbs
参数启动的优先级-->spfile<sid>.ora-->spfile.ora--init<sid>.ora这个搜索顺序非常重要!如果不存在这三个文件,就不能启动实例。
NOMOUN模式只使用参数文件和警报日志。
3、实例启动的完整步骤
上图对应的命令:
第一步启动: startup;
第二步创建实例: startup nomount;
第三步加载数据库:alter database mount;
第四步打开数据: alter database open;
数据库启动的验证:alter session set events 'immediate trace name file_hdrs level10';//控件文件与数据文件头
(1)第一次检查数据文件头中的Checkpoint CNT是否对应控制文件中的Checkpoint CNT一致,如果相等,则进行第二次检查.
(2)第二次检查数据文件头的开始SCN和对应控制文件中的结束SCN是否一致.如果结束SCN等于开始SCN,则不需要对那个文件进行恢复.对每个数据文件都完成检查后,打开数据库,同时将每个数据文件的结束SCN设置为无穷大FFFFFFFFFFF.
4、关闭数据库
shutdown abort|immediate|transactional|normal
(1) shutdownabort;
这个命令相当于断电。实例立即终止。此时,不会将任何数据写入磁盘,也不会关闭任何文件句柄,同时也不会采用任何有序的方式终止正在进行的事务。
友情提示:执行shudownabort命令不会坏数据库,因此,我们建议在数据库异常退出之后不执行诸如备份之类的某些操作。
(2) shutdownimmediate;
这个命令不允许任何新的用户连接,当前所有连接的会话都被终止。任何活动的事务都将回滚,随后数据库会关闭。这个命令是我们平时用的最多的关闭数据库的命令。
(3) shutdowntransactional;
这个命令不允许任何新的用户连接,不存在于某个事务中的现有会话会被终止,允许当前位于某个事务中的会话完成该事务之后终止。一旦所有会话终止,就会关闭数据库。
(4) shutdownnormal;
这个命令是默认的选项,即等于shutdown;该命令不允许任何新的用户连接,但是允许继续当前的所有连接。只有所有用户(自愿地)退出登录时,数据库才能真正关闭。
友情提示:通常,正常的数据库关闭是没有意义的:即使只剩下Database Control在运行,也总是存在尚未退出登录的用户。
(5) startupforce;
这个命令是由两条命令组成:先是shutdown abort;然后startup。有时在测试库了为节省时间偷一下懒,就用此命令。
(6) 有序的关闭数据库
sys@OCM> alter database close;
Databasealtered.
sys@OCM>select status from v$instance;
STATUS
------------
MOUNTED
sys@OCM>alter database dismount;
Databasealtered.
sys@OCM>select status from v$instance;
STATUS
------------
STARTED
sys@OCM>shutdown abort;
ORACLEinstance shut down.
这些命令将完全颠倒启动顺序。在实际中,这样做没有价值,DBA直接使用shutdown命令。
三、告警日志文件和跟踪文件
存储位置由background_dump_dest 这个参数决定
告警日志包含了以下信息:
1、数据库启动或关闭的时间。
2、所有非缺省初始化参数的列表。
3、后台进程的启动。
4、例程使用的线程。
5、正在向其中写入信息的日志序列号 LGWR。
6、有关日志切换的信息。
7、表空间的创建和回滚段的创建。
8、已发出的警报声明。
9、有关 ORA-600 等错误消息和区错误的信息。
友情提示:很多DBA在被要求第一次查看数据库时,首先会查找告警日志,并从头到尾浏览一遍,以了解目前发生的事情。
user_dump_dest 这个参数决定位置(在11g中bdump与 udump都同一个位置了)
跟踪文件包含以下内容:
主要记录后台进程的一些信息,记录些用户运行相关的信息,如:用户所执行的SQL语句的相关信息
有个参数是控制这个跟踪日志的大小
sys@OCM>show parameter max_dump_file_size
NAME TYPE VALUE
----------------------------------------------- ------------------------------
max_dump_file_size string unlimited
可以修改此参数控制跟踪日志文件的大小
四、动态性能视图与数据库启动
nomount:v$parameter,v$sparameter,v$sga,v$sgastat,v$bh,v$instance,v$option,v$version,v$procession,v$processes,v$session
mount:v$thread,v$controlfile,v$database,v$datafile,v$logfile,v$datafile_header
五、考点:
1、因为在实例启动时只被读取一次,所以init文件被认为是“静态的”参数文件。因为Oracle在实例运行时会不断地读取和更新spfile文件,所以这种文件被认为是“动态的”参数文件。区分参数文件类型十分重要,因为有一个参数不具有默认值:DB_NAME参数。