Oracle 体系结构学习

发布于:2025-07-22 ⋅ 阅读:(17) ⋅ 点赞:(0)

1 认识Oracle后台进程

Oracle数据库后台进程是Oracle数据库管理系统(DBMS)的核心组件,它们在后台运行,负责数据库的各种管理和维护任务。

主要包括以下几种:

SMON (System Monitor)
    SMON负责数据库的恢复操作,如处理系统故障(例如,实例失败)。
    当检测到数据库实例崩溃时,SMON会尝试恢复控制文件和数据文件的一致性。

PMON (Process Monitor)
    PMON负责监控用户进程的状态,并在用户进程异常终止时进行清理工作。
    它确保不会留下孤儿进程占用资源。

DBWn (Database Writer)
    DBWn负责将缓冲区缓存中的脏数据写入数据文件。
    它通过减少脏缓冲区的数量来提高性能,并保证数据的一致性和持久性。

LGWR (Log Writer)
    LGWR负责将重做日志缓冲区中的日志条目写入到在线重做日志文件中。
    这是保证事务持久性的关键部分,确保即使在系统崩溃的情况下,也能通过重做日志恢复数据。

CKPT (Checkpoint)
    CKPT进程负责在数据库中创建检查点,以确保数据文件和在线重做日志的一致性。
    检查点减少了恢复操作的时间,因为它允许数据库从最近的检查点开始恢复。

ARCn (Archiver)
    ARCn负责将在线重做日志文件归档到指定的归档日志目录中。

前面5个是必须启动的;

这些不是在Windows服务里看到的哪些;

如何能看到这些进程和它们的状态呢;

在Windows任务管理器看不到;

Oracle数据库 在Windows平台运行时默认以单一 oracle.exe 进程运行。

这句话是网上的;

目前我任务管理器里看到的如下,包括我打开了SQL Developer,这可能还增加一个进程;

我没发现oracle.exe,这是不是版本的问题,我的是11g r2;

根据资料,用Oracle安装以后的Administration Assistant for Windows工具,可以查看Oracle的进程;

但是打开此工具,我的看不到什么,上图的上部是网上的,我的在电脑名下面只有性能监视器、Oracle主目录两项;

根据资料,执行如下图的SQL(需要SYSDBA权限),可以查看Oracle包含的进程的状态; 

看一下它显示的,后台进程都是包含在ORACLE.EXE里;

SELECT s.sid, s.serial#, p.spid, s.username, s.status, s.osuser, s.machine, s.program
FROM v$session s, v$process p
WHERE s.paddr = p.addr;

2 Oracle内存结构学习


    Oracle内存由2大部分组成:SGA(系统全局区),PGA(程序全局区)。
    PGA不是实例的一部分,服务器进程启动时,才分配PGA。
    SGA是数据库实例的一部分,数据库实例启动时,会首先分配系统全局区。

    系统全局区包括几个重要的内存区;数据库高速缓存,重做日志缓存,共享池,大池,Java池。

2.1 共享池(Shared Pool)


    共享池包括库高速缓存和数据字典高速缓存。

    库高速缓存存储了最近使用过的SQL和PL/SQL语句。Oracle采用LRU算法管理库高速缓存。没有直接设置库高速缓存的指令,只能通过设置共享池的大小间接地更改。共享池是SGA的一部分,所以共享池不能超过SGA的大小。

    数据字典高速缓存存储了数据文件、表、索引、列、用户、权限信息和其它一些数据库对象的定义。在SQL语句的解析阶段,需要这些信息来解析用户名和用户的访问权限。同样的,设置数据字典高速缓存的大小通过设置共享池的大小间接实现。


网站公告

今日签到

点亮在社区的每一天
去签到