본문 바로가기

DataBase

[퍼옴]재미있는 SQL문(계층구조 쿼리의 예제) 아래 강좌에서 START WITH와 CONNECT BY절을 이용해서 계층 구조로 쿼리를 해오는것을 살펴봤습니다. 이번에는 계층구조를 이용해서 역순으로 쿼리를 해오는것을 보겠습니다. SQLPLUS scott/tiger -- 조금 깔끔하게 보기 위해서.. 셋팅 먼저 하고요.. SQL> SET LINESIZE 100 SQL> SET PAGESIZE 100 SQL> COL ename FORMAT A20 SQL>SELECT LPAD(' ', 4*(LEVEL-1)) || ename ename, empno, mgr, job FROM emp START WITH EMPNO=7839 CONNECT BY PRIOR empno=mgr; ENAME EMPNO MGR JOB -------------------- ---------.. 더보기
유저의 패스워드를 쉽게 바꾸는 방법 Oracle 8 이상에서만 지원 SQL*PLUS에서 PASSWORD 명령으로 쉽게 유저의 패스워드를 변경 할 수 있습니다. SQL> PASSWORD; SCOTT에 대한 암호를 변경합니다 이전 암호: ***** 새로운 암호: ****** 새로운 암호를 다시입력합니다: ****** * 기존에 변경했던 방식 -- scott의 비밀번호를 tiger2로 변경 했을 경우 SQLPLUS system/manager SQL>ALTER USER scott IDENTIFIED BY tiger2 더보기
[퍼옴]옵티마이져(OPTIMIZER) 엔코아 정보 컨설팅 자료를 참고해서 작성해 봤습니다. 1. 옵티마이져(OPTIMIZER) ? OPTIMIZING이란 SQL 문장을 수행하기 위하여 가장 효과적인 방법을 선택하는 처리과정을 말합니다. 이것은 DML 문장을 수행하는데 있어 중요한 단계 중 하나이며, 이러한 역할을 하는 담당하는 부분을 우리는 OPTIMIZER라 부릅니다. 어떻게 하면 SQL문을 가장 효과적으로 처리할까.. 이것이 옵티마이져의 역할이죠.. ◈ SELECT, UPDATE, INSERT, DELETE문을 최소 비용으로 신속하게 처리 할 수 있을까 고민 합니다.. ◈ 오라클의 옵티마이저 부분은 문장의 실행을 위해서 요구된 최소한의 프로세싱 시간과 I/O를 위하여 참조된 데이타의 효과적인 경로를 결정하기 위하여 사용합니다. ◈ 옵티마.. 더보기
오라클에서 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; 더보기