实例: 由SGA和后台进程组成
实例和数据库的关系:一个实例只能对应一个数据库,一个数据库可以有多实例(RAC)
同一个实例不能打开一个数据库2次,必须重建一个实例才能再次打开数据库
SID:实例名 ORACLE_SID
ORACLE HOME:数据库安装文件的存放位置 ORACLE_HOME
数据库启动和关闭的过程
开:nomount——mount——open
关:close——nomount——shutdown
关闭数据库的4种方式:abort,immediate,transactional,normal
实例的启动过程:寻找spfile---分配SGA---启动后台进程---过程写入alert和trace文件
检查点的概念:检查点进程将检查点写入数据文件的头部和控制文件里
实例恢复的概念:从最近的检查点开始,由SMON执行
过程:前滚——(打开数据库)——回滚
前滚用到online redolog file
回滚用到undo segment
参数文件:包含的内容和作用。
spfile:只能存放在服务器,SCOPE=MEMORY / SPFILE / BOTH
Pfile:可以存放在客户端
诊断文件:alert.log和trace文件
ADR:统一的目录结构,诊断文件格式和工具
数据库内存结构包括:SGA,PGA,(UGA),软件代码区
UGA:在SGA中(共享服务器连接时)
在PGA中(专用服务器连接时)
PGA:结构
私有SQL区:存储绑定变量等信息。(位置依赖于会话的连接类型)
运行时区run-time area:SQL语句结束就会释放的空间
持续数据区persistent area:SQL语句的游标关闭才会释放的空间
SQL工作区:用于排序,哈希连接,位图融合、创建 的操作
Session memory会话内存:存储会话的相关信息
SGA:fixed SGA 固定SGA:包含数据库和实例的状态信息(用户数据不会储存在此)
Database buffer cache
Redo log buffer
Shared pool
Java pool
(Variable SGA可变SGA,空余的可供空间分配)
等等
SGA_MAX_SIZE SAG_TARGET(ASMM -----shared memory manage)
ASMM管理的:shared pool,java pool,large pool,buffer cache,streams pool
需要手动管理的:keep/recycle buffer cache和非标准容量数据库使用的buffe cache
Buffer cache:存放从数据文件拷贝过来的数据块副本
管理方式:LRU列表 (全表扫描例外,会直接放在LRU端,因为全表的数据只是
Write list 暂时需要的)
3种状态:unused
Clean
Dirty
Cache hit缓存命中和cache miss缓存丢失(需要再复制datafile中的数据到buffer cache里)
可以在实例运行的情况下修改buffer cache的大小
Buffer writes的情况:buffer cache满了,复制新的block时找不到clean buffer
数据库写checkpiont时
将表空间置于只读时或脱机时
Flash cache(disable和enable两种情况)
enable时,如果buffer cache满了,可以先写入flash cache,但buffer header仍在LRU列表上,而buffer body在flash cache里
buffer cache可以逻辑上被分为多个buffer pool:default pool
keep pool
recycle pool
Redo log buffer:以重做条目redo entry的形式存储
重做条目在日志缓冲区内占连续的空间(fixed SGA也是如此)
LGWR将其写入redo log file
Shared pool:结构
Large pool 可选
服务于:共享服务器的UGA会话内存
I/O服务进程
Oracle 备份与恢复操作
可以存储shared pool中的server result cache(解析结果),让shared pool更专注与解析SQL
Java pool
Streams pool
Fixed pool
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24005010/viewspace-687301/ ,如需转载,请注明出处,否则将追究法律责任。