db file scattered read,direct path read 等待事件的原因以及解决方法
db file sequential read (single block read into one SGA buffer)db file scattered read (multiblock read into many discontinuous SGA buffers)direct read (single or multiblock read into the PGA, bypassing the SGA)direct path read and direct path read tempdirect path write and direct path write temp[@more@]10G 通过 v$session 查询 SELECT a.owner, a.object_name, a.subobject_name, a.object_type,b.sid,b.program FROM DBA_OBJECTS a, V$SESSION b WHERE data_object_id = b.row_wait_obj and b.EVENT = 'db
buffer busy waits
buffer busy waits -----解决思路 : 查找等待的对象类型: 查找等待事件对应的SQL ,优化[@more@]Check the following V$SESSION_WAIT parameter columns:P1 - File IDP2 - Block IDP3 - Class ID10.3.2.1 CausesTo determine the possible causes, first query V$SESSION to identify the value of ROW_WAIT_OBJ# when the session waits for buffer busy waits. For example:SELECT row_wait_obj# FROM V$SESSION WHERE EVENT = 'buffer busy waits'; To identify the object and object type contended for, query DBA_OBJECT
linux oracle 10客户端连接oracle 9 数据库 慢
1. 检查网络是否正常 (网络正常)2.设置 sqlnet.ora 但是还是不能解决问题 : 最后查明是linux 下的设置了dns去掉 /etc/resolv.conf 下的内容 连接正常 [@more@]sqlplus mpaper/mpaper@mpaperSQL*Plus: Release 10.2.0.1.0 - Production on Thu Jun 4 11:14:42 2009Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to:Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit ProductionWith the Partitioning, OLAP and Oracle Data Mining optionsJServer Release 9.2.0.8.0 - Production没有去掉 /etc/res
临时表空间消除的方法
以下摘自 XZH2000 消除temp ts暴涨的方法[@more@]消除temp ts暴涨的方法关于消除temp ts暴涨的方法经常有人问temp表空间暴涨的问题,以及如何回收临时表空间,由于版本的不同,方法显然也多种多样,但这些方法显示是治标不治本的办法,只有深刻理解temp表空间快速增加的原因,才能从根本上解决temp ts的问题。是什么操作在使用temp ts?- 索引创建或重创建. - ORDER BY or GROUP BY - DISTINCT 操作. - UNION & INTERSECT & MINUS - Sort-Merge joins. - Analyze 操作- 有些异常将会引起temp暴涨所以,在处理以上操作时,dba需要加倍关注te
top sql 产生的原因
top sql 产生的原因[@more@]以下摘自 XZH2000 博客问到top sql一般是什么情况下产生的,不同的公司,dba参与项目的阶段不同,所以答案也就有所区别,一般来讲,top sql产生的阶段有:系统设计阶段(表结构设计),编码实现阶段(SQL编写),SQL审核优化阶段等,这样涉及到的人的因素就有:系统设计人员+开发人员+DBA,任何一个环节出了问题,就有可能出现top sql,所以一个项目,出了性能问题,并不一定是DBA的责任,但优秀的DBA,可以消除潜在的风险。产生top sql的原因,细化起来有以下原因:1 表结构设计的不合理2 索引创建不合理3 不必要
处理数据库慢的一般方法
以下在XZH2000 博客摘取如果不用分析工具如statspack等,如何快速找出原因?lcm_0090828给出自己常用的checklist:1. 检查表空间资源2. 归档是否正常(归档空间满时,会等待归档,之后用户进程就死掉了)3. 检查alert 信息4. 用vmstat, top命令看看系统i/o, cpu的繁忙程度,以及哪个进程在消耗资源,结合v$process, v$session, v$sqlarea 等视图查找出终端机器,以及其使用的sql 语句等。5. 有没有死锁6. 有时用户进程运行的程序会报错,就根据错误提示寻找根源及解决办法,可能是初始化参数设置不合理。[@more@]
sql 中单引号的表示
select 'execute DBMS_APPLY_ADM.DELETE_ERROR('||'local_transaction_id => ' || chr(39)||local_transaction_id ||chr(39) ||')'||';' from dba_apply_errorchr(39) -----'[@more@]
一个耐人深思的典型故事
第一,永远不要走捷径。便捷而陌生的道路可能要了你的命。 第二,永远不要对可能是坏事的事情好奇,否则也会要了你的命。 第三,永远不要在仇恨和痛苦的时候作决定,否则你以后一生会后悔的。[@more@]本文链接:http://user.qzone.qq.com/14818923/blog/1205919423 一个发人深省的经典故事一对新婚夫妇生活贫困,要靠亲友的接济才能活下去。一天,丈夫对妻子说:“亲爱的,我要离开家了。我要去很远的地方找一份工作,直到我有条件给你一种舒适体面的生活才会回来。我不知到会去多久,我只求你一件事,等着我,我不在的时候要对我忠诚
让孩子聪明的8个秘诀
http://tolywang.itpub.net/post/48/465630[@more@]为了孩子将来能聪明过人,一些父母从孕期开始就做好了充分准备,比如多吃富含高蛋白的食品,进行胎教等;孩子出生后,营养补充更为丰富。可是,就算孩子把这些东西全吃下去,能保证孩子一定聪明吗?答案是未知的。爱子之心虽无可厚非,但有些做法不仅不科学,而且也不够全面。 养育一个聪明孩子是项“综合工程”,父母们该注意哪些问题呢?1.准妈妈应多吃新鲜疏菜和水果 不要以为准妈妈在孕期多吃肉食就一定对胎儿有好处。研究证明,多吃肉食的孕妇所生的新生儿,大脑皮层的沟回较少,这
bulk collect 的使用
通常在SQL语句中给PL/SQL变量赋值叫做绑定(Binding),一次绑定一个完整的集合称为批量绑定(Bulk Binding)。批量绑定(Bulk binds)可以通过减少在PL/SQL和SQL引擎之间的上下文切换(context switches )提高了性能.批量绑定(Bulk binds)包括:(i) Input collections, use the FORALL statement,一般用来改善DML(INSERT、UPDATE和DELETE) 操作的性能(ii) Output collections, use BULK COLLECT clause,一般用来提高查询(SELECT)的性能FORALL的语法如下:FORALL index IN lower_bound..upper_bound sql_statement;具体的例子 [@more
ddl 数据库trigger 监控
1. 创建表 2. 创建trigger [@more@]-- Create tablecreate table DDL_LOG( USER_NAME VARCHAR2(30), DDL_DATE DATE, DDL_TYPE VARCHAR2(30), OBJECT_TYPE VARCHAR2(18), OWNER VARCHAR2(30), OBJECT_NAME VARCHAR2(128), IP_ADDRESS VARCHAR2(40), OSUSER VARCHAR2(30), TERMINAL VARCHAR2(30));CREATE OR REPLACE TRIGGER ddl_triggerAFTER DDLON DATABASEBEGIN INSERT INTO ddl_log (user_name, ddl_date, ddl_type, object_type, owner, object_name, ip_address,
跨平台 跨版本 大规模数据迁移
昨天在 pub 上看到一个问题,oracle 9i 如果600G 的资料库需要进行最短时间的跨平台(windows 到unix) 停机(12 小时)迁移,该如何进行数据迁移 ?请教了 biti 作了一下测试[@more@] prebuilt mv 做大表,小表直接 dblink insert ,数据库30分钟足够了利用prebuilt mv实现跨平台,跨版本数据迁移 该方法的实现原理是对于要迁移的表对象,需要有一个主键,用于mv的刷新,对于符合该要求的表,在源表上创建mv日志,再在目标数据库上创建结构一样的表,然后在目标表上采用prebuilt方式创建mv,第一次采用完全刷新,之后采用增量刷新,
imp导入数据,能不能让导进来的表名跟原来导出的表名不同,也就是换个新的表名呢
今天从网上看了一个问题 imp导入数据,能不能让导进来的表名跟原来导出的表名不同,也就是换个新的表名呢?imp system/system file=mydmp.dmp fromuser=myuser1 touser=myuser2 tables=(mytable1)这样能把dmp导出文件里面myuser1.mytable1导入到myuser2,但表名还是mytable1,能不能让导进来之后变为其他表名,比如mytable2?请各位高手指点,谢谢![@more@]借助synonym可以实现这个需求!比如原来有个schema: user_a,在user_a下有个表test先exp user_a的test表到dmp然后在user_a下建个表test_new,create table test_new as select * fr
oracle权限问题
oracle权限问题 [@more@]Warning: ocilogon() [function.ocilogon]: OCIEnvNlsCreate() failed. There is something wrong with your system - please check that ORACLE_HOME is set and points to the right directory in /u1/userweb/htdocs/index.shtml on line 2修改办法 : chmod -R +r product chmod -R +x product
oracle 在线日志文件都是 active或者current 的解决办法
oracle 在线日志文件都是 active或者current 的解决办法[@more@] oracle 在线日志文件都是 active或者current 的解决办法1. 在现有的硬件不能更换的情况下,减少commit 次数2. 增大log_buffer,redo 的大小,最大的一次,是有300m 增大到1g 3. 增加SQL> show parameter fastNAME TYPE VALUE------------------------------------ ----------- ------------------------------fast_start_io_target integer 0fast_start_mttr_target integer 900fast_st
大的数据统计,可以跑统计
大的数据统计,可以跑统计[@more@]大的数据统计,可以跑统计
物化视图
物化视图得概念物化视图得创建物化视图得执行物化视图得删除[@more@]物化视图得基本概念: oracle的物化视图提供了强大的功能,可以用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果。物化视图有很多方面和索引很相似:使用物化视图的目的是为了提高查询性能;物化视图对应用透明,增加和删除物化视图不会影响应用程序中SQL语句的正确性和有效性;物化视图需要占用存储空间;当基表发生变化时,物化视图也应当刷新。物化视图可以分为以下三种类型:包含聚集
rebuild online 索引,中途失败:
1. rebuild 索引在业务不忙的时候做 2. 中途是不能主断的 3. oracle 会自动清除(时间不同)4. 通过重新启动数据库 oracle 自动清除5. 通过修改系统表(oracle 9i)[@more@] update ind$ set flags=flags-512 where obj#=(select obj# from obj$ where owner#=(select user# from user$ where name='WRJ' ) and name='IDX_TEST1' ); select flags from ind$ where obj#=(select
oracle 9 aq
drop queue create queue [@more@]sqlplus wrj/wrjdrop queue_table 的名称begin sys.dbms_aqadm.stop_queue(queue_name => 'SGIP_SEND_QUEUE');end;/begin sys.dbms_aqadm.drop_queue (queue_name => 'SGIP_SEND_QUEUE'); end;/begin sys.dbms_aqadm.drop_queue_table (queue_table => 'SGIP_SEND_TABLE'); end;/create queue_table 名称: begin sys.dbms_aqadm.create_queue_table( queue_table => 'SGIP_SEND_TABLE', queue_payload_type => 'SGIP_SEND_TYPE', sort_list => 'ENQ_TIME' );end
用 rman rename oracle 数据文件
用 rman rename oracle 数据文件 [@more@]$ more rmanhf_rename.sh #!/bin/sh. /export/home/oracle/.profilerq=`date +%Y%m%d`date$ORACLE_HOME/bin/rman target / log=/export/home/oracle/rman/hf$rq.log<<!run{set newname for datafile '/trunkbow/oracle/oradata/mpaper/system01.dbf' to '/u01/oracle/oradata/mpaper/system01.dbf' ; set newname for datafile '/trunkbow/oracle/oradata/mpaper/undotbs01.dbf' to '/u01/oracle/oradata/mpaper/undotbs01.dbf';set newname for datafile '/trunkbow/oracle/oradata