Oracle体系架构

目录

1.什么是oracle数据库?

2.什么是oracle实例?

3.存储结构

4.进程结构

5.内存结构

6.管理数据库实例


1.什么是oracle数据库?

——存储在硬盘上的文件

-这些文件可以看作是物理存储结构

目录:/u01/app/oracle/oradata/orcl下,.ctl  .dbf  .log文件

2.什么是oracle实例?

——把数据库中的文件读入到内存中,把内存中的镜像叫实例(instance)

所以管理数据库,启动、关闭数据库这些说法不准确,应该叫管理数据库实例。因为数据库只是些文件,无法启动、关闭。

数据库:实例可以是1:N----->Oracle RAC(集群)

3.存储结构
  • 物理存储结构:存储在硬盘上的文件

1)数据文件:*.dbf

必须存在的:

①system 系统的数据文件

②sysaux 系统的辅助文件(数据字典、AWR的信息,非常重要,自动工作量资料档案库,性能优化)

③undo 还原数据文件(历史数据),闪回(flashback)

举例:update某项数据,但没有commit,此时更新前的历史数据存在undo里面。输入rollback;可回滚。

④temp 临时数据文件(排序order by,排好序的结果、临时表)

可选的数据文件:

用户数据文件,user01.dbf、example01.dbf

2)日志文件:*.log----->记录的客户端的事务操作的DML

使用日志组的方式来管理日志文件,每组至少两个成员,写日志以日志组为单位

默认有三个日志组

如果日志都没有丢失(没有覆盖),那就可以做到数据库的完全恢复!

Oracle默认是非归档模式(会发生日志覆盖),一般来说,生产都是归档模式。

用管理员账号,archive log list查看Database log mode,值为No Archive Mode非归档模式

数据文件和日志文件的关系:

①.sqlplus客户端,执行DML,commit;

②.数据在实例(内存)中(检查点队列,脏数据);

③.将事务写入日志文件(如果日志写入成功,就算客户端的commit操作成功);

④.当发生了检查点时,会以最高优先级唤醒数据库的写进程,来写脏数据;(写好了日志就可以清了)

实例恢复:通过日志,恢复丢失数据

什么是检查点?checkpoint

①完全检查点

(1)正常关机

(2)切换日志组

(3)alter system checkpoint

②增量检查点(9i以后)

(1)每隔3s

(2)当日志达到1/3满的时候

3)控制文件:*.ctl------>当成是存储参数设置的文件

存储了数据文件和日志文件的位置

RMAN(recovery manager)备份的元信息

oracle推荐:采用多路复用的机制(多存几个),保证控制文件的可用

默认:2个(这两个路径位于两块不同的磁盘上)

4)其它文件。

4.进程结构

1)客户端进程

2)服务器进程(1:1客户端进程,专有服务器模式)

3)LGWR写日志进程

4)CKPT检查点进程

5)DBWn写进程(脏数据->数据库文件)

默认:只有一个写进程,DBW0

  • ora_dbw0_oral写进程,默认只有一个

原则:写进程个数不超过cpu核数。

  • ora_lgwr_orcl写日志进程(以日志组为单位,每组2个成员)
  • ora_ckpt_orcl检查点进程(完全、增量)
  • ora_smon_orcl系统的监视进程(system monitor),Oracle最核心的进程

关闭Oracle数据库最快的方式?kill -9 监视进程pid

  • ora_pmon_orcl是Process monitor。当系统出现错误的时候,负责清理现场
  • 其它进程。

5.内存结构
  • SGA:System global area

大小:sga_target big integer 0

注:0表示大小由Oracle数据库自动分配

buffer cache缓存数据:数据的高速缓存,大小:db_cache_size 0

1.在buffer cache中查询数据

2.如果有数据,直接返回数据  一次命中,性能优化师考虑命中率,buffer cache理想命中率?100%,性能优化相关

3.如果没有数据,读取数据文件*.dbf

shard pool共享池:数据字典、SQL(这个用户执行的语句,也有可能被其他用户执行,所以放到共享池)、执行计划;大小:shard_pool_size 0

log buffer日志缓冲区:logger_buffer 10588160(就这一个有具体值)

java pool、large pool大池、streaming pool流池

因为SGA中只有log buffer的内存有固定大小,其它没有固定大小,因此从AMM又引入了:ASMM:automatic shared memory management

  • PGA:Progress global area

大小:pga_aggregate_target big integer 0

注:11g以后提供一个新功能:AMM自动内存管理(automatic memory management):白天晚上内存用量不一样,需要管理:只需要设置一个内存的总大小(memory_target=SGA+n*PGA)即可。

(怎么查看数据库内存大小?)

show parameter memory_target

6.管理数据库实例
  • 如何启动数据实例?

控制文件----->数据文件和日志文件----->打开数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值