본문 바로가기

IT/DB

[Oracle] hint oracle hint? ◎ 오라클 힌트란 ? 힌트는 SQL 튜닝의 핵심 부분으로 일종의 지시구문이며 SQL에 포함되어 쓰여져 Optimizer의 실행계획을 원하는 대로 바꿀수 있게 해줍니다. 오라클 Optimizer 라고 해서 항상 최선의 실행계획을 수립할 수는 없으므로 테이블이나 인덱스의 잘못된 실행 계획을 개발자가 직접 바꿀 수 있도록 도와주는 것이 HINT 입니다. 사용자는 특정 SQL 문장에서 어떤 인덱스가 선택도가 높은지에 대해 알고 있는데 이 것이 훨씬 효율적인 실행계획을 구사 할 수 있다는 것입니다. 힌트를 사용하게 되면 엑세스 경로, 조인의 순서, Optimizer의 목표를 변경 가능하며 SQL 문장내에 /*+ 힌트내용*/ 의 형태로 사용되어 지며 여기서 주석표시와 다른점은 (+) 가 더 .. 더보기
[SQL] IP매칭 query 예제 // IP매칭 -- IP 쪼개서 불려오기 SELECT COUNT(*) FROM OWSADMIPADDR WHERE (SUBSTRING_INDEX(IP_ADDR,'.',1) LIKE '***' OR SUBSTRING_INDEX(IP_ADDR,'.',1) LIKE SUBSTRING_INDEX('127.1.0.27','.',1)) AND (SUBSTRING_INDEX(SUBSTRING_INDEX(IP_ADDR,'.',2),'.',-1) LIKE '***' OR SUBSTRING_INDEX(SUBSTRING_INDEX(IP_ADDR,'.',2),'.',-1) LIKE SUBSTRING_INDEX(SUBSTRING_INDEX('127.1.0.27','.',2),'.',-1)) AND (SUBSTRING_INDEX(.. 더보기
[IBM DB2] DB2 관련 정리 DB2 // 사용법 기초 정리 IBM DB2 EE 7.2.1 DB2는 하나의 인스턴스가 여러개의 데이터베이스를 가질 수 있다. MySQL, MS-SQL과 유사한 구성이라고 하겠다. [DB2 기초 정리] 설치디렉토리: C:\Program Files\SQLLIB 등록된 사용자: db2admin (내 컴퓨터 - 관리 - 로컬 사용자 및 그룹 - 사용자) 등록된 서비스: TCP/IP서비스(db2cDB2)가 C:\WINNT\system32\drivers\etc\services에 등록됨 관리도구 - 서비스에 서비스들이 등록됨(자동시작되는 서비스는 o로 표시) (o) DB2 - DB2 (o) DB2 - DB2CTLSV (o) DB2 - DB2DAS00 (x) DB2 Governor (o) DB2 JDBC Applet.. 더보기
[Oracle] SYSDBA 로그인의 제한 // SYSDBA 로그인의 제한 배경 정보 “dba” 그룹에 포함된 UNIX/Linux 사용자는 아래와 같은 명령을 이용하여 SYSDBA 권한으로 로그인할 수 있습니다: sqlplus / as sysdba DBA가 SYS 패스워드를 기억하거나 입력할 필요가 없다는 편의성 때문에 이러한 방법이 자주 사용되곤 합니다. 하지만 이로 인한 취약점 또한 존재합니다. dba 그룹 멤버로 로그인할 수 있는 모든 사용자는 SYS 권한으로 데이터베이스에 로그인할 수 있습니다. SYS에 아무리 강력한 암호 체계를 적용해도 이는 무용지물과 다름없습니다. SYS 계정의 강력한 권한을 보호하려면 dba 그룹이 SYS 계정으로 로그인하면서 SYS 암호를 반드시 입력하도록 하는 것이 좋습니다. 이런 방법으로 외부 침입을 완전히 차.. 더보기
[Oracle] Select SELECT문 모음 -- A테이블, B테이블의 교집합 찾기 SELECT * FROM A테이블 WHERE USER_ID IN (SELECT USER_ID FROM B테이블); -- A테이블, B테이블의 여집합 찾기 SELECT * FROM A테이블 WHERE USER_ID NOT IN (SELECT USER_ID FROM B테이블); 더보기
[SQL] INSERT, UPDATE 모음 // INSERT문 - 다른 USER의 테이블 데이터 복사에 넣기 INSERT INTO 트윈테이블1 SELECT * FROM 스키마2.트윈테이블2; # 응용 INSERT INTO 트윈테이블1 SELECT * FROM 스키마2.트윈테이블2; WHERE cd_type_id||cd NOT IN (SELECT cd_type_id||cd FROM T_CODE ); -- PK가 composite key일 경우 where조건을 간단하게 바꾼경우 # 특정 컬럼만 IMPORT INSERT INTO 트윈테이블1 (특정컬럼1, 특정컬럼2) SELECT 특정컬럼1, 특정컬럼2 FROM 스키마2.트윈테이블2; // UPDATE문 - 두 개 테이블 조인하여 UPDATE UPDATE LS_ST_INDEX_C SET LS_ST_IN.. 더보기
[Oracle] 쓰레기 테이블 삭제 쓰레기 테이블 지우기 select * from recyclebin ; flashback table MEMBER to before drop; [10g 부터] 보기 select * from user_recyclebin; select * from dba_recyclebin; 지우기 purge recyclebin ; purge dba_recyclebin; 등록일시 2012.03.28 21:21 (업로드 2012.03.28 21:21) 더보기
[Oracle] Oracle DB DUMP 및 PUMP 방법 // Oracle Pump import / export 방법 작성자 : KEI // 1.Pump 디렉토리 생성 및 권한 부여 SQL>CONN TESTUSER/***** SQL>CREATE DIRECTORY DATA_PUMP_DIR AS 'D:\oracle\admin\orcl\dpdump'; SQL>CONN sys/******* SQL>GRANT READ,WRITE ON DIRECTORY DATA_PUMP_DIR TO 권한줄계정; // 2.Pump export $ EXPDP 구계정/***** DIRECTORY=DATA_PUMP_DIR DUMPFILE=파일명.dmp // 3. Pump import 두개의 테이블스페이스를 사용하는 구계정 -->하나의 테이블스페이스를 사용하는 신계정 $ IMPDP 신계정/***.. 더보기
[Oracle] DB link 생성, SYNONYM 생성 DB link 생성, SYNONYM 생성 ### DB link만들기 ## TNSNAMES.ORA 에 등록 TEST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL=TCP)(HOST=192.168.0.35)(PORT=1521)) ) (CONNECT_DATA=(SID=ORCL) )) ## DB Link 생성 DB 링크 거는 방법 CREATE {PUBLIC} DATABASE LINK "{dblink_name}" CONNECT TO {user_id} IDENTIFIED BY "{password}" USING '{sid}' PUBLIC : 생성한 사용자 만이 아닌 다른 모든 유저들이 사용할 수 있도록 지정 dblink_name : 생성하고자 하는 DB LINK 명 .. 더보기
[Oracle] Oracle Database 10g 관리자 과정 Oracle Database 10g 관리자 과정 #1 장 Oracle Basic Architecture # Oracle Server - 정보 시스템으로의 통합된 접근을 가능하게 하는 데이터베이스 관리 시스템 - Oracel Server = Oracle Instance + Oracle Database로 구성 DBMS는 일종의 Program이고 Memory영역을 잡아 서비스를 수행한다 SQL>startup 1. Parameter 값을 가져온다.instance 메모리 공간(SGA와 background process)를 생성 : no mount 단계라고 한다 - oracle home밑에 있는 Parameter file을 읽어 parameter값을 가져온다 메모리 영역에 SGA와 내부에 sub component가.. 더보기
[Oracle] oracle 배치파일 만들기 oracle 10g 배치파일 만들기 ## orcl_start.bat net start OracleOraDb10g_home1TNSListener net start OracleServiceORCL net start OracleDBConsoleorcl isqlplusctl start ## orcl_stop.bat net stop OracleDBConsoleorcl net stop OracleServiceORCL net stop OracleOraDb10g_home1TNSListener isqlplusctl stop 더보기
[Oracle] Loopback Adapters for Oracle Installation in DHCP Networks Loopback Adapters for Oracle Installation in DHCP Networks DHCP 서버로부터 IP 주소를 임대하여 사용하는 서버에 Oracle10g를 설치하는 경우, 설치 중간에 경고 메시지가 발생하거나 일부 구성요소들의 설치가 실패 할 수도 있다. (DHCP 서버를 사용하고 있다면 '네트워크 구성 요구 사항을 확인 하는 중' 항목에 경고 표시가 뜸) 이런 경우는 Oracle10g를 설치하기 전에 Loopback Adapter를 설치하면 Oracle10g의 설치 과정에서 경고 메시지가 발생하지 않도록 할 수 있다. #1 cmd에서 ipconfig /all을 실행하여 DHCP 서버를 사용중인지 확인한다 NIC DHCP Enabled ... : Yes 인지 확인 #2 DHCP.. 더보기
[Oracle] iSQL*Plus 활성화 iSQL*Plus 활성화 # oracle10g에서 iSQL*Plus에 DBA로 접속하기 위해서는 http://localhost:5560/isqplus/dba 로 접속해야 합니다 그러나, 여기에서는 Oracle의 SYSDBA 권한을 가진 사용자가 아니라 webDBA룰을 가진 사용자로 로그온해야 합니다 # 작업은 다음 디렉토리에서 수행해야 합니다 $ cd $ORACLE_HOME/oc4j/j2ee/isqlplus/application-deployments/isqlplus # iSQL*Plus DBA URL 사용자 관리 (Linux , Uinx 다음을 실행) [oracle@centos4:/oracle/product/10.2.0/oc4j/j2ee/isqlplus/application-deployments/isql.. 더보기
[MS SQL Server] 관련 모음 //MS SQL Server DB 이동 방법 이전하려고 하는 데이터베이스 버전이 같거나 상위 버전이어야 가능합니다. 1. mdf 파일 이동 SSMS(SQL Server Management Studio) 에서 이동하려는 데이터베이스 우클릭 테스크 ->분리 선택 연결 삭제 체크 후 확인 이후 해당 데이터베이스 데이터 파일이 있는 경로로 가서 .mdf, .ldf등의 파일을 복사하여 이전하려는 서버에 이동 시킨 후, 같은 방식으로 데이터베이스 우클릭 ->연결 이후 복사된 데이터 선택 후 확인 2. 백업파일 이동 BACKUP DATABASE 데이터베이스명 TO DISK = '경로명\파일명.bak' WITH INIT 완성된 백업본을 대상 서버로 이동 이후 RESTORE DATABASE 데이터베이스명 FROM DIS.. 더보기
[sql] set define off 사용법 // '&' 때문에 데이터 에러시 입력 data값 중 '&'를 사용한 값이 있다면 # sql파일 윗단에 아랫줄을 삽입한다. set define off 더보기
[sql] view 예제 view만들기 샘플 DROP VIEW office.item; CREATE OR REPLACE FORCE VIEW office.item ( GRPCD, ITEMCODE, ITEMNAME, MAJORGROUP, AMT, USEYN, SHORT_NAME ) AS SELECT grpcd|| subgrp, menucode, alias, classcd, price, 'Y', abbralias FROM pomenu WHERE outlet = '2600' AND classcd IN ('F', 'B'); 등록일시 2011.12.30 11:01 (업로드 2011.12.30 11:01) 공개권한 전체공개 태그 #Oracle시아 더보기
[Oracle SQL] 계층형 query 정리 [oracle] 계층형 쿼리 CONNECT_BY # HIERARCHY 구조NODE - 하나의 노드는 실 테이블에서 하나의 로우에 해당PARENT - 부모노드 CHILD - 자식노드ROOT - 최상위에 있는 노드LEAF - 최하위에 있는 노드, 더 이상 하위에 연결된 노드가 없는 노드LEVEL - 층을 의미# CONNECT_BY_ROOT는 SATRT_WITH절에 명시된 ROOT노드를 가지고 옴# CONNECT_BY_ISCYCLE - A가 B의 자식노드임과 동시에 B가 A의 자식노드인 중복 참조를 하는 항목을 판별 # CONNECT_BY_ISLEAF - 해당 ROW가 LEAF인지 여부츨 체크, LEAF는 1, 아닐 경우는 0# CONNECT_BY_ISLEAF 사용에 예-- INDEX_CODE는 코드명 HI_.. 더보기
[Oracle SQL] ORA-01719: 포괄 조인 운영 (+)는 OR 또는 IN의 연산수를 허용 에러 // ORA-01719: 포괄 조인 운영 (+)는 OR 또는 IN의 연산수를 허용하지 않습니다 의 경우 쿼리만드는 방법 SELECT B.MBR_NAMEFROM ALBUM A, MBR BWHERE A.MBR_ID = B.MBR_ID(+)AND A.REGION_CODE1 || A.REGION_CODE2 LIKE '%'||4100||'%'## iBatisA.REGION_CODE1 || A.REGION_CODE2 LIKE '%'||#REGION_CODE_S#||'%']]>/* EXPERT.EXPERT_LIST_SELECT */SELECT B.MBR_NAMEFROM ALBUM A, MBR BWHERE A.MBR_ID = B.MBR_ID(+) 더보기
[Oracle SQL] merge into를 사용하여 insert 와 update MERGE INTO 테이블 A -- update 또는 insert할 테이블USING (테이블명 | SUBQUERY | 뷰) B -- 비교 대상ON(A와 B의 조인식) -- 대상테이블과 비교테이블의 조인식WHEN MATCHED THEN -- on절에서 일치하는 로우가 있다면UPDATE SET = , , .... -- 업데이트하고,WHEN NOT MATCHED THEN -- 일치하는 로우가 없다면INSERT INTO(컬럼명) -- insert를VALUES(값, 값, ...) -- 이 값으로 넣어라.9i이전버전이라면 MERGE문을 사용할 수 없습니다. MERGE /* UPDATE */INTO 테이블명 AUSING ( SELECT #YY# AS YY,#ACGRP_SE_CD# AS ACGRP_SE_CD,#BUSI.. 더보기
[MariaDB] CentOS에 MariaDB(MySQL) 설치 및 사용 CentOS 에 Maria DB설치작성자 : Kei설치 환경 CentOS 설치 버전 MariaDB 10.1.9 (stable)License : MariaDB GPL 2.0, DB Connector (LGPL) // 1. MariaDB의 yum repository 설정 # vi /etc/yum.repos.d/MariaDB.repo // centos 6[mariadb]name = MariaDBbaseurl = http://yum.mariadb.org/10.1/centos6-amd64gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDBgpgcheck=1 // MariaDB v5.5 baseurl을 수정http://yum.mariadb.org/5.5/centos6-amd64.. 더보기