本文为《DBA的思想天空:感悟Oracle数据库本质》学习笔记 第一章 要点摘录
1.3章节- 在本机上不经过 SQL*Net 连接数据库,前台进程和用户进程之间通过 IPC 机制进行通信,通信协议就是著名的 Bequeath协议,简称 BEQ协议。而如果通过 SQL*Net连接数据库,那么就需要使用网络协议
- 使用 SQL*Net协议的前台进程和用户进程之间的通信采用 Socket通信。实际上,在服务器上,我们也可以使用 SQL*Net连接数据库,很少会去这样做,因为 BEQ协议在效率上高于 Socket通信
- 在一个存在防火墙的环境中,往往是由于在防火墙环境下的 Socket重定向引起的TNS-12535 之类的错误。原因在于客户端连接的是一个 NAT翻译后的 IP地址,而重定向的时候,监听器要求客户端连接到真实的 IP 地址上,这样就会出现连接超时导致的失败。这种情况一般的解决方案是使用 connect manager(CMAN)
- 实例数据库是 Oracle高可用架构和高可扩展性架构的核心技术,多个实例同时打开数据库进行读写,可以避免某个实例故障导致的系统不可用,同时多实例实现负载分担,也可以减轻某个实例的工作负载,从而提高整体吞吐能力
- RAC更严格地说是 RAC RDBMS,RAC 只是 Oracle RDBMS 的一个选件,安装并启用了 RAC 功能的数据库我们称之为 RACRDBMS,这是一个多实例的关系型数据库系统。而 CRS只是一个CLUSTER的组件,它提供了RAC RDBMS 运行所必需的底层集群环境。CRS 本身也不提供共享存储系统,它只提供了CLUSTER的节点管理、健康性检查以及一系列 CLUSTER应用(比如 VIP、ONS等应用) ,真正在 RAC中提供共享存储的是 ASM、HACMP或者 CFS等技术。
- 多实例的数据库中,每个实例拥有一组独立的在线日志记录,每个实例独立生成在线日志信息,并且拥有独立的 LGWR 进程用于写入在线日志文件。
- 要从数据库中删除一个实例的时候,我们必须关闭这个 THREAD,否则无论这个实例是否被使用,数据库恢复的时候,仍然会需要使用这个 THREAD 的日志。
- 在多实例数据库环境中,临时表空间是可以多个实例共享的,不过能够共享的仅仅是临时表空间,临时段是不能共享的。在一个临时表空间上,每个实例必须拥有自己独立的临时段。当临时表空间满的时候,如果其他实例的临时段有空闲空间,那么这个实例可以从其他实例的临时段中偷取一个 EXTENT,用于扩展自己的临时段。
1.4章节- 如果应用和 Oracle在同一台机器上运行,而不通过网络,那么用户进程和服务器进程之间可以通过 BEQ协议通信,从而降低系统开销。然而,当应用和 Oracle运行在不同的机器上时,用户进程使用 TCP/IP协议,通过服务器进程访问 Oracle,可执行下列任务。
对应用所发出的 SQL语句进行语法分析和执行。
从磁盘(数据文件)中读入必要的数据块到 SGA的共享数据库缓冲区(该块不在缓冲区时)。
将结果返回给应用程序处理。
- DBWR进程执行将数据块缓冲区写入数据文件的工作,,DBWR 的主要任务是将这些标为“DIRTY”的缓冲区写入磁盘,使缓冲区保持“CLEAN”
- Oracle采用 LRU算法(最近最少使用算法)保持内存中的数据块是最近使用的,使 I/O最小。
当服务器进程将一缓冲区移入“DIRTY”链,此“DIRTY”链达到临界长度时,该服务器进程将通知DBWR进行写入操作
服务器进程在 LRU 表中查找可用的数据块缓冲时,如果在查找了参数_DB_BLOCK_ MAX_SCAN_CNT 所定义数量的缓冲区后,仍没有查到未用的缓冲区,那么它将会停止查找,并通知 DBWR进行数据写入。DBWR每次休眠时都会设置定时器,如果出现超时(每次 3秒), DBWR将通知自身。当出现检查点时, LGWR将通知 DBWR进行写入操作。
如果 DBWR在 3秒内未活动,则出现超时。在这种情况下,DBWR对 LRU表查找指定数目的缓冲区,将所找到的任何弄脏的缓冲区写入磁盘。
在出现检查点时,LGWR指定一修改缓冲区表必须写入到磁盘,而 DBWR负责将指定的缓冲区写入磁盘。
当用户进程提交一事务时写入一个提交记录。
每 3秒将日志缓冲区输出。
当日志缓冲区的已满 1/3时,将日志缓冲区输出。
当 DBWR将修改缓冲区写入磁盘时,则将日志缓冲区输出。
当 log buffer达到 1MB时。
- LGWR进程同步地写入到活动的镜象在线日志文件组。如果组中一个文件被删除或不可用,LGWR可继续地写入该组的其他文件,而数据库实例可以继续运行。
- 当需要更多的日志缓冲区时,LWGR 会在一个事务提交前就将日志项写出,而这些日志项仅当后续事务提交后才永久化
- CKPT 进程在检查点出现时,对全部数据文件的文件头进行修改,并在控制文件中记录该检查点。
- SMON进程负责在实例启动时执行实例恢复,并清理不再使用的临时段。在具有并行服务器选项的环境下,SMON对有故障的 CPU或实例进行实例恢复。SMON进程有规律地被唤醒,并检查是否有工作要完成,如有需要,就做相应的处理,否则继续休眠
- PMON进程在用户进程出现故障时执行进程恢复,负责清理存储区和释放该进程所使用的资。PMON还周期性地检查调度进程(DISPATCHER)和服务器进程的状态,如果发现这些后台进程死掉,就需要重新启动。PMON有规律地被呼醒,检查是否有需要完成的工作。
- ARCH 进程将已填满的在线日志文件复制到指定存储设备。当数据库的日志模式为ARCHIVELOG模式并可自动归档时,ARCH进程才存在。
- Dnnn 进程允许用户进程共享有限的服务器进程(SERVER PROCESS)。没有调度进程时,每个用户进程需要一个专用服务进程(DEDICATED SERVER PROCESS)