oracle实训培训教程.ppt
Oracle数据库的工作原理自我介绍Oracle数据库的物理结构Spfile(pfile)ControlfileDatafileRedo logfilePassword fileArchivelogOracle数据库的逻辑结构DatabaeTablespaceSegmentExtentBlockTableIndex逻辑结构之间的关系逻辑结构和物理结构的关系segment什么是segmentSegment的type什么是segment的hwm(high water mark)Hwm对sql性能的影响如何降低hwm降低hwm时需要注意什么Oracle db的优势到底在哪里1、有独立的undo做保证2、可以很容易的实现consistent read3、唯一不支持dirty read的数据库4、唯一select无需加锁的数据库5、对并发性的支持优于其他数据库6、锁的粒度非常小7、唯一支持flashback的数据库undoUndo segment的3大用处Select无需加锁的原因Undo自动管理减轻dba的管理任务Undo segment的类型自动undo管理Undo使用监控Undo空间估算Ora-01555错误的模拟与分析参数undo_retention的重要意义Ora-01555为什么会出现Ora-01555的模拟Ora-01555出现的原理分析如何尽可能的避免Ora-01555错误什么是oracle实例Oracle实例的重要组成部分后台进程(background process)select*from v$bgprocess共享内存(sga:system global area)select*from v$sga_dynamic_components实例的启动过程Checkpoint和实例恢复调整理解checkpoint在oracle db中的重要意义理解dbwr的写机制理解lgwr的写机制理解实例恢复的过程理解redo的大小对性能的影响合理使用计算机资源合理使用计算机资源 和计算机交互无非是和下面5种重要资源交互:File(disk io)Memory(为什么计算机要使用内存?减少物理io)Network CpuProcessDb memory 调整明确oracle使用内存的主件理解sga使用内存的原理理解pga使用内存的原理了解和Sga相关的参数理解lock_sga的作用,注意windows下不起作用理解sga_max_size的作用(从9.2版本引入)理解sga_target的作用(从10.1版本引入)理解参数pre_page_sga的作用Sga的组成Shared_poolData bufferRedo log bufferLarge poolJava poolStream poolSga自动管理Sga自动管理的优缺点如何设置sga自动管理Sga自动管理之后老参数的作用如何正确使用sga自动管理如何通过sga advisor来给sga设定合理的值使用sga advisor的条件参数statistics_level的作用Sga advisor的数据来源数据源于下面查询 SELECT sga_size,(1-estd_db_time_factor)*100 FROM v$sga_target_advice order by 1如何读懂advisor曲线根据advisor判断sga设置是否合理Sga advisor的曲线分析根据曲线指示正确设置sga_target的值,防止设置过大浪费物理内存、设置过小影响系统性能Data buffer调整Data buffer的作用就如同memory对计算机的作用是同样的道理,没有memory的计算机我们无法想想哪的慢到什么程度Sga自动管理下db_cache_size的作用正确使用 buffer cache advisorBuffer cache advisor的数据来源 select size_for_estimate,a.estd_physical_read_factor from v$db_cache_advice aBuffer cache advisor的意义Shard pool的作用Oracle引入shard pool的意图我们能正确领会oracle的意图吗在某种程度上shared pool的大小不能直接决定系统的性能什么是绑定变量在oltp系统中不使用绑定变量的危害是什么Olap系统为什么不建议使用绑定变量Shard pool 调整正确使用shared pool advisorShared pool advisor的数据来源 select a.SHARED_POOL_SIZE_FOR_ESTIMATE,a.ESTD_LC_TIME_SAVED_FACTOR from v$shared_pool_advice ashared pool advisor曲线的意义根据曲线的含义正确设定shared_pool_size的值Pga 调整pga_aggregate_target的作用Pga的内存在何时分配Pga的内存是源于os还是oracle什么是工作区workarea_size_policy的意义在pga自动管理的情况下,sort_area_size和hash_area_size在什么情况下还可以发挥作用Pga advisor的使用Pga advisor的数据来源 select*from v$pga_target_advice如何读懂advisor曲线根据advisor曲线判断pga设置是否合理合理使用view View可以增加程序的可读性、控制数据的安全访问,也是面向对象特性的一个体现,但是view的使用在某种程度上对sql性能没有任何提高 合理使用trigger 在大型的、复杂的应用里尽可能的少使用trigger,使用它方便的同时可能不仅会使应用的灵活性受到限制同时可能会对性能产生影响如果trigger实现的功能很复杂,那么最好把复杂的业务逻辑通过procedure或者function来实现之后再在trigger里调用process或者function多使用procedure、function或者package procedure、function,package进行了预编译procedure、function,package中sql自动使用绑定变量尽可能的多使用synonymSynonym的引入是oracle面向对象思想的又一重要体现,在procedure、function,package里尽可能的多使用Synonym以减少由于对象(如表)名字改变而大量修改引用该对象的procedure、function,package;同时synonym的使用可以封装如:schema.object_namnedblink这种远程对象的使用,使用户更加安全的透明访问对象 少使用sequence使用sequence有时候确实很方便,不过sequence不能保证绝对的连续,而且如果对sequence的一些特性(如cache)控制不好会对性能产生影响合理使用外键 在大型的、复杂的应用里尽可能的少使用外键,外键的使用会使数据的完整性、一致性得到有力保障,但是它的使用有时会使应用的灵活性受到很大限制,如果不使用它,那么数据的完整性和一致性完全需要我们应用开发人员自己来控制,这对应用设计和开发人员都提出了很高的要求,这个到底是否使用根据自己的应用特点和团队技术实力自行选择 IndexIndex的分类Index的原理Index的scan方式Index的维护rowidB-tree indexExecute plan(执行计划)什么是执行计划如何看懂执行计划The execution order in EXPLAIN PLAN output begins with the line that is the furthest indented to the right.The next step is the parent of that line.If two lines are indented equally,then the top line is normally executed first.利用树形结构巧妙读懂执行计划什么是执行计划里的COST执行计划-Plan hash value:2598313856-|Id|Operation|Name|Rows|Bytes|Cost(%CPU)|Time|-|0|SELECT STATEMENT|1|35 (3)|00:00:01|1|SORT AGGREGATE|1|2|VIEW|DBA_OBJECTS|9919|35 (3)|00:00:01|3|UNION-ALL|*4|FILTER|*5|HASH JOIN|11540|867K|34 (3)|00:00:01|6|TABLE ACCESS FULL|USER$|31|93|2 (0)|00:00:01|*7|TABLE ACCESS FULL|OBJ$|11540|833K|31 (0)|00:00:01|*8|TABLE ACCESS BY INDEX ROWID|IND$|1|8|2 (0)|00:00:01|*9|INDEX UNIQUE SCAN|I_IND1|1|1 (0)|00:00:01|10|NESTED LOOPS|1|16|1 (0)|00:00:01|11|INDEX FULL SCAN|I_LINK1|1|13|0 (0)|00:00:01|12|TABLE ACCESS CLUSTER|USER$|1|3|1 (0)|00:00:01|*13|INDEX UNIQUE SCAN|I_USER#|1|0 (0)|00:00:01|-COST是如何估算的Cost=(#SRds*sreadtim+#MRds*mreadtim+#CPUCycles/cpuspeed)/sreadtim where:#SRDs is the number of single block reads#MRDs is the number of multi block reads#CPUCycles is the number of CPU Cycles*)sreadtim is the single block read time mreadtim is the multi block read time cpuspeed is the CPU cycles per second CPUCycles includes CPU cost of query processing(pure CPU cost)and CPU cost of data retrieval(CPU cost of the buffer cache get).Cpu资源对成本的影响To ensure that CPU costing is in use:In Oracle9i,use dbms_stats.gather_system_stats to collect statistics Set the undocumented parameter _optimizer_cost_model=cpu;执行计划中filter和access的区别Filter是纯粹的过滤条件Access表明该条件对optimizer的访问路径可能产生影响Access path如:Full table scanIndex scan 或者uinque scan等Optimizer statistics什么是优化器统计信息表的优化器统计信息(dba_tables&dba_tab_statistics)列的优化器统计信息(dba_tab_cols&dba_tab_col_statistics)Index的优化器统计信息(dba_indexes&dba_ind_statistics)如何搜集优化器统计信息Analyze table table_name compute statistincs cascade;Exec dbms_stats.gather_table_statsExec dbms_stats.gather_index_statsExec dbms_stats.gather_schema_statsExec dbms_stats.gather_database_statshistogram(柱状图)什么是柱状图柱状图的类型Understanding Height-Based Histograms Understanding Value-Based Histograms 如何获取histogram的信息(dba_tab_histograms&DBA_HISTOGRAMS)Exp/imp的缺陷Client工具依赖网络对网络造成的负载比较严重不支持并行不支持交互Expdp/impdpServer端工具不依赖网络在后台开启job执行支持并行支持交互Expdp/impdp的工作原理通过em监控主机和db对cpu的使用通过em监控系统io的使用通过em监控实例的吞吐量A&Q谢谢