ORA-00054: 자원이 사용중이고, NOWAIT가 지정되어 있습니다


=>

1. lock이 걸려 있는 테이블을 SELECT문으로 테이블에 lock을 걸고 있는 session을 찾는다. 


su - oracle

패스워드


SQL> sqlplus /nolog

SQL> conn /as sysdba

SQL>

select a.sid, a.serial# 

from v$session a, v$lock b, dba_objects c 

where a.sid=b.sid and 

b.id1=c.object_id and 

b.type=\'TM\' and 

c.object_name=\'테이블명\';


       SID    SERIAL#

---------- ----------

       139       1110


2. 다음 명령으로 SESSION들을 KILL한다. 


SQL> alter system kill session \'139, 1110\';

반응형
Posted by 질주하는구
,

SYS계정으로 데이터 파일 리스트를 조회

select * from dba_data_files;


테이블 스페이스 생성 

create tablespace DATASPACENAME

DATAFILE 'E:\oraclexe\oradata\XE\DATASPACENAME.dbf' SIZE  50M 

EXTENT MANAGEMENT LOCAL

SEGMENT SPACE MANAGEMENT AUTO;


임의의 계정 생성 임시 테이블을 temp로 정의


 CREATE USER USERID

 IDENTIFIED BY USERPWD

 DEFAULT TABLESPACE DATASPACENAME

 TEMPORARY TABLESPACE temp ;


접속 및 생성 권한 추가


grant connect,resource to USERID


자동 증가 옵션 지정

alter database datafile 'E:\oraclexe\oradata\XE\DATASPACENAME.dbf'

 autoextend on;



반응형
Posted by 질주하는구
,

시간 관련 함수

DB/ORACLE 2015. 3. 4. 16:16

SELECT TRUNC(TO_DATE('20010502223443','YYYYMMDDHH24MISS')-TO_DATE('20010501213344','YYYYMMDDHH24MISS')) || ' day ' ||

       TRUNC(MOD((TO_DATE('20010502223443','YYYYMMDDHH24MISS')-TO_DATE('20010501213344','YYYYMMDDHH24MISS')),1)*24) || ' hour ' ||

       TRUNC(MOD((TO_DATE('20010502223443','YYYYMMDDHH24MISS')-TO_DATE('20010501213344','YYYYMMDDHH24MISS'))*24,1)*60) || ' minute ' ||

       TRUNC(ROUND(MOD((TO_DATE('20010502223443','YYYYMMDDHH24MISS')-TO_DATE('20010501213344','YYYYMMDDHH24MISS'))*24*60,1)*60)) || ' sec '

       " Time Interval "

FROM DUAL ;

반응형
Posted by 질주하는구
,

오라클 CLOB를 사용하는 방법중 OraclePreparedStatement 사용해야 하는 경우


// 오라클 JDBC Driver에서 제공하는 OraclePreparedStatement를 import한다.

import oracle.jdbc.OraclePreparedStatement;


// CLOB 데이터 타입을 insert 또는 update할 경우 PreparedStatement 

// 선언 시 OraclePreparedStatement로 선언한다.

OraclePreparedStatement opstmt = null;


// Connection으로부터 prepardStatement를 가져올 때 형변환을 한다.

opstmt = (OraclePreparedStatement)con.preparedStatement(query);


// CLOB 형태의 데이터에 대한 opstmt세팅

opstmt.setStringForClob(n, string);

반응형
Posted by 질주하는구
,

오라클 사용중 특정 index를 쿼리문에서 지정 해야 하는 경우 사용하는 

쿼리문 작성 방식 입니다.


/*+ INDEX ( table [index [index]...] ) */

ex>

select /*+ INDEX(idx_emp_job) */ 

       ename, 

       job 

from emp 

where job= '프로그래머';


DELETE /*+ INDEX(idx_emp_status)*/ 

FROM emp_status

WHERE status = '휴직';


그외 INDEX 문구 부분에 INDEX_ASC , INDEX_DESC 등의 정렬을 지정하여 힌트를 사용 할 수도 있습니다.

역시 번외로 FULL , NO_INDEX 등을 사용해서 풀스캔(FULL) , 인덱스 비사용(NO_INDEX)등의 

정의를 할 수 있습니다.


ex>

select /*+ FULL(emp) */ ename, sal

from emp

where sex = 'M'


select /*+ NO_INDEX(emp) */ ename, sal

from emp where sex = 'M';

반응형
Posted by 질주하는구
,

=========================================


ctl문 내용


 


load DATA

INFILE 

 'result.csv'

 INTO Table apms_result

APPEND


FIELDS TERMINATED BY ','

trailing nullcols

(

ZONE_CODE

,PH_COURSE

,PH_NUM

,SCALE

,APH_NUM

,APH_NOW

,FILM_NUM

,FILM_NOW

,RPH_NUM

,RPH_NOW

,CD_NUM

,CD_POSIT

,DLT_NUM

,DLT_POSIT

,ECW_OX

,REMARK

,SCUR

,YEAR_GBN

)


=========================================

CMD 창에서 C:\ 경로에 파일들을 갖다 놓고 C:\에서 다음 명령문 실행


sqlldr userid=ID/PW@SID control=XXX.ctl

반응형
Posted by 질주하는구
,