Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

158

积分

1

好友

8

主题
1#
发表于 2012-5-8 16:07:29 | 查看: 4122| 回复: 1
环境:RAC
node 1  
ORACLE_HOME = /oracle/product/oracle10g/10.2.0/db
System name:   HP-UX
Node name:     ynods1
Release:       B.11.31
Version:        U
Machine:       ia64
Instance name: odsdb1
Redo thread mounted by this instance: 1

node2
ORACLE_HOME = /oracle/product/oracle10g/10.2.0/db
System name:   HP-UX
Node name:     ynods2
Release:       B.11.31
Version:        U
Machine:       ia64
Instance name: odsdb2
Redo thread mounted by this instance: 2

数据库版本 :
数据仓库OLAP
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0- 64bit Production
With the Partitioning, Real Application Clusters, OLAP,Data Mining


问题描述:今早ods系统维护人员跑来说建立不了表了。
create table test as select * from dual;
hang住了。半天不成功。
create table test1(a int);成功
检查表空间,排除表空间满了建不了表。
问题重现:
建不了表,hang住,怀疑是锁住了;
查看锁对象:select * from v$locked_object;
    XIDUSN    XIDSLOT    XIDSQN  OBJECT_ID SESSION_IDORACLE_USERNAME               OS_USER_NAME                  PROCESS      LOCKED_MODE
---------- ---------- ---------- ---------- ---------- ------------------------------------------------------------ ------------ -----------
        28         30    519197       9168        151                                oracle                         21859                  6
        28         30    519197       9239        151                                oracle                         21859                  3
        46          5    191234         18        190 SYS                            oracle                         25058                  3
        26         49    616912         18        460 SYS                            oracle                         18047                  3
发现18号对象被锁了;注:一般object_id序号小的对象都是oracle自己的内部对象。
查看18号对象:select * from dba_objectswhere object_id =18;
    OWNER  OBJECT_NAME   SUBOBJECT_NAME    OBJECT_ID  DATA_OBJECT_ID    OBJECT_TYPE   CREATED    LAST_DDL_TIME TIMESTAMP  STATUS TEMPORARY  GENERATED  SECONDARY
    SYS OBJ$       18  18  TABLE  17-四月-07 3:34:45   17-四月-07 4:34:55   2007-04-17:03:34:45    VALID  N   N   N
这是一个系统对象。
~~~查看等待事件~~~
select event from v$session_wait where sid=746;---这个是我测试用的session的sid;
gc current request   --创建表的session产生了这个等待:


select * from v$event_name where name='gc currentrequest';
创建表一直hang住,发现的等待事件是:gc curren request
球球.jpg
这个就是通信或者竞争严重引起的
我试图找出竞争,但是毫无眉目


做下10046事件追踪~~追踪文件查看:06odsdb1_ora_21756--10046.trc


查看2号节点122的锁对象。

select event,sid,p1,p2,p3 from v$session_wait where event not like 'SQL*%' and event not like 'rdbms%';
select * from v$session a where a.SID in ('165','460','454','151','516','216');
select * from v$sql a where a.SQL_ID in ('gqwsgfwhnhnh7','brg6f6rqm5p42','4n7rfjgcsx7p9');
select * FROM DBA_EXTENTS a where a.segment_name='I_FILE#_BLOCK#';
select * from dba_segments a where a.segment_name='I_FILE#_BLOCK#';
select * from dba_objects a where a.object_name='I_FILE#_BLOCK#';
select * from dba_objects a where a.object_id = '9';
select * from v$locked_object a where a.OBJECT_ID='9';
select * from dba_objects a where a.object_id in ('9168','9239');

select a.STATUS from v$session a where a.STATUS='KILLED';
select * from v$session a where a.WAIT_CLASS<>'Idle';
create table
obj#----516
     查到session的sid为516的用户一直存在:"cms 新增用户的几个脚本" 这个session;在122节点里面。直到重新启动121节点,这个才session才消失。这个session把9号对象锁住了。


对节点121的操作:
  今早只是看到obj$被锁了。之后做的create的测试操作,都是锁住18号对象,也就是obj$.后来我们把锁进程全部杀死了,还是在锁,还在hang住。

  我们查了查segment级别的,2号节点发现这个9号被锁,发现:select* from v$locked_object a where a.OBJECT_ID='9';9号对象被锁了。

这个由于是之前的问题了,问题不能重现,你现在帮忙看看,需要什么再说。
我想知道为什么hang住?之前我问过你我的V$OBJ被锁了。但是那个后来锁的时候没有hang住我create table啊。
为什么产生gc current request等待,我们杀了锁住v$obj的session怎么还hang啊?


12-02-06odsdb1_ora_21756--10046.txt

960.79 KB, 下载次数: 588

2#
发表于 2012-5-8 22:47:08
PARSING IN CURSOR #9 len=50 dep=0 uid=0 oct=1 lid=0 tim=1440078346205 hv=3918822828 ad='6c6ecc40'
create table mrq_test as select * from dba_objects
END OF STMT
PARSE #9:c=30000,e=32325,p=0,cr=107,cu=0,mis=1,r=0,dep=0,og=1,tim=1440078346201
BINDS #9:
WAIT #9: nam='row cache lock' ela= 223 cache id=8 mode=0 request=3 obj#=0 tim=1440078346794

就  你的TRACE文件号  ='row cache lock'   id=8  是 dc_objects

我的理解 :这和obj$ 表的锁关系不大 , LOCKED_MODE始终是3

action plan:

尝试重现问题 , 并在问题发生期间做systemstate dump 并 上传压缩后的 TRACE:

oradebug setmypid;
oradebug unlimit;
oradebug dump systemstate 267
oradebug tracefile_name;


上传最后显示的TRACE文件。

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-25 13:12 , Processed in 0.056374 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569