본문 바로가기

Database&WAS/Oracle

Column의 Comment를 이용한 테이블 정의서 작성용 쿼리 Excel로 테이블 정의서 작성하려고 만든 쿼리Column의 Comment를 기준으로 만드므로 Comment를 먼저 추가시켜주고 작업하면 됨 SELECT ROWNUM "순번", Y.*FROM ( SELECT COLUMN_NAME "컬럼명", COMMENTS "컬럼", D_TYPE "타입", ISNULL "NULL여부", NVL2 (POSITION, 'Y', '') "PK여부", '' "비고" FROM (SELECT ROWNUM AS SEQ, A.COLUMN_NAME, B.COMMENTS, A.DATA_TYPE || '(' || DECODE ( A.DATA_TYPE, 'NUMBER', A.DATA_PRECISION || DECODE (A.DATA_SCALE, '0', '', ',' || A.DATA_SCA.. 더보기
Toad 에서 XE 10버전 연결 문제 보호되어 있는 글입니다. 더보기
Oracle Comments(주석) 조회 /* 컬럼 주석 조회*/ SELECT * FROM ALL_COL_COMMENTS WHERE TABLE_NAME LIKE 'E_%' AND COMMENTS LIKE '%TEST%'; /* 테이블 주석 조회 */ SELECT * FROM ALL_TAB_COMMENTS; 더보기
SQL 스크립트 실행시 & 데이터 입력 test.sql의 내용을 아래와 같이 작성 ---------------------------------------set define off;... INSERT INTO LOC(LOC_CODE,POS_LON,POS_LAT,REMARK) VALUES('MRL','145.58333','-20.066668','Miner''s & Lake');.. set define on;--------------------------------------- sqlplus에서 아래와 같이 스크립트 실행 SQL>@ 'c:\test.sql'; [기타] - escape문자 사용 SQL>set escape '\';SQL> INSERT INTO LOC(LOC_CODE,POS_LON,POS_LAT,REMARK) VALUES('MRL','1.. 더보기
Procedure, Function 등에서 필드나 특정단어 검색 SELECT OBJECT_NAME, OBJECT_TYPE, TEXT FROM USER_OBJECTS A, USER_SOURCE B WHERE OBJECT_TYPE IN ('TRIGGER', 'PROCEDURES', 'FUNCTION', 'PACKAGE', 'PACKAGE BODY', 'PROCEDURE', 'VIEW') AND A.OBJECT_NAME = B.NAME AND UPPER (B.TEXT) LIKE '%검색어%' 더보기
2개의 tnsnames.ora로 인한 TOAD에서의 ORA-12154 토드(TOAD)에서 연결시 Oracle XE, Oracle Client 2가 설치되어 있어 둘다 정상작동중일때ORA-12154 에러가 뜨는 경우(Connect Using 을 바꾸어도) 접속하려는 TNS정보가 tnsnames.ora에 없는지 2개의 tnsnames.ora 확인 후 없을 경우 추가 tnsnames.ora위치 >app\사용자ID\product\11.2.0\client_1\network\admin >oraclexe\app\oracle\product\10.2.0\server\NETWORK\ADMIN\tnsnames.ora 더보기
패스워드 변경 1. dba로 로그인 c:\>sqlplus "/as sysdba" 2. 사용자명 조회 SQL> select username from all_users ; 3. 사용자명 lock걸린 경우 풀기 (ORA-28000 : the account is locked) SQL> alter user [사용자명] account unlock; 4. 사용자 패스워드 변경SQL> alter user [사용자명] identified by [패스워드]; 더보기
Oracle DB Link --> 로컬 DB에서 원격지(ex. NL -> DB링크명) DB에 접속 가정 [로컬에서 다음과 같이 설정]CREATE DATABASE LINK NLCONNECT TO 아이디IDENTIFIED BY 패스워드USING '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = '서버IP')(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = 'SID값') ) )' ; [제거]DROP DATABASE LINK NL; --> 또는 위와 같이 ip정보를 직접 주지않고 로컬의 tnsnames.ora에NL =(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST =.. 더보기
오라클 XE 8080 포트 충돌 (톰캣) 톰캣 등이 8080 Port로 사용되어 지고 있는데 Oracle XE 를 설치하며 충돌로 사용하지 못할경우 Oracle http Port를 변경 C:\oraclexe\app\oracle\product\11.2.0\server\bin\sqlplus.exe 실행 SQL > connect system/패스워드SQL > exec dbms_xdb.sethttpport(변경포트); ex) Oracle http port를 9090 포트로 변경한 경우변경전 : http://127.0.0.1:8080/apex/f?p=4950:1:4570169366321010변경후 : http://127.0.0.1:9090/apex/f?p=4950:1:4570169366321010 더보기
날짜 관련 쿼리 ex) 종료일 오전 9시 기준으로 종료여부 및 종료일 표시SELECT TO_CHAR (STOPDATE, 'YYYY.MM.DD (DY)'), -- 종료일 SIGN (STOPDATE - TO_DATE (TO_CHAR (SYSDATE, 'YYYYMMDD') || '090000', 'YYYYMMDDHH24MISS')) AS STOPYN FROM CUST; SELECT TO_TIMESTAMP(TO_CHAR(STOPDATE,'YYYYMMDDHH24MISS')) - TO_TIMESTAMP(TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS')), TO_CHAR(TO_TIMESTAMP(TO_CHAR(STOPDATE,'YYYYMMDDHH24MISS')) - TO_TIMESTAMP(TO_CHAR(SYSDATE,'.. 더보기
제약조건 검사 시점 제약조검 검사시 데이터변경(insert,update,delete) 시점에 검사하는 방법과 트랜잭션 커밋시점에 검사하는 방법 ex) 변경시점 검사ALTER TABLE customerADD CONSTRAINT FK_Customer_CodeFOREIGN KEY (Code)REFERENCES CustomerCode; ex) 커밋시 검사ALTER TABLE customerADD CONSTRAINT FK_Customer_CodeFOREIGN KEY (Code)REFERENCES CustomerCodeINITIALLY DEFERRED; 성능등을 고려해서 작업, 커밋시점에 검사할 경우 커밋시점에 일관되게 검사하므로 대량의 행을 가지고 하는 작업의 경우 성능저하 및 문제발생가능성 있음, 소량의 데이터 작업일 경우 커밋시.. 더보기
Oracle 11g LISTENER OS: Windows Server 2008 DB: Oracle 11g Network: Private Network (Public IP 공유기 사용) ㅁ 특정포트로 리스너를 세팅 후 Database 연결 * 시나리오 환경 - 전역 데이터 베이스 명으로 'dbnet.XXX.com' - 데이터 베이스 SID : dbnet - Private IP : 10.0.0.4 - 리스너명 : LISTENR_DBNET - 리스너포트: 1550 (default 1521를 사용하지 않음) A. 리스너 생성 1. Oracle Net Manager 실행 2. 리스너를 선택 후 [+] 버튼으로 리스너생성 3. [수신위치] 에 탭에 호스트 및 포트 지정 * 서비스 이름 지정의 dbnet은 Database 생성하기 전에 나타나 있지 않.. 더보기
WFMLRSVCApp.ear 파일을 찾을 수 없는 오류 오라클 11g 64Bit 를 다운 받아 설치할 경우 2개의 압축파일을 푼 폴더명이 win64_11gR2_database_1of2 win64_11gR2_database_2of2 라고 가정하면 win64_11gR2_database_2of2\database\stage\Components 폴더의 파일들을 win64_11gR2_database_1of2\database\stage\Components 폴더로 복사하여 설치하면 됨 * 같은 폴더에 파일이 위치하지 않아 오류 발생 더보기
Oracle 11g Client 제거 - Windows 7(x64) [환경] - Windows 7 (x64) - Oracle 11g Client x64 * TOAD 를 사용하려면 32bit용 Oracle Client를 설치해야함 .. x64설치시 'You have no Oracle clients installed' 등의 오류발생 * TOAD는 10.X 버전을 써야 Oracle 11g Client 사용가능(OCI.dll version 문제) * Oracle 10g Client 는 설치시 오류가 발생 # 2011/09/28 현재 - 전적으로 개인 환경임 (XP/Oracle 이전 버전에서는 큰 불편함이 없었는데.. --; ) [Oracle Download] http://www.oracle.com/technetwork/database/enterprise-edition/downl.. 더보기
[Oracle] COALESCE() 함수 - COALESCE(a1, a2, a3, a4,... aN) * a1 부터 aN까지 첫음으로 null 이 아닌 값을 리턴 * 모든 값이 null 이면 null 리턴 ex) sale1/2/3 중에 순서대로 비교해서 null 이 아닌 첫번째 값을 가져오고 모두 null이면 0을 리턴 SELECT COALESCE(sale1,sale2,sale3,0) FROM product WHERE id = :key1 DECODE로 쓰면... DECODE(sale1,NULL, DECODE(sale2,NULL,DECODE(sale3,NULL,0,sale3),sale2),sale1) NVL 쓰면... NVL(COALESCE(sale1,sale2,sale3),0) 또는 NVL(sale1,NVL(sale2,NVL(sale3,0))).. 더보기
[Oracle] NULLIF() 함수 - NULLIF(a1, a2) a1 = a2 면 null 리턴, 같지 않으면 a1을 리턴 ex) SELECT old_id, NULLIF(new_id,old_id) "new_id" FROM customer CASE 문으로 쓴다면.. CASE WHEN new_id = old_id THEN NULL ELSE new_id END DECODE 로 쓴다면.. DECODE(a1,a2,NULL,a1) 더보기
[Oracle] SUM() 함수 합계를 구하는 함수 ^^; 요지는 각 레코드별 합계를 구하되 한편으로 총 누계를 한꺼번에 구하는 방법 방법이야 조인이든, 합계 변수를 둬서 프로그램 하든, 합계 쿼리만 한번 더 돌리든...여러가지지만 그중 하나.. 예제를 보는게 나을 듯 ㅎㅎ SELECT mcode, total, unload, transfer, special, SUM (total) OVER (ORDER BY mcode) AS t_weight, SUM (unload) OVER (ORDER BY mcode) AS t_unload, SUM (transfer) OVER (ORDER BY mcode) AS t_trnasfer, SUM (special) OVER (ORDER BY mcode) AS t_sepcial FROM (SELECT a.mco.. 더보기
HINTs #1 - [Oracle] The application developer and end users know more about the data and how it is used than the optimizer does. Oracle provides a method known as HINTS to enable you to tell the optimizer the method to use for the SQL statement. Oracle recommends that HINTS not be used as the main method of controlling the optimization for SQL statements. Instead, the SQL statement should be appropriately rewritten.. 더보기
HINTs #2 - [Oracle] Specifies if any of the tables or indexes in the statement are analyzed, use the Cost Based optimizer otherwise use the Rule Based. If they are analyzed, it uses the cost based optimizer to provide the best response time for batch processing. Processing the SQL statements using ALL_ROWS is the best practice for databases that have large amounts of batch processing, such as Data Warehouses. It is.. 더보기
Hint 요약 - [Oracle] A. initialization parameter중 OPTIMIZER_MODE 지정가능 값 1.ALL_ROWS Goal : Best Throughput 용도 : 전체 RESOURCE 소비를 최소화 시키기 위한 힌트. Cost-Based 접근방식. 예 : SELECT /*+ALL_ROWS */ EMPNO,ENAME FROM EMP WHERE EMPNO = 7655; 2.FIRST_ROWS Goal : Best Response Time 용도 : 조건에 맞는 첫번째 row를 리턴하기 위한 Resource 소비를 최소화 시키기위한 힌트. Cost-Based 접근방식. 특징 : - Index Scan 이 가능하다면 Optimizer가 Full Table Scan 대신 Index Scan을 선택한다. - Index.. 더보기