ORACLE体系结构
对于数据库的存储结构,控制文件,数据文件盒联机重做日志文件是必须的,缺少任何一个数据库都无法启动
oracle控制文件是可以作镜像的,一个损坏可以用其他的启动数据库
alter database backup controlfile to trace 把当前控制文件的信息复制到trace文件中
控制文件包含了一下的信息 :redo的路径,数据文件的路径,字符集信息
select file_name from dba_data_files; 查看数据文件路径
所有的数据库变化包括数据文件数据字典变化全都存放在联机重做日志文件
select * from v$log; 查看数据库日志文
select member from v$logfile; 查看日志文件存储位置
*
V$(GV¥)打头的是动态性能视图,其内容是实例运行过程中从SGA和控制文件中动态获得,持续更新的。其主要内容是与性能相关的。实例关闭时,这些视图是会被删除的。 DBA_(USER_,ALL_)打头的是静态数据字典视图,其内容是从数据文件中获得的,实例关闭,视图仍在只是不可访问。 DBA是只有DBA权限的用户才能查询,内容包含了系统全部; ALL是普通用户可以查询,内容包含了该用户所能访问的部分; User是普通用户可以查询,内容包含了该用户是所有者的部分; V$是数据字典动态视图,显示系统当前的状态。它的值在随时都可能发生变化。 |
启动数据库的三个阶段
nomount:启动参数文件 v$parameters v$instance v$database
mount:读控制文件 ora_205
open:如果数据库的检测点一致,那么直接打开,如果不一致,那么就做实例级别恢复
关闭数据库:正常关闭,还是强行
shutdown immediate, abort
show parameters pfile 查看spfile的文件位置
数据高速缓冲区
由多个独立的子缓冲池构成,可以独立的设置大小
default池 DB_CACHE_SIZE
keep池 db_keep_cache_size
recycle池 cb_recycle_ceche_size
未指定的情况下分配给default池,keep池保留对象的数据块,保证其不备lru淘汰
recycle池 内存不会释放 但保证新数据和旧数据的流动 循环使用池
只有defaul可以被sga动态管理
cache hit(可以在内存中找到) cache miss(不能从内存中找到) 如果找不到会通过服务器进程从物理快中读取
重做日志缓冲区
暂存数据库中所有数据库的改变 内存管理方法是fifo
重做日志被用于提供数据恢复功能 暂存重做日志的目的是为了提高语句的执行速度
大小由log_buffer决定,但这个内存区不能被动态调整大小 需要单独设置大小
show parameter log_buf
大池
大池是sga中可选的一个内存区
用于以下情况
共享服务器的用户全局去uga
并经进程
使用rman作备份恢复
大小由参数large_pool_size决定,也可以动态改变大小
如果没有设置该区大小 可能会占用共享池内存大小 比如rman备份时,可能会造成性能问题
show parameter large_pool_size;
alter system set large_pool_size=12m;更改large_pool_size大小
java池
也是sga一个可选取
用于java程序的解析和执行
大小由参数java_pool_size决定,也可以动态调整
如果granule是4m ,默认是24m,如果粒度是16m,默认32m
如果数据库创建时选择了安装jvm组件,这个池必须配置
show
同样不设置的话可能会占用sharepool内存
流池从10.2g后流程可自动管理,之前不能
show parameter strams_pool_size
sga除了logbuffer之外都可以被自动管理
sga分配 策略
sga_max_size=(80%mem) *2/3