深入解析Oracle学习笔记(第一章)

第一章 数据库的启动与关闭

1.Oracle启动过程中,观察告警日志,先列出参数文件中费缺省参数,然后是后台进程启动过程,包含PID和OS ID两个信息,其中PID表示该进程在数据库内部的标识符编号,而OS ID则代表该进程在操作系统上的进程编号。

注:9i没有OS ID,10g有,11g为每个进程增加了时间标记。

为什么没有PID=1的进程?

查看v$process视图

v$process.addr=v$session.paddr


$ORACLE_HOME/dbs     spfile<ORACLE_SID>.ora ---> spfile.ora --->init<ORACLE_SID>.ora    这三个都不存在,则数据库无法启动

show parameter spfile 查看是否使用了spfile文件,value不为null则使用了spfile文件

?代表ORACLE_HOME ,@ 代表ORACLE_SID


同一个ORACLE_HOME下,oracle根据ORACLE_SID将实例区分开来,但是在不同的ORACLE_HOME下,即使是同一台主机,oracle也能创建相同ORACLE_SID的实例。

instance_name是初始化参数,默认值为ORACLE_SID。但是不同的实例可以拥有相同的instance_name。在同一个ORACLE_HOME下,只要ORACLE_SID不同,数据库并不校INSTANCE_NAME,show parameter instance_name即可看到。但是在v$instance视图中,instance_name始终和oracle_sid保持一致。

监听器动态注册时,注册信息里的instance是instance_name参数


db_name不超过8个字符,监听器动态注册的时候,作为缺省服务名注册。


RMAN非常特殊,oracle允许在不存在参数文件的情况下启动一个实例,数据库db_name缺省为DUMMY,这是极端情况。


在nomount状态,可以查询v$parameter视图,这部分信息来自参数文件。


v$recover_file 


mount状态,控制文件每3秒更新一次,heartbeat 心跳。


如果不存在password文件,则远程用户无法使用sysdba/sysoper身份登录数据库。

password文件在mount阶段检测,但即使该文件不存在,数据库也能正常mount,只在告警日志文件中报错。(oracle 9i)

从oracle10g开始,启动过程中,即使找不到password文件,数据库也不报错,只是和口令文件相关的部分功能无法使用。


lk<ORACLE_SID>文件,锁定文件。数据库启动时锁定,关闭时释放。


oracle OPEN阶段的一致性校验

1.检查数据文件头中的检查点计数(checkpoint cnt)是否和控制文件中的检查点计数一致,此步骤检查用以确认数据文件是来自同一版本,而不是从备份中恢复而来(因为checkpoint cnt不会被冻结,会一直被修改,和scn不同)。(介质恢复?)

如果检查点计数检查通过,则数据库进行第二次检查。

2.检查数据文件头开始SCN和控制文件中记录的该文件的SCN是否一致,如一致,则不需要恢复。(实例恢复?)



监听器文件(listener.ora)主要包括两个部分

1.LISTENER信息,包含监听的协议,地址,端口。

2.SID_LIST_LISTENER信息,

SID_NAME=PLSExtProc 是数据库缺省就包含的对外部存储过程提供的本地监听

GLOBAL_DBNAME 和客户端请求中的SERVICE_NAME相匹配


通过服务名,oracle可以把客户端和服务器彻底隔离开。客户端不需要关心数据库的名字,实例名是什么。


动态注册,PMON进程。

动态注册的服务名,实例状态为READY,静态为UNKNOWN。


local_listener参数,指定数据库实例动态注册到哪个监听器上。在tnsnames.ora文件中,可以配置非默认端口监听器的解析。

remote_listener 远程注册


shutdown abort 之前,最好alter system checkpoint,减少数据库启动时实例恢复时间。

你可能感兴趣的:(深入解析Oracle学习笔记(第一章))