简体   繁体   中英

ORA-00054 error in SQL

I am getting the above error :

ORA-00054 error in SQL "Resource busy and acquire with NOWAT specified or timeout expired"

When i try and run the following command:

CREATE TABLE CONFERENCESESSION (
SESSIONID CHAR(4) NOT NULL,
BUILDINGNO CHAR(2),
ROOMNO CHAR(2) NOT NULL,
SPEAKERID CHAR(2),
SESSIONDATE DATE,
SESSIONPRICE NUMBER(4,2),
CONSTRAINT SESSIONID_PK PRIMARY KEY(SESSIONID),
CONSTRAINT BUILDINGNO_FK1 FOREIGN KEY (BUILDINGNO) REFERENCES BUILDING(BUILDINGNO),
CONSTRAINT ROOMNO_FK2 FOREIGN KEY (ROOMNO,BUILDINGNO) REFERENCES ROOM(ROOMNO,BUILDINGNO),
CONSTRAINT SPEAKERID_FK3 FOREIGN KEY (SPEAKERID) REFERENCES SPEAKER(SPEAKERID)
);

I am unsure how to find what is using the object.

I am using Oracle SQL developer for a school assignment.

That error is normally caused by locking, try breaking up you create table query, like:

CREATE TABLE CONFERENCESESSION (
SESSIONID CHAR(4) NOT NULL,
BUILDINGNO CHAR(2),
ROOMNO CHAR(2) NOT NULL,
SPEAKERID CHAR(2),
SESSIONDATE DATE,
SESSIONPRICE NUMBER(4,2)
)
GO

ALTER TABLE CONFERENCESESSION ADD CONSTRAINT SESSIONID_PK PRIMARY KEY(SESSIONID)
GO
ALTER TABLE CONFERENCESESSION ADD CONSTRAINT BUILDINGNO_FK1 FOREIGN KEY (BUILDINGNO) REFERENCES BUILDING(BUILDINGNO)
GO
ALTER TABLE CONFERENCESESSION ADD CONSTRAINT ROOMNO_FK2 FOREIGN KEY (ROOMNO,BUILDINGNO) REFERENCES ROOM(ROOMNO,BUILDINGNO)
GO
ALTER TABLE CONFERENCESESSION ADD CONSTRAINT SPEAKERID_FK3 FOREIGN KEY (SPEAKERID) REFERENCES SPEAKER(SPEAKERID)
GO

Run each batch individually and you'll be able to isolate the part that is causing the error

you may use this query to detect who's locking your table:

select distinct s.inst_id, s.sid, s.serial#, s.module, s.client_info, s.username, s.status, s.osuser, o.object_name
from gv$session s, gv$locked_object l, dba_objects o 
where l.object_id = o.object_id 
  and l.session_id = s.sid 
  and l.inst_id = s.inst_id
  and lower(o.object_name) like lower('%'||'&i_table_name'||'%') 
--and lower(s.module) like lower('%'||'&i_modul_name'||'%')  
--and s.username = upper('&i_schema_name')
order by o.object_name

if you have db privileges.

已修正,我可以通过我的uni网站删除当前会话。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM