前言:学完本课后,应该完成以下工作
1.列出ORACLE DB的主要体系结构组件
2.说明内存结构(SGA)
3.描述后台进程
4.将逻辑存储结构和物理存储结构关联起来
一.什么是oracle数据库
ORACLE关系数据库管理系统(RDBMS)提供了开放的,全面的,集成的信息管理方法
oracle服务器由oracle实例和oracle数据库组成
查看oracle服务器:ps -ef|grep ora_|cut -d '_' -f3 |sort|uniq
oracel实例:内存结构和后台进程
查看oracle实例:select instance_name from v$instance;
数据库:物理文件,构造物理文件的逻辑结构组成
查看数据库:select name from v$database;
注意:12C里,CDB是oracle服务器,但PDB也可以当成oracle服务器,他的实例和数据库是共享CDB里的,他依赖于CDB里的oracle服务器。应用程序一般跑在PDB里,不用CDB
二.连接到oracle服务器
程序连接,需要装上驱动
使用客户端工具(sqlplus,sqldevelop,toad...),需要打开监听
三.oracle体系结构
1.用户进程:在数据库用户请求连接到ORACLE服务器时启动
查看用户进程信息,根据v$session视图
比如查看用户进程事务,进程号,等
select taddr,process,machine,program from v$session where username='SCOTT'
2.服务器进程:它可以连接到ORACLE实例,是与用户进程建立会话时启动,接受用户进程的请求,并做相应处理.
注意:一般一个服务器进程对应一个用户进程, 但当用户进程是共享连接时,可以多个用户进程对应一个服务器进程
查看服务器进程:根据v$process视图
select spid from v$process where addr in (select paddr from v$session where username='SCOTT');
查询到进程号SPID,可以查看它的信息
ps -ef|grep spid
或
top -p spid
3.ORALCE系统全局区(SGA)和用户全局区(PGA)
SGA主要组件: shard pool,buffer cache,logbuffer
shard pool:缓存sql语句和sql语句执行计划
Buffer cache:存放数据
logbuffer:存放日志
一条sql语句通过网络到达数据库实例过程
1.server porcess(实例的进程,服务器进程,前台进程)接收sql 语句
2 .server process 去shard pool找sql和执行计划 若没有 解析sql(shard pool有sql语句和执行计划的缓存)
3.server process 根据执行计划去buffer cache(缓存dbf的数据)找相关的数据,如没有通过server process到dbf文件中取出数据放到buffer chache 再返给用户
4.若需要修改数据,server process 先到buffer cache中读出数据,然后在内存中修改数据(产生日志)修改完返给用户(dbwr把修改过的数据写到磁盘,lgwr把日志写回磁盘)
查看SGA大小,SGA大小是自动管理的
select * from v$sgainfo;
查看PGA大小
show parameter pga
改变PGA大小
alter system set pga_aggregate_target=大小;
4.后台进程
ckpt进程,dbwn进程,lgwr进程,smon进程,pmon进程,其他进程
ckpt:检查点进程,维护数据一致性,当事务提交就会触发.
当ckpt触发,会把控制文件SCN加大,通知数据文件头SCN更新,通知dbwn写脏块.
dbwn:把脏块写入磁盘,需要lgwr写完日志
lgwr:再dbwn写之前,需要先把日志写进磁盘
smon:系统监视进程
pmon:进程监视进程
其他进程:都是辅助进程,如果这些进程出现故障,pmon会重启他们
如何查看后台进程,看v$bgprocess
select paddr,name from v$bgprocess where paddr<>'00';
5.ORACLE存储结构之文件(物理结构)
物理数据库结构
控制文件,数据文件,联机重做日志文件,参数文件,备份文件,归档日志文件,口令文件,预警和跟踪日志文件
控制文件:包含有关数据库本身的数据(物理数据库的结构信息)。这些文件对数据库而言至关重要。没有这些文件,就无法打开访问数据库数据的数据文件。
数据文件:包含数据库中的用户数据或应用程序数据。
联机重做日志文件:包含日志数据
这3个必须放在存储里
参数文件:第一次启动数据库会访问一下,以后基本不会访问
备份文件:备份控制文件,数据文件,参数文件,归档日志文件(千万不能放存储里)
归档日志文件:非活动的重做日志备份,使用归档日志可以恢复还原的数据文件(千万不能放在存储)
口令文件:丢了也没关系,可以生成。
预警和跟踪日志文件:ORACLE排错
如何查看数据文件,看v$datafile;
select name from v$datafile
如何查看日志文件,看v$logfile;
select member from v$logfile;
如何查看控制文件,看v$controlfile;
select name from v$controlfile;
6.RACLE存储结构之表空间(逻辑结构)
表空间:就是多个数据文件组成,表在表空间上,表的数据存在文件上,
普通表空间
回滚表空间
临时表空间
段,区,块