수행한 SQL Cursor를 Flush 해아만 하는 상황이 종종 발생한다. 명령문은 아래와 같으며 살제 사용하는 방법은 아래 글을 참고 하시기 바랍니다. [ 명령문 ] EXEC SYS.DBMS_SHARED_POOL.PURGE ( SQL의 ADDRESS, SQL의 HASH_VALUE ,'C'); [1] 아키텍처 확인 SQL을 수행하면 내부적으로 SQL Cursor(LCO = Library Cache Object) 로써, SGA -> Shared Pool -> Shared SQL Area에 저장됩니다. [2] SQL을 10개 실행하여 Cursor 10개 생성 주석에 다른 숫자를 넣어 SQL FULL TEXT 서로 다르게 함. SELECT /* KTH 1 */ * FROM EMP; SELECT /*..
Unique 컬럼은 집합에서 모든 ROW 사이에 서로 다름을 보장해주는 컬럼 or 컬럼들이다. 물리적으로는 Unique Index가 그 역할을 하고 있다. Partitioned Table에서 Unique를 생각해 보았다. 아래 3가지 Unique 경우의 수가 있다. 1) Unique Non-Partititioned Index - "전체" 대상 집합으로 Unique 하게 해준다. 2) Unique Local-Partitioned Index - Local 이라서 파티션 당 Unique함을 표현하는 것 같다. 하지만 "전체" 기준에서 Unique 하면, 파티션에서도 당연히 Unique 해진다. 그러므로 Unique Index 안에는 필수로 "파티션 키"가 포함되어야 한다. ( 파티션 키가 포함 되지 않으면 D..
년월일(YYYYMMDD) 컬럼을 이용하여 년 파티션 테이블로 구성 하였다. 여기서 년 별로 [NO] 컬럼이 UNIQUE한 데이터가 구성되도록 하려고 합니다. INDEX 생성 스크립는 어떻게 해야 할까? == 문제 예제 테이블 스크립트 ==; CREATE TABLE TEST ( NO VARCHAR2(10), YYYYMMDD VARCHAR2(8), C1 VARCHAR2(10), C2 VARCHAR2(10), C3 VARCHAR2(10) ) PARTITION BY RANGE ( YYYYMMDD ) ( PARTITION P_2023 VALUES LESS THAN ( '2024' ), PARTITION P_2024 VALUES LESS THAN ( '2025' ), PARTITION P_2025 VALUES LE..
1. Synology 다운 : Docker 수행 > 레지스트리에서 postgre 검색 더블클릭 다운하자. 2. 이미지 확인 > 클릭 : 다운 된 내역은 이미지 탭에 있다. postgres:16.1 클릭 3. 일반설정 > 고급설정 > 시작 : 2번 클릭시 설정 팝업이 나온다. 이때 아래 내용만 기입하자 1) 포트설정 : - 로컬포트 : 25432 ( 외부접속 포트 ) - 컨테이너포트 : 5432 2) 환경 : 변수 2개 추가 - POSTGRES_USER : postgres - POSTGRES_PASSWORD : 1234 ( 지정하지 않으면 DB가 실행되지 않음 ) PASSWORD 입력되지 않으면 DB가 시작되지 못함 4. 컨테이너 확인 ( postres16 확인 ) : 3번 설..
ERROR CODE / 설명 : 티베로 튜닝 프로젝트의 TEST DB에서 INDEX 생성 중 에러 발생 Time Start : 2023-08-06 오전 10:58:35.270 [10:58:41.835]java.sql.SQLException: JDBC-21009:No tempfile was found. Time End : 2023-08-06 오전 10:58:41.835 Elapsed Time for Script Execution: 6565.563msecs 발생 원인 : TEMP FILE 조회 시도, TEMP FILE 없었기 때문에 인덱스 생성이 안됨SELECT * FROM DBA_TEMP_FILES; 0 Rows 해결방법1. 테이블 스페이스 생성 ( 공부 할 때 )create temporary tables..
ERROR CODE / 설명 : 접속하려는 DB Version 보다 낮은 버전의 Client or Server Version으로 접속을 시도하는 경우 볼 수 있는 에러코드 ORA-28040 : NO matching authentication protocol 발생 원인 11G CLIENT로 원격 DB 19c 에 접속하려고 함. 에러 발생 ( ORA-28040 : NO matching authentication protocol ) 해결 방법 1. sqlnet.ora 파일 수정 : "SQLNET.ALLOWED_LOGON_VERSION=10" 기입하기 ( 서버보다 낮은 클라이언트 버전도 접속을 허용하겠다는 의미 ) 2. 비밀번호 변경 SQLNET.ORA 파일 변경 전에 이미 생성된 계정이 위 작업에 영향을 받..
ERROR CODE / 설명 : IN 절에 INPUT값 수가 1000개를 초과할 경우 발생하는 에러. ORA-01795: maximum number of expressions in a list is 1000 발생 원인 : 보통 Soluntion 프로그램에서 IN절에 많은 값을 넣는 경향이 있다. 1000개가 넘으면 위 에러가 발생하니 유의해야 한다. -- [1] IN절 내부에 :1 ~ :1001 까지 넣기 SELECT * FROM EMP WHERE EMPNO IN ( :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,:32,:33,:34,:35,:3..
ERROR CODE / 설명소수점 데이터 타입 컬럼에 자리수를 초과하는 데이터를 넣을려는 경우 발생하는 에러 ORA-01438: value larger than specified precision allowed for this column 발생 원인 컬럼 COL2 는 NUMBER(7, 2)로 정수 5자리, 소수점 이하 2자리로 구성되어 있다. 정수 6자리를 저장하다가 에러 발생함-- [1] TEST 테이블 생성CREATE TABLE IMSI_TABLE ( col1 number(3) , col2 number(7,2) );-- [2] TEST 테이블 INSERT 시도declare i integer;begin INSERT INTO imsi_table ( col1, col2 ) VALUES..
ERROR CODE / 설명 : 보통 '' 안에 문자열을 넣음. 싱글 쿼테이션(')으로 감싼 문자열을 String Literal 이라함.. 여기에 담을수 있는 데이터의 크기 는 최대 4000 BYTE 이다. 4000 BYTE를 초과 할 경우 발생하는 아래 에러가 발생 함 ORA-01704 : string literal too long 발생 원인 : 테이블의 CLOB 컬럼에 '' 4000 BYTE를 넘는 문자열을 넣으려고 시도하다 발생됨. 이는 CLOB 컬럼에 데이터를 넣을수 없는 것이 아니라, '' 안에 4000 BYTE가 넘게 있어 발생 한 것임 -- [1] DB의 캐릭터셋은 UTF8 > 한글 : 1자, 3 BYTE / 영문, 숫자 : 1자, 1 BYTE SELECT LENGTH('데'), LENGTH..
ERROR CODE / 설명: 테이블 스페이스에 연결된 DATAFILE에 사용가능한 공간을 모두 소진하여 데이터를 입력하지 못하는 경우 발생하는 에러 ORA-01652 : unable to extend temp segment by 1280 in tablespace TS_BIG_D01; 발생 원인[1] 테이블 생성 시도 : SQL을 수행하는 접속계정의 DEFAULT TABLESPACE는 TS_BIG_D01 CREATE TABLE TB_ADMDONG_PASSENGER_TEST AS SELECT * FROM TB_ADMDONG_PASSENGER_TOT; `[2] ERROR 발생 ORA-01652 : unable to extend temp segment by 1280 in tables..