精品Oracle原理学习笔记

上传人:精****库 文档编号:133106862 上传时间:2020-05-24 格式:DOC 页数:82 大小:850.50KB
返回 下载 相关 举报
精品Oracle原理学习笔记_第1页
第1页 / 共82页
精品Oracle原理学习笔记_第2页
第2页 / 共82页
精品Oracle原理学习笔记_第3页
第3页 / 共82页
精品Oracle原理学习笔记_第4页
第4页 / 共82页
精品Oracle原理学习笔记_第5页
第5页 / 共82页
点击查看更多>>
资源描述

《精品Oracle原理学习笔记》由会员分享,可在线阅读,更多相关《精品Oracle原理学习笔记(82页珍藏版)》请在金锄头文库上搜索。

1、Oracle学习笔记-Rill精品Oracle原理学习笔记ORACLE的工作机制体系结构实例Oracle 运行的时候,在内存中会要开辟一个区间,这个区间主要是用于从磁盘(数据文件)中读出数据后的一个在内存的缓存和处理。而处理这些数据的操作,需要有一些系统的后台进程,这些进行在Oracle数据库启动的时候,就开始运行,一直在响应前台的操作。实际上,这一个区间(SGA)和这些后台进程合在一起,就称为 实例。实例是包括SGA区和后台进程两个部分的。 数据库启动执行若干动作,经历三个阶段,分别是未加载、加载和打开。1、未加载(nomount) 可以把数据库启动的这一阶段看作是Oracle实例的启动。这

2、种方式启动下可执行:重建控制文件、重建数据库。这一启动命令: 读取数据库参数文件。 启动所需的后台进程并按参数文件中的定义分配内存。 将进展情况写入告警日志文件中。2、加载(mount) 在实例启动加载阶段,数据库参数文件中指定的控制文件被读取。记住控制文件将数据库各部分联系在一起。实例从控制文件中找到下列信息,然后将进展写入告警日志文件。这种方式启动下可执行:数据库日志归档、数据库恢复、重新命名一些数据库文件: 所有数据文件和重做日志文件的名称和位置。 数据库名。 最新系统更改号(S C N)。3、打开(open) 包含在数据库中的每个联机数据文件在数据库打开前必须被同步。在数据库打开阶段:

3、 所有联机数据文件的头与控制文件信息相比较。 所有文件同步后,数据库打开。当数据库关闭时,取决于它的关闭方式执行不同的任务:正常(normal)在所有的用户离线后发生的正常关闭。事务(transactional)事务关闭就是当所有的用户执行完当前的事务后,将用户从数据库上清除。立即(immediate)立即关闭就是从数据库清除所有当前用户之后,回退所有未完成的操作。异常(abort)异常关闭没有给数据库任何整理的机会。这种方式关闭后需要实行崩溃恢复。实例是数据管理的核心它做所有的工作,而数据库存储所有的数据。其他启动方式:startup restrict 约束方式启动这种方式能够启动数据库,但

4、只允许具有一定特权的用户访问 非特权用户访问时,会出现以下提示: ERROR: ORA-01035: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用 startup force 强制启动方式 当不能关闭数据库时,可以用startup force来完成数据库的关闭 先关闭数据库,再执行正常启动数据库命令 startup pfile=参数文件名 带初始化参数文件的启动方式 先读取参数文件,再按参数文件中的设置启动数据库 startup EXCLUSIVE*一个Delete操作的流程:1、 检查语法、语义(V$ROWCACHE :data dictionary cac

5、he),计算HASH VALUE,在session的UGA中进行匹配(session_cached_cursors),如果UGA中没有,在library chache 中匹配(library chache lock latch 保护 library chache lock 对地址堆的访问,而后 library chache pin latch 保护 library cache pin 对library cache中sql相关信息的访问)2、 根据执行计划读取数据:cache buffer chain latch 保护能定位到buffer header 并 pin 住该块(如果没有buffer

6、header,就 pin 住某个空块(没有空块就产生 free buffer waits),并到数据文件中读取)。如果此时有某个进程想访问该块,将产生 buffer busy waits 。3、 在redo log buffer中记录delete操作的细节。(包括回滚段前后镜像、数据块前后镜像)。4、 在相应回滚段段头的事务表中创建一个undo条目,把将要删除的记录创建前镜像,存放到Undo Block中。5、 在Buffer Cache中的相应数据块上删除记录,并且标记相应的数据块为Dirty。提交(COMMIT)1.Oracle产生一个SCN2.在回滚段事务表中标记该事务状态为commit

7、ed3.LGWR Flush Log Buffer到日志文件3.如果此时数据块仍然在Buffer Cache中,那么SCN将被记录到Block Header上,这被称为快速提交(fast commit)4.如果dirty block已经被写回到磁盘,那么下一个访问这个block的进程将会自回滚段中获取该事务的状态,确认该事务被提交。然后这个进程获得提交SCN并写回到Block Header上。这被称为延迟块清除(delayed block cleanout)。内存SGA(系统全局区、共享全局区)、PGA(进程全局区、私有全局区)内存分配原则:10%冗余内存,OS SYS进程(约1.6G),OS

8、 BUFFER(约0.8G),数据库连接消耗内存(每个连接约58M),PGA(每个连接约2M,V$PGA_TARGET_ADVICE),SGASGAv$sgastat 注意 show parameter sga_max_sizeOracle的内存:l 软件代码区l 系统全局区l 进程全局区:包含单个进程的数据和控制信息l 排序区System Global AreaFixed SizeVariable SizeDatabase BuffersRedo buffersLarge poolShared PoolLibrary cacheData dictionary cacheUser Global

9、 Area共享SQL区专用SQL区db_cache_sizedb_keep_cache_sizedb_recycle_cache_sizedb_nk_cache_size永久性内存结构Java poolSGA中的The fixed area包含了数千个原子变量,以及如指向SGA中其它区域的pointers(指针)等小的数据结构.通过对fixed table内表X$KSMFSV查询(如下)可以获得这些变量的名字,变量类型,大小和在内存中的地址.the variable area是由large pool和shared pool组成Shared pool中永久性的内存包含各种数据结构如:the bu

10、ffer headers, processes, sessions, transaction arrays, the enqueue resources , locks, the online rollback segment arrays, various arrays for recording statistics.其中大部分的SIZE是依靠初始参数的设置来确定的.这些初始参数只能在实例被关闭的状态下才能够进行修改.所以这里说的永久性是针对实例打开状态下的生存期而言.The variable area的在SGA中的SIZES就等于LARGE_POOL_SIZE,SHARED_POOL_S

11、IZE和永久性的内存arrays的SIZE三者相加.永久性内存arrays的SIZE=the variable area - (LARGE_POOL_SIZE+SHARED_POOL_SIZE).数据缓冲区命中率v$sysstat这里命中率的计算应该是令 x = physical reads direct + physical reads direct (lob)命中率 =100 - ( physical reads - x) / (consistent gets + db block gets - x)*100通常如果发现命中率低于90%,则应该调整应用可可以考虑是否增大数据缓冲区共享池的命

12、中率SQL select sum(pinhits-reloads)/sum(pins)*100 hit radio from v$librarycache;hit radio-99.809291假如共享池的命中率低于95%,就要考虑调整应用(通常是没使用bind var )或者增加内存关于排序部分SQL select name,value from v$sysstat where name like %sort%;NAME VALUE- -sorts (memory) 67935sorts (disk) 1sorts (rows) 7070假如我们发现sorts (disk)/ (sorts

13、(memory)+ sorts (disk)的比例过高,则通常意味着sort_area_size 部分内存较小,可考虑调整相应的参数。关于log_bufferSQL select name,value from v$sysstat2 where name in(redo entries,redo buffer allocation retries);NAME VALUE- -redo entries 2325719redo buffer allocation retries 10假如 redo buffer allocation retries/ redo entries 的比例超过1%我们就

14、可以考虑增大log_buffer如何在Linux上扩展SGA超过1.7G共享池(SHARED_POOL_SIZE)v$shared_pool_adviceALTER SYSTEM FLUSH SHARED_POOLHow to Keep Objects - 重点使用DBMS_SHARED_POOL.KEEP过程来keep objects, UNKEEP过程从shared pool中移走pinned objectsexecute dbms_shared_pool.keep(address,hash_value); - keep 该匿名块共享池包括库高速缓存( library cache)、数据字典高速缓存和服务器控制结构(例如数据库字符集)。Oracle服务器用库高速缓存来提高执行SQL语句的性能;库高速缓存包括共享和专用SQL区。共享SQL区包括SQL语句语法分析树和执行路径,而专用SQL区存储特定的会话信息,例如捆绑变量、环境和会话参数、运行堆栈和缓冲区等。Soft parse使用的资源包括CPU 和library cache latch getsHard parse是指要解析的SQL没有在library cache中,或者执行的时候发现解析过的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 企业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号