分布式事务,简单来说,是指一个事务在本地和远程执行,本地需要等待确认远程的事务结束后,进行下一步本地的操作。如通过dblink update远程数据库的一行记录,如果在执行过程中网络异常,或者其他事件导致本地数据库无法得知远程数据库的执行情况,此时就会发生in doublt的报错。此时需要dba介入 […]
关闭侦听须谨慎
侦听的关闭需要绝对的小心,因为在9i中,如果没有设置密码,侦听能轻易的关闭远程的侦听。有时候,生产库的侦听被宕不是因为被黑客入侵了,而是错误的操作而已。最近就遇到了这样的事情: 一次工程迁移,需要将原来的两台rp 4440换成两台rp 8440(有两台,是因为要做MC双机热备)。 当前网络情况: 主 […]
耐心,再耐心些
某数据库主机突然掉电,重启数据库库后进行实例恢复,没想到这个恢复一直进行了近一个小时,唉,当时真有shutdown abort重来的冲动了,幸好没做!真是想不明白,oracle的前滚要做这么长的时间! 50分钟的内,做了38384 data blocks的recovery,按照8k一个db bloc […]
浅谈HP BCV/CA容灾技术
上图为一容灾架构图,p_db01和p_db02为用于做双机热备(SG/MC)的生产数据库,p_db01为主库,p_db02为备库,同连在生产数据库的存储eva 6100上;在eva 6100 的存储上做BC。 eva 5k为用于容灾的异地存储,利用CA与eva 6100进行实时同步。db3和db4连 […]
升级数据库时报错Text file busy
今天在将一个数据库从9204升级到9206时候(p3948480_9206_HP64),遇到一个报错:
1 2 3 4 5 6 7 8 9 |
Exception String: Error in writing to file '/oracle/app/oracle/product/9.2.0/lib32/libwtc9.sl'. [/oracle/app/oracle/product/9.2.0/lib32/libwtc9.sl (Text file busy)] Exception Severity: 2 Exception handling set to prompt user with options to Retry Ignore User Choice: Retry Exception thrown from action: copyGroupFromJar Exception Name: IOException2 Exception String: Error in writing to file '/oracle/app/oracle/product/9.2.0/lib32/libwtc9.sl'. [/oracle/app/oracle/product/9.2.0/lib32/libwtc9.sl (Text file busy)] Exception Severity: 2 Exception handling set to prompt user with options to Retry Ignore |
奇怪,按理说数据库的侦听已经停了,且数据库已经重启过,应该不会还有应用会使用数据库中的文件了吧?在图形界面点击retry,可以继续 […]
安装完成客户端后sqlplus报“段错误”
今天在linux 64位(Linux machine_name 2.4.21-47.ELsmp #1 SMP Wed Jul 5 20:38:41 EDT 2006 i686 i686 i386 GNU/Linux)的机器上安装了oracle客户端后,输入sqlplus命令后报错segmentati […]
存储问题在数据库中的常见表现
有时候,一个语句执行很慢,不仅仅是sql执行计划的问题,还很有可能是存储发生了问题,如存储的cache发生问题,存储的控制器有问题,这些问题,都可以在存储相应的log中可以看到。但是作为一个dba,可能会不清楚存储的相关知识,我们在处理问题的时候,怎么样利用数据库的表现去怀疑是否是存储问题,进而请存 […]
HPUX开异步IO
同事来说在$ORACLE_HOME/rdbms/log下有大量产生trace文件,trace的文件内容为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
/oracle/app/oracle/product/9.2.0/rdbms/log/jxadt_ora_100.trc Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.6.0 - Production ORACLE_HOME = /oracle/app/oracle/product/9.2.0 System name: HP-UX Node name: jx_db03 Release: B.11.11 Version: U Machine: 9000/800 Instance name: jxadt Redo thread mounted by this instance: 0 <none> Oracle process number: 0 100 Ioctl ASYNC_CONFIG error, errno = 1 |
其实这个问题是由于开异步IO的时候,没有给系统的oracle用户MLOCK权限,当主机已经开启的异步IO的参数,但是没给MLO […]
利用rcp复制备机数据库
我们在安装双机热备的数据库时,没必要在2台机器上都安装一次数据库,我们只需在一台数据库主机安装完成后,用rcp的方式把app下的所有文件复制到备机上。以下是主要的安装步骤: 1.在A机(10.203.1.1 db_01)上调整主机内核参数,建立dba group和oracle用户,安装数据库软件,且 […]
为什么不走hash join?
今天,某省的同事来告诉我,表重组后,他用于统计的一个sql脚本运行变慢了,之前只需要17、8分钟能出来的结果,现在1小时40分钟左右才能出来结果。 我们一起来看看脚本中的一个sql:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
SQL> explain plan for 2 select a.startdate,b.subsid from tab_1 a,tab_2 b where 3 a.servid='025001003681' and a.status!='C' and a.mid=b.mid; Explained. Elapsed: 00:00:00.03 SQL> select * from table(dbms_xplan.display) SQL> / PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost | Pstart| Pstop | ---------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 369 | 23985 | 980 | | | | 1 | NESTED LOOPS | | 369 | 23985 | 980 | | | | 2 | PARTITION HASH ALL | | | | | 1 | 4 | |* 3 | TABLE ACCESS BY LOCAL INDEX ROWID| tab_1 | 369 | 14022 | 242 | 1 | 4 | |* 4 | INDEX RANGE SCAN | IDX_tab_1_SERVID | 492 | | 10 | 1 | 4 | | 5 | PARTITION HASH ITERATOR | | | | | KEY | KEY | | 6 | TABLE ACCESS BY LOCAL INDEX ROWID| tab_2 | 1 | 27 | 2 | KEY | KEY | |* 7 | INDEX UNIQUE SCAN | PK_tab_2_MID | 1 | | 1 | KEY | KEY | ---------------------------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 3 - filter("A"."STATUS"<>'C') 4 - access("A"."SERVID"='025001003681') 7 - access("A"."MID"="B"."MID") Note: cpu costing is off 22 rows selected. Elapsed: 00:00:00.56 |
我们看到这个sql是通过索引后在走nested l […]
职业生涯最严重的一次宕机
昨天,经历了职业生涯中最令人心惊胆颤的危机,差点要去买锄头准备回家种地去了。-_-!! 早上5点钟,被同事叫醒,说应用程序连数据库报TNS没响应。于是开始登录数据库主机。登录的时候,用常用的浮动IP连接,没响应,此时第一个反映就是是不是数据库主机挂了?难道要去机房?现在可是奥运前期,进出机房是件挺麻 […]
误将对象创建在system表空间中
昨天一位同事在执行创建数据库全量对象脚本时,在sys用户下执行了,那些本来应该在应用用户下创建的对象,不小心创建在了sys用户下。由于创建的对象是一个脚本执行的,里面有近1500个对象,要是一个一个删除,那是不可能了。 由于测试部的同事急着要用,先在应用用户下重新把创建数据库对象的全量脚本再次执行了 […]