Oracle 12c 读书笔记(二):Oracle数据库体系结构
以11g来分析
数据库实例包括:SGA和一系列后台管理、监控简称
数据库包括三种文件:数据文件、控制文件、重做日志文件
数据库实例和数据库是Orale数据库体系的核心部分
Oracle服务器和实例
实例:由一些在内存区和后台进程组成
这些内存区包括 数据库高速缓存、重做日志缓存、共享池、流池及其他可选区域,如JAVA池,这些池称为数据库的内存结构
后台进程包括系统监控进程SMON,进程监控PMON,数据库写进程DBWR,日志写进程LGWR,检验点进程CKPT及其他进程(如归档进程,REco进程),这些数据库系统进程忠于职守、相互协作地完成数据库管理任务
要访问数据库,则必须先启动实例,启动实例,则先分配内存区,然后启动后台进程。
在数据库启动过程中,5个进程是必须启动的:SMON、PMON/DBWR、LGWR、CKPT,在告警日志中alterSID.ora可以看到数据库的启动过程
Oracle服务器
Oracle服务器是由实例和数据库文件组成。
Oracle除了维护实例和数据文件外,还在用户与服务器连接时启动服务器进程并分配PGA
Oracle数据库的物理结构(文件组成):
数据文件:数据文件宝内涵数据库中的实际数据,是数据库操作系统中数据的最终存储位置 控制文件:包含维护数据库和验证数据库完整性的信息,它是二进制文件 重做日志文件:重做日志文件包含数据库发生变化的记录,在发生故障时用于数据恢复
Oracle参数文件和密码文件
虽然不是Oracle的数据库文件,但是是不可缺少的两个文件
参数文件:定义了数据库实例特性,在参数文件中包含SGA内存结构分配空间的参数,如分配数据库高速缓冲区的大小等,参数文件是正文文件,可以使用编辑器查看。 密码文件:授予用户启动和关闭数据库实例,Oracle默认用户名和密码存储在文件中,可以根据这个判断用户的操作权限
数据库连接与会话
数据库连接
连接有3中方式
1 基于主机方式:服务器和客户端运行在同一台计算机上,用户可以直接连接数据库服务器 2 基于客户机:数据库服务器和客户端运行在不同计算机上,客户通过网络连接数据库服务器。经常使用此种方式 3 用户-应用服务器-数据库服务器:此种方法称为三成访问模式。用户先访问应用服务器,应用在访问数据库服务器,应用服务器类似中介,完成客户和数据库的交互
会话
一个明确的数据库连接,用户采用3种的任意一种方式连接,就称为一个会话
用户通过某种工具,在专用连接情况下访问数据,服务器就会自动创建一个与该用户进程对应的服务器进程,二者是一对一关系,用户退出或发生异常时,会话结束
专有连接,指用户和服务器进程之间是一对一关系,而共享服务器配置情况下,多个用户进程可以同时共享服务器进程,此时就不是专有服连接,而是多对一关系
一个用户可以并发发起多个会话
SQL> select serial#,username,status,process,program,logon_time from v$session where username='SYS'; SERIAL# USERNAME STATUS PROCESS PROGRAM LOGON_TIM ---------- ------------------------------ -------- ------------------------ ------------------------------------------------ --------- 24691 SYS ACTIVE 27448 sqlplus@gzxbi01 (TNS V1-V3) 18-MAR-17 28528 SYS INACTIVE 27443 sqlplus@gzxbi01 (TNS V1-V3) 18-MAR-17
可以看到,有两个会话,当前执行的指令的会话为ACTIVE,一个用户可以建立多个会话
一个连接,可以有多个会话(即服务器进程和数据库服务器见,可以建立多个会话)
SQL> select sid,serial#,paddr from v$session where username='SYS'; SID SERIAL# PADDR ---------- ---------- ---------------- 125 24691 00000000D1B5A9B8 357 28528 00000000D1B4B448 SQL> set autotrace on statistics; SQL> select sid,serial#,paddr,port from v$session where username='SYS'; SID SERIAL# PADDR PORT ---------- ---------- ---------------- ---------- 125 24691 00000000D1B5A9B8 0 132 14042 00000000D1B5A9B8 0 357 28528 00000000D1B4B448 0 Statistics ---------------------------------------------------------- 0 recursive calls 0 db block gets 0 consistent gets 0 physical reads 0 redo size 850 bytes sent via SQL*Net to client 552 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 3 rows processed
从PADDR和PORT可以看到是一个连接,但是有两个会话通过SID和SERIAL#来确认。
查询会话是否存在,可以
SQL> select pname,username from V$PROCESS WHERE ADDR=HEXTORAW('00000000D1B5A9B8'); PNAME USERNAME ----- --------------- oracle Statistics ---------------------------------------------------------- 36 recursive calls 0 db block gets 67 consistent gets 0 physical reads 0 redo size 614 bytes sent via SQL*Net to client 552 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows processed SQL> select pname,username from V$PROCESS WHERE ADDR=HEXTORAW('00000000D1B4B448'); PNAME USERNAME ----- --------------- oracle Statistics ---------------------------------------------------------- 1 recursive calls 0 db block gets 0 consistent gets 0 physical reads 0 redo size 614 bytes sent via SQL*Net to client 552 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows processed SQL> select pname,username from V$PROCESS WHERE ADDR=HEXTORAW('00000000D1B4B448'); -- 在另一个终端将这个会话退出后执行这条查询发现,连接不存在 no rows selected Statistics ---------------------------------------------------------- 0 recursive calls 0 db block gets 0 consistent gets 0 physical reads 0 redo size 411 bytes sent via SQL*Net to client 541 bytes received via SQL*Net from client 1 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 0 rows processed
Oracle 数据库的内存结构
由SGA和PGA组成
PGA:程序全局区,程序全局区不是实例的一部分。当服务器启动时,才分配PGA
SGA:系统全局区,是数据库实例的一部分,当数据库实例启动时,首先分配系统全局区,在系统全局区包含几个重要的内存区(数据库高速缓存、重做日志缓存、共享池、大池、Java池等)
共享池Shard Pool
用用共享池的目的就是共享SQL和PL/SQL代码。即把解析到的SQL代码结果放到这里缓存,PL/SQL不仅在这里缓存,同时在这里共享。共享池由两部分组成