Oracle体系结构

爱被打了一巴掌 2022-04-10 08:51 436阅读 0赞

数据库
INSTANCE
-————————————————————————-
| ——————— SGA <—-系统全局变量 |
| |-shared pool- | redo log |
| | library || database buffer | R
| | cache || buffer cache | A
| |____________|| streams pool| M
| | data || java pool |
| | dietionary || large pool |
| _|_cache______||_______________________________ |
| PMON SMON DBWR LGWR CKPT OTHERS FBAR |<——后台进程
____________________________________________________
-————————————————————————
D 控 数 重 参 密 归 警 垃
I 制 据 做 数 码 档 告 圾
S 文 文 日 文 文 文 文 文
K 件 件 志 件 件 件 件 件

block:数据库读写数据的最小单元,8k 。show parameter db_block_size —(DBA);
脏数据:缓存中的数据和数据文件中的数据不一致。已经commit,被redo log buffer接受,但未被写入Data file
checkpoint:定期执行的任务,促使缓存数据保存入物理文件中
scn(system change number):记录数据库系统的更改和顺序,会被写入物理文件的文件头

数据库:物理文件和实例(instance)
用户只能通过实例和数据库交互
1)instance
1、SGA(system global area)系统全局区
(1)共享池(shared pool)
(1.1)库缓存(Library cache)(LRU算法列表)
最近执行过的sql语句,包括:文本、解析后的代码、执行计划
如果有,则直接执行
select * from v$sqltext where sql_text like ‘%select * from emp%’
(1.2)数据字典缓存区(Data Dictionary Cache)
数据库中全部的数据字典信息。如:表名、列名、登录用户、权限、方案等
内容和大小随着数据库的运转而变化
user_objects/user_tables/dba_tables……
(2)数据高速缓存区(Database Buffer Cache)(LRU算法列表)
存放最近最常使用到的数据
DML操作的数据在DBWR进程空闲时写入到Data files
脏数据缓存区(dirty buffer)/空闲缓存区(free buffer)
命中去(pinned buffer)正在操作的buffer,可能是脏区,也可能是空区
(3)重做日志缓存区(Redo log Buffer)
记录DDL/DML 操作,进行备案
Redo log Buffer中数据将被写到redo log files
(4)java pool
java程序所需的内存空间
(5)large pool
可选的,查询、排序、备份、恢复可能会用到
(6)stream pool
10G以后有的,大批量的移动、复制会用到
2、后台进程
DBWR(Database Writer):
把数据缓存写到数据文件,进程数最多可以有20个,db_writer_processes
触发时机:1、系统的checkpoint事件
2、缓存去的脏块比例达到预设的值
3、三秒超时
4、drop、truncate
5、表空间的变动等其他操作
LGWR(Log Writer)
把日志缓存写到日志文件,
触发时机:
1、commit
2、redo log buffer 达到1/3时
3、redo log buffer 超过1M
4、3秒超时
CKPT(Checkpoint Process)
定期事件,把上一个检查点之后的数据全部同步到物理文件,更新文件头
PMON(Process Monitor)
清理失败的进程,释放资源
SMON(System Monitor)
实例恢复,清理SGA中的不再使用的临时空间
ARCH(Archive Process)
归档文件进程,数据库处于归档模式时,将日志文件备份与归档文件
archive log list
FBAR(Flashback archiver writer)
OTHERS
3、PGA(program global area)
每个用户进程对应一个私有区域,保存变量、代码等
2)物理文件
控制文件(control files)二进制文件
数据库名称,创建时间,数据文件的位置和名称,当期那的日志序列号,物理结构等
最好有两个以上的控制文件存放在不同的介质上
重做日志文件(redo log files)
记录数据库所有发生过的变化。
完成实例恢复的重要保障。
在归档模式下,归档完成后覆盖重做日志文件
最好有两个以上的重做日志文件存放在不同的介质上
数据文件(data files)
归档文件(archive file)
重做日志文件的备份
在归档模式下,归档文件写入完成后,重做日志文件被覆盖
参数文件(parameter file)
不可改:db_name,sid,db_block_size
可改:open_cursor等
pfile.ora:静态参数文件,文本
spfile.ora:服务器参数文件,二进制
口令文件(password file)
用来验证特权用户权限的二进制文件
口令验证、操作系统验证、文件验证
警告文件(alert file)
数据库的关闭启动,数据文件的增加删除,表空间的增加删除等
3)物理结构和逻辑结构

  1. 物理结构:
  2. 数据文件:
  3. 操作系统块:
  4. 逻辑结构:
  5. 表空间(tablespace):
  6. 段(segments):
  7. 区(extends):
  8. 块(blocks):
  9. 一个表空间包含多个数据文件
  10. 一个块包含多个操作系统块

4)数据字典
记录数据库的信息
1.命名规则:
user_***:用户自己方案下的对象
all_***:永华可访问的对象
dba_***:数据库中的全部对象(DBA权限)
v$***: 动态性能视图
2.常用的数据字典;
(1)dict
select tabel_name from dict where table_name like ‘%CONSTRAINT%’;

发表评论

表情:
评论列表 (有 0 条评论,436人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Oracle数据库体系结构

    1.数据库 Oracle数据库是数据的物理存储。这就包括(数据文件 ORA 或者 DBF、控制文件、联机日志、参数文件)。其实 Oracle 数据库的概念和其它数据库不一样,

    相关 Oracle体系结构

    Oracle Server由例程(Instance)和数据库(Database)两部分组成。 数据库是一组OS文件的集合,它由数据文件、控制文件和重做日志组成。 例程是由一