Oracle数据库监控工具lab128.docx
- 文档编号:30417128
- 上传时间:2023-08-14
- 格式:DOCX
- 页数:19
- 大小:576.34KB
Oracle数据库监控工具lab128.docx
《Oracle数据库监控工具lab128.docx》由会员分享,可在线阅读,更多相关《Oracle数据库监控工具lab128.docx(19页珍藏版)》请在冰豆网上搜索。
Oracle数据库监控工具lab128
知识点列表
编号
名称
描述
级别
1
数据库简介
了解什么是关系型数据库
*
2
OracleServer的启动
了解OracleServer启动时主要的服务
*
3
Oracle数据库服务器
重点掌握系统全局区SGA和程序全局区PGA
***
4
Oracle实例进程结构
理解Oracle实例进程结构,注意后台进程
**
5
Oracle网络配置
了解Oracle网络配置
**
6
Oracle查询工具
了解Oracle的3个查询工具
*
7
Oracle默认用户
了解Oracle默认账户的设置及各自的权限
*
8
客户端连接工具
重点掌握能够使用Oracle客户端工具连接Oracle
***
9
锁
了解锁的概念,理解行级锁和表级锁,重点掌握死锁的概念
**
10
Lab128的使用
重点掌握Lab28监控Oracle服务器的方法以及查找分析问题
***
注:
"*"理解级别"**"掌握级别"***"应用级别
1.Oracle服务器
1.1.数据库简介
DBMS:
实现数据库管理的软件。
RDBMS(关系型数据库):
是建立在关系模型基础上的数据库,数据以行和列的形式存储,以便于用户理解,这一系列的行和列被称为表,一组表组成数据库。
在关系数据库中:
各数据项之间用关系来组织,关系(relationship)是表之间的一种连接,通过关系,我们可以更灵活地表示和操纵数据.
ORDBMS(对象型关系数据库):
在原来的RDBMS的基础上加入了对象的概念,如Oracles10g。
1.2.OracleServer的启动
启动Server,几个主要的服务:
OracleServicexxx(SID):
Oracle服务器服务进程开启(关闭)。
(必开)
OracleOraDb10g_home1TNSListener:
Oracle网络服务监听程序服务,当需通过网络连接Oracle服务器或访问OracleEnterpriseManager10g时需启动
OracleOraDb10g_home1iSQL*Plus:
运行iSQL*Plus工具时需开启的服务
OracleDBConsoleorcl1:
访问OracleEnterpriseManager时需开启的服务
1.3.Oracle数据库服务器
Oracle数据库服务器有两个部分:
数据库和实例(instance)。
Oracle数据库用于存储和检索信息,是数据的集合。
数据库包括逻辑结构和物理结构。
逻辑结构代表了在Oracle数据库中能看到的组成部分(如表、索引等),而物理结构代表了Oracle内部使用的存储方法(如数据文件、控制文件、日志文件等)。
Oracle实例是指数据库服务器的内存及相关处理程序.
数据库文件的操作都是通过这个实例来完成的,因此它又被称为Oracle数据库引擎。
Orade实例由系统全局区(SGA)和后台处理进程组成。
Oracle数据库服务器,如下图所示:
Oracle实例是内存结构和后台进程的集合。
Oracle实例分配系统全局区,启动后台进程,如下图所示:
Oracle的内存结构包含两个内存区:
系统全局区SGA、程序全局区PGA,如下图所示:
注意:
Oracle实例启动时分配系统全局区,当服务器进程启动时分配程序全局区。
系统全局区(SGA)是Oracle数据库存放系统信息的一个内存区域,是Oracle为一个数据库实例分配的一组共享内存缓存区。
多个进程可以同时对SGA中的数据进行访问和相互通信。
SGA保存着Oracle系统与所有数据库用户的共享信息,包括数据维护、SQL语句分析、重做日志管理等,是实例的主要部分。
SGA在实例启动时被自动分配,当实例关闭时被收回。
在系统全局区中。
根据功能的不同,SGA可分为如下关键部件:
主要由五部分组成:
(1)共享池(SharedPool)
(2)数据库高速缓存(DatabaseBufferCache)
(3)重做日志缓存(RedoLogBufferCache)
(4)Java池(JavaPool)
(5)大池(LagerPool)
共享池
共享池是对SQL、PL/SQL程序进行语法分析、编译、执行的内存区域。
共享池由库缓存和数据字典缓存组成。
库缓存含有最近执行的SQL、PL/SQL语句的分析码和执行计划;数据字典缓存含有从数据字典中得到的表、索引、列定义和权限等信息。
共享池的大小直接影响数据库的性能。
数据缓存区
用于存储从磁盘数据文件中读入的数据,所有用户共享。
服务器进程将读入的数据保存在数据缓存区中,当后续的请求需要这些数据时可以在内存中找到,不需要再从磁盘读取,提高了读取速度。
数据缓存区的大小对数据库的读取速度有直接的影响。
日志缓存区
日志记录数据库的所有修改信息,日志信息首先产生于日志缓存区。
当日志缓存区的日志数据达到一定数量时,由后台进程将日志数据写入日志文件中。
相对来说,日志缓存区对数据库的性能影响较小,但重做日志缓存区过小会增加写盘的次数,增加系统的I/O负担。
通常较大的重做日志缓存区能够减少重做日志文件的I/O次数。
程序全局区(PGA)用户进程私有的内存区域,不能共享。
PGA包含单个服务器进程所需的数据和控制信息、进程会话变量及内部数组等。
PGA是在用户进程连接到数据库并创建一个会话时自动分配的,保存每个与Oracle数据库连接的用户进程所需的信息。
PGA为非共享区,只能单个进程使用,当一个用户会话结束,PGA释放。
1.4.Oracle实例进程结构
Oracle实例有几种不同类型的进程,它们是:
用户进程、服务器进程、后台进程。
用户进程是一个需要与Oracle服务器进行交互的程序,当用户运行一个应用程序准备向数据库服务器发送请求时,即创建了用户进程。
服务器进程用于处理连接到该实例的用户进程的请求,当用户连接至Oracle数据库实例创建会话时,即产生服务器进程
后台进程是Oracle数据库为了保持最佳系统性能和协调多个用户请求而设置的。
Oracle实例启动时即创建一系列后台进程
会话是用户与Oracle服务器的单个连接,当用户与服务器建立连接时创建会话,当用户与服务器断开连接时关闭会话
如下图所示:
实例的各种后台进程是:
PMON进程监控进程
清理出现故障的进程,并回滚用户进程还没有做完的事务。
释放所有当前挂起的锁定。
释放故障用户进程使用的所有数据库资源。
SMON系统监控进程
检查数据库的一致性,实例失败之后,重启数据库时自动恢复实例。
整理数据文件的自由空间,将相邻区域结合起来。
释放不再使用的临时段。
DBWR数据写入进程
管理数据缓存区和字典缓存区,将最近使用过的块保留在内存中。
将修改后的缓存区数据分批写入数据文件中。
系统可以拥有多个该进程
LGWR日志写入进程
负责将日志缓存区中的日志数据写入日志文件。
系统有多个日志文件,该进程以循环的方式将数据写入文件。
CKPT检查点进程
确保缓存区内的内容隔一定时间进行一次对数据文件的更新。
否则,当数据库发生毁损时,要用很长时间才可从日志文件的记录中还原回来,这会造成系统的负担。
ARCH归档进程
在数据库设置为归档日志模式的情况下,当每次日志切换时对已满的日志组进行备份或归档。
2.Oracle的使用
2.1.Oracle网络配置
Oracle产品安装完成后,服务器和客户端都需要进行网络配置才能实现网络连接。
服务器端配置监听器,客户端配置网络服务名。
如下图所示:
2.2.Oracle查询工具
Oracle提供的工具非常容易使用。
Oracle的查询工具如下图所示:
SQL*Plus是Oracle最常用的工具之一,用于接受和执行SQL命令以及PL/SQL块
iSQL*Plus可以执行能用SQL*Plus完成的所有任务,该工具的优势在于能通过浏览器访问它。
PL/SQL是SQL的扩展。
PL/SQL结合了SQL语言的数据操纵能力和过程语言的流程控制能力
2.3.Oracle默认用户
只有用合法的用户帐号才能访问Oracle数据库。
Oracle有几个默认的数据库用户。
如下图所示:
数据库中所有数据字典表和试图都存储在SYS模式中,SYS用户主要用来维护系统信息和管理实例。
SYSTEM是默认的系统管理员,该用户拥有Oracle管理工具使用的内部表和视图,通常通过SYSTEM用户管理数据库用户、权限和存储等。
SCOTT用户是Oracle数据库的一个示范帐户,在数据库安装时创建
2.4.客户端连接工具
Oracle数据库的客户端连接工具是SQL*Plus。
在Oracle安装的路径下可以找到该工具,如下图所示:
登录界面如下:
Dos窗口操作Oracle
从开始点击运行,如下图所示:
在Dos窗口里输入sqlplusname/pass,如下图所示:
用sys登录:
connectas/sysdba;
解锁scott:
alteruserscottaccountunlock;
alteruserscottidentifiedbytiger;(更改密码)
再登录:
sqlplusscott/tiger
3.锁
锁,是数据库用来控制共享资源并发访问的机制,用于保护正在修改的数据
锁定的优点:
Ø一致性:
一次只允许一个用户修改数据
Ø完整性:
如果一个用户修改了数据并保存,所作的修改将反映给所有用户
Ø并行性:
允许多个用户访问同一数据
基本的锁类型有两种:
排它锁(X锁)和共享锁(S锁).
X锁,是事务T对数据A加上X锁时,只允许事务T读取和修改数据;
S锁,是事务T对数据A加上S锁时,其他事务只能再对数据A加S锁,而不能加X锁,直到T释放A上的S锁;
若事务T对数据对象A加了S锁,则T就可以对A进行读取,但不能进行更新(S锁因此又称为读锁),在T释放A上的S锁以前,其他事务可以再对A加S锁,但不能加X锁,从而可以读取A,但不能更新A.
锁分为:
行级锁和表级锁
行级锁:
对正在被修改的行进行锁定,其它用户可以访问除被锁定的行以外的行。
行级锁是一种排它锁(X锁),防止其它事务修改此行,使用INSERT、UPDATE、DELETE、SELECT…FORUPDATE时自动加行级锁。
表级锁:
锁定整个表,限制其它用户对表的访问
表级锁分为:
Ø行共享:
允许其它用户访问和修改表,禁止排他锁锁定表
Ø行排他:
禁止使用排他锁和共享锁
Ø共享:
仅允许其它用户查询,多个用户可以同时在一个表上应用此锁
Ø共享池排他:
禁止使用共享锁及更高的锁
Ø排他:
限制最强的锁,只允许其它用户查询
根据保护的对象不同,Oracle数据库锁可以分为以下几大类:
DML锁(datalocks,数据锁),用于保护数据的完整性;DDL锁(dictionarylocks,字典锁),用于保护数据库对象的结构,如表、索引等的结构定义;内部锁和闩(internallocksandlatches),保护数据库的内部结构。
DML锁的目的在于保证并发情况下的数据完整性。
在Oracle数据库中,DML锁主要包括TM锁和TX锁,其中TM锁称为表级锁,TX锁称为事务锁或行级锁。
死锁:
当两个用户希望持有对方的资源时就会发生死锁.即两个用户互相等待对方释放资源时,oracle认定为产生了死锁,在这种情况下,将以牺牲一个用户作为代价,另一个用户继续执行,牺牲的用户的事务将回滚.
Oracle会自动检测死锁,并通过结束其中的一个事务来解决死锁。
例:
1:
用户1对A表进行Update,没有提交。
2:
用户2对B表进行Update,没有提交。
此时双反不存在资源共享的问题。
3:
如果用户2此时对A表作update,则会发生阻塞,需要等到用户一的事务结束。
4:
如果此时用户1又对B表作update,则产生死锁。
此时Oracle会选择其中一个用户进行会滚,使另一个用户继续执行操作。
起因:
Oracle的死锁问题实际上很少见,如果发生,基本上都是不正确的程序设计造成的,经过调整后,基本上都会避免死锁的发生。
4.Lab128
Lab128系统需求:
CPU:
586-兼容或更高(Intel,AMD等);
1024x768或更高分辨率.Lab128有很多以图形方式呈现的信息,推荐使用高分辨率的显示器;
MSWindowsNT,2000,XP,Vista,Windows7;
Oracle客户端软件;
Oracle数据库服务器,支持版本:
8,8i,9i,10g,11g.
登录界面,如下图所示:
评估Oracle实例:
Ø系统资源的使用状况如何:
I/O负载;CPU使用;重做日志文件读写性能.
Ø评估系统资源的使用与数据库实际完成的工作:
连接的用户数,SQL语句执行的频率,提交的数量,SQLNet负载等等.
Ø这些都是主窗口呈现的内容,可以看到系统最后15-20分钟的数据,有助于对系统负载的变化趋势有大致的了解.
Lab128解决性能问题的一种有效方式:
由主窗口到统计数据窗口,发现有问题的时间段,再到活动浏览窗口或SQL浏览窗口发现具体问题.
如下图所示:
ASH以及使用ActivityExplorer进行基于等待事件的调优.
ØOracle服务器提供查询服务.
Ø当进行查询时,服务器进程可以运行在CPU上或在等待状态.
Ø数据库调优的目的是为了减少查询的执行时间,也就是减少花费在CPU和等待事件上的时间.
SQLExplorer和基于SQL性能统计数据的调优.
ØLab128采集v$sql的快照,产生大量的数据,并以压缩形式进行存储
Ø历史的任何时间段都可以进行分析,查找TOPSQL语句,各个语句的统计图表,并可以与其他主要性能数据进行比较.
保存和使用历史数据
Ø这是个非常重要的功能.
Ø可以设定Lab128自动进行收集和存储数据.
Ø可以储存数个月的最详细的不间断的性能数据而不需要大量的磁盘存储.
实例主窗口
以下是Lab128运行的主窗口,包括许多到其他功能窗口的链接及实例的相关信息.
ActivityExplorer窗口
Ø这是个十分有用的窗口;
Ø提供了关于Oracle等待事件的重要信息,包括数据库级别的和单独针对各个SQL语句的;
Ø页面的上部是等待事件和活动进程历史信息,数据库负荷最大的一个时间段被选中.中间部分是这一时间段等待事件的详细信息.下一部分显示了以执行时间排序的对各个SQL语句累加后的等待事件数据.右边的一部分区域是所选中的SQL语句文本.
进程详细信息窗口
这是具有很多链接和热点信息的详细进程界面:
实例总览界面,以下是实例总览界面,提供对所有连接例程的快速查看窗口:
锁和被锁对象.
锁和锁等待详细窗口,数据来自视图v$lock.
Lab128自动提取相关对象名称,高亮显示相关进程,帮助你快速定位和解决问题.
该窗口中信息表明
进程156获得两个锁:
TMandTX.
另一个进程139有两个TM锁并试图由进程156持有的专用TX锁.
因此进程被阻塞,这可以从"Blockedby"看出来.
而同时另一个进程152正在尝试获取139持有的专用TX锁,也处于阻塞状态.
通过用颜色标识的行可以看到进程156是个阻塞进程,而139同时是个阻塞进程和等待进程,152是个等待进程.
TM锁是和数据库对象相关联的,在这个例子了有两个表ADM_A和ADM_B.
可以通过点击SID进一步查看进程的详细信息.
SQLExplorer窗口
SQL浏览器是另一个有力工具,可以用来查看任意时段最消耗系统资源的SQL语句,尤其针对10gR2以上版本;
通过提取视图v$sql或sqlstats的快照,此时间段的所有SQL语句会被呈现,相关的读写统计,执行时长,CPU耗时等数据被分析,以找到最关键的造成性能瓶颈的SQL语句.
在执行和获取结果前,数据库系统对sql进行几个步骤的处理过程:
1、语法检查(syntaxcheck):
检查此sql的拼写是否语法。
2、语义检查(semanticcheck):
诸如检查sql语句中的访问对象是否存在及该用户是否具备相应的权限。
3、对sql语句进行解析(parse):
利用内部算法对sql进行解析,解析成能执行的原子操作,生成解析树(parsetree)及执行计划(executionplan)。
把变量绑定在sql语句上。
4、执行sql,返回结果(executeandreturn)
其中,软、硬解析就发生在第三个过程里。
数据库利用内部的hash算法来取得该sql的hash值,然后在librarycache里查找是否存在该hash值。
假设存在,则将此sql与cache中的进行比较。
假设“相同”,就将利用已有的解析树与执行计划,而省略了优化器的相关工作。
这也就是软解析的过程。
如果上面的2个假设中任有一个不成立,那么优化器都将进行创建解析树、生成执行计划的动作。
这个过程叫硬解析。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 数据库 监控 工具 lab128