본문 바로가기

oracle

Pro*C 컴파일 에러 PCC-S-02201, Encountered the symbol, PCC-F-02102, Fatal error 오라클 Pro*C 프로그램을 컴파일하다 보면, 일부 분석함수(Analytic function)들을 제대로 인식하지 못해서 에러가 나는 경우가 있습니다. 분명히 SQL*Plus 상에서는 제대로 수행되는 SQL 인데, Pro*C 에서 Embeded SQL 형태로 사용하면 PCC-S-02201 에러가 발생합니다. $ make -f multirows.mk proc multirows INCLUDE=include/ include=/u02/app/oracle/product/19.12.0/dbhome_1/precomp/public/ include=/u02/app/oracle/product/19.12.0/dbhome_1/rdbms/demo/ include=/u02/app/oracle/product/19.12.0/dbho.. 더보기
Oracle RAC ASM 에서 외부 파라메타파일을 spfile 로 넣는 방법 (create spfile from pfile) Oracle DB 파라메타파일인 init.ora 파일을 spfile 로 바꾸고 싶은 경우, ASM 을 사용하지 않는 환경에서는 그냥 create spfile from pfile; 커맨드만 실행하면 알아서 spfile 을 생성해줬습니다. 하지만, ASM 을 사용하는 RAC 환경에서는 반드시 DB를 Startup(Mount) 해준 후에 커맨드를 실행해야 합니다. DB Mount 안한 상태에서 커맨드를 날리면 아래와 같은 에러들을 만나게 됩니다. SQL> create spfile='+DATA/ORA19/PARAMETERFILE/spfile.275.1122335907' from pfile; create spfile='+DATA/ORA19/PARAMETERFILE/spfile.275.1122335907' from.. 더보기
Oracle RAC ASM 에 있는 파라메타파일 오류로 Startup 안되는 경우 (ORA-00821, ORA-01078, ORA-01565, ORA-27037) Oracle ASM 을 사용하는 RAC 환경에서 데이터베이스 파라메타 파일은 $ORACLE_HOME/dbs 디렉토리가 아니라, ASM 스토리지에 위치하고 있습니다. 파라메타 잘못 수정해서 startup 시 에러가 나는 경우, 보통은 create pfile from spfile; 커맨드로 수정해서 띄우면 되는데 ASM 에서는 이게 안되는 경우가 있습니다. SQL> startup ORA-00821: Specified value of sga_target 10240M is too small, needs to be at least 11648M ORA-01078: failure in processing system parameters SQL> SQL> create pfile from spfile; create pf.. 더보기
오라클 In-memory (인메모리) 관련 유용한 스크립트 모음 ◆ 인메모리 공간 할당/사용율 조회 스크립트 SGA 내에 할당된 In-Memory Column Store 크기 및 사용현황을 조회합니다. $ cat imarea.sql col i format a1 col pool format a9 col alloc_gbytes format 999,999.999 col used_gbytes format 999,999.999 col "USED%" format 999.999 col populate_status format a15 select substr(inst_id, 1, 1) i, pool, round(alloc_bytes/1024/1024/1024, 3) alloc_gbytes, round(used_bytes/1024/1024/1024, 3) used_gbytes, de.. 더보기
오라클 In-memory (인메모리) 기능 사용방법 지난번 포스트에서 인메모리(In-memory) 에 대한 기본적인 개념에 대해 알아봤습니다. 이번에는 이 인메모리 기능을 사용하기 위해서 Oracle DB 에서 설정하는 방법을 확인해보겠습니다. 인메모리 기능은 Oracle DBMS 내에 이미 내장되어 있기 때문에 추가로 뭘 더 설치하거나 하는 것은 필요없습니다. 단지, DBMS 내에 인메모리로 사용할 메모리 공간을 확보해주고, alter table 구문으로 테이블 설정만 변경해주면 됩니다. * DB에 인메모리 파라메타 세팅 > alter system set inmemory_size = 1G scope=spfile; // DB버전은 12.1.0.2 이상이어야 함. // INMEMORY_SIZE 파라메타 값을 100M 이상으로 설정해야 함. (설정후 rest.. 더보기
오라클 Varchar2 타입 길이제한 4000 에서 32K 확장 (max_string_size 설정) 오라클 Varchar2 타입의 길이제한은 4000 바이트입니다. 더 크게 사용하려면 Long 이나 LOB 타입을 써야합니다. 하지만, Long 이나 LOB 을 사용하는 경우 각종 스트링 작업관련 함수들을 못쓰는 불편함이 있습니다. Oracle 12c 부터는 이것을 늘릴 수 있는 방법이 제공되는데, DB 파라메타 max_string_size 를 바꿔주면 됩니다. (standard -> extended) 이걸 alter system 명령으로 그냥 바꾸면 아래와 같이 ORA-14694 에러를 만나게 됩니다. SQL> alter system set max_string_size=extended; alter system set max_string_size=extended * ERROR at line 1: ORA-0.. 더보기
오라클 Heatmap 정보 조회 및 Clear 하는 방법 Oracle Heatmap 기능을 On 했을때 ( alter system set heat_map=ON; ) 참조할 수 있는 Heatmap 관련 스크립트입니다. ◆ Heatmap 정보 조회 * 스크립트 #1 SQL> set lines 150 col owner format a10; col object_name format a20; col subobject_name format a15; col segment_read_time format a20; col segment_write_time format a20; col full_scan format a20; col lookup_scan format a20; select owner, object_name, subobject_name, segment_read_time.. 더보기
오라클 In-memory (인메모리) 기능 소개 (Oracle을 메모리DB로 만들어주는) Oracle In-memory 기능은 12c 버전부터 제공되는 Oracle의 유료옵션입니다. 메모리(RAM)에 테이블 또는 파티션을 올려놓음으로써 Disk I/O 시간을 제거하여 성능을 크게 개선하고자 하는 기능입니다. 그럼, 과거에는 Oracle DBMS 가 메모리를 사용하지 않았냐? 그것은 아니고, Buffer Cache 라는 메모리공간에 테이블의 블록들을 올려놓고(캐싱해서) 사용해왔었습니다. 다만, 기존 버퍼캐시에는 테이블/파티션을 통째로 올려놓았던 것이 아니고 일부 블록들만 올려놓았었고, Row Format 으로 되어있는 Disk 에 있는 블록을 그대로 메모리에 로딩해서 캐싱하는 형태였습니다. 하지만, In-Memory 기능에서는 테이블/파티션을 통째로 올려놓고, Row Format 이 아닌 Co.. 더보기