Oracle 데이터베이스 의 공간 관리 기술
표 공간의 자유 공간
-표 공간의 자유 공간 에 대한 관찰 을 통 해 특정한 표 공간 에 분 배 된 공간 이 너무 많은 지 부족 한 지 판단 할 수 있다.아래 문장 을 보십시오
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 공간 관 리 는 데이터베이스 의 작업 성능 에 중요 한 영향 을 미 치 므 로 그 관리 방법 은 우리 가 진지 하 게 연구 할 필요 가 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Oracle 생성 향후 3일간의 전체 시점 (단계 상세)수요: X 좌표축 시간은 모두 정시 시간으로 앞으로 3일 동안의 예측을 보여준다(x 축은 앞으로 3일 동안의 정시 시간을 보여준다), 3시간마다 한 눈금, 가로 좌표는 모두 24개의 눈금을 보여준다 1단계: 현재 시...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.