목록전체보기 (58)
뽁
OGG 를 이용한 데이터 복제를 하기 위해 동기화 대상 테이블에 대한 supplemental logging 작업이 필요함. 하지만 Table 에 대한 supplemental logging mode 를 적용 시 Table Lock 이 발생하기 때문에 DB사용율이 적은 시간대에 작업을 하는 것을 권장함. -Table 에 대한 supplemental logging mode 발생 가능 현상 특정 테이블에 대한 LOCK 발생으로 online transaction 지연, WAS서버 wait event 발생 가능. -방지대책 : DB Downtime 이 불가한 경우 DB 사용량이 적은 시간대에 진행하는 것을 권장함. 감사합니다.
SET @V_BASE_YMD = '20190701'; SET @V_START_YMD = '20190201'; SET @V_END_YMD = '20190229'; SELECT s.column1 ,s.column2 FROM table1 /*table1의 collation은 utf8mb4_0900_bin */ WHERE base_ymd = @V_BASE_YMD ; 실행 시 오류 발생 SQL오류 (1267): Illegal mix of collations (utf8mb4_0900_bin,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operation '=' 아래와 같이 WHERE 절에 collate 문 추가해서 해결했어요. SELECT s.column1 ,s.column2..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bps9jS/btqzZMasWYi/y4IMmVLvktfDPPARMWiC5k/img.png)
튜닝 대상 쿼리문 SELECT ti.* FROM ti WHERE ti.agr_dy = IFNULL('20191125',DATE_FORMAT(SYSDATE(),'%Y%m%d')) ; ti 테이블의 인덱스는 IX_TI_01(agr_dy) 있음. 그런데 explain을 보면 Using Temporary 가 보이고. rows 도 9백만건으로 테이블 전체 건수이다. filtered 가 보이므로 ti.agr_dy = IFNULL('20191125',DATE_FORMAT(SYSDATE(),'%Y%m%d')) 조건이 인덱스를 타지 않고 fileter 로 처리되었다. 튜닝1 - 조건절의 IFNULL() 를 IF~THEN 구문으로 대체 - ti.agr_dy = l_arg_dy 조건을 WHERE절 맨 처음으로 위치. (순서..
오라클 압축(compress) 파티션이 OGG 연동 대상일 경우 방법. 1. OGG 에서 오라클 압축 테이블을 지원하려면 아래와 같이 DB작업이 추가되며 1) DB SGA 내 STREAMS_POOL_SIZE를 설정하여 OGG 추출에 필요한 사이즈를 할당해야 하며, (각 노드별 최소 1024MB 이상 권장, SGA 사이즈 고려) 2) exec dbms_goldengate_auth.grant_admin_privilege(‘OGG’) 프로시저 실행을 통해 추가 권한부여가 필요합니다. 3) _log_read_buffer_size 히든 파라미터를 통해 log buffer read value를 default값보다 크게 할당하여 성능적인 부분의 향상을 어느정도 기대할 수 있습니다. ※ 해당 추출 방식은 동작 방식의 ..
/* 표준 시간대 파일 조회*/ SELECT * FROM v$timezone_names; /* 세션 시간대 확인 */ select sessiontimezone from dual; -------- Asia/Seoul /* DB 시간대 확인 */ select dbtimezone from dual; --------- +09:00 select to_char(systimestamp ,'TZH:TZM') from dual; -------- +09:00 ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT ='YYYY.MM.DD HH24:MI:SS TZR TZD'; ALTER SESSION SET TIME_ZONE = 'Canada/Eastern'; SELECT current_timestamp ..
대량 데이터 집계 처리 시 속도 저하가 발행하여 TMP table 사이즈를 증가하여 해결. Tmp table 관련 파라메터 설정 - tmp_table_size : 검색 결과 등을 담기 위한 메모리 임시 테이블 크기 - max_heap_table_size : 사용자가 생성한 메모리 테이블의 최대 크기 (보통 tmp_table_size와 관계 있으며 유사 크기로 지정) - tmp_table_size / max_heap_table_size : 기존 128M에서 512M 로 변경 - MySQL tmp 사용 영역 : /MYSQL_DATA/tmp/ (1.9 TB)
1. oracle db에서 이관 테이블을 UTL 방식으로 이관시 데이터가 txt 파일로 생성 txt 파일에 생성된 data중 이모티콘은 깨져서 문자로 인식이 불가 ex) '빵빵~🍞' -> '빵빵~' ) -> 부분이 인식 불가능 2. oracle db에서 data 받을때 hextoraw 함수로 풀어서 받음 ex) nvl(rawtohex(MBR_MEMO_CONT), '\N') : MBR_MEMO_CONT 컬럼을 16진수로 풀어서 받음 3. 풀어받은 data를 운영 MySQL DB 로 이관시 UNHEX 함수 사용 set MBR_MEMO_CONT = UNHEX(@var1)
SELECT A.TABLE_SCHEMA "DB", A.TABLE_NAME "테이블ID", A.TABLE_COMMENT "테이블명", B.INDEX_NAME "인덱스명", B.COLUMN_NAME "컬럼ID", C.DATA_TYPE "데이터타입", CASE WHEN C.NUMERIC_SCALE IS NULL OR C.NUMERIC_SCALE = '0' THEN CASE WHEN C.NUMERIC_PRECISION IS NOT NULL THEN C.NUMERIC_PRECISION ELSE C.CHARACTER_MAXIMUM_LENGTH END ELSE CONCAT(C.NUMERIC_PRECISION, ',', C.NUMERIC_SCALE) END "데이터사이즈", CASE WHEN B.INDEX_NAME =..
-- USE INFORMATION_SCHEMA ; (DB들 선택하는 명령 입니다. USE DB명) SELECT A.TABLE_SCHEMA AS DB , A.TABLE_NAME AS Table_ID, A.TABLE_COMMENT AS Table_NAME , B.COLUMN_NAME AS Column_ID , B.COLUMN_COMMENT AS Column_Name , B.DATA_TYPE AS Data_Type , -- B.CHARACTER_MAXIMUM_LENGTH AS Col_Length, -- CHAR character type에 대해 문자 단위로 보고 싶으면 CHARACTER_MAXIMUM_LENGTH 를 사용하시면 됩니다. -- B.CHARACTER_OCTET_LENGTH AS Col_Length..
/************************************************** 테이블명 : T_Table **************************************************/ -- DELETE FROM T_Table; START TRANSACTION; INSERT INTO T_Table( column1, column2....columnN ) SELECT T.RNUM ,value1 ,value2 FROM ( SELECT it.* ,@ROWNUM:=@ROWNUM+1 as RNUM FROM table_name it /*데이터가 많은 테이블*/ ,(select @ROWNUM:=0)as R LIMIT 100 /*생성하고 싶은 개수 작성*/ ) T ; COMMIT;