oracle分为instance 实例 和database 数据库
分为单实例访问数据库和多实例访问同一数据库,当多实例访问同一数据时,第二个访问的实例会从第一个实例的缓存中直接读取
实例 instance
缓冲区SGA(system global area)
shared pool 缓存sql语句执行计划
shared pool即共享池 缓存sql语句执行步骤
分三步 检查思考和执行
select component, current_size from V$SGA_DYNAMIC_COMPONENTS where component='shared pool';
select * from v$SGAINFO;
buffer cache //缓冲区缓存 读取磁盘中8Kb大小数据块
使用中,磁盘中为原文件,修改时,缓存中会备份一份源文件,修改中的文件,以及日志文件四个,日志文件存于log buff中(先生成日志结果数据再修改文件)
SQL> show parameter db_block_size
SQL> show parameter db_cache_size
SQL> select * from v$SGAINFO;
SQL> select component, current_size from V$SGA_DYNAMIC_COMPONENTS where component='DEFAULT buffer cache';
db_write_process 缓存中文件写会磁盘
每3秒钟或者
脏数据块到达限额
没有空闲buffer时,
检查点出现时
会传回磁盘,优先置换又脏又冷数据块(最新及最少使用的)
log buffer
记录修改过的数据
show parameter log_buffer
log buffer
三分之一满时候
和每生成1MBredo data
和每三秒钟触发写入
从日志缓存中写入日志文件
commit 不会从缓存中文件写入磁盘,而是从日志文件中数据写入磁盘
large pool//不是一定要有
防止影像其他缓存
java pool
优化缓存java代码
select component, current_size from V$SGA_DYNAMIC_COMPONENTS where component='DEFAULT buffer cache';
background process
server process 响应客户端连接 相当于客户端访问数据库时,server process 响应,替客户端访问instance 实例
PGA(program global area)
多客户同时访问数据时,每个客户一个server process的PGA进程,例 多人同时对1sql进行排序,缓存无法同时满足多人,因此缓存中原始数据不变,pga复制一份缓存自己进行操作
登录sys
输入show sga 显示详细信息
show parameter //显示更详细~ 可带关键字进行模糊查询
oem:浏览器中服务器-->内存指导(https://192.168.0.1:1158/em)
server中memory。。。可进行更改SGA
数据库database
主要文件分为 控制文件control files 日志文件redo log files 数据文件data files
控制文件是一个小小的二进制文件,是oracle数据库的一部分,这个控制文件是用于记录数据库的状态和物理结构
日志文件记录 用户操作
数据文件记录 用户表等数据
控制文件:
$ find /u01 -name 'control0[12].ctl'
SQL> select name from v$controlfile;
SQL> select TYPE, RECORD_SIZE, RECORDS_TOTAL, RECORDS_USED from v$controlfile_record_section;
重做日志:
$ ll /u01/app/oracle/oradata/orcl/*.log
SQL> select group#, member from v$logfile;
参数文件:
$ ll $ORACLE_HOME/dbs/spfile*.ora
$ strings $ORACLE_HOME/dbs/spfileorcl.ora
SQL> show parameter spfile;
SQL> show parameter
密码文件:
$ ll $ORACLE_HOME/dbs/orapw*
归档日志:
SQL> select name from v$archived_log;
警告日志:
$ find /u01 -name 'alert_*.log'