본문 바로가기

DataBase/Oracle

오라클에서 RANDOM NUMBER를 생성하는 방법(DBMS_RANDOM) Bulletin no : 11514 참고 Oracle8부터는 Random Number를 생성하는 DBMS_RANDOM package를 제공 합니다. DBMS_RANDOM패키지를 이용해서 Random Number를 생성하는 방법을 간단히 알아 보겠습니다. ☞ Random Number는 -9999999999 부터 9999999999사이의 숫자입니다. ☞ DBMS_RANDOM함수의 리턴 데이터형은 BINARY_INTEGER 입니다. 아래의 내용은 Win2000Pro Oracle8.1.7에서 테스트한 내용 입니다. 1. SYS USER 로 접속하여 아래의 script를 수행 합니다. script의 위치는 $ORACLE_HOME/rdbms/admin에 있습니다. . 실행할 script : dbmsoctk.sql,.. 더보기
오라클에서 순위를 쉽게 부여하는법(Rank() Function) 우리가 일반적으로 점수의 순위는 ODRDER BY desc를 해서 볼수가 있습니다. 하지만 똑같은 점수를 가진 사람들이 많이 나올때.. 예를 들면.100, 90, 90, 80 이렇게 점수가 나오면.. 순위를 1,2,2,4 이렇게 부여 해야 합니다 이거 SQL문으로 할려고 하니 어렵더라구요.. 내 머리가 나쁜건지.. 암튼 오라클 8.1.6 버전부터는 아주 쉽게 순위를 부여 할 수 있습니다.. 아래 내용을 참고해 보세요... 오라클에서는 RANK Function을 사용해서 순위를 간편하게 부여할 수 있습니다. RANK Function는 oracle 8i(8.1.6) 부터 가능합니다. 8.1.6 이전 버전에서는 사용 할 수 없습니다. ORA-923 error 가 발생 합니다. plsql 내에서는 oracle .. 더보기
오라클 HINT /*+ ALL_ROWS */ ALL_ROWS는 Full Table Scan을 선호하며 CBO(Cost Based Optimization)는 default로 ALL_ROWS를 선택 합니다. SQL>SELECT /*+ ALL_ROWS */ ename, hiredate FROM emp WHERE ename like '%%%' Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=HINT: ALL_ROWS (Cost=1 Card=5 Bytes=80) 1 0 TABLE ACCESS (FULL) OF 'EMP' (Cost=1 Card=5 Bytes=80) /*+ CHOOSE */ Hin.. 더보기
오라클 플래쉬백 사용하기(Flashback Query) ◈ Oracle Flashback 기능 이란? DB 관리중에 실수로 데이타를 삭제하거나 데이타의 값을 잘못 변경 하는 실수가 가끔 발생을 합니다. 이러한 오류를 바로 인식할 경우는 Rollback이라는 명령으로 바로 전에 수행한 작업을 원상복귀시킬 수 있지만, COMMIT을 한 이후 시점이나, 한참 시간이 지난 후에 알았다면 간단하게 복구하기가 난감 합니다. 이러한 경우에 특정한 시간 또는 시점으로 되돌릴 수 있는 기능이 Oracle Flashback 기능 입니다. 간단하게 말해서 Flashback 기능은 특정한 과거시점의 질의를 실행할 수 있게 해 줍니다. 데이타베이스에 구조적인 변화를 가하지 않고 과거 일정 시점의 데이타 상태를 확인할 수 있는 기능 입니다.. 일종의 오라클에서 지원하는 타임머신이라고.. 더보기
오라클 초보 사용자를 위한 팁 ◈ TABLE 구조 보기 SQL>DESC TABLE_NAME ◈ 테이블 존재 여부 알아보기 SQL>SELECT TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME = '찾을 테이블 이름' -->찾을 테이블 이름은 대문자여야 됩니다. ◈ 모든 유저 보기 SQL>SELECT username FROM ALL_USERS ◈ 테이블 제약조건의 확인 SQL>SELECT table_name, constraint_name, constraint_type FROM USER_CONSTRAINTS WHERE TABLE_NAME ='STORM_CONTENT'; ◈ 선택한 Row만큼만 보여주기 SQL>SELECT name FROM storm_board WHERE rownum 이렇게 하면 데이터가 10.. 더보기
실제 상황 테이블 삭제시 복구 지금 실제로 서비스중인 DB가 있습니다. DB의 케렉터셋은 UTF8이고 이 DB에는 일본어와, 한국어, 영어 데이터가 들어가 있습니다. 이 DB의 전체 백업은 2001년 5월 21일날 받아 두었습니다. 그리고 그 이후에 아카이브모드로 해서 아카이브파일들을 백업받고 있었죠.. 그러던 어느날(2002년 5월 29일) 신입사원이 테스트DB에서 작업을 하다가 서비스중인 DB에 접속할 일이 있어서..잠시 접속을 해서 작업을 하던중.. 실수로 테이블을 삭제 시켰습니다. SQL>DROP TABLE kpc_ctnt; 이론..큰 실수를 해 버렸습니다. 긴급사항이 발생했습니다. kpc_ctnt테이블에는 실제 서비스중인 데이터가 2000rows가 넘게 있었거든요.. 근데 이 DB의 특징은 export받은 파일을 import.. 더보기
디비 링크명.. 등등..보는 쿼리. select * from user_synonyms; select * from user_db_links; select * from dba_synonyms; select * from dba_db_links; select * from v$database; select * from user_tables; SELECT username, default_tablespace, temporary_tablespace, created FROM dba_users; 더보기
다중 multi insert Oracle 9i 이상에서 지원 됩니다. -- Unconditional insert into ALL tables INSERT ALL INTO sal_history VALUES(empid,hiredate,sal) INTO mgr_history VALUES(empid,mgr,sysdate) SELECT employee_id EMPID, hire_date HIREDATE, salary SAL, manager_id MGR FROM employees WHERE employee_id > 200; -- Pivoting insert to split non-relational data INSERT ALL INTO Sales_info VALUES (employee_id,week_id,sales_MON) INTO Sales.. 더보기
날짜 계산 SQL select months_between(sysdate,to_date('2002-12-22','yyyy-mm- dd')) -- months_between(A,B) = A-B/30 --select add_months(sysdate,4) -- 특정일의 달수 더한 날 --select next_day(sysdate,'friday') -- 특정일의 다음주 요일 --select last_day(sysdate) -- 특정일의 해당 월의 마지막 날 --select round(sysdate,'dd') -- 특정일의 반올림(오후면 다음날..) --select trunc(sysdate,'ww') -- 특정일의 주 첫일 찾기 from dual # 날짜계산 /* 어제 */ 날짜칼럼 BETWEEN TRUNC(SYSDATE-1) A.. 더보기
계층 구조의 조회(Hierarchical Queries) 오라클 데이터베이스 scott유저의 emp테이블을 보면 empno와 mgr컬럼이 있습니다. mgr 컬럼의 데이터는 해당 사원의 관리자의 empno를 의미 합니다. 예를 들어서 아래의 데이터를 보면은.. EMPNO ENAME SAL MGR ------ --------- ------- ---------- 7369 SMITH 800 7902 7902 FORD 3000 7566 empno 7369사원의 관리자는 7902의 empno를 가진 사원이며 empno 7902사원의 관리자는 7566의 empno를 가진 사원입니다. 이런 상위 계층과 하위계층의 관계를 오라클에서는 START WITH와 CONNECT BY를 이용해서 쉽게 가져올 수 있습니다. 상품의 카테고리(대분류,중분류,소분류...)를 조회 할때 STAR.. 더보기