DFS lock handle
DFS lock handle is a kind of wait event for dynamic lock manager(DLM) syncronzication wait A DFS lock handle wait in RAC is generally associated with a Cross Instance (CI) call, requesting some other instance to perform some work on behalf of this process.To Understand what is going wrong with this, we need understand what is the kind of calls made and how the call is propagated to other and where it is stuck these information can be found only from systemstate dump[@more@]
细节决定一切-多工控制文件有感
1.首先查看控制文件情况SQL> show parameter controlNAME TYPE VALUE ------------------------------------ ----------- ------------------------------ control_file_record_keep_time integer 7 control_files string E:ORACLEPRODUCT10.2.0ORADATAORCLCONTRO L03.CTL 2.shutdown immediate关闭数据库,并且在相同目录下增加控制文件2, CONTROL02.CTL,同时修改pfile内容如下:*.control_files='E:oracleproduct10.2.0oradataorclCONTROL01.CTL,E:oracleproduct10.2.0oradataorclCONTROL02.CTL,E:oracleproduct10.2.0oradataorclCONTR
gc cr request 'gcs log flush sync'
This is how it happens -1)You fired an update statement on Instance-2. 2)However, the request for desired blocks was gone to Instance-1. So Instance-2 was waiting on ''gc cr request'. 3)Instance-1 had the requested blocks but before it ships the blocks to Instance-2, it need to flush the changes from current block to redo logs on disks. Until this is done Instance-2 waits on event - 'gcs log flush sync'.The cause of this wait event 'gcs log flush sync' is mainly - Redo log IO performance.To avoi
EXP-00091
exp scott/tiger file=test.dmp tables=emp query="where empno <7499"一般情况下,是由于字符集设置问题,这个case下不存在字符集的问题,去掉query后,exp成功。metalink上的解释 The precalculated optimizer statistics are flagged as questionable at export time if:1. There are row errors while exporting2. The client character set or NCHAR character set does not match the server character set orNCHAR character set3. A QUERY clause is specified4. Only certain partitions or subpartitions are expo
10g OCR工具ocrcheck ocrconfig ocrdump
在Oracle10g 的RAC环境中,有几个工具可以用于进行OCR管理,这其中主要的几个是:ocrcheck ,ocrdump, ocrconfigocrcheck可以用于减产OCR存储的使用情况:[oracle@smsdbrac1 oracle]$ ocrcheck -helpName:ocrcheck - Displays health of Oracle Cluster Registry. Synopsis:ocrcheck Description:prompt> ocrcheckDisplays current usage, location and health of the cluster registryNotes:A log file will be created in$ORACLE_HOME/log//client/ocrcheck_.log. Please ensureyou have file creation privileges in the above direc
收集统计信息的简单操作
创建保存统计信息的表dbms_stats.create_stat_table(ownname => 'SYS',stattab => 'STAT_TABLE'); 收集统计信息exec dbms_stats.gather_table_stats(ownname => 'SYS',tabname =>'TEST');将统计信息保存到STAT_TABLE表中exec dbms_stats.export_table_stats(ownname => 'SYS',tabname => 'TEST',stattab => 'STAT_TABLE'); 删除统计信息exec dbms_stats.delete_table_stats(ownname => 'SYS',tabname => 'TEST');导入统计信息exec dbms_stats.import_table_stats(ownname =>'SYS',tabname =>'TEST',stat
where 1=1 和 count(1) 与 count(*)
我转~~~[@more@]where 1=1有什么用?在SQL语言中,写这么一句话就跟没写一样。 select * from table1 where 1=1与select * from table1完全没有区别,甚至还有其他许多写法,1<>2,'a'='a','a'<>'b',其目的就只有一个,where的条件为永真,得到的结果就是未加约束条件的。在SQL注入时会用到这个,例如select * from table1 where name='lala'给强行加上select * from table1 where name='lala' or 1=1这就又变成了无约束的查询了。最近发现的妙用在于,在不定数量查询条件情况下,1=1可以很方便的规范语句。例如一个查询可
他奶奶个腿的数据库升级
他奶奶个腿不会让数据库升级,但是我会,今天就捣鼓了一天。以前在9i上的升级很简单,解压缩补丁包后运行runinstaller就OK了,毕竟我有在linux上从9204升到9206和在solaris上从9201升到9208的经验,今天在10.1.0.2往10.2.0.4升时却发现没有那么简单。当时我直接运行了10.2.0.4的补丁包,虽然运行成功了,但库没有升上去,后来觉得应该是我装了10.2.0.1的客户端,所以没报错。同时如果坚持readme中的观点,我早就顿悟了。如果8,9,10算是大版本,1,2那就算是中版本了。大版本和中版本的升级是需要装新版本的软件的,奶奶个腿,在这个问题
ORA-12012: error on auto execute of job 8913
这个问题我以前遇见过,不过没有仔细研究,今天多亏棉花帮助,要不然我还是无处下手。[@more@]alert:Mon Aug 11 22:00:37 2008Errors in file /oracle/app/oracle/admin/1/bdump/1_j000_3285088.trc:ORA-12012: error on auto execute of job 8913ORA-03211: The segment does not exist or is not in a valid statetrace:Dump file /oracle/app/oracle/admin/1/bdump/1_j000_3285088.trcOracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit ProductionWith the Partitioning, Real Application Clusters and Data Mini
消除 enq: DX - contention 等待事件
很遗憾操作过程没有抓下来,语言描述一下吧。DXDistributed transaction entry是一个分布式事务锁,根据v$lock查询得到一个会话sid:806,type:DX,block:1并且有type和id1相等且request>0的会话,说明806堵塞了其他会话,因为它长期持有一个DX锁,导致其他会话无法获得,所以导致了等待事件 enq: DX - contention。将806会话杀掉后,等待事件消除。[@more@]
cbo心得(选择率,基数,直方图)(五)
cbo心得(选择率,基数,直方图)(五) [@more@]延伸1, 直方图的分类直方图可以分为两类:FREQUENCY(频率)和HEIGHT BALANCED(高度平衡)在弄明白这两类直方图,首先得知道什么直方图。用上面的例子来说明下:SQL> select ENDPOINT_NUMBER,2 ENDPOINT_VALUE3 from user_tab_histograms4 where table_name ='SUNWG'5 and column_name = 'ID'6 order by ENDPOINT_NUMBER;ENDPOINT_NUMBER ENDPOINT_VALUE--------------- --------------6 17 2018 8019 140110 2001上面就是列ID上的直方图信息,左边一列是截止点的编号,右边一列是截止点值。
cbo心得(选择率,基数,直方图)(四)
cbo心得(选择率,基数,直方图)(四)[@more@]存在表和索引上的统计信息,存在直方图为了更明显的说明直方图的作用,我修改一下上面的创建的表,进一步的增加列ID的倾斜性。SQL> drop table sunwg purge;表已删除。SQL> create table sunwg (id number);表已创建。SQL> create index ind_sunwg on sunwg(id);索引已创建。SQL> insert into sunwg select 1 from dba_objects where rownum < 4000;已创建3999行。SQL> insert into sunwg select rownum from dba_objects where rownum < 2002;已创建4001行。SQL> commit
cbo心得(选择率,基数,直方图)(二)
cbo心得(选择率,基数,直方图)(二)[@more@]三,正文1, 没有任何统计信息(包括表,索引,直方图等)在ORACLE 10g中,RBO已经彻底的被抛弃了,取而代之的是CBO。我们知道CBO的基础就是统计信息,那么在10g中如果没有收集统计信息,CBO是怎么工作的呢?我们看下面的这个例子。Create table sunwg (Id number);Create index ind_sunwg on sunwg(id);BeginFor I in 1..100 loopFor j in 1..i loopInsert into sunwg values (i);End loop;End loop;Commit;End;这样我们就创建了一张有5050条记录的测试表。例1, 不存在统计信息SQL> select *
cbo心得(选择率,基数,直方图)(三)
cbo心得(选择率,基数,直方图)(三)[@more@]存在表和索引上的统计信息,没有直方图这是最一般的情况,定期对表和索引进行分析,但是并不分析直方图信息。大部分时候,这种统计信息收集策略都会很好的工作。我们这的大部分指得是,列上数据分布很平均的情况下。为了更好的演示,我需要创建一个存在倾斜列的表SQL> drop table sunwg purge;表已删除。SQL> create table sunwg (id number);表已创建。SQL> create index ind_sunwg on sunwg(id);索引已创建。SQL> insert into sunwg select 1 from dba_objects where rownum<200
cbo心得(选择率,基数,直方图)(一)
转冰冻奶茶的文章http://sunwgneuqsoft.itpub.net/post/34741/456500[@more@]一,概述关于CBO优化器你上网可以搜到一大堆的介绍。用一句话来解释CBO:CBO是一种根据执行代价来选择执行计划的机制。对于CBO来说,最重要的就是各种不同的执行计划的代价的计算。和RBO比较起来,CBO确实要聪明很多。CBO会根据对象上的统计信息来进行执行计划的代价评估,选择出较为高效的。而不是象RBO那样根据一些既有的规则来选择执行计划,愣头青一样的。既然是根据对象上的统计信息来计算代价,那么统计信息对于CBO的重要性就不用多说了。所以在CBO的数据
LOCK的整理资料
LOCK的整理资料[@more@]--------------------------------------------------------------------------查看谁锁住的select t2.username,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v$session t2 where t1.session_id=t2.sidorder by t2.logon_time; 解锁 alter system kill session 'sid,serial#'; =======================================================================================================v$lock视图的各个列及其说明ADDR RAW(4) 在内存中锁定的对象的地址 KADDR RAW(4) 在内存中
使用flashback实验1
简单使用基于SCN的flashback,10.2.0.1 for windows实验如下:SQL> select * from tt;NAME STATUS-------------------------------------------------- -------E:ORACLEPRODUCT10.2.0ORADATATESTSYSTEM01.DBF SYSTEME:ORACLEPRODUCT10.2.0ORADATATESTUNDOTBS01.DB ONLINEE:ORACLEPRODUCT10.2.0ORADATATESTSYSAUX01.DBF ONLINEE:ORACLEPRODUCT10.2.0ORADATATESTUSERS01.DBF ONLINESQL> select dbms_flashback.get_system_change_number from dual;GET_SYSTEM_CHANGE_NUMBER------------------------1168329SQL> delete from tt whe
回忆
关键词:音乐,大学,第一份工作梁静茹的《可惜不是你》,让我回忆起我居然丢掉了音乐。母校论坛的毕业相片,让我的眼睛湿润了。原公司论坛上火炬接力的照片,让我看到了曾经熟悉的身影,想起了那段激情燃烧的岁月。世界是在变化,我也在变化,但存在我心底的那段记忆永远不会变。[@more@]
只有冷备和归档,能否恢复?
看到pub上的一个帖子http://www.itpub.net/viewthread.php?tid=1027951&extra=&page=1我认为只有冷备份和全部归档,就是说当前的数据文件,控制文件,重做日志文件都丢失了,由于丢失了当前重做日志文件,所以不能做完全恢复,只能做不完全恢复了。restore databaserecover database using backup controlfile until cancel;1.using backup controlfile使用在丢失当前controlfile,用冷备份中的controlife恢复的时候。用来告诉oracle,不要以controlfile中的scn作为恢复的终点~2.until cancel使用在丢失current/active redo的时候
ORACLE执行计划的一些基本概念
一.相关的概念Rowid的概念:rowid是一个伪列,既然是伪列,那么这个列就不是用户定义,而是系统自己给加上的。对每个表都有一个rowid的伪列,但是表中并不物理存储ROWID列的值。不过你可以像使用其它列那样使用它,但是不能删除改列,也不能对该列的值进行修改、插入。一旦一行数据插入数据库,则rowid在该行的生命周期内是唯一的,即即使该行产生行迁移,行的rowid也不会改变。Recursive SQL概念:有时为了执行用户发出的一个sql语句,Oracle必须执行一些额外的语句,我们将这些额外的语句称之为'recursive calls'或'recursive SQL stat