반응형

non standard block size를 사용하는 tablespace 생성과 삭제
| 사용 명령어 1. database buffer cache나 redo log buffer 의 크기를 확인함 SQL> SELECT NAME, BYTES FROM V$SGASTAT 2 WHERE NAME LIKE '%buffer%' AND POOL IS NULL 2. Shared pool, large pool, java pool 의 크기를 확인함 SQL> SELECT POOL, SUM(BYTES) FROM V$SGASTAT 2 WHERE POOL IS NOT NULL 3 GROUP BY POOL; 3. 다양한 database buffer cache의 상태를 확인함 SQL> SELECT NAME, BLOCK_SIZE, BUFFERS, BUFFERS*BLOCK_SIZE AS "SIZE" 2 FROM V$BUFFER_POOL; 4. BLOCKSIZE에 지정된 크기의 block size를 갖는 tablespace를 생성함 SQL> CREATE TABLESPACE <tablespace명> 2 DATAFILE '<data file>' SIZE <크기> 3 BLOCKSIZE <크기>; |
[Standard block size 확인]![]() SHOW PARAMETER db_block_size * db_block_size: Oracle DB의 기본 블록 크기(보통 8KB). DB가 데이터를 읽고 쓰는 최소 단위이며 한 번에 8KB씩 읽고 씀 [각 tablespace별 block 크기를 확인] ![]() SELECT tablespace_name, block_size FROM dba_tablespaces; [SGA 전체 메모리 크기 요약 조회] ![]() SHOW SGA; [SGA 관련 파라미터 전체 조회] ![]() SHOW PARAMETER sga_ * SGA영역은 자동으로 관리 됨 [cache 관련 크기 파라미터 전체 조회] ![]() SHOW PARAMETER cache_size * db_cache_size, buffer cache 등 조회 [SGA에서 pool별 메모리 크기 합계 조회] ![]() SELECT pool, sum(bytes) FROM v$sgastat WHERE pool IS NOT NULL GROUP BY pool; [SGA에서 buffer 관련 메모리 크기 조회 (pool 미소속)] ![]() SELECT name, bytes FROM v$sgastat WHERE name LIKE '%buffer%' AND pool IS NULL; * log_buffer=Redo log buffer 크기 [buffer pool의 블록 크기, 버퍼 수, 전체 크기 조회] ![]() SELECT name, block_size, buffers, buffers*block_size as "SIZE" FROM v$buffer_pool; * buffers*block_size → 버퍼 수 × 블록 크기 = 전체 buffer pool 크기 [에러 발생] ![]() CREATE TABLESPACE imsy DATAFILE '/app/ora19c/oradata/disk1/imsy01.dbf' SIZE 5M BLOCKSIZE 16K; * 16K 블록 크기용 buffer cache가 없어서 에러 발생, 16K 블록 크기 tablespace를 만들려면 먼저 db_16k_cache_size 파라미터로 buffer cache를 설정해야함 [16K 블록 크기용 buffer cache를 16M로 설정] ![]() ALTER SYSTEM SET db_16k_cache_size = 16M; [현재 설정된 cache 크기 파라미터 전체 조회] ![]() SHOW PARAMETER cache_size [16K 블록 크기 pool이 추가됐는지 Buffer cache 크기 확인] ![]() SELECT name, block_size, buffers, buffers*block_size as "SIZE" FROM v$buffer_pool; * Buffer cache의 크기는 parameter 보다 v$buffer_pool을 통해서 확인 하는 것이 좋다 [buffer cache 설정 후 16K 블록 크기 tablespace 생성] ![]() CREATE TABLESPACE imsy DATAFILE '/app/ora19c/oradata/disk1/imsy01.dbf' SIZE 5M BLOCKSIZE 16K; [tablespace별 블록 크기 조회] ![]() SELECT tablespace_name, block_size FROM dba_tablespaces ORDER BY 1; [tablespace별 data file 이름, 크기, 경로 조회] ![]() SELECT tablespace_name, bytes, file_name FROM dba_data_files; [캐시 사이즈 0M로 줄여보기] ![]() ALTER SYSTEM SET db_16k_cache_size = 0M; * 에러가 나지 않지만 16K block 크기를 사용하는 tablespace가 사용할 수 없게 된다 [에러 발생] ![]() SELECT tablespace_name, bytes, file_name FROM dba_data_files; * imsy tablespace가 16K 블록인데 16K buffer cache를 0으로 줄여버려서 읽을 공간이 없어서 에러가 남 [MOUNT 상태에서도 조회 가능한 tablespace별 data file 크기, 경로 조회] ![]() SELECT t.name tablespace_name, d.bytes, d.name file_name FROM v$tablespace t, v$datafile d WHERE t.ts#=d.ts# ORDER BY 1; * 장애 상황에서도 dynamyc performance view는 조회 가능 [에러 발생] ![]() CREATE TABLE imsy (no NUMBER) TABLESPACE imsy; * NUMBER 타입의 no 컬럼 생성하는 명령어 * 아까 db_16k_cache_size = 0M으로 줄여서 16K buffer cache가 없어서 imsy tablespace를 사용할 수 없는 것 [imsy 테이블 삭제] ![]() DROP TABLESPACE imsy; * 16K buffer cache를 0으로 줄이려면 imsy tablespace를 먼저 삭제해야하므로 테이블스페이스 삭제 [명령어로 확인하기] !ls /app/ora19c/oradata/disk1/ * DROP TABLESPACE만 하면 data file이 디스크에 남아 있기 때문에 파일이 남아있는지 확인해보는 절차 [imsy 파일 완전히 삭제하기] !rm /app/ora19c/oradata/disk1/imsy01.dbf [명령어로 최종 확인하기] !ls /app/ora19c/oradata/disk1 [dba_data_files 에서도 사라졌는지 확인하기] ![]() SELECT tablespace_name, bytes, file_name FROM dba_data_files; * imsy 파일이 말끔히 사라졌음을 확인함 |
'Infra & Security Eng > Database Engineering' 카테고리의 다른 글
| User 생성, User 삭제 실습 (0) | 2026.04.10 |
|---|---|
| Tablespace READ ONLY, OPEN 상태에서 tablespace 이동, Close 상태에서 tablespace 이동, Default permanent tablespace 생성 실습 (0) | 2026.04.09 |
| tablespace, data file 상태 조회, 생성, 확장(수동,자동), 삭제 실습하기 (0) | 2026.04.09 |
| 오라클 서버 설정 : 리스너(Listener) 구동, 리눅스 클라이언트 설정과 접속하기 (0) | 2026.04.08 |
| 컨츄롤 파일 파일다중화, 리두로그파일 로그 스위치와 체크포인트, 리두 로그 그룹 추가와 삭제, 리두 로그 멤버 추가와 삭제, 파일 재배치 실습 (0) | 2026.04.08 |























