OracleEnterpriseManager(Oracle企业管理器 简称OEM)是通过一组Oracle程序 为管理分布式环境提供了管理服务 OEM包括了一组DBA工具 一个repository 以及一个图形化显示的控制台 OEM控制台与每一个服务器上的智能化代理(IntelligentAgent)相对应 智能化代理能够监控系统的特定事件并且执行任务(作业)就象你在系统本地一样 事件和作业的结果会被送回控制台 这样可以在一个地方管理所有的系统 OEM与ServerManagerMotif相比 有以下优点 )从适用范围看 OEM可以同时监控管理多个系统上的多个数据库 因而特别适合分布式环境 而ServerManager只能监控管理一个数据库 )从管理对象看 OEM可以监控管理节点 数据库和监听进程(listener) 而ServerManager只能监控数据库 )从适用版本看 OEM可以同时监控管理Oracle x和 x 而从 版开始 ServerManager已不存在 本文主要介绍一些OEM的常见问题及其解决方法 Q OEM数据库工具组的功能是什么? A OEM数据库工具组是一组使DBA能够通过GUI界面管理Oracle数据库的工具 包括以下工具 DataManager(数据管理器) 这工具使你能够象加载数据一样执行数据的export/import SchemaManager 这工具使你能够在数据库中管理对象 可以用于创建 修改 和删除tables indexes views snapshots sequences等等 SecurityManager(安全性管理器) 这工具使你能够管理用户 角色 权限及profiles StorageManager(存储管理器) 这工具允许你创建和修改表空间 数据文件和回滚段 InstanceManager(实例管理器) 这工具允许你关闭 启动实例并且存储和管理数据库参数 SQLWorksheet 这工具使你能够运行或创造SQL脚本并且存储在硬盘上 你能使用这工具重现最后执行的语句 同时 检查显示到屏幕上的执行结果 BackupManager(备份管理器) 这工具允许你管理备份和恢复为Oracle 和Oracle 数据库 在Oracle 此工具支持EnterpriseBackupUtility(EBU) 在Oracle 此工具支持恢复管理器RecoveryManager SofareManager(软件管理器) 这允许你将远程软件安装到支持这一特性的远程服务器 Q 作业状态一直为提交 未变为预定(scheduled) A 作业在OEM控制台创建并且到被通过SQLnet送至智能化代理 一旦当智能化代理接受作业请求 会发送一个通知回到OEM控制台 状态变化到 预定 如果状态从未从提交变化到预定 那代理程序可能没有收到作业请求 确定代理程序是否已经启动 确定SQLnet和OEM是否已经适当配置 Q 作业状态一直为预定 未变为运行 A 当代理程序开始运行作业的时候 会发送一个通知回到OEM控制台 状态变化到 已发送 或 启动 如果作业状态一直为预定而无变化 那可能是代理程序不能打开一个socket回到OEM控制台 原因可能是TCP/IP问题或代理程序没有足够权限去派生一个进程来运行作业 在服务器端使用主机名来Ping控制台 以此确定TCP/IP不存在问题 确认运行作业的数据库用户具有dba connect resource权限 Q 运行作业出错 错误信息为 FailedtoAuthenticateUser A 在NT系统上 你必须把 Logonasabatchjob 权限授予登录用户 然后在OEMPreferredCredentials中设置此用户 如果代理程序是一个 x的代理程序 那这个用户必须是一个本地的NT用户 不能为一个DOMAIN用户 在Unix系统上 代理程序的权限应为 rwsr xr xrootdba dbsnmp s 权限意味着dbsnmp进程将用root用户的权限运行 当这权限设置以后 作业将由在OEM控制台的PreferredCredentials窗口中设置的用户运行 确认在OEM控制台的PreferredCredentials窗口中设置的用户在服务器上有合适的登录权利 Q 客户能创建自己定义的事件吗 A 在OEM x中 客户不能创建自己定义的事件 这将是OEM x的一个新特性 然而 你能创建一个运行TCL脚本的作业 能通过使用TCL命令orareportevent触发一个事件 有关orareportevent的进一步信息 请参阅OEM应用开发者手册 Q 在控制台上 数据库显示为红色的圆圈和斜线 表示数据库已关闭 然而 数据库是正在运行的 A 如果数据库 监听进程或节点显示为红色的圆圈和斜线 OEM控制台是在试图通知你服务已关闭 如果服务未关闭 你需要在事件窗口中单击 OutstandingEventstab 并将通知移动至历史记录 这应该从导 航(navigator)和地图(map)窗口中清除关闭提示 Q 怎样创建OEMRepository? A OEMRepository是在Oracle 或Oracle 数据库中的一组表 这些表存储了通过OEM控制台图形化浏览的信息 在OEM x结构中 这些表存储在一个特定的用户下并且不能与另外的用户共享 在OEM x 应该用一个非 system 用户登录来运行脚本SMPCRE SQL 此用户必须有connect resource和dba权限 在OEM x 初次激活OEM控制台图标时将自动地创建Repository 如果已存在一个早期版本的repository 会提示更新表 如果没有OEM表 会提示创建表 Q 怎样自定义OEM工具栏? A 如果要设定OEM工具栏 应在工具栏上按右键 选择Customizetab 你能编辑工具栏项目的名字 删除项目 或添加项目 如果在Databasetab上单击 可以进入logoncredentials 为每数据库选择一个默认值输入项 Q 当登录至OEM控制台时 得到以下错误信息 VOC Failuretoobtaininterfacelogin A 原因是OEM通信后台进程不能打开一个与Repository的连接 确认TCP/IP配置正确 以及是否通信后台进程的缺省参数已被修改(使用DaemonManager) Q 当使用OEM控制台时 得到以下错误信息 VOC FailuresettingcredentialdetailsORA Not connected to ORACLE A 原因是OEMRepository所在数据库已关机 或是连接数据库的服务发生了网络故障 Q 当使用SYSDBA登录至OEM控制台时 得到以下错误信息 VOC Failureupdatingorinsertingauserdetailentry ORA Tableorviewdoesnotexist A 用户登录至OEM控制台的缺省角色是NORMAL 如果你需要作为SYSDBA连接 应该在PreferredCredentials窗口中设置CONNECTASSYSDBA选项 lishixinzhi/Article/program/Oracle/201311/17696
Oracle可以通过多种方式来查看transaction执行过程,以下是其中一些方法:
1 使用SQL Trace功能:可以通过在session级别启用SQL Trace功能,来记录所有SQL语句的执行过程,包括事务的提交和回滚等信息。可以使用如下命令来启用SQL Trace:
```
ALTER SESSION SET SQL_TRACE=TRUE;
```
启用SQL Trace后,会在数据库服务器上生成一个跟踪文件(trc),通过解析该文件可以了解transaction的执行情况。
2 使用V$SESSION_LONGOPS视图:V$SESSION_LONGOPS视图可以显示当前正在执行的复杂或长时间运行的 *** 作的进度信息。可以过滤出涉及transaction的 *** 作,以了解其执行情况。
3 使用DBMS_MONITOR包:DBMS_MONITOR是一个用于监控数据库活动的包,其中包含了多个子程序,其中一个子程序可以用于跟踪特定的SQL语句或事务,以便了解其执行情况。
4 使用Enterprise Manager:Oracle Enterprise Manager提供了一个可视化的界面,可以方便地查看transaction执行情况,包括每个SQL语句的执行时间、计划、I/O等信息,也可以查看事务提交、回滚等 *** 作的详细情况。
hotyxm说的trace文件应该类似于oracle数据库的3种类型的常见诊断文件吧,它们是报警文件、后台进程跟踪文件(background trace files)、用户进程跟踪文件。报警文件包括数据库的日常 *** 作细心,他存放在由BACKGROUND_DUMP_DEST参数所定义的目录下。
但是这些文件都是关于数据库自身 *** 作的,我还没有学到怎么查询软件对数据库的访问信息,不知oracle数据库又没得这样的功能, ruhaisanren给的那个网址上面的东西好像很专业,你试试,成功了要告诉我们哦。
Oracle数据库无响应故障处理方式
Oracle数据库无响应故障,简单地讲就是数据库实例不能响应客户端发起的请求,客户端提交一个SQL后,就一直处于等待数据库实例返回结果的状态。更严重的现象是客户端根本不能连接到数据库,发起一个连接请求后,一直处于等待状态。Oracle数据库无响应故障怎么处理呢下面跟我一起来学习Oracle数据库无响应故障的处理方法吧!
无响应的故障现象一般有以下几种:
1Oracle的进程在等待某个资源或事件
这种现象一般可以从V$SESSION_WAT、V$LATCH、V$LATCHHOLDER等动态视图中检查进程正在等待的资源或事件,而被等待的资源或事件,一直都不能被获取,甚至是很长时间都不可获得。如果这个正在等待的进程持有了其他的资源,则会引起其他的进程等待,这样就很可能引起实例中大范围的会话发生等待。由于进程在等待资源或事件时,通常都处于SLEEP状态,消耗的CPU资源非常少(在等待latch时要稍微多消耗一些CPU资源),所以从OS来看,CPU的消耗并不高,甚至是非常低。
这种因为等待而引起的个别进程Hang,相对比较容易处理。
2 OracleProcess Spins
所谓Spin,就是指Oracle进程中的代码在执行某个过程时,陷入了循环。在V$SESSION视图中,往往可以看到Hang住的会话,一直处于“ACTIVE”状态。对于这样的会话,用“alter system kill session ‘sid,serial#’”命令也不能完全断开会话,会话只能被标记为“killed”,会话会继续消耗大量的CPU。进程Spins由于是在做循环,CPU的消耗非常大,从OS上明显可以看到这样的进程,通常会消耗整个CPU的资源。
而对于这样的Hang住的会话,处理起来相对比较复杂,并且为了从根本上解决问题,需要超过DBA日常维护所需要的技能。
从故障范围来看,无响应故障可以分为以下几种情况:
1 单个或部分会话(进程)Hang住
这种情况属于小范围的故障,业务影响相对较小,一般来说只会影响业务系统的个别模块。在一个多应用系统的数据库上面,如果Hang住的会话比较多,则影响的可能是其中的一个应用系统。这里有一个例外,如果Hang住的进程是系统后台进程,如pmon、smon等,则影响的范围就非常大了,最终甚至会影响整个数据库及所有应用系统。还有值得注意的是,即使是少部分会话Hang住,也要及时处理,否则极有可能会扩散到整个系统。
2 单个数据库实例Hang住
这种情况造成的影响非常大。在这个实例上的所有应用系统均受到严重影响,并且在找到根源并最终解决问题之前,数据库实例往往须要重启。
3 OPS或RAC中的多个实例或所有实例都Hang住
在这种情况下,即使是OPS或RAC,都已经没办法提供高可用特性了。使用这个数据库的所有应用系统将不能继续提供服务,这种情况往往须要重启。
无响应故障成因分析
Oracle数据库无响应,一般主要由以下几种原因引起:
1 数据库主机负载过高,严重超过主机承受能力
比如应用设计不当,数据库性能低下,活动会话数的大量增加,导致数据库主机的负载迅速增加,数据库不能正常 *** 作,并最终Hang住;主机物理内存严重不足,引起大量的换页,特别是在SGA中的内存被大量换出到虚拟内存时,数据库实例往往就会Hang住。
2 日常维护不当、不正确的 *** 作引起数据库Hang住
比如归档日志的存储空间满,导致数据库不能归档,引起数据库Hang住;在一个大并发的繁忙的系
统上,对DML *** 作比较多的大表进行move、增加外键约束等 *** 作也可能使系统在短时间内负载大幅升高,并引起数据库系统Hang住;不正确的资源计划(Resource Plan)配置,使进程得不到足够的CPU等。
3 Oracle数据库的Bug
几乎每个版本都存在着会导致数据库系统Hang住的Bug,这些Bug会在一些特定的条件下触发,特别是在RAC数据库中,引起数据库Hang住的Bug比较多。
4 其他方面的一些原因
比如在RAC数据库中,如果一个节点退出或加入到RAC的过程中,当进行Resource Reconfiguration时,会使系统冻结一段时间,也有可能使系统Hang住。
以上所描述的几种常见的会导致Oracle数据库实例Hang住的原因中,大部分的情况是可以避免的,只要维护得当,一般不会出现这种故障。对于Oracle数据库Bug所导致的数据库无响应故障,由于是在特定的情况下才会触发,所以如果能够尽量对数据库打上最新版本的补丁,并且熟悉当前版本中会导致系统Hang住的Bug以及触发条件,就能够最大限度地避免这种故障的发生,提高系统的可用性。
那么,在数据库Hang住的情况下,如何去分析并发现导致问题的根源一方面,由于系统Hang住会导致业务系统不可用,为了能够尽快地恢复业务,须快速地判断问题所在,然后Kill掉引起故障的会话和进程,或者数据库实例不得不重启以迅速恢复业务;但另一方面,如果只是重启数据库或Kill会话和进程来解决问题,在很多情况下是治标不治本的办法,在以后故障随时可能会出现。如何在二者之间进行抉择呢对于数据库Hang故障的处理,首先是尽可能地收集到系统Hang住时的状态数据,然后尽快地恢复业务,恢复业务后分析收集到的数据,找到数据库系统Hang住的真正原因,然后再进行相应的处理。下一节将详细描述数据库系统Hang住后的处理流程。
无响应故障处理流程
对于Oracle无响应故障的处理,我们可以按下图所示的流程进行。
值得注意的是,上图并不是一个完整的Oracle数据库故障处理流程图,只是处理Oralce数据库无响应这一类特定的故障的流程,只列出了针对这一特定类型故障处理时的关键处理点。不过既然是故障,所以这类故障的处理流程与其他故障的处理流程,有着非常相似的地方。
下面是整个流程的详细说明:
1 在出现数据库无响应故障后,首先确认系统的影响范围,如上节所描述的',是部分业务系统或模块还是所有的业务系统都受影响,是不是整个实例或多个实例都无响应。同时应询问系统维护和开发人员,受影响的系统在出现故障前是否有过变动,包括主机硬件、 *** 作系统、网络、数据库以及应用等。有时一个细小的变动就可能导致出现数据库Hang住这样严重的故障。曾经遇到一个库,应用只是修改了一个SELECT语句就导致了数据库Hang住。
2 为了避免由于网络、数据库监听或客户端因素影响分析,建议都登录到主机上进行 *** 作。
3 如果主机不能登录(为了避免干扰流程主线,这里不讨论如网络问题这样也会导致不能连接的故障),尝试关闭出现问题的业务系统,甚至是所有的业务系统。如果关闭了所有的业务系统之后,仍然不能连接,则只有考虑重新启动数据库主机。在数据库主机重新启动后,使用 *** 作系统工具或OSW等长期监控 *** 作系统的资源使用,同时监控Oracle数据库的性能和等待等。
4 登录上主机后,先用top、topas等命令简单观察一下系统。看看系统的CPU使用、物理内存和虚拟内存的使用、IO使用等情况。
5 使用SQLPLUS连接数据库,如果不能连接,则只能从 *** 作系统上观察系统中是否有异常的现象,比如占用CPU过高的进程。使用gdb、dbx等debugger工具对数据库进行system state dump;使用strace、truss等工具检查异常进程的系统调用;使用pstack、procstack等工具察看异常进程的call stack等。
6 使用SQLPLUS连接上数据库后,进行hanganalyze、system state dump等 *** 作;或检查等待事件、异常会话等正在执行的SQL等待。
7 找到故障产生的原因,如果暂时找不到原因,尽量收集数据。
8确良如果应用急须恢复,可通过Kill会话、重启数据库实例等方式,先恢复应用。
9 根据最终诊断结果,对数据库升级打补丁,或者修改应用等方式从根本上解决问题。
怎样避免数据库出现无响应故障
作为Oracle数据库DBA,除了处理故障之外,更重要的是如何预防故障的发生。根据前面对数据库无响应故障的成因分析,在日常的维护工作中,须做到以下几点:
1 进行正确的维护 *** 作
很多的数据库无响应故障都是由于不正确的维护 *** 作引起的。应避免在业务高峰期做大的维护 *** 作,比如像move、加主外键约束等会长时间锁表的 *** 作。如果的确需要,尽量使用正确的 *** 作方法。比如用ONLINE方式重建索引;建主键、唯一键约束时先建索引,然后在建约束时指定新建的索引,等等。也就是保证系统的并发性、可伸缩性,避免系统串行 *** 作的出现。
2 优化应用设计,优化数据库性能
为避免性能问题导致在业务高峰期数据库不能及时有效处理来自业务的请求,甚至于完全Hang住。对于数据库中存在串行访问的部分进行优化,比如latch、enqueue,还包括不合理的sequence设计等。特别是在RAC数据库中,严重串行访问等待往往更容易引起严重的性能问题。优化应用设计,使数据库具有更好的可伸缩性和并行处理能力,能够有效地避免性能问题引起的数据库Hang住。
3 利用监控系统随时监控系统负载
遇到系统负载过高,内存不足,OS中虚拟内存换页很频繁等情况时,及时采取措施;监控Oracle数据库的核心进程,如pmon、smon等,看是否有异常,如过高的CPU消耗。出现异常应立即处理;监控归档空间和日志切换;监控数据库中的等待事件,比如是否有大量的enqueue、log file switch (archiving needed)、resmgr:become active等待事件等。
4 为数据库打上补丁
很多的无响应故障是由于Oracle的Bug引起的,数据库DBA应关注当前版本中有哪些Bug会导致数据库Hang住,尽量为数据库打上解决这些Bug的补丁。
;检查实例的可用性
检查监听器的可用性
检查alert日志文件中的错误信息
在存放log文件的地方满以前清空旧的log文件
分析table和index以获得更好的性能
检查表空间的使用情况
找出无效的对象
监控用户和事务!
以上就是关于Oracle企业管理器(OEM)常见问题解答全部的内容,包括:Oracle企业管理器(OEM)常见问题解答、oracle如何看到transaction执行过程、Oracle数据库跟踪等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)