게시판 같은 프로그램을 작성하다 보면...

게시글 각각의 고유번호를 생성하기 위해 몇가지 방법이 있다.

그중 많이 쓰이는몇가지 방법의 사용법과 특징을 살펴보자

게시판 테이블은 대략 이렇게 생겼다.

CREATE TABLE BOARD

(

BOARD_COND VARCHAR2(5) NOT NULL /*게시판 종류 */

BOARD_NO NUMBER NOT NULL, /* 게시판 번호 */

....

CONSTRAINT BOARD_PK PRIMARY KEY(BOARD_COND,BOARD_NO)

)

BOARD_COND 는 게시판의 종류로 자유게시판, 자료실, 질문 답변 같은 구분을 한다.

BOARD_NO는 각 게시판의 글번호로 각 게시판내에서만 유니크하면 된다.

즉 자유게시판에서는 1번글이 하나만 존재해야 하지만

자유게시판에 1번글이 있다고 자료실에 쓰는 글이 2번이 되면 안된다.

뭔말인지 이해했으리라 믿고...

위와 같은 구조에서

우선 가장 쉽게 접근 할 수 있는 방법으로

해당 게시판의 글번호중 가장 큰 글번호를 가져와서 +1을 하는 방법이 있다.

자유게시판의 BOARD_COND가 'FREE' 라고 가정하고 이것을 쿼리로 표현해 보면...

INSERT BOARD

(

BOARD_COND,

BOARD_NO,

...

)

VALUES

(

'FREE',

NVL(SELECT MAX(BOARD_NO) FROM BOARD WHERE BOARD_COND = 'FREE',0)+1,

)

이렇게 하면 될것 같다... 글이 저장되는 순간 가장 큰 글번호를 가져와서 1을 더해서 인서트 하면 된다.

(NVL을쓰는 이유는... 해당 글의 게시판에 글이 한개도 존재하지 않을 경우를 위해 사용한 것임)

특징은 다음에 이야기 하기로 하고

두번 째로 할 수 있는 방법은

오라클 SEQUENCE를 사용하는 방법이 있다.

게시판용 자동증가 SEQUENCE를 생성하고 그것을 사용하는 것이다.

만약 생성한 시퀀스가 BOARD_SEQ 라고 한다면...

아래와 같은 쿼리를 만들 수 있다.

INSERT BOARD

(

BOARD_COND,

BOARD_NO,

...

)

VALUES

(

'FREE',

BOARD_SEQ.NEXT_VAL,

...

)

간단해 보이지만간단한 만큼 귀찮은 작업이 필요하다.

우선 글번호를 게시판 종류별로 사용하고 싶다면...

시퀀스를 게시판 종류만큼 생성해야 한다.

또하나시퀀스의 특성상 어떤 조건을 만족하지 못해서 입력이 되지 않고롤백이 된경우에도

시퀀스는 증가한다는 것이다.

고로 게시물 번호에 이가빠질 가능성이 있다(게시물을 삭제해서 생기는 결번과는 다른...)

세번째 방법으로 힌트를 사용하는 방법이 있다.

1번에MAX(BOARD_NO)+1을 사용하는방법과 비슷하지만

그거 보다 좀더 효휼적인 방법으로 게시물이 늘어나도 속도에 대한 부담이적을 것이다.

INSERT BOARD

(

BOARD_COND,

BOARD_NO,

...

)

VALUES

(

'FREE',

NVL((SELECT /*+ INDEX_DESC(BOARD BOARD_PK) */

BOARD_NO

FROM BOARD

WHEREBOARD_COND = 'FREE'

AND ROWNUM = 1) ,0)+1)

...

)

간단하게 설명한다면

BOARD_COND,BOARD_NO로 구성된 PK 인덱스를 역으로 스켄하면서

BOARD_COND = 'FREE'인 데이터중 첫 ROW(ROWNUM = 1)을 선택한다.

이경우 데이터가 늘어날 경우 BOARD_COND에 인덱스가 걸려 있어야 좀더 빠른 검색이 될것이다.

'DataBase' 카테고리의 다른 글

[Oracle] ''&'' 입력하기  (0) 2008.02.19
[Toad] 에디팅시 () 부분이 반전 제거  (0) 2008.02.19
[Oracle] 자동증가 SEQUENCE 생성  (0) 2007.10.09
[Oracle] 테이블 생성 (다중 컬럼 PK)  (0) 2007.10.09
오라클 START/STOP  (0) 2007.08.11

CREATE SEQUENCE NAME
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}]

예제

CREATE SEQUENCE TEST_TABLE_SEQ
INCREMENT BY 1 -- 증가 단위는 1
START WITH 1 -- 1부터 시작
NOMAXVALUE -- 최대값 제한 없음
NOCYCLE
NOCACHE

사용

--값 가져오기

--무조건 다음 증가한 값을 가져온다

INSERT INTO TEST_TABLE

(TESTID1,TESTID2, ...생략... CREDATE,CREUSER)

VALUES

(TEST_TABLE_SEQ.NEXTVAL, ...생략... SYSDATE,'TESTUSER');

--값을 증가시키지 않고 조회만 하기

SELECT TEST_TABLE_SEQ.CURRVAL FROM DUAL;

※ 시퀀스 생성후 .NEXTVAL을 한번도 실행하지 않은 상태로 .CURRVAL로 현재 값을 조회하면

'ORA-08002: 시퀀스 KR_VENDOR_STAMP_SEQ.CURRVAL은 이 세션에서는 정의 되어 있지 않습니다.'

에러 발생함.

CREATE TABLE TEST_TABLE

(

     TABLE_ID1 NUMBER NOT NULL
    ,TABLE_ID2 NUMBER NOT NULL

    ,FIELD1VARCHAR2(10)

    ,FIELD2 VARCHAR2(10)
    ,CREDATE DATE
    ,CREUSER VARCHAR2(30)
    ,CONSTRAINT TEST_TABLE_PK PRIMARY KEY(TABLE_ID1,TABLE_ID2)
)

위과 같이 생성하면 여러개를 필드를 묶어서 프라이머리 키를 생성한다.

[ 오라클 기동(시작) ]

1. SqlPlus를 실행시킨다.

-> sqlplus '/as sysdba' [엔터]

2. SqlPlus가 실행되고 나면

-> startup [엔터]

3. SqlPlus를 빠져 나온다.

-> exit [엔터]

4. Unix Shell로 되돌아 오면

-> lsnrctl start [엔터]

'DataBase' 카테고리의 다른 글

[Oracle] 자동증가 SEQUENCE 생성  (0) 2007.10.09
[Oracle] 테이블 생성 (다중 컬럼 PK)  (0) 2007.10.09
[Oracle] ORA-01691 에러  (1) 2007.04.26
[Oracle] 유저생성  (0) 2007.04.13
[ORACLE 9i] 기동과 종료  (0) 2007.04.13

배치 프로그램으로 데이터를 일괄 등록 하던중 아래와 같은 에러가 발생

 

java.io.IOException: ORA-01691: OUTLET.SYS_LOB0000006371C00056$$ LOB 세그먼트를 128(OUTLETTABLESPACE 테이블스페이스에 있음)에 의해 확장할 수 없음
ORA-06512: "SYS.DBMS_LOB", 줄 775에서
ORA-06512: 줄 1에서

at oracle.jdbc.dbaccess.DBError.SQLToIOException(DBError.java:618)
at oracle.jdbc.driver.OracleClobWriter.flushBuffer(OracleClobWriter.java:201)
at oracle.jdbc.driver.OracleClobWriter.close(OracleClobWriter.java:177)
at java.io.BufferedWriter.close(BufferedWriter.java:247)
at productBatch.main(productBatch.java:170)

데이터가 rollback 되었습니다.

 

 

ORA-01691 이게 데이타 파일이 지정된 용량을 다 사용해서 그런거다...

 

ㅎㅎ 개발서버라구 데이터파일 생성할때 10M 만 줬더니 그런가부다.

 

부족하면 자동으로 늘어나는줄 알았더니 아니더라는...

 

 

해결 방법은 두가지

추가로 데이타파일을 해당 테이블 스페이스에 추가해 주거나

 

아예 데이타파일의 크기를 리사이징 해주는 방법.

 

 

 

해당 테이블 스페이스에 데이타파일을 추가하는 방법은 데이타파일을 물리적으로 다른 파티션에

 

데이타 파일을 위치시켜 억세스 효율을 높힐 수도 있다.

 

 

$ sqlplus system/manager

SQL*Plus: Release 9.2.0.1.0 - Production on Thu Apr 26 13:26:21 2007

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.


Connected to:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - 64bit Production
JServer Release 9.2.0.1.0 - Production

SQL> alter tablespace SOMETABLESPACE add datafile '/db03/SOMEDATAFILE.dbf' size 1024M;

 

 

나는 데이타파일의 크기를 리사이징 하는 방법으로 해결했다.

 

SQL> alter database datafile '/db03/mydata.dbf' resize 1024m;
Database altered.

SQL>

 

 

 

'DataBase' 카테고리의 다른 글

[Oracle] 테이블 생성 (다중 컬럼 PK)  (0) 2007.10.09
오라클 START/STOP  (0) 2007.08.11
[Oracle] 유저생성  (0) 2007.04.13
[ORACLE 9i] 기동과 종료  (0) 2007.04.13
[Oracle] PK 수정하기  (0) 2007.01.09

$ sqlplus "/as sysdba"

SQL> CREATE TABLESPACE TESTTABLESPACE

2 DATAFILE '/DB03/DBF/TEST.DBF' SIZE 10M;

TABLESPACE CREATED.

SQL> CREATE USER TESTUSER IDENTIFIED BY TESTPASSWD

2 DEFAULT TABLESPACE TESTTABLESPACE

3 TEMPORARY TABLESPACE TEMP QUOTA 500K ON TESTTABLESPACE;

USER CREATED.

SQL> GRANT CONNECT TO TESTUSER;

GRANT SUCCEEDED.

SQL> GRANT CONNECT, RESOURCE TO TESTUSER;

GRANT SUCCEEDED.

SQL> GRANT CONNECT, DBA TO TESTUSER;

GRANT SUCCEEDED.

SQL> EXIT

$

'DataBase' 카테고리의 다른 글

오라클 START/STOP  (0) 2007.08.11
[Oracle] ORA-01691 에러  (1) 2007.04.26
[ORACLE 9i] 기동과 종료  (0) 2007.04.13
[Oracle] PK 수정하기  (0) 2007.01.09
[Oralcle] 초 이하 단위 시간 얻어오기  (0) 2007.01.09

$ sqlplus "/as sysdba"

SQL*Plus: Release 9.2.0.1.0 - Production on Wed Dec 7 14:05:51 2005

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

Connected to:

Oracle9i Enterprise Edition Release 9.2.0.1.0 - 64bit Production

With the Partitioning, OLAP and Oracle Data Mining options

JServer Release 9.2.0.1.0 - Production


SQL>startup <--- 오라클DB 시작명령

SQL>shutdown abort <--- 오라클DB 종료명령

SQL>exit <--- SQLPLUS 빠져나오기

$ lsnrctl

LSNRCTL for Solaris: Version 9.2.0.1.0 - Production on 07-DEC-2005 14:10:01

Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.

Welcome to LSNRCTL, type "help" for information.

LSNRCTL>start <--- 리스너 시작하기

LSNRCTL>stop <--- 리스너 종료하기

LSNRCTL>exit <--- 리스너 빠져나오기

'DataBase' 카테고리의 다른 글

[Oracle] ORA-01691 에러  (1) 2007.04.26
[Oracle] 유저생성  (0) 2007.04.13
[Oracle] PK 수정하기  (0) 2007.01.09
[Oralcle] 초 이하 단위 시간 얻어오기  (0) 2007.01.09
[Oracle] V$SESSION 테이블 활용  (0) 2007.01.09

1.해당하는 PK를 삭제한다
: ALTER TABLE TABLE명 DROP CONSTRAINT PK명;

2.변경하고자 하는 COLUMN으로 Unique Index를 생성한다.
: CREATE UNIQUE INDEX PK명 ON TABLE명(COLUMN명) TABLESPACE TABLESPACE명;

3.PK에 속성을 추가한다.
: ALTER TABLE TABLE명 ADD CONSTRAINT PK명 PRIMARY KEY(COLUMN명);
(출처 : '오라클에서 pk 수정하기' - 네이버 지식iN)


'DataBase' 카테고리의 다른 글

[Oracle] 유저생성  (0) 2007.04.13
[ORACLE 9i] 기동과 종료  (0) 2007.04.13
[Oralcle] 초 이하 단위 시간 얻어오기  (0) 2007.01.09
[Oracle] V$SESSION 테이블 활용  (0) 2007.01.09
[Oracle] 특정유저에게 읽기 권한주기  (0) 2007.01.09

SELECT

TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS')||':'

||TO_CHAR(SYSTIMESTAMP,'FF4') AS NOW

FROM DUAL

'FF1' : 1/10 초

'FF2' : 1/100초

'FF3' : 1/1000초

'FF3' : 1/10000초

'DataBase' 카테고리의 다른 글

[ORACLE 9i] 기동과 종료  (0) 2007.04.13
[Oracle] PK 수정하기  (0) 2007.01.09
[Oracle] V$SESSION 테이블 활용  (0) 2007.01.09
[Oracle] 특정유저에게 읽기 권한주기  (0) 2007.01.09
[Oracle] Database link, Synonym How to  (0) 2007.01.09

/*오라클서버의 메모리에 관한 테이블*/
SELECT * FROM V$SGASTAT

SELECT POOL
,SUM(BYTES) "SIZE"
FROM V$SGASTAT
WHERE POOL = 'SHARED POOL'
GROUP BY POOL

/* cpu를 많이 사용하는 쿼리문과 프로세스아이디,시리얼번호,머신 알아내기*/
SELECT C.SQL_TEXT
,B.SID
,B.SERIAL#
,B.MACHINE
,B.OSUSER
,B.LOGON_TIME --이 쿼리를 호출한 시간
FROM V$PROCESS A
,V$SESSION B
,V$SQLTEXT C
WHERE A.ADDR = B.PADDR
AND B.SQL_HASH_VALUE = C.HASH_VALUE
AND A.SPID = '675958'
ORDER BY C.PIECE


/*cpu를 많이 사용하는 쿼리문과 프로세스아이디,시리얼번호,머신 알아내기*/
SELECT C.SQL_TEXT
FROM V$PROCESS A
,V$SESSION B
,V$SQLTEXT C
WHERE A.ADDR = B.PADDR
AND B.SQL_HASH_VALUE = C.HASH_VALUE
AND A.SPID = '171'
ORDER BY C.PIECE

/*프로세스 아이디를 이용하여 쿼리문 알아내기*/
SELECT C.SQL_TEXT
,B.SID
,B.SERIAL#
,B.MACHINE
,B.OSUSER
,B.LOGON_TIME --이 쿼리를 호출한 시간
FROM V$PROCESS A, V$SESSION B, V$SQLTEXT C
WHERE A.ADDR = B.PADDR
AND B.SQL_HASH_VALUE = C.HASH_VALUE
AND A.SPID = '1708032' --1912870/
ORDER BY C.PIECE

/*세션 죽이기(SID,SERAIL#)*/
ALTER SYSTEM KILL SESSION '8,4093'

/*hash_value 가지고 SQL 문장 찾아내는 쿼리 */
SELECT SQL_TEXT FROM V$SQLTEXT WHERE HASH_VALUE= 317853294


/*오라클 세션과 관련된 테이블*/
SELECT COUNT(*) FROM V$SESSION WHERE MACHINE ='머신이름' AND SCHEMANAME ='스키마이름'

/* 인엑티브 상태의 세션들-로그온타입이 과도하게 지나도록 없어지지 않는것은 세션을 죽이도록 한다
단 machine이 머신이름 에 해당하는 것만 죽이도록 한다
prev_hash_value 로 해쉬밸류를 알아내어 쿼리문을 확인할 수 있다
*/
SELECT SID
,SERIAL#
,USERNAME
,STATUS
,LOGON_TIME
,PREV_HASH_VALUE
,MACHINE
FROM V$SESSION
WHERE MACHINE ='머신이름'
AND SCHEMANAME ='스키마이름'
AND STATUS = 'INACTIVE'

SELECT COUNT(*)
FROM V$SESSION
WHERE MACHINE ='머신이름'
AND SCHEMANAME ='스키마이름'
AND STATUS = 'INACTIVE'

SELECT COUNT(*)
FROM V$SESSION
WHERE MACHINE ='머신이름'
AND SCHEMANAME ='스키마이름'
AND STATUS = 'KILLED'

SELECT COUNT(*)
FROM V$SESSION
WHERE MACHINE ='머신이름'
AND SCHEMANAME ='스키마이름'
AND STATUS = 'ACTIVE'

--현재 스키마이름 스키마로 실행중인(active) 프로세스를 알아내는 쿼리문
SELECT SID
,SERIAL#
,SQL_HASH_VALUE
,PREV_HASH_VALUE
,ROW_WAIT_OBJ#
,LOGON_TIME
,MACHINE
FROM V$SESSION
WHERE SCHEMANAME ='스키마이름'
AND STATUS = 'ACTIVE'

--위에서 알아내 hash_value 값을 이용하여 해당 프로세스가 실행중인 쿼리문 알아내기
SELECT *
FROM V$SQLTEXT
WHERE HASH_VALUE = 2626426688-
ORDER BY PIECE

SELECT *
FROM V$SESSION
WHERE MACHINE ='머신이름'
AND SCHEMANAME ='스키마이름'
AND STATUS = 'ACTIVE'
AND ROW_WAIT_OBJ# > 0

/******************************************************************************************/
현재 커서 수 확인하는 Query
/******************************************************************************************/
SELECT SID,
COUNT(SID) CURSOR
FROM V$OPEN_CURSOR
WHERE USER_NAME = '유저이름'
GROUP BY SID
ORDER BY CURSOR DESC


SELECT SQL_TEXT
,COUNT(SID) CNT
FROM V$OPEN_CURSOR
GROUP BY SQL_TEXT
ORDER BY CNT DESC

SELECT SQL_TEXT
FROM V$SQLTEXT
WHERE HASH_VALUE= 3252988466 --1389452958
ORDER BY PIECE

SELECT * FROM V$SESSION_WAIT

SELECT SID
,SERIAL#
,USERNAME
,TADDR
,USED_UBLK
,USED_UREC
FROM V$TRANSACTION T, V$SESSION S
WHERE T.ADDR = S.TADDR;

SELECT * FROM SYS.V_$OPEN_CURSOR

SELECT USER_NAME
,SQL_TEXT
,COUNT(*) CNT
FROM SYS.V_$OPEN_CURSOR
WHERE USER_NAME = '유저이름'
AND SID = 114
GROUP BY USER_NAME
,SQL_TEXT
ORDER BY CNT DESC

ALTER SYSTEM KILL SESSION '27,127'

--ALTER SYSTEM KILL SESSION '45, 3977'
--이런식으로 통계정보를 생성하신 후에

ANALYZE TABLE EMP COMPUTE STATISTICS;

ALTER TABLE CUSTOMERS PCTFREE 5 ;

SELECT *
FROM DBA_TABLES
WHERE TABLE_NAME = 'RP_PART_MST'


/*******************************************************************************
* LOCK 관련
*******************************************************************************/

--V$LOCK 을 사용한 잠금 경합 모니터링
SELECT S.USERNAME
,S.SID
,S.SERIAL#
,S.LOGON_TIME
,DECODE(L.TYPE, 'TM', 'TABLE LOCK', 'TX', 'ROW LOCK',NULL) "LOCK LEVEL"
,O.OWNER
,O.OBJECT_NAME
,O.OBJECT_TYPE
FROM V$SESSION S
,V$LOCK L
,DBA_OBJECTS O
WHERE S.SID = L.SID
AND O.OBJECT_ID = L.ID1
AND S.USERNAME IS NOT NULL

--락이 걸린 세션 자세히 알아보기
SELECT A.SID
,A.SERIAL#
,A.USERNAME
,A.PROCESS
,B.OBJECT_NAME
,DECODE(C.LMODE,2,'RS',3,'RX',4,'S',5,'SRX',8,'X','NO') "TABLE LOCK"
,DECODE (A.COMMAND,2,'INSERT',3,'SELECT',6,'UPDATE',7,'DELETE',12,'DROP TABLE',26,'LOCK TABLE','UNKNOWN') "SQL"
,DECODE(A.LOCKWAIT, NULL,'NO WAIT','WAIT') "STATUS"
FROM V$SESSION A
,DBA_OBJECTS B
,V$LOCK C
WHERE A.SID=C.SID AND B.OBJECT_ID=C.ID1
AND C.TYPE='TM'

--락이 걸린 세션 간단히 알아보기
SELECT A.SID
,A.SERIAL#
,B.TYPE
,C.OBJECT_NAME
,A.PROGRAM
,A.LOCKWAIT
,A.LOGON_TIME
,A.PROCESS
,A.OSUSER
,A.TERMINAL
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';

SELECT A.SID
,A.SERIAL#
,A.USERNAME
,A.PROCESS
,B.OBJECT_NAME
FROM V$SESSION A
,DBA_OBJECTS B
,V$LOCK C
WHERE A.SID=C.SID
AND B.OBJECT_ID = C.ID1
AND C.TYPE = 'TM'

--락이 걸린 세션을 찾아 내어 세션을 죽이려고 해도 죽지 않는 경우
--아래 쿼리문으로 OS단의 PROCESS ID를 찾아내어 OS에서 죽인다
--kill -9 프로세스아이디
SELECT SUBSTR(S.USERNAME,1,11) "ORACLE USER"
,P.PID "PROCESS ID"
,S.SID "SESSION ID"
,S.SERIAL#
,OSUSER "OS USER"
,P.SPID "PROC SPID"
,S.PROCESS "SESS SPID"
,S.LOCKWAIT "LOCK WAIT"
FROM V$PROCESS P
,V$SESSION S
,V$ACCESS A
WHERE A.SID=S.SID
AND P.ADDR=S.PADDR
AND S.USERNAME != 'SYS'

--위 쿼리문의 결과가 있다면 락이 걸린 세션이 있다는것이므로 아래의 쿼리문으로 세션을 죽인다
ALTER SYSTEM KILL SESSION '11,39061'

/**********************************************************************************************/

SELECT *
FROM V$SESSION
WHERE SID IN (80,100)

SELECT L.SESSION_ID
,LPAD(' ', DECODE(L.XIDUSN,0,3,0)) || L.ORACLE_USERNAME "USER NAME"
,O.OWNER
,O.OBJECT_NAME
,O.OBJECT_TYPE
FROM V$LOCKED_OBJECT L
,DBA_OBJECTS O
WHERE L.OBJECT_ID = O.OBJECT_ID
ORDER BY O.OBJECT_ID, 1 DESC


--아래 table 은 존재하지 않네

SELECT SW.USERNAME "WAITING_USER"
,BU.USERNAME "LOCKING_USER"
,DW.LOCK_TYPE
,DW.MODE_HELD
,DW.MODE_REQUESTED
,DW.WAITING_SESSION
,DW.HOLDING_SESSION
FROM DBA_WAITERS DW
,V$SESSION SW
,V$SESSION BU
WHERE DW.WAITING_SESSION = SW.SID
AND DW.HOLDING_SESSION = BU.SID

SELECT S.USERNAME
,S.SID
,S.SERIAL#
FROM DBA_BLOCKERS DB
,V$SESSION S
WHERE DB.HOLDING_SESSION = S.SID

SELECT VO.SESSION_ID
,DO.OBJECT_NAME
,DO.OWNER
,DO.OBJECT_TYPE
,DO.OWNER
,VO.XIDUSN
,VO.LOCKED_MODE
FROM V$LOCKED_OBJECT VO
,DBA_OBJECTS DO
WHERE VO.OBJECT_ID = DO.OBJECT_ID

SELECT DO.OBJECT_NAME
,DO.OWNER
,DO.OBJECT_TYPE
,DO.OWNER
,VO.XIDUSN
,VO.SESSION_ID
,VO.LOCKED_MODE
FROM V$LOCKED_OBJECT VO
,DBA_OBJECTS DO
WHERE VO.OBJECT_ID = DO.OBJECT_ID


SELECT *
FROM ALL_COL_COMMENTS
WHERE TABLE_NAME = '테이블이름'

/************************************************
ALTER SESSION으로 죽지않는 프로세스 죽이기
1.ORACLE이 설치된 서버에 텔넷으로 ROOT로 접속한다
2.SU -오라클계정
3.SQLPLUS '/AS SYSDBA''
4.CONNECT SYSTEM/SYS
5.ALTER SYSTEM KILL SESSION '137,1723'
**************************************************/

출처 : DATABASE.SARANG.NET

+ Recent posts