-- Lock 확인
SELECT SUBSTR(C.OBJECT_NAME,1,20),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';
   
-- Lock 해제   
ALTER SYSTEM KILL SESSION 'SID, SERIAL#';

-- 전체검색해서 KILL STATEMENT 생성
SELECT C.OBJECT_NAME, 'ALTER SYSTEM KILL SESSION ''' || 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';

Posted by 좀모씨

ORA-00600: internal error code, arguments: [19004],

Cause :
normally this error argument would be found while querying table or view. Try the following solution:


Action :
1. login to oracle (using sqlplus at command line prompt):
   sqlplus
username/password@servicename

2. enter the following command
   sql>ANALYZE TABLE table_name delete statistics;

Note: Incase of view try apply the command with each table forming the view.


<출처 : http://ora-error-101.blogspot.com/2008/05/ora-00600.html>


ORA-00600: 내부 오류 코드

이자식을 만났습니다.
살살 검색을 해보니, CONNECT BY 문구를 사용할 때 오류가 날 수 있다고 하네요. 그 때 해결방법은.

/*+ NO_CONNECT_BY_COST_BASED */

라는 힌트를 사용하면 된답니다.

그런데 제 경우에는 이걸로도 해결이 안됐습니다.
[19004]가 붙은 오류일 때는 힌트로는 안되나 봅니다.
그리고 구글링을 하다가 저 위의 링크를 발견했지요.

번역이 별 필요없겠지만서도...

>>>

원인 : 보통 이 에라 인자는 테이블이나 뷰를 쿼링하는 동안 생길 수 있다. << 당연한 얘기 아님? - _-;
         따라해 보자.

할일 :
1. 오라클에 접속(cmd 창을 열어서 sqlplus사용하시고):
    sqlplus
username/password@servicename

2. 아래 명령을 따라해 보자.
    sql>
ANALYZE TABLE 테이블명 delete statistics;

참~ 쉽죠잉~

공책 : 뷰에서 에러가 났을 경우에는 뷰에 들어있는 각각의 테이블을 다 작업해주자.


덕분에 골머리 썩던 문제가 간단히 해결되었습니다.

Niramit Soonthawong 씨. 어디 사시는 누군지 모르겠으나. 쌩유베리감사~ (__)

아, 그리고 혹시나 운영하는 DB에다가 막 ANALYZE 때리지는 않으시겠죠?
테이블이 사용 중에 걸리면 열라 느려지거나 뻑 날 수도 있습니다-ㅁ-;
....라고 옆옆자리 과장님께서 그러셨음.



Posted by 좀모씨

컬럼명 검색
select table_name, column_name from all_tab_columns where column_name like '%컬럼명%';

Update for Select
- A 테이블의 chg_id 값이 주민번호로 들어가야 하는데 로직상 실수로 인해 Email 주소의 ID 부분으로 입력되었다.
- 이럴때 사용자 정보 B테이블을 읽어서 주민번호로 A테이블을 update 하고자 한다.

Update A set chg_id =
    (Select jumin from B where substr(email, 1, instr(email, '@', 1) -1) = A.chg_id);

순위매기기
1.RANK
    RANK() OVER (
    [PARTITION BY <value expression1> [, ...]]
    ORDER BY <value expression2> [collate clause] [ASC|DESC]
    [NULLS FIRST|NULLS LAST] [, ...] )
    *동순위일때 건너뜀(1,1,1,3,3,5)

2.DENSE_RANK
    DENSE_RANK() OVER (
    [PARTITION BY <value expression1> [, ...]]
    ORDER BY <value expression2> [collate clause] [ASC|DESC]
    [NULLS FIRST|NULLS LAST] [, ...] )
    *동순위일때 연속됨(1,1,1,2,2,3)

DATA : A,A,A,B,B,C


테이블 LOCK 확인 및 해제

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', 6, 'LOCK', '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'
AND    A.USERNAME = 'USER_NAME';


SELECT SUBSTR(C.OBJECT_NAME,1,20),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';
    
    
ALTER SYSTEM KILL SESSION 'SID, SERIAL';

* 업무용으로 간혹 사용하게 되는 것들 중 외우고 다니기 귀찮은 거 나중에 또 검색하기 싫어서 지속적으로 업데이트할 예정임.

Posted by 좀모씨

지금 개발하고 있는 DB 세션 유지 시간이 너무 짧아서 코딩하다가 쿼리 한 번 날리려면 다시 로그인 하는 완전히 귀찮은 상황이었는데, 또 우리의 구글신께서 알려주셨습니다.



사용하고 있는 버전은 9.7.2.5 입니다.
Session Browser를 열면 아래와 같이 Refresh Time을 설정할 수 있습니다. 



이제 Session Browser를 닫지 않고 Editor에서 쿼리 날리면 됩니다. 지긋지긋한 Session 끊김 문제가 이렇게 해결되었습니다. 

\(^o^)/


단, 다른 버전에서는 Session Browser가 DBA메뉴 아래에 있을 수도 있습니다.





Posted by 좀모씨

Oracle Database 10g에 추가된 새로운 기능을 이용하여 문자 데이터의 검색, 처리 능력을 극적으로 개선할 수 있습니다. 정규 표현식(regular expression)이라 불리는 이 기능은, 텍스트 패턴을 기술하기 위한 일종의 표기법으로, 이미 오래 전부터 다양한 프로그래밍 언어와 UNIX 유틸리티를 통해 지원되어 왔습니다.

....(후략)

Posted by 좀모씨

테이블이 FK로 묶여있을 때 상위테이블에서 데이터를 삭제하려고 하면 볼 수 있는 에러.
매칭된 컬럼을 보고 싶다면 아래의 쿼리를 날려주자.

SELECT PARENTCOLS.OWNER || '.' || PARENT.TABLE_NAME || '.' || PARENTCOLS.COLUMN_NAME || ' matches to ' || CHILDCOLS.OWNER || '.' || CHILD.TABLE_NAME || '.' || CHILDCOLS.COLUMN_NAME
  FROM ALL_CONS_COLUMNS CHILDCOLS, ALL_CONS_COLUMNS PARENTCOLS, ALL_CONSTRAINTS CHILD, ALL_CONSTRAINTS PARENT
 WHERE CHILDCOLS.OWNER = 'OWNER'
   AND CHILDCOLS.CONSTRAINT_NAME = 'SYS_CODE'
   AND CHILDCOLS.OWNER = CHILD.OWNER
   AND CHILDCOLS.CONSTRAINT_NAME = CHILD.CONSTRAINT_NAME
   AND CHILD.R_OWNER = PARENT.OWNER
   AND CHILD.R_CONSTRAINT_NAME = PARENT.CONSTRAINT_NAME
   AND PARENT.OWNER = PARENTCOLS.OWNER
   AND PARENT.CONSTRAINT_NAME = PARENTCOLS.CONSTRAINT_NAME
   AND CHILDCOLS.POSITION = PARENTCOLS.POSITION
ORDER BY CHILDCOLS.POSITION;



Posted by 좀모씨

Oracle 10g 버전으로 업그레이드 후, 토드의 8.X 버전에서 'IN' is not a valid integer value 에러가 뜹니다.

다행히 해결법은 있었군요.

 

버그의 원인은 오라클 패치로 인해 ALL_ARGUMENTS가 냉텅이 되어서 그런겁니다.


1) SYS 로 로그인 합니다.
2) 아래의 view를 생성합니다. (ALL_ARGUMENTS_TOAD)

CREATE OR REPLACE VIEW ALL_ARGUMENTS_TOAD
(OWNER, OBJECT_NAME, PACKAGE_NAME, OBJECT_ID, OVERLOAD,
ARGUMENT_NAME, POSITION, SEQUENCE, DATA_LEVEL,
DATA_TYPE, DEFAULT_VALUE, DEFAULT_LENGTH, IN_OUT, DATA_LENGTH,
DATA_PRECISION, DATA_SCALE, RADIX, CHARACTER_SET_NAME, TYPE_OWNER,
TYPE_NAME, TYPE_SUBNAME, TYPE_LINK, PLS_TYPE, CHAR_LENGTH,
CHAR_USED, SUBPROGRAM_ID)
AS
SELECT
u.name, /* OWNER */
NVL(a.PROCEDURE$,o.name), /* OBJECT_NAME */
DECODE(a.PROCEDURE$,NULL,NULL, o.name), /* PACKAGE_NAME */
o.obj#, /* OBJECT_ID */
DECODE(a.overload#,0,NULL,a.overload#), /* OVERLOAD */
a.argument, /* ARGUMENT_NAME */
a.position#, /* POSITION */
a.SEQUENCE#, /* SEQUENCE */
a.LEVEL#, /* DATA_LEVEL */
DECODE(a.TYPE#, /* DATA_TYPE */
0, NULL,
1, DECODE(a.charsetform, 2, 'NVARCHAR2', 'VARCHAR2'),
2, DECODE(a.scale, -127, 'FLOAT', 'NUMBER'),
3, 'NATIVE INTEGER',
8, 'LONG',
9, DECODE(a.charsetform, 2, 'NCHAR VARYING', 'VARCHAR'),
11, 'ROWID',
12, 'DATE',
23, 'RAW',
24, 'LONG RAW',
29, 'BINARY_INTEGER',
69, 'ROWID',
96, DECODE(a.charsetform, 2, 'NCHAR', 'CHAR'),
100, 'BINARY_FLOAT',
101, 'BINARY_DOUBLE',
102, 'REF CURSOR',
104, 'UROWID',
105, 'MLSLABEL',
106, 'MLSLABEL',
110, 'REF',
111, 'REF',
112, DECODE(a.charsetform, 2, 'NCLOB', 'CLOB'),
113, 'BLOB', 114, 'BFILE', 115, 'CFILE',
121, 'OBJECT',
122, 'TABLE',
123, 'VARRAY',
178, 'TIME',
179, 'TIME WITH TIME ZONE',
180, 'TIMESTAMP',
181, 'TIMESTAMP WITH TIME ZONE',
231, 'TIMESTAMP WITH LOCAL TIME ZONE',
182, 'INTERVAL YEAR TO MONTH',
183, 'INTERVAL DAY TO SECOND',
250, 'PL/SQL RECORD',
251, 'PL/SQL TABLE',
252, 'PL/SQL BOOLEAN',
'UNDEFINED'),
DEFAULT$, /* DEFAULT_VALUE */
deflength, /* DEFAULT_LENGTH */
DECODE(in_out,NULL,'IN',1,'OUT',2,'IN/OUT','Undefined'), /* IN_OUT */
LENGTH, /* DATA_LENGTH */
PRECISION#, /* DATA_PRECISION */
DECODE(a.TYPE#, 2, scale, 1, NULL, 96, NULL, scale), /* DATA_SCALE */
radix, /* RADIX */
DECODE(a.charsetform, 1, 'CHAR_CS', /* CHARACTER_SET_NAME */
2, 'NCHAR_CS',
3, NLS_CHARSET_NAME(a.charsetid),
4, 'ARG:'||a.charsetid),
a.type_owner, /* TYPE_OWNER */
a.type_name, /* TYPE_NAME */
a.type_subname, /* TYPE_SUBNAME */
a.type_linkname, /* TYPE_LINK */
a.pls_type, /* PLS_TYPE */
DECODE(a.TYPE#, 1, a.scale, 96, a.scale, 0), /* CHAR_LENGTH */
DECODE(a.TYPE#,
1, DECODE(bitand(a.properties, 128), 128, 'C', 'B'),
96, DECODE(bitand(a.properties, 128), 128, 'C', 'B'), 0), /* CHAR_USED */
a.PROCEDURE# /* SUBPROGRAM ID */
FROM obj$ o,argument$ a,USER$ u
WHERE o.obj# = a.obj#
AND o.owner# = u.USER#
AND (owner# = USERENV('SCHEMAID')
OR EXISTS
(SELECT NULL FROM v$enabledprivs WHERE priv_number IN (-144,-141))
OR o.obj# IN (SELECT obj# FROM sys.objauth$ WHERE Grantee# IN
(SELECT kzsrorol FROM x$kzsro) AND privilege# = 12))
/



출처 : http://www.nabble.com/RE:-10-G-database---IN-is-not-a-valid-integer-value-p3405244.html

Posted by 좀모씨
이전버튼 1 이전버튼

블로그 이미지
Under Construction
좀모씨
Yesterday
Today
Total

달력

 « |  » 2024.4
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함