일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- SQL
- sqlplus
- Oracle RAC
- RHEL4
- Linux
- Unix
- perl + 정규표현식
- dba
- oracle install
- solaris network
- rac
- perl string
- php5
- Network
- command & perl
- prompt
- patch
- grid
- memory
- solaris
- cygwin
- oracle
- PERL
- 오라클
- perl one-liner
- 연산자
- mariaDB
- fdisk
- bash
- MySQL
- Today
- Total
목록Data Architecture (82)
DATA 전문가로 가는 길
Parse Call을 제외하고 SQL 수행 중에 발생하는 Execute Call, Fetch Call을 줄이는 방법에 대해 설명하고, 데이터베이스 Call을 User Call과 Recursive Call로 나누어 각각을 최소화하는 원리와 방안에 대해서 설명 합니다. Call 통계 select * from emp; call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 1 0.01 0.03 0 0 0 0 Execute 1 0.00 0.01 0 0 0 0 Fetch 2 0.00 0.00 0 8 0 14 ------- ------ ..
Cardinality는 집합 안의 원소 개수, 오라클의 경우는 예측 Row 수라고 할 수 있습니다. 옵티마이저가 실행계획을 세우는 데 있어서 가장 중요한 것은 정확한 Cardinality의 계산이며, 동시에 그것은 실행계획이 비효율적인 가장 큰 원인이기도 합니다. 아래 실습은 기본적인 테이블을 생성 후에 ANALYZE TABLE을 하면 통계정보가 생성되며, 이후 Cardinality를 확인하는 방법과 Histogram에 따라서 정확한 값을 예측 불가능 하다는 것을 확인해보도록 하겠습니다. 즉, Histogram을 사용하지 않도록 설정합니다. Cardinality의 기본적인 개념을 먼저 파악하겠습니다. 1. Base Cardinality Base Cardinality란 Table의 전체 Row 수를 의미합..
금융 데이터를 가공할 때 결산년월을 선택하여 해당 년도의 계정 과목을 보여주고, 값이 얼마인지 출력하기도 합니다. 이번에는 기본적인 메타 관리를 원칙으로 데이터 항목, 데이터 값을 동적으로 처리하는 쿼리입니다. 가변적 컬럼을 pivot 함수 for in절에 넣을 수 있으면 좋지만, PL/SQL을 활용하지 않는 한 어려움이 있어서 원하는 결과를 위에서 받고, 아래서는 최종 결과를 리턴하는 방식으로 쿼리를 작성 하였습니다. [테이블 메타 관리 ERD] [테이블 생성] /* EstenPark_테이블컬럼 */ CREATE TABLE ESP_TB_COLUNM ( TB_UNIQ_NO NUMBER(9) NOT NULL, /* 테이블고유번호 */ COLUMN_ID VARCHAR2(32) NOT NULL, /* 컬럼ID..
데이터베이스 이관(마이그레이션)할 때 정상적으로 이관 되었는지 확인 할 때 사용하는 쿼리를 작성했습니다.운영하는 DB에 따라서 다를 수 있지만, 기본적으로 아래와 같습니다. 운영서버 MINUS 신규운영서버 UNION ALL 신규운영서버 MINUS 운영서버 대부분 운영서버에서 신규운영서버로 이관하게 되지만, 경우에 따라서 양쪽 다 비교해야 하는 경우가 생깁니다. 쿼리를 수행해서 타 시스템의 데이터를 한 번에 비교해 볼 수 있습니다. 대용량 데이터의 경우는 특정 일자 패턴을 잡아서 전일자부터 현재까지만 비교할 수 있도록 개선하였습니다. SELECT A.TABLE_NAME ,'SELECT ''NEW_DATA''' || ' AS DATA_TP, A.* FROM (' || A.NEW_DB_SQL || ' MINU..
오라클 넷에서 사용하는 tnsnames.ora 파일의 세부 속성입니다. TESTDB = // 서비스 이름 (DESCRIPTION = // 접속하고자 하는 대상 데이터베이스정보 (ADDRESS_LIST = // ADDRESS들의 모임 // ADDRESS : 접속하고자 하는 데이터베이스 서버의 리스너를 호출하기 위한 주소 정보 // Protocol, Hostname, Port를 지정할 수 있습니다. (ADDRESS = (PROTOCOL = TCP)(HOST = estenpark.com)(PORT = 1521)) ) (CONNECT_DATA = // SERVICE_NAME 옵션을 이용하여 접속할 리스너프로세스가 사용 // 하는 서비스 이름을 지정하거나또는 SID 옵션을 이용 // 데이터베이스의 SID 명을 지..
오라클 데이터베이스에 특정 사용자에 접속해서 테이블 정보를 조회해야 하는 경우가 생기는데 USER_TAB_COLUMNS, USER_TAB_COMMENTS, USER_CONSTRAINTS 딕셔너리를 이용하여 테이블 레이아웃 형태와 같이 뽑을 수 있습니다. SELECT X.TABLE_NAME ,X.TABLE_COMMENTS ,X.COLUMN_NAME ,X.COLUMN_COMMENTS ,X.PK_FLAG ,X.FK_FLAG ,X.NULL_FLAG ,X.DATA_TYPE || X.DATA_LENGTH as COLUMN_DATA_TYPE FROM (SELECT A1.TABLE_NAME TABLE_NAME ,A1.TABLE_COMMENTS TABLE_COMMENTS ,A1.COLUMN_NAME COLUMN_NAME..
보통 인터페이스에서 수신받은 데이터를 일괄적으로 테이블에 쌓는 작업을 많이 하게 되는데 그때 필요한 작업이 SQL Loader, 자바, C에서 로딩하는 여러 가지 방식이 있을 수 있습니다. 그러나 소스코딩이 많아서 업로딩 할 때 시간이 많이 들기 때문에 Oracle에서 추천하는 External Table을 이용하여 파일을 빠르게 로딩할 수 있습니다. 대량의 데이터를 업로딩 해보지 않았지만 500MB 파일을 로딩하는 데 큰 문제는 없었습니다. 다만, External Table -> 일반 적재 테이블 -> 서비스될 테이블 순으로 변경 절차가 많아진다는 단점은 보입니다. 그러나 DB 설계 시 표준화 작업을 제대로 했다면 위와 같은 일괄작업을 손쉽게 할 수 있습니다. 그럼 External Table(익스터널 테..
오라클 패키지를 분석하다보면 사용하고 있는 테이블이 무엇인지 알고 싶을 때가 많습니다. dba_dependencies 딕셔너리를 이용해서 확인 하셔도 되지만, 더 나아가서 패키지 안에 프로시저별로 테이블을 뽑고 싶을 때 사용하시면 됩니다. [ 쿼리 ]SELECT X.OWNER, X.NAME, X.TYPE, X.PROCEDURE_NAME, X.TABLE_NAME, X.LINE || ' ~ ' || X.LINE_NEXT AS LINE, X.TEXT AS ORG_PROCEDURE_NAME FROM (SELECT A.*, Trim(Regexp_substr(A.TEXT, '(PROCEDURE\s+)(.+)(\()', --> subexpressions ? ??? ??? 1, --> ???? 1, --> ???? '..