现在的位置: 首页 > 综合 > 正文

《Oracle DBA突击帮你赢得一份DBA职位》笔记

2013年08月13日 ⁄ 综合 ⁄ 共 3961字 ⁄ 字号 评论关闭
作者:张晓明 
本书分基础篇、中级篇、高级篇 三个级别,粗略的看了本书,主要还是看基础篇和中级篇,下面是我随手记录的一些知识点,不够全面,还望包涵;
truncate和delete的区别:
    truncate是ddl语句,delete是dml语句
    truncate速度快,delete速度慢
    truncate不可以rollback,delete 可以rollback(truncate有风险)
    truncate回收高水位线(high watermark),delete不回收高水位
delete需要把每个有数据的块读出来,写上delete标记,另外还要把delete的内容拷贝一份到undo,并且把它的动作记录到redo;
truncate就是把系统表(或者tablespace bitmap)里面把相关的extent的标记为未使用,另外把dba_objects(obj$)里的data_object_id换一下。    
相当于,truncate的操作就是先drop掉表,并且重建一张新表
 

OSI模型把网络交互分成7层,从下向上一次为:
    物理层:这一层定义了物理、电气规范,用于在两个物理主机间建立、维持、释放连接;Hub属于典型的物理层设备;
    数据链路层:这一层完成同一子网的两个设备间的通信,交换机属于典型的链路层设备;
    网络层:这一层提供网络间的路由功能,如果通信跨越多个子网络,这一层负责选择一条最优路线,路由器属于典型的网络层设备,有一种设备叫做“三层交换机”,实际就是交换机中添加路由的功能,这一层的典型协议是IP协议;
    传输层:完成两个节点间数据的可靠传输,这一层的典型协议是TCP、UDP协议。
    会话层
    表示层
    应用层
 
数据块结构:
4部分:数据块头(Block header)、Row Directory、Free Space、Used Space
(1)、块头中储存着数据块地址、数据块类型(索引块、UNDO块等)、事务表(ITL)
        ITL是数据块头最为重要的内容,它是Oracle “行级锁”和“读一致性”的实现基础,也是Oracle优于其他数据库的“锁机制”体现,ITL相当于一个表格,每个表项都指向在本数据块中参与到某个事物的一条记录,包括内有有UBA(Undo Block Address)、事物号(Transaction ID)、SCN号。
(2)、Row Directory这部分信息记录了数据块中每条记录的相对于数据块头偏移量。可以把它想象成数据块内部的一个指针表,有了这个指针后,Oracle寻找某条记录时,就不必遍历整个数据块才能获取一条记录了。
(3)、Free Space这部分空间是数据块的空闲空间,每当插入新纪录、更新记录需要更大的空间就会使用这部分空间,这个空间的大小受PCTFREE参数的控制。
(4)、Used Space数据记录占用的空间,这部分空间同样受着PCTFREE和PCTUSED两个参数的限制。
 
Extent空间管理:
本地管理比字典管理有4个优势:
不再需要在UET$、FET$两个数据字典上的递归SQL调用;
减少了数据字典的竞争(ST Enqueue);
改变位图不会产生UNDO记录;
不再需要周期性的合并操作(Coalescing)。
 
Oracle主要后台进程

进程
缩写
描述
Database Writer DBWn 负责把脏数据写回磁盘
Log Writer LGWR 负责把日志数据写到联机日志文件
Checkpoint CKPT 负责检查点操作
Process Monitor PMON 负责维护用户进程
System Monitor SMON 负责实例恢复
Achiever ARCn 负责归档操作,生成归档日志
Manageability Monitor MMON 和AWR有关
Manageability Monitor Light MMML 和AWR有关
Memory Manager MMAN 和自动SGA管理有关
Job Queue Coordination Process CJQO 定时任务进程
Recovery Write RVWR 和Flashback Database 功能有关
Change Tracking Write CTWR 跟踪数据块变化,支持快速增量备份
 
Redo记录包含以下内容:
事务号;
被修改数据的位置,数据块号;
修改后的值。
 

完整的SQL语句的执行过程:
(1)Synatic:语法分析,这一步检查SQL语句的语法是否正确,有没有拼写错误,比如把SELECT写成SELET。
(2)Semantic:语义分析,这一步检查要查询的对象是否存在,以及用户是否具有操作该对象的权利。
(3)Parent Cursor:在Library Cache中检查语句的Cursor是否存在,如果存在可以重用的Cursor(包括Parent Cursor和Child Cursor),则把PGA的Private SQL Area和其做关联,然后直接跳到第(8)步。这种解析也叫做软解析(Soft Parse)。如果没有就申请一个Parent Cursor,Parent Cursor就是用来保存SQL语句的,然后继续第(4)步。
(4)View Merge:如果用户的语句中用到了试图(View),把试图语句合并到用户语句中。
(5)Statement Transformation:把Complex SQL转化成simple SQL,比如展开子查询。
          某些资料也把(4)和(5)这两步操作叫做逻辑优化(Logical Optimization)。
(6)Optimization:确定最佳的访问路径。如果是RBO,根据一些预定义的规则来决定访问路径;如果是CBO,则根据对象的统计信息确定访问路径。有些资料将这一步操作叫做物理优化(Physical Optimization)。
(7)QEP Generation:生成执行计划(Query Execution Plan);也就是产生Child Cursor。执行计划会保存在Child Cursor中,并和Parent Cursor相关联。在Child Cursor中保存的是执行计划和执行环境信息(比如优化器模式)。
和软解析(Soft Parse)相对应,如果一个语句完整的经历了第(1)~(7)步,这个解析过程叫做硬解析(Hard Parse)。
(8)QEP Execution:执行语句,生成结果。
性能微调-与Cursor有关的参数:
OPNE_CURSORS :每个Session最多能够打开的Cursor数量,超过就会报ORA-1000错误;
SESSION_CACHED_CURSORS:代表被缓存的SQL Cursors(减少解析);
CURSOR_SHARING:定义Cursor共享的模式,包括:EXACT(精确).FORCE(强制).SIMILAR(类似)。
CURSOR_SPACE_FOR_TIME:缺省值为false,对于PARSE比较繁琐,SQL执行很频繁,共享池碎片较为严重的情况,建议不要使用。
 
聚簇因子:
高聚簇因子意味着索引访问效果不好,而低聚簇因子意味着访问效果好。
dba_indexes中的clustering_factor列反应了索引列的聚簇因子。
 
连接:
NEST LOOP:两表地位不同,一个驱动表(driving table),一个为被驱动表(drived table),工作方式是以驱动表每遍历一行就对整个被驱动表遍历一次,最终驱动表遍历一次,被驱动表被遍历N次(N为驱动表的行数)。
SORT MERGE:两表地位相等,每个表都先行排序,排序后两表都需要遍历一次,主要开销在两表的排序上。(Oracle实现排序的算法是二叉树算法(Binary Insertion Tree))。
HASH JOIN:两表也有驱动表和被驱动表的关系,算法执行过程:准备阶段:对驱动表的连接字段进行哈希操作,产生一系列的Hash Bucket(哈希桶)。探测阶段:依次读取被驱动表的每条记录,并对记录的连接字段执行相同的哈希函数,根据结果到上一步产生的哈希桶中检查匹配的记录。
 
STATSPACK解决问题的流程:
在利用STATSPACK时期,DBA
(1)首先,要有证据表明系统确实有问题,可能是用户抱怨等待时间变长,或者监控到CPU、IO突然负载增大。
(2)收集数据,诊断分析,初步估计发生问题的部分,性能通常会涉及很多组件(如CPU、IO、内存),每个部分都有可能是问题的瓶颈所在。
(3)针对不同的问题原因,确定相应的解决方案。
(4)尝试解决方案,通常一次尝试只针对一个组件,并观察调整后的效果。
(5)如果调整后没有效果,则说明原因定位错误,继续考虑其他问题和解决方案。
(6)如果调整后效果明显,就说明原因定位准确,根据原因进一步制定长期的解决方案。
(7)通常这个流程需要反复循环。

后续会继续添加;
 
点评:作者张晓明还有一本《大话Oracle RAC》的经典书籍,本人现在也在拜读,本书很适合一些平时没有注重细节知识点的求职朋友来突击一下Oracle基础知识。本书结构简单明了,知识点明细,需要慢慢品读,也有大量实验与理论相结合。

--------------------------------------------------------------------------------------------

版权所有,转载请注明作者及原文链接,否则追究法律责任!

QQ:      584307876

作者:    Seven

原文链接:  http://blog.csdn.net/sunjiapeng/article/details/8963713

邮箱:    seven_ginna@foxmail.com

抱歉!评论已关闭.