목록Database (5)
말랑말랑제리스타일
DCL 구문 즉 , Data Control Language 중 가장 대표적인 Oracle 구문이 바로 Grant, Revoke로 권하는 주거나 빼는 구문인데요 특정 직무 담당자가 아닌 이상 자주 쓰는건 또 아니다보니 헷갈리죠 근데 또 막상 써보면 Grant 구문으로 Oracle 테이블 권한 주는건 간단합니다 GRANT 권한 ON 테이블명 TO 유저명 으로 유저에게 테이블 권한을 부여할 수 있는데요 여기서 권한에는 SELECT,DELETE 등 권한을 줄 구문이 들어가고 테이블 명과 유저명은 말안해도 알겠죠 GRANT SELECT,DELETE,INSERT,UPDATE ON TAB1 TO USER1 좀 더 바로 쓸 수 있는 예시 Oracle SQL로 표현하면 위와 같겠죠 SQL 실행시키거나 Oracle 프로시..
요즘 회사에서 테스트 DB와 운영 DB간 사이즈를 마이그레이션 하면서 유용하게 쓰고있는 오라클 테이블의 Column Size 변경 쿼리입니다 ALTER 테이블 구문이 자주 쓰는게 아니다 보니까 한번씩 찾아보게 되는데요 다음에 또 테이블 Column Size 변경할일 있을때 찾아볼려고 제가 쓰려고 올리는 가장 간단한 쿼리문입니다 ALTER TABLE 테이블 명 MODIFY (컬럼명 컬럼타입(사이즈)); 이렇게 사용 가능하고 예시로는 ALTER TABLE TABLE1 MODIFY (COL1 VARCHAR2(5)); 이렇게 되겠죠 테이블 Column의 Size를 바꾸고 나서는 가능하면 테이블 연관된 Index도 다시한번 체크해보시길 권장합니다

ORA-01002 : fetch out of sequence 에러는 원래 에러 내용과 같이 Oracle 데이터베이스 PL/SQL문 내에서 반복문 도중 잘못된 상태에서 FETCH가 일어나는 경우 발생하는 오라클 에러인데요 저같은 경우는 반복문 없이 단순 조회 쿼리에서 계속해서 이런 에러가 발생했고 심지어 Toad와 같은 오라클 Database 툴로 프로시저를 실행시킬때는 나지 않다가 C# 프로그램에서 프로시저를 호출하면 ORA-01002 : fetch out of sequence 에러가 나서 디버깅도 안되고 갑갑했는데 한참만에 실수를 찾았습니다 테이블 조인 조건 중 ON A.날짜컬럼 BETWEEN B.시작일자 AND B.끝일자 로 조인하는 과정에서 시작일자와 끝일자 컬럼은 VARCHAR2(8) 형식이었고 ..
오라클 DB를 사용하다보면 테이블 크기가 커지고 속도가 느려질때를 체감하게 되는데 이때 오라클 DB에서 사용할 수 있는 테이블 크기를 확인 가능한 쿼리를 알려드리려고 합니다 참고로 DBA 테이블이라 권한이 충분하지 않다면 확인이 불가능할 수 있지만 따로 권한을 분류하지 않은 DB나 개인 목적의 DB인 경우 아래 쿼리로 테이블의 크기를 확인할 수 있습니다 SELECT OWNER, SEGMENT_NAME, BYTES FROM DBA_SEGMENTS WHERE SEGMENT_TYPE='TABLE' ORDER BY 3 DESC; 위에서 활용한 DBA_SEGMENTS 테이블에는 테이블 뿐만 아니라 INDEX, CLUSTER 등의 정보도 나와있기 때문에 TABLE로 SEGMENT_TYPE을 걸어주고 OWNER는 D..
Insert 구문은 Delete, Update와 함께 SQL의 대표적인 DML문이죠 Oracle DB 사용중 테이블을 새로 만들거나 마이그레이션을 하는 경우 등 다양한 상황에서 Select 한 내용을 Insert 하게 되는 상황이 꽤 많은데요 이 상황에서 사용 가능한 구문이 Insert Select 구문이고 사용법은 간단합니다 테이블1이 데이터가 Insert 될 테이블, 테이블2가 데이터를 Select 할 테이블이라고 하면 Insert Into 테이블1 Select * from 테이블2 로 사용할 수 있고 만약 테이블 2의 데이터가 테이블 1의 데이터 개수와 일치하지 않을 경우 Insert into 테이블1 Select Insert Into 테이블1 Select Col1,Col2...ColN from 테..