2026年01月23日/ 浏览 6
oracle server分成两部分组成:instance和database。
instance是指存储在磁盘上的一组后台进程和一块共享内存区域。
database是指存储在磁盘上的一组物理文件。
认真、细致、严谨是对工作的基本素质要求。
查看数据库v$process视图,查看操作系统的每个进程信息:
select addr,pid,spid,username,program from v$process;
pid=1的进程是pseudo进程,这个进程是初始化数据库的进程。
latch通常称为闩,也就是门闩,是数据库内部的串行锁机制,主要是用来控制内存上的并发,在多处理器上,oracle进程通过自旋spin来进行latch争夺。
查看数据库是否使用了spfile文件:
show parameter spfile;
路径一般是$ORACLE_HOME/dbs/spfile <ORACLE_SID>.ora
启动顺序中查找参数文件:
spfile <ORACLE_SID>.ora
spfile.ora
init <ORACLE_SID>.ora
SID:System IDentifier,ORACLE_SID是oracle System IDentifier的缩写。
当oracle实例启动时,在操作系统上fork的进程就是依据这个ORACLE_SID来创建的。
oracle的实例Instance就是由一块共享内存区域SGA和一组后台进程Background Processes共同组成的。
查看数据库实例:
select instance_name from v$instance;
数据库db_name代表了实例即将挂接的数据库名称,在oracle rac环境中,多个数据库可以对应一个数据库。
数据库启动经历的过程:
1.shutdown状态
2.nomount状态
3.mount状态
4.open状态
数据库启动到nomount状态之后,oracle从参数文件中获得控制文件的位置信息,然后找到控制文件,并且根据控制文件中记录的数据文件位置进行数据文件的存在性判断。
如果设置了闪回区Flashback Recovery Area,那么通常闪回区和数据区位于不同的硬盘存储,那么oracle会默认把控制文件分布到不同的磁盘组,这样oracle才算完成了控制文件的真正镜像安全保护。
查看控制文件位置:
show parameter control_files;
可以看到控制文件1位于oradata这个数据文件区,控制文件2位于Recovery_area区域。
在mount过程中,oracle需要找到控制文件,并且锁定控制文件。
当数据库进入mount之后,数据库的后台进程会根据控制文件中记录的数据文件信息来验证数据文件是否存在,并且在动态视图中记录这些信息。
heartbeat每3秒钟更新一次控制文件。
如果使用自动存储管理技术Automatic Storage Management ASM,那么会增加一个ASM实例的心跳事件。
select event#,name from v$event_name where name like %heartbeat%;
会出现:
ASM mount: wait for heartbeat.
老虎
鼓励的话语:人生只有走出来的精彩,没有等出来的辉煌!