DBA必学:Oracle库缓存
2008-01-16 12:41:06 来源:WEB开发网以下是引用片段:
SELECTwaiting_session,holding_sessionFROMdba_waiters;
如果想要了解锁定中的会话正在执行什么SQL查询,可以使用以下的SQL语句进行查询:
以下是引用片段:
selectsesion.sid,
sql_text
fromv$sqlareasqlarea,v$sessionsesion
wheresesion.sql_hash_value=sqlarea.hash_value
andsesion.sql_address=sqlarea.address;
有时候我们最好能够知道问题源于何处。给Oracle带来问题的可能并不是整个应用程序代码组,而实际上是某个特定的语句。我们可以通过追踪原始的SQL语句来查看可纠正此类问题。
现在我们已经确定了正在进行中的会话和被等待对象,以及引发问题的会话及其SQL。那么接下来要如何解决出现的问题呢?如果等待事件持续的时间过长,那么库缓存内部很可能发生了错误或故障。唯一的补救办法就是杀死持有该锁的所有进程。在Oracle数据库中要达到这个目的,可以使用alter system kill session命令。不过,这个命令是否有效还得看连接的类型。有时候需要用operating system kill命令或者关闭一系列应用程序来终止连接。我们需要检测库缓存中完全锁定状态下,哪一个方法对系统更行之有效。至少在不得不关闭系统和数据库之前,尝试一下强迫杀死进程的方法。
当我们使用库缓存时,只要记住它不过是在代码执行前,Oracle数据库必须将这些代码载入其中的内存区。将代码载入到库缓存的过程可能会受到限制,从而引起等待事件,使系统挂起。这时候我们要通过杀死会话、进程或修改代码的方法快速确定导致系统挂起的SQL进程,不过千万不要忘记了库缓存只是内存的事实,我们可能只是需要给引发问题的部分重新分配一些内存,使Oracle更有效地运行而已。
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
- ››Oracle数据库在配置文件中更改最大连接数
- ››Oracle中在pl/sql developer修改表的两种方式
赞助商链接