在oracle中监视索引的使用情况
数据库运行时间长了,索引会越加越多,导致最后自己也不知道哪些索引被使用,哪些索引已经没有人在使用了,幸好oracle给我们提供了监视索引是否被使用的方法。[@more@]使用很简单:1、使用下面命令开始监控ALTER INDEX index_name MONITORING USAGE;2、监控一段时间后,可以到SYS.V$OBJECT_USAGE 视图中查找索引在这段时间内是否被使用,此视图很简单,几个字段一目了然,不做过多介绍。3、停止对索引的监控ALTER INDEX index_name NOMONITORING USAGE;
外键字段未建索引引发的死锁
现象:一个很简单的程序在压力测试过程中发现死锁,查看trace文件,发现如下信息:Deadlock graph: ---------Blocker(s)-------- ---------Waiter(s)---------Resource Name process session holds waits process session holds waitsTM-0000627d-00000000 21 1062 SX SSX 22 1092 SX SSXTM-0000627d-00000000 22 1092 SX SSX 21 1062 SX SSXsession 1062: DID 0001-0015-0000001E session 1092: DID 0001-0016-0005C757session 1092: DID 0
如果在一个过程中得到上级调用它的过程的信息
pub上有网友问到了这个问题,也有人回答了这个问题,自己做个测试,权当做个记录吧。[@more@]创建被调用的过程T1:CREATE OR REPLACE PROCEDURE T1 IS L_OWNER VARCHAR2(100); L_NAME VARCHAR2(100); L_LINENO NUMBER; L_CALLER_T VARCHAR2(100);BEGIN OWA_UTIL.WHO_CALLED_ME(OWNER => L_OWNER, NAME => L_NAME, LINENO => L_LINENO, CALLER_T => L_CALLER_T); DBMS_OUTPUT.PUT_LINE('t1'); DBMS_OUTPUT.PUT_LINE(L_OWNER
我只是在炒作
最近炒到火爆的兽兽门事件,来简单的看一下整个过程。1、网上风传有兽兽门,然后大家开始疯狂的求片。我有点同情,觉得小姑娘可能被人卖了2、有人已经求到正果,欣赏完之后开始品头论足。同时各种病毒、广告链接开始趁机大肆推广3、网上风传说兽兽因为兽兽门自杀了,不过我倒认为有勇气去整容并且公开承认的,承受能力应该不这么差4、兽兽公开发表声明,说自己身体倍棒,吃嘛嘛香,并指责上传视频的人。但为啥不报警呢?所以我开始怀疑5、网上风传说兽兽门之前兽兽已经签约王晶。到此,可以看出是一场炒作了,为下一步拍电影赚足眼球,毕竟
ORACLE建库过程中自动生成的跟锁相关的VIEW
之前一直没有注意过,而且都是使用现成的文档来手工建库,今天才发现我们的手册没有执行catblock.sql这个脚本,所以就没有创建这些视图。这些视图不是必须的,但是有了这些视图可能会使用起来方便点。ORACLE自动创建了如下几个视图:DBA_KGLLOCKDBA_LOCKDBA_LOCK_INTERNALDBA_DML_LOCKSDBA_DDL_LOCKSDBA_WAITERSDBA_BLOCKERS他们各自的含义其实只要看catblock.sql脚本中的注释就可以了,这里只是把注释搬过来,记录一下。[@more@]DBA_KGLLOCK:/* this is an auxiliary view containing the KGL locks and pins */DBA_LOCK:/* * DBA_LOCK
EBS Documentations
EBS Documentations
ORACLE CRS日志中的ClssnmPollingThread Missed Checkins Messages
最近发现CRS日志中的missed checkin很多,有时候有连着将近20次,之前有过一次RAC的宕机记录,所以对这个咚咚很警觉。CRS中,会定期的去读取VOTING DISK上的信息来判断CLUSTER中的每个节点的活动状态,如果出现多次的读取失败,则认为这个节点已经死掉,机会把它赶出CLUSTER了。读取失败的参数是可以通过CRSCTL命令设置的,这个值缺省是60次。crsctl get css misscount命令可以返回当前设置的值,crsctl set css misscount 120则是把失败次数设置为120次。一般是不需要调整这个值的,如果调整也不要调的太大。还是来看看metalink上是怎么说
iostat -n来统计NFS读写信息时碰到了Cannot open /proc/self/mountstats: No such file or directory
搞了个NFS环境,然后弄了点压力来测试下读写性能如何,其实如果网络上没有其他流量,那基本上网络上得到的流量也就是NFS读写的数据的流量了,也大概 能得到NFS的读写性能。但LINUX下的sysstat包中提供了一个iostat命令,其中有一个-n参数,可以直接看到NFS上的流量信 息,BUT,使用这个咚咚就要小心碰到“Cannot open /proc/self/mountstats: No such file or directory”了。[@more@] 我测试的环境是REDHAT AS4U4,直接使用iostat -n命令,出现错误提示:Cannot open /proc/self/mountstats: No such file or directory/porc目录是
自动为新建的表创建同义词
问题提出:为了控制用户权限,给某些用户只有查询系统的权限,但是这样带来的维护麻烦是每次系统创建了新的表,都需要给查询用户对这个表的查询权限授权,然后查询用户使用的时候不方便,要加上用户的前缀才能使用。这里提供一个自动为新创建的表进行授权和创建同义词的办法。[@more@] 解决的办法就是使用系统触发器,当在一个schema上创建一个表的时候,就使用动态语句来执行授权和创建同义词的语句。问题的难点是如果单纯使用execute immedite来创建同义词,则会报权限不足,怎么都搞不定。后来搜索了一下,tom提供了下面的方法,
RMAN备份出现ORA-01801: date format is too long for internal buffer错误
ORACLE 10.2.0.2平台上的基于物理DATAGUARD的备份失败,查看当时的日志记录,发现如下错误:RMAN-00571: ===========================================================RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============RMAN-00571: ===========================================================RMAN-03015: error occurred in stored script rman_level1_scRMAN-03002: failure of allocate command at 05/06/2008 02:00:20RMAN-03014: implicit resync of recovery catalog failedRMAN-03009: failure of part
LOGSTDBY status: ORA-16227: DDL skipped due to missing object
一个逻辑standby的库,当在主库上创建索引的时候,standby的库就会报一个LOGSTDBY status: ORA-16227: DDL skipped due to missing object错误出来,按照错误的提示,仔细核对了主库和standby库上的表,发现这个表明明存在的,怎么会报missing object的错误呢??看看dba_logstdby_skip视图,也没有过滤掉这个建索引的语句啊,它怎么就会莫名奇妙的被skip了呢?google了半天,没有结果,看来还是metalink吧,结果找到了答案,一个bug,前几天整天看见大家叫,说10Gbug满天飞,唉,我也碰上了一大堆,不过还好,没有碰上很棘手的!下面来看
EV_AGENT[4409]: Agent Main --Estream construct failed. Err: RWSockErr: in RWSocket::getpeername: NOT
RWSockAddr getpeername() const;Returns the address of the peer connected to this socket.返回连接到这个SOCKET上的peer的地址的时候发生的错误,而网上看到有类似的情况,跟我这里很类似,是系统负载过高的时候发生的。并且我这里,当时因为负载过高,磁盘I/O过大,导致负载狂高的同时,RAC系统的VOTING DISK访问磁盘发生超时,接着就发生了节点被驱逐的情况,导致一个节点被重启。另外系统启动的时候,会启动EV_AGENT,启动时的信息如下:EV_AGENT[4485]: Agent daemon process created, pid 4485EV_AGENT[4485]: Agent has started
Oracle 9i, 10g, and 11g RAC on Linux所需要的Hangcheck-Timer Module介绍
此文档摘自METALINK:726833.1,所适用的ORACLE版本为:Oracle Server - Enterprise Edition - Version: 9.2.0.8 to 11.1.0.7从9.2.0.2版本开始,ORACLE RAC环境需要使用一个新的I/O fencing模块,叫做hangcheck-timer模块。这个模块用来代替Watchdog模块,提供类似的fencing功能。Hangcheck-timer模块是标准的linux2.4以上的内核中的一个子功能被发布。Hangcheck-timer应该在系统启动的时候被加载, 并对于能够影响RAC节点稳定性的长时间的系统操作HANG进行内核监控。它运行在内核级别并使用Time Stamp Counter(TSC)来捕捉调度的延迟和节点H
Switch to short timeout for ipc polling
在RAC系统的DIAG TRACE文件中发现了标题中的信息,全部的日志信息如下: Switch to short timeout for ipc polling a session (kjzha) is registered session (kjzha) is about to end Registered session (kjzha)[11][4][0][1] is cleaned up Switch to long timeout for ipc polling[@more@]在GOOGLE中找到一遍有头没尾的文章,中间提到说因为ORACLE的心跳之前通信是通过UDP方式实现的,而UDP就是使用IPC方式来实现的,所以应该查看IPC相关的设置,不过是个太监贴。跑到METALINK,找了半天也没有很吻合的,只找到了ML:750773.1
主库千万级的数据更新后,STANDBY日志应用大量延迟的问题处理
因为业务需要,不得不在生产上更新一个千万级的大表,更新过程中产生了4个G左右的日志后发现此更新会导致其他问题,取消更新,然后更正更新的逻辑后,重新对这千万级的数据进行更新,产生6个多G的日志后,更新完成,但是却造成了其他两个逻辑STANDBY的大量延迟。如何加快这些日志的应用,是一个比较严重的问题。[@more@]1、首先是加快主库的更新操作,那么首先关闭主库对STANDBY的归档,减少主库写STANDBY库日志对主库产生的压力,这需要在更新开始前在主库设置log_archive_dest_state_N参数为DEFER,然后主库切换日志来激活这个新的参数设
替家乡人民感到脸红
开水门事件,目前还没有结论,不过作为一个河南人,我替家乡人民感到脸红。很多人都说河南人很烂,外地的很多地方河南人口碑也很差,呵呵,不过客观的来说,这个基本属于以讹传讹。每次跟别人聊天,我也会自嘲几个关于河南人的笑话,不过我从来没有感觉到作为河南人有什么脸红的。河南也曾经辉煌过,不过在最近的工业化过程中有点落伍,而且从接触到的全国各地的人来看,他们接触到的河南人基本也不是传说中的那么烂,他们勤劳、善良、能吃苦等等,其实哪里也都有好人,哪里也都有烂人。之前云南躲猫猫事件发生后,我觉得社会进步了,这都
关于谷歌中国的最新声明(这个必须转载)
David Drummond, SVP, Corporate Development and Chief Legal Officer 今 年1月12日,我们在本博客上宣布,Google及另外二十余家美国公司受到了来自中国的、复杂的网络攻击,在对这些攻击进 行深入调查的过程中,通过我们所收集到的证据表明,几十个与中国有关的人权人士的Gmail帐号定期受到第三方的侵入,而这大部分侵入是通过安装在他们电 脑上的钓鱼软件或恶意软件进行的。这些攻击以及它们所暴露的网络审查问题,加上去年以来中国进一步限制网络言论自由,包括 对FaceBook、Twitter、YouTube、Google Docs 和 B
oracle的会话如何自杀?
问题提出:pub上有网友提出了一个会话如何自杀,因为一个会话是不能杀死自己的,如果直接执行alter system kill session 来杀死自己,则报错如下:SQL> select sid,serial# from v$session where sid in (select sid from v$mystat); SID SERIAL#---------- ---------- 855 27SQL> alter system kill session '855,27';alter system kill session '855,27'*ERROR at line 1:ORA-00027: cannot kill current session[@more@]那来看一下如何把kill session的任务扔给job,让job充当另一个会话来杀掉自己:CREA
mysql 4.1.7忘记数据库密码的处理办法
很久没有碰过mysql数据库了,今天碰见公司的bugzilla使用的mysql数据库忘记了数据库密码了,本来以为很简单的事情,结果还是费了一点点小功夫,记录一下,免的下次再走弯路。[@more@]虽然对mysql不熟悉,不过以自己的oracle经验来看,肯定有办法能重置一个密码的。随便google下,发现都是相同的解决办法,如下:如果 MySQL 正在运行,首先杀之: killall -TERM mysqld。 启动 MySQL :bin/safe_mysqld --skip-grant-tables & 就可以不需要密码就进入 MySQL 了。然后就是 >use mysql>update user set password=password("ne
占用资源狂高的select min(bitmapped) from ts$ where dflmaxext =:1 and bitand(flags, 1024) = 1024
在别人推荐下,系统使用了temporary tablespace group,几天没有看AWR,今天发现系统中如下SQL居然排在了TOP读的首位,而且远远高于正常的TOP SQL的读:select min(bitmapped) from ts$ where dflmaxext =:1 and bitand(flags, 1024) = 1024[@more@]GOOGLE了下,发现有人说这是个bug,登陆到METALINK上查询,发现果然是个bug,描述如下:Applies to:Oracle Server - Enterprise Edition - Version: 10.1 to 10.2This problem can occur on any platform.SymptomsAfter the introduction of temporary tablespace groups following query u