Oracle 데이터베이스 의 공간 관리 기술

6532 단어 Oracle공간 관리
보고 있 는 ORACLE 튜 토리 얼 은 Oracle 데이터베이스 의 공간 관리 기법 입 니 다.Oracle 데이터베이스 에서 DBA 는 일정한 표 나 보 기 를 관찰 함으로써 현재 공간의 사용 상황 을 파악 하고 가능 한 조정 결정 을 내 릴 수 있다. 
표 공간의 자유 공간
-표 공간의 자유 공간 에 대한 관찰 을 통 해 특정한 표 공간 에 분 배 된 공간 이 너무 많은 지 부족 한 지 판단 할 수 있다.아래 문장 을 보십시오

SQL > select a.file_id "FileNo",a.tablespace_name 
"Tablespace_name", 
2 a.bytes "Bytes",a.bytes-sum(nvl(b.bytes,0)) "Used", 
3 sum(nvl(b.bytes,0)) "Free", 
4 sum(nvl(b.bytes,0))/a.bytes*100 "%free" 
5 from dba_data_files a, dba_free_space b 
6 where a.file_id=b.file_id(+) 
7 group by a.tablespace_name , 
8 a.file_id,a.bytes order by a.tablespace_name; 
File Tablespace
No _nameBytes Used Free %free
------ --------- -------- --------- --------- ---------
11IDX_JF .146E+09 849305600 1.297E+09 60.431806
9 JFSJTS 2.146E+09 1.803E+09 343793664 16.016961
10JFSJTS 2.146E+09 1.359E+09 787431424 36.685546
2 RBS523239424 359800832 163438592 31.235909
12RBS1.610E+09 1.606E+09 3104768 .19289495
8 RBSJF 3.220E+09 2.716E+09 504356864 15.662396
7 SFGLTS 2.146E+09 1.228E+09 918159360 42.776014
6 SFSJTS 2.146E+09 1.526E+09 620093440 28.889457
1 SYSTEM 523239424 59924480 463314944 88.547407
3 TEMP 523239424294912 522944512 99.943637
4 TOOLS 15728640 12582912 314572820
5 USERS 7340032 81927331840 99.888393
12 rows selected.
-이 를 통 해 알 수 있 듯 이 FileNo 가 12 인 표 공간 RBS 에서 0.19%의 분배 공간 만 사용 되 지 않 았 고 이 비율 은 너무 작 았 으 며 SYSTEM 과 TEMP 등 표 공간 에서 80%이상 의 공간 이 이용 되 지 않 았 으 며 생산 형 데이터 베이스 에 대해 이 표 공간의 설정 이 비교적 높다.
-자유 공간의 관리 에 대해 다음 과 같은 제안 이 있다.
Export 및 Import 명령 을 이용 하여 표 공간 을 제거 하고 불 러 오 면 대량의 공간 을 방출 하여 다른 데이터 파일 을 추가 하 는 요 구 를 완화 할 수 있 습 니 다.
높 은 삽입(insert)과 업데이트(update)활동 을 가 진 표를 포함 하 는 표 공간 에서 자유 공간의 비중 이 15%이하 로 떨 어 지면 이 표 공간 에 더 많은 공간 을 늘 려 야 합 니 다.
기본적으로 정적 표 데이터 의 표 공간 에 대해 20%이상 의 자유 공간 이 있 으 면 분 배 된 파일 공간 을 줄 이 는 것 을 고려 할 수 있다.
데이터 베 이 스 를 재 구축 해 야 하기 때문에 SYSTEM 표 공간의 공간 을 줄 이 는 것 은 비교적 어렵다.
2 표 및 색인 확장
-A.표 나 색인 이 지나치게 확장 되 는 것 을 방지 하고 데이터 베 이 스 를 신속하게 조정 하기 위해 사용 자 는 관련 대상 을 자주 관찰 해 야 한다.
-확장 영역 이 5 개 이상 인 표 나 색인 이 지나치게 확장 되 었 다 고 볼 수 있 습 니 다(overextended).아래 문장 을 보십시오.

SQL > select substr(segment_name,1,15) 
Segment_name,segment_type, 
2 substr(tablespace_name,1,10) 
Tablepace_name,extents,Max_extents 
3from dba_segments 
4where extents >5 and owner='JFCL' 
5order by segment_name; 
SEGMENT_NAMESEGMENT TABLEPACE_
EXTENTS MAX_EXTENTS
_TYPE
-------------- --------- ----------
CHHDFYB TABLE JFSJTS 11121
CHHDFYB_DHHMINDEX JFSJTS9121
DJHZFYB_BF TABLE JFSJTS 17500
DJHZFYB_DJHMINDEX IDX_JF6500
DJHZFYB_JZHMINDEX IDX_JF7500
GSMFYB TABLE JFSJTS 11121
JFDHTABLE JFSJTS 14500
JFDH_DHHM INDEX IDX_JF 61500
JFDH_JZHM INDEX IDX_JF 64500
XYKFYB TABLE JFSJTS7121
YHDATABLE JFSJTS6500
YHDA_BAKTABLE JFSJTS6500
YHHZFYB_12 TABLE JFSJTS 10500
13 rows selected.
-관찰 을 통 해 DBA 는 문 제 를 신속하게 발견 하고 이에 상응하는 처 리 를 할 수 있다.
-우 리 는 export 를 이용 하여 시 계 를 내 린 다음 에 시 계 를 삭제 하고 import 명령 을 이용 하여 시 계 를 불 러 올 수 있 습 니 다.그러면 연속 되 지 않 는 영역 을 연속 적 인 공간 으로 합 칠 수 있 습 니 다.
-B.만약 에 사용자 가 표 의 공간 설정 을 최적화 하 기 를 원한 다 면 예 를 들 어 표 EMP 의 initial 매개 변 수 를 바 꾸 려 면 다음 과 같은 방법 을 사용 할 수 있다.
-1.EMP 표를 지우 고 삭제 한 후 imp 명령 을 실행 할 때 indexfile 인 자 를 사용 합 니 다.
-imp userid=scott/tiger file=emp.dmp indexfile=emp.sql Oacle 은 데이터 가 아 닌 표 와 색인 생 성 정 보 를 지정 한 파일 에 기록 합 니 다.
----2.emp.sql 파일 열기:

REM CREATE TABLE "SCOTT"."EMP" ("EMPNO" 
NUMBER(4, 0), "ENAME" 
REM VARCHAR2(10), "JOB" VARCHAR2(9), 
"MGR" NUMBER(4, 0), "HIREDATE" DATE, 
REM "SAL" NUMBER(7, 2), "COMM" NUMBER 
(7, 2), "DEPTNO" NUMBER(2, 0)) 
REM PCTFREE 10 PCTUSED 40 INITRANS 1 
MAXTRANS 255 LOGGING STORAGE(INITIAL 
REM 10240 NEXT 10240 MINEXTENTS 1 MAXEXTENTS 
121 PCTINCREASE 50 FREELISTS 
REM 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) 
TABLESPACE "USER_DATA" ; 
REM ... 14 rows
-이 를 편집 하고'REM'등 정 보 를 제거 하 며 Initial 인 자 를 찾 아 필요 에 따라 변경 합 니 다.
---3.SQL*plus 에서 emp.sql 을 실행 합 니 다.
-4.데이터 불 러 오기:
---- imp userid=scott/tiger ignore=y file=emp.dmp
---주의해 야 할 것 은 ignore 인 자 는 Y 로 설정 해 야 한 다 는 것 이다.
-C.표 나 색인 거리 가 최대 로 확 장 된 상황 을 아래 문장 으로 관찰 할 수 있 으 며,"UNUSE"는 거리 가 최대 로 확 장 된 값 으로 Userextents 표 에서 extentid 는 0 부터 숫자 를 기술 합 니 다.

SQL >select a.table_name "TABLE_NAME",max 
(a.max_extents) "MAXEXTENTS" , 
2 max(b.extent_id)+1 "IN USE", MAX 
(a.max_extents)-(max(b.extent_id)+1) "UNUSE" 
3 from user_tables a, user_extents b 
4where a.table_name=b.segment_name 
5 group by a.table_name ORDER BY 4; 
TABLE_NAME MAXEXTENTS IN USEUNUSE
---------- ----------- -------- ---------
YZPHB 98 1 97
SHJYB 121 1 120
SHFYB 121 1 120
RCHDB 121 1 120
SJTXDZB121 1 120
SJTXDAB121 1 120
CHYHB 121 1 120
JFDH 50014 486
8 rows selected.
-"UNUSE"가 어느 정도 작 으 면 우 리 는 관심 을 가지 고 적절 한 조정 처 리 를 해 야 한다.
연속 공간
-데이터베이스 의 자유 공간 을 아래 문장 으로 볼 수 있다.

SQL > select * from dba_free_space 
where tablespace_name='SFSJTS' 
2 order by block_id; 
TABLESPACE FILE_ID BLOCK_ID BYTESBLOCKS
_NAME
----------- --------- --------------
SFSJTS 6 133455 1064960 130
SFSJTS 6 133719 1032192 126
SFSJTS 6 133845 1064960 130
SFSJTS 6 135275 1064960 130
SFSJTS 6 135721 606208 74
SFSJTS 6 139877 901120 110
SFSJTS 6 143497 737280 90
SFSJTS 6 220248 737280 90
SFSJTS 6 246228 491520 60
SFSJTS 6 261804 1064960 130
10 rows selected.
-우 리 는 명령 의 결 과 를 통 해 인접 자유 공간의 진정한 수량 을 평가 할 수 있다.줄 마다 시작 이 빠 른 id(BLOCKID)에 자유 블록(BLOCKS)의 수 를 더 하면 다음 줄 의 블록 id(BLOCKID)가 같 으 면 이 두 줄 은 연속 입 니 다.상례 로 두 번 째 줄 과 세 번 째 줄 은 133719+126=133845 이 고 1338456+130!=135275,그래서 Blockid 는 133719 로 시작 하여 126+130=256 개의 block 의 연속 공간 이 있 습 니 다.
-Oacle 데이터베이스 배경 에서 시스템 모니터(SMON)는 주기 적 으로 자유 공간 에 인접 한 블록 을 합 쳐 더 큰 연속 블록 을 얻 을 수 있 습 니 다.DBA 는 SQL 명령 으로 이 작업 을 수행 할 수 있 습 니 다.
---- alter tablespace tablespace_name coalesce;
-oracle 공간 관 리 는 데이터베이스 의 작업 성능 에 중요 한 영향 을 미 치 므 로 그 관리 방법 은 우리 가 진지 하 게 연구 할 필요 가 있다.

좋은 웹페이지 즐겨찾기