본문 바로가기

DB

[LINUX] ORACLE 설치와 활용 - 1 (8i) Linux Oracle 설치와 활용(Ⅰ) 이수준 (dislevel@newhuman.org) 서 론 인터넷 서버로서의 많은 가능성을 보여주고 있는 Linux는 사실상 미묘한 문제가 있었다. Apache는 웹서버로서의 더할 나위 없는 정상의 고지에 있었고, Samba는 많은 작업들을 MS WINDOWS로부터 해방시켜 주었으며 X WINDOW는 MS의 그것과 못지 않은 많은 윈도우 매니저들로 치장되었다. 문제는 좀더 신뢰성 있는 서비스들이었고 그것은 대체로 D/B 시스템과의 밀접한 관계를 가진다. 물론 Linux에서도 아주 훌륭한(그것도 공개의) D/B 들이 존재하는데 MiniSQL이나 Postgresql등이 그것이고 MySQL같은 조금 특별한(반 공개/반 상용) 것들도 있다. 하지만, 이것들이 아무리 훌륭하.. 더보기
오라클 정규식 (REGEXP_LIKE) REGEXP_LIKE(Column,'[a-z]|[A-Z]|[0-9]|[가-히]') 오라클 함수 : REGEXP_LIKE 해석 : 컬럼이 알파벳 a-Z까지, 숫자, 한글이 포함된 데이터에 대한 조건 더보기
DB export/import (tablespace가 다를경우) step.1 #db를 export한다. exp userid=system/pwd file=dump.dmp owner=olduser step.2 #schema 추출한다. imp userid=system/pwd file=dump.dmp fromuser=olduser touser=newuser indexfile=schema.sql constraints=n log=scheme.log ***주의*** - 옵션 constraints : 제약조건 (FK, PK) 쿼리도 가져오기때문에 데이터를 입력시 제약조건 에러가 발생할수있다. step.3 #scheme 수정 (추출한 schema.sql을 필요없는 부분, tablespace를 편집한다.) - REM 일괄 제거 - REM ... row n 주석처리(--) (정규식 : .. 더보기
오라클 사용자 tablespace 변경 단순하게 물리적인 Tablespace이동이라면 파일 이동하시면 됩니다. Step1) Tablespace OffLine -> ALTER TABLESPACE tablespace명 OFFLINE; Step2) file copy -> cp oldfile newfile Step3) Target Tablespace 수정 -> ALTER DATABASE tablespace명 rename file 'oldFile' to 'newFile'; Step4) Tablespace OnLine -> ALTER TABLESPACE tablespace명 ONLINE; 단, 시스템 TableSpace이라면 shutdown 하셔야합니다. 그런데 그게아니라 특정 테이블의 TableSpace이동이라면 수동으로 Target Table과 Co.. 더보기
다중row를 컬럼으로 변경 (ORACLE) ------------------------------- -- 1번째 방법 : XMLAGG ------------------------------- - 예제 WITH T1 AS ( SELECT 'A' AS COL1 FROM DUAL UNION ALL SELECT 'B' FROM DUAL UNION ALL SELECT 'C' FROM DUAL UNION ALL SELECT 'D' FROM DUAL UNION ALL SELECT 'D' FROM DUAL ) SELECT SUBSTR(XMLAGG(XMLELEMENT(A, ',' || COL1) ORDER BY COL1).EXTRACT('//text()'), 2) FROM T1; ----------------------------------------------.. 더보기
유용한 sql -- 테이블스페이스 삭제 -- 테이블스페이스가 오프라인으로 상태에서 명령을 내리길 권장 DROP TABLESPACE unicorn_temp INCLUDING CONTENTS CASCADE CONSTRAINTS; -- DATA TABLESPACE 생성 CREATE TABLESPACE unicorn_data DATAFILE 'D:\oracle\oradata\unicorn_data.TBL' SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 500M DEFAULT STORAGE (INITIAL 4K NEXT 128K MINEXTENTS 1 PCTINCREASE 0); -- INDEX TABLESPACE 생성 CREATE TABLESPACE unicorn_index DATAFILE 'D:\.. 더보기
ORACLE segment관리 --세그먼트 사용자 조회 SELECT UNIQUE(OWNER) FROM DBA_SEGMENTS --segment 조회 SELECT * FROM DBA_SEGMENTS WHERE OWNER='스키마' --불필요한 SEGMENT정리 EXECUTE IMMEDIATE 'ALTER TABLE TABLE_NAME ENABLE ROW MOVEMENT'; EXECUTE IMMEDIATE 'ALTER TABLE TABLE_NAME SHRINK SPACE CASCADE'; EXECUTE IMMEDIATE 'ALTER TABLE TABLE_NAME DISABLE ROW MOVEMENT'; --ORACLE 10g에서 테이블을 DROP하면 쓰레기 값이 남는경우 --명령어를 날리면 스레기 값은 사라진다. PURGE RECYCLE.. 더보기
오라클과 MSSQL 함수비교 문자열 함수 Function Oracle SQL Server Convert character to ASCII ASCII ASCII String concatenate CONCAT (expression + expression) Convert ASCII to character CHR CHAR Return starting point of character in character string (from left) INSTR CHARINDEX Convert characters to lowercase LOWER LOWER Convert characters to uppercase UPPER UPPER Pad left side of character string LPAD N/A Remove leading blank sp.. 더보기
[ORACLE] Group by, Rollup, Cube의 차이점 ◈ ROLLUP operator - ROLLUP구문은 GROUP BY절과 같이 사용 되며, GROUP BY절에 의해서 그룹 지어진 집합결과에 대해서 좀 더 상세한 정보를 반환하는 기능을 수행합니다. - SELECT절에 ROLLUP을 사용함으로써 보통의 select된 데이터와 그 데이터의 총계를 구할 수 있습니다. ※ 우선 아주 간단한 예제부터 살펴 보겠습니다. (scott유저의 emp테이블을 가지고 테스트 했습니다.) -- Group By를 사용해서 직업별로 급여 합계를 구하는 예제 입니다. SELECT job, SUM(sal) FROM emp GROUP BY job JOB SUM(SAL) ---------- ---------- ANALYST 600 CLERK 3200 MANAGER 33925 PRESI.. 더보기
[ORACLE] CONNECT BY Dummy Table(흔히 Copy_t 라고 불림) 대신에 9i 이후부터는 Connect By level 문을 사용하곤 한다. 하지만 조심하지 않으면 해당 SQL이 종료되지 않는 장애를 만나게 된다. 오늘은 Connect By level 문을 오용하는 사례와 해결책을 제시하고자 한다. 상황 업무팀에서 새로운 SQL을 작성하고 컴파일하여 운영 시스템에 반영되었다. 문제의 SQL이 실행되자 너무 오래걸려서 Time Out이 발생하였다. 아래는 상황을 최대한 간단히 표현하여 테스트를 수행하기 위한 스크립트 이다. --입사년도 테이블 생성 create table hire as select '2006' hire_date from dual union all select '2003' hire_date from dua.. 더보기