본문 바로가기

IT/오라클

[ORACLE] SYNONYM(동의어) 시노님은 오라클 객체(테이블, 뷰, 시퀀스, 프로시저)에 대한 대체이름(Alias)를 말하며, 실질적으로 그 자체가 객체가 아니라 객체에 대한 직접적인 참조 이다.시노님을 사용하는 이유① 데이터베이스의 투명성을 제공하기 위해서 사용 한다고 보면 된다. 시노님은 다른 유저의 객체를 참조할 때 많이 사용을 한다.② 만약에 실무에서 다른 유저의 객체를 참조할 경우가 있을 때 시노님을 생성해서 사용을 하면은 추후에 참조하고 있는 오프젝트가 이름을 바꾸거나 이동할 경우 객체를 사용하는 SQL문을 모두 다시 고치는 것이 아니라 시노님만 다시 정의하면 되기 때문에 매우 편리 하다.③ 객체의 긴 이름을 사용하기 편한 짧은 이름으로 해서 SQL코딩을 단순화 시킬 수 있다.④ 또한 객체를 참조하는 사용자의 오브젝트를 감추.. 더보기
시퀀스 현재 값 변경 오라클에서 Object를 관리할때... 일반적으로 CREATE때 사용되는 옵션들은 보통 ALTER로도 가능합니다. 그래서 시퀀스도 같을거라 생각했었습니다. 일단 상황은 이렇습니다. 데이터 마이그레이션하던도중에 시퀀스값이 맞지 않아서 , AP담당자로 부터 시퀀스 값을 1에서 124475으로 변경해달라는 요청이 왔습니다. 일단 귀찮아서 저는 이렇게 말했지요. 그냥 loop돌려서 nextval 하세요!!! 참 무책임한 말이지요?? 한두개면 노가다라도 하지.. 50개의 시퀀스에 대한 변경요청이어서 제가 하게되었네요. 그래서 당연히 저는 이렇게 하였지요. alter sequence SCOTT.SEQ_EMP start with 124475; 삐!!! 에러 발생 ㅋㅋ 생성할때는 존재했었어도. start with 라는.. 더보기
ORACLE INDEX 정리 index란?검색을 빠른 속도로 하기 위해서 사용됩니다. SQL 명령문의 처리 속도를 향상시키기 위해서 컬럼에 대해서 생성하는 오라클 객체임.--index 사용해야할 경우 테이블에 행의 수가 많을때 조건절인 where문에 해당 컬럼이 많이 사용될때 검색 결과가 데이터의 2% ~ 4% 정도일때(적은 양의 컬럼을 가져올때) join에 자주 사용되는 컬럼 NULL을 포함하는 컬럼이 많은 경우--index 사용하지 말아야 하는 경우 테이블에 행의 수가 적을때 where 문에 해당 컬럼이 자주 사용되지 않을 때 검색 결과가 전체 데이터의 10% ~ 15% 이상 높을 때(많은 양의 컬럼을 가져올대) 테이블에 DML 작업이 많은 경우(입력,수정,삭제 등이 자주 발생할때)--index 딕션너리 USER_INDEXES .. 더보기
[Oracle] Lock 확인 및 Lock 해제 Lock확인 및 Lock해제는 sys, system 계정으로 sqlplus 및 toad 접속하여 아래의 명령을 실행한다. 1. Lock 걸린 테이블 및 세션 확인 1) SID, 시리얼번호, 테이블명 확인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') .. 더보기
Oracle PL/SQL 강좌 9. Trigger(트리거) 트리거란? INSERT, UPDATE, DELETE문이 TABLE에 대해 행해질 때 묵시적으로 수행되는 PROCEDURE 이다. 트리거는 TABLE과는 별도로 DATABASE에 저장 된다. 트리거는 VIEW에 대해서가 아니라 TABLE에 관해서만 정의 될 수 있다. 행 트리거 : 컬럼의 각각의 행의 데이터 행 변화가 생길때마다 실행되며, 그 데이터 행의 실제값을 제어할 수 있다. 문장 트리거 : 트리거 사건에 의해 단 한번 실행되며, 컬럼의 각 데이터 행을 제어 할 수 없다.트리거 문법- BEFORE : INSERT, UPDATE, DELETE문이 실행되기 전에 트리거가 실행 된다.- AFTER : INSERT, UPDATE, DELETE문이 실행된 후 트리거가 실행 된다.- trigger_event :.. 더보기