ORACLE空间管理实验5:块管理之ASSM下高水位的影响
高水位概念: 所有的oracle段(segments,在此,为了理解方便,建议把segment作为表的一个同义词) 都有一个在段内容纳数据的上限,我们把这个上限称为high water mark或HWM。这个HWM是一个标记,用来说明已经有多少没有使用的数据块分配给这个segment。HWM原则
高水位概念:所有的oracle段(segments,在此,为了理解方便,建议把segment作为表的一个同义词) 都有一个在段内容纳数据的上限,我们把这个上限称为"high water mark"或HWM。这个HWM是一个标记,用来说明已经有多少没有使用的数据块分配给这个segment。HWM原则上HWM只会增大,不会缩小,即使将表中的数据全部删除,HWM还是为原值,由于这个特点,使HWM很象一个水库的历史最高水位,这也就是HWM的原始含义。
这个概念百度下一大把,可以参考:
http://www.blogjava.net/decode360/archive/2009/07/14/287767.html
http://www.cnblogs.com/linjiqin/archive/2012/01/15/2323030.html
高水位与低高水位:低高水位与高水位之间存在的数据块的状态可能是未格式化或格式的。低高水位以下的是格式化了的,可以被使用。
HWM对数据库的操作有如下影响:
1.全表扫描通常要读出直到HWM标记的所有的属于该表数据库块,即使该表中没有任何数据。
3.即使HWM以下有空闲的数据库块,键入在插入数据时使用了append关键字,则在插入时使用HWM以上的数据块,此时HWM会自动增大。
2.插入时,默认只能插入到高水位以下的数据块,这在高并发时可能引起热块从而导致性能问题。
下面就通过实验来验证一下:
全表扫描通常要读出直到低高水位HWM标记的所有的属于该表数据库块,即使该表中没有任何数据--DELETE来测试。TRUNCATE会释放。
解决方法有:expdp/impdp,shrink:需要在ASSM且表开启行移动。MOVE不支持在线,或者CRTEATE TABLE A AS,再删除原表,将新表改为原名。。
1. DELETE不会改变高水位,但是删除后对表做SHRINK操作可以回收空间,降低高水位
BYS@ bys3>create table test12 as select * from dba_objects;Table created.
BYS@ bys3>insert into test12 select * from dba_objects;
17558 rows created.
BYS@ bys3>commit;
Commit complete.
BYS@ bys3>insert into test12 select * from test12;
35116 rows created.
BYS@ bys3>commit;
Commit complete.
BYS@ bys3>insert into test12 select * from test12;
70232 rows created.
BYS@ bys3>commit;
Commit complete.
BYS@ bys3>insert into test12 select * from test12;
140464 rows created.
BYS@ bys3>commit;
Commit complete.
BYS@ bys3>alter system checkpoint; ---要做检查点
System altered.
BYS@ bys3>select header_block,header_file from dba_segments where segment_name='TEST12' and owner='BYS';
HEADER_BLOCK HEADER_FILE
------------ -----------
922 4
BYS@ bys3>select sum(blocks) from dba_extents where segment_name='TEST12' and owner='BYS';
SUM(BLOCKS)
-----------
3840
BYS@ bys3>select count(extent_id) from dba_extents where segment_name='TEST12' and owner='BYS';
COUNT(EXTENT_ID)
----------------
45
多执行几次,取后面的平均值:
BYS@ bys3>set autotrace traceonly stat
BYS@ bys3>select * from test12;
280960 rows selected.
Elapsed: 00:00:05.70
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
23504 consistent gets
3710 physical reads
0 redo size
29190599 bytes sent via SQL*Net to client
206449 bytes received via SQL*Net from client
18732 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
280960 rows processed
BYS@ bys3>alter system dump datafile 4 block 922;
System altered.
BYS@ bys3>select value from v$diag_info where name like 'De%';
VALUE
----------------------------------------------------------------------------------------------------
/u01/diag/rdbms/bys3/bys3/trace/bys3_ora_25994.trc
###############DUMP段头,查看高水位信息:Highwater:: 0x01001180 --4480号块
Extent Control Header
-----------------------------------------------------------------
Extent Header:: spare1: 0 spare2: 0 #extents: 45 #blocks: 3840
last map 0x00000000 #maps: 0 offset: 2716
Highwater:: 0x01002100 ext#: 44 blk#: 128 ext size: 128 --高水位的DBA:0x01002100,8448号块
#blocks in seg. hdr's freelists: 0
#blocks below: 3784
mapblk 0x00000000 offset: 44
Unlocked
--------------------------------------------------------
Low HighWater Mark :
Highwater:: 0x01002080 ext#: 43 blk#: 128 ext size: 128 --低高水位 0x01002080
#blocks in seg. hdr's freelists: 0
#blocks below: 3712
mapblk 0x00000000 offset: 43
Level 1 BMB for High HWM block: 0x01002081
Level 1 BMB for Low HWM block: 0x01002001
--------------------------------------------------------
Segment Type: 1 nl2: 1 blksz: 8192 fbsz: 0
L2 Array start offset: 0x00001434
First Level 3 BMB: 0x00000000
L2 Hint for inserts: 0x01000399
Last Level 1 BMB: 0x01002081
Last Level II BMB: 0x01000399
Last Level III BMB: 0x00000000
Map Header:: next 0x00000000 #extents: 45 obj#: 23303 flag: 0x10000000
Inc # 0
Extent Map
-----------------------------------------------------------------
0x01000398 length: 8
%……………………
0x01002080 length: 128 --最后一个L1 DBA是8320号块,管理了128个块,高水位是8448号块,刚好是最后一个L1的最后一个数据块。
Auxillary Map
--------------------------------------------------------
Extent 0 : L1 dba: 0x01000398 Data dba: 0x0100039b
……………………
Extent 44 : L1 dba: 0x01002080 Data dba: 0x01002082 高水位应该就是这个L1管理的最后一个块:0x01002082 -8322号块,
--------------------------------------------------------
Second Level Bitmap block DBAs
--------------------------------------------------------
DBA 1: 0x01000399
对表做分析后
BYS@ bys3>analyze table test12 compute statistics;Table analyzed.
BYS@ bys3>select pct_free,pct_used,blocks,avg_row_len,chain_cnt from tabs where table_name='TEST12';
PCT_FREE PCT_USED BLOCKS AVG_ROW_LEN CHAIN_CNT
---------- ---------- ---------- ----------- ----------
10 3784 93 0
BYS@ bys3>set autotrace traceonly stat
BYS@ bys3>select * from test12;
280960 rows selected.
Elapsed: 00:00:05.46
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
22204 consistent gets
0 physical reads
0 redo size
29190599 bytes sent via SQL*Net to client
206449 bytes received via SQL*Net from client
18732 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
280960 rows processed
DUMP信息与未做表分析时相同,不贴了。
######################
DELETE删除表中全部数据
BYS@ bys3>delete test12;280944 rows deleted.
BYS@ bys3>commit;
Commit complete.
BYS@ bys3>alter system checkpoint;
System altered.
BYS@ bys3>select header_block,header_file from dba_segments where segment_name='TEST12' and owner='BYS';
HEADER_BLOCK HEADER_FILE
------------ -----------
922 4
BYS@ bys3>select sum(blocks) from dba_extents where segment_name='TEST12' and owner='BYS';
SUM(BLOCKS)
-----------
3840
BYS@ bys3>select count(extent_id) from dba_extents where segment_name='TEST12' and owner='BYS';
COUNT(EXTENT_ID)
----------------
45
BYS@ bys3>analyze table test12 compute statistics;
Table analyzed.
BYS@ bys3>select pct_free,pct_used,blocks,avg_row_len,chain_cnt from tabs where table_name='TEST12';
PCT_FREE PCT_USED BLOCKS AVG_ROW_LEN CHAIN_CNT
---------- ---------- ---------- ----------- ----------
10 3784 0 0
System altered.
BYS@ bys3>select value from v$diag_info where name like 'De%';
VALUE
----------------------------------------------------------------------------------------------------
/u01/diag/rdbms/bys3/bys3/trace/bys3_ora_26054.trc
BYS@ bys3>set autotrace traceonly stat
BYS@ bys3>select * from test12;
no rows selected
Elapsed: 00:00:00.02
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
3721 consistent gets
2 physical reads
0 redo size
1183 bytes sent via SQL*Net to client
408 bytes received via SQL*Net from client
1 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
0 rows processed
###############DELETE删除后的DUMP信息和上一个未删除时的没啥区别,不贴了。
DELETE删除后对表做SHRINK:--可以回收空间,降低高水位
BYS@ bys3>alter table test12 enable row movement;Table altered.
BYS@ bys3>alter table test12 shrink space; --SHRINK与MOVE,详见:shrink合并数据块--解决数据块碎片问题
Table altered.
BYS@ bys3>alter system checkpoint;
System altered.
BYS@ bys3>select pct_free,pct_used,blocks,avg_row_len,chain_cnt from tabs where table_name='TEST12';
PCT_FREE PCT_USED BLOCKS AVG_ROW_LEN CHAIN_CNT
---------- ---------- ---------- ----------- ----------
10 3784 0 0
BYS@ bys3>analyze table test12 compute statistics; 对表做分析后,tabs里的BLOCKS信息才会变。
Table analyzed.
BYS@ bys3>select pct_free,pct_used,blocks,avg_row_len,chain_cnt from tabs where table_name='TEST12';
PCT_FREE PCT_USED BLOCKS AVG_ROW_LEN CHAIN_CNT
---------- ---------- ---------- ----------- ----------
10 1 0 0
BYS@ bys3>alter system dump datafile 4 block 922;
System altered.
BYS@ bys3>select value from v$diag_info where name like 'De%';
VALUE
----------------------------------------------------------------------------------------------------
/u01/diag/rdbms/bys3/bys3/trace/bys3_ora_26432.trc
#########################DUMP信息如下:--可以看到空间已经回收了。高水位也已经下降
Extent Control Header
-----------------------------------------------------------------
Extent Header:: spare1: 0 spare2: 0 #extents: 1 #blocks: 8
last map 0x00000000 #maps: 0 offset: 2716
Highwater:: 0x0100039c ext#: 0 blk#: 4 ext size: 8
#blocks in seg. hdr's freelists: 0
#blocks below: 1
mapblk 0x00000000 offset: 0
Unlocked
--------------------------------------------------------
Low HighWater Mark :
Highwater:: 0x0100039c ext#: 0 blk#: 4 ext size: 8
#blocks in seg. hdr's freelists: 0
#blocks below: 1
mapblk 0x00000000 offset: 0
Level 1 BMB for High HWM block: 0x01000398
Level 1 BMB for Low HWM block: 0x01000398
--------------------------------------------------------
Segment Type: 1 nl2: 1 blksz: 8192 fbsz: 0
L2 Array start offset: 0x00001434
First Level 3 BMB: 0x00000000
L2 Hint for inserts: 0x01000399
Last Level 1 BMB: 0x01000398
Last Level II BMB: 0x01000399
Last Level III BMB: 0x00000000
Map Header:: next 0x00000000 #extents: 1 obj#: 23303 flag: 0x10000000
Inc # 1
Extent Map
-----------------------------------------------------------------
0x01000398 length: 8
Auxillary Map
--------------------------------------------------------
Extent 0 : L1 dba: 0x01000398 Data dba: 0x0100039b
--------------------------------------------------------
Second Level Bitmap block DBAs
--------------------------------------------------------
DBA 1: 0x01000399
End dump data blocks tsn: 4 file#: 4 minblk 922 maxblk 922
##################################
2.TRUNCATE操作直接就可以回收空间,改变高水位--但是如果非分区表,没有DELETE应用场景多。
create table test13 as select * from dba_objects;BYS@ bys3>alter system checkpoint;
System altered.
BYS@ bys3>alter system dump datafile 4 block 466;
System altered.
#############DUMP文件信息:
Extent Control Header
-----------------------------------------------------------------
Extent Header:: spare1: 0 spare2: 0 #extents: 17 #blocks: 256
last map 0x00000000 #maps: 0 offset: 2716
Highwater:: 0x010011f5 ext#: 16 blk#: 117 ext size: 128
#blocks in seg. hdr's freelists: 0
#blocks below: 245
mapblk 0x00000000 offset: 16
Unlocked
--------------------------------------------------------
Low HighWater Mark :
Highwater:: 0x010011f5 ext#: 16 blk#: 117 ext size: 128
#blocks in seg. hdr's freelists: 0
#blocks below: 245
mapblk 0x00000000 offset: 16
Level 1 BMB for High HWM block: 0x01001181
Level 1 BMB for Low HWM block: 0x01001181
--------------------------------------------------------
Segment Type: 1 nl2: 1 blksz: 8192 fbsz: 0
L2 Array start offset: 0x00001434
First Level 3 BMB: 0x00000000
L2 Hint for inserts: 0x010001d1
Last Level 1 BMB: 0x01001181
Last Level II BMB: 0x010001d1
Last Level III BMB: 0x00000000
Map Header:: next 0x00000000 #extents: 17 obj#: 23300 flag: 0x10000000
Inc # 0
Extent Map
################
做TRUNCATE操作然后DUMP段头
BYS@ bys3>truncate table test13;Table truncated.
BYS@ bys3>alter system checkpoint;
System altered.
BYS@ bys3>alter system dump datafile 4 block 466;
System altered.
#########################
Extent Header:: spare1: 0 spare2: 0 #extents: 1 #blocks: 8
last map 0x00000000 #maps: 0 offset: 2716
Highwater:: 0x010001d3 ext#: 0 blk#: 3 ext size: 8
#blocks in seg. hdr's freelists: 0
#blocks below: 0
mapblk 0x00000000 offset: 0
Disk Lock:: Locked by xid: 0x0002.019.00001354
--------------------------------------------------------
Low HighWater Mark :
Highwater:: 0x010001d3 ext#: 0 blk#: 3 ext size: 8
#blocks in seg. hdr's freelists: 0
#blocks below: 0
mapblk 0x00000000 offset: 0
Level 1 BMB for High HWM block: 0x010001d0
Level 1 BMB for Low HWM block: 0x010001d0
--------------------------------------------------------
Segment Type: 1 nl2: 1 blksz: 8192 fbsz: 0
L2 Array start offset: 0x00001434
First Level 3 BMB: 0x00000000
L2 Hint for inserts: 0x010001d1
Last Level 1 BMB: 0x010001d0
Last Level II BMB: 0x010001d1
Last Level III BMB: 0x00000000
Map Header:: next 0x00000000 #extents: 1 obj#: 23304 flag: 0x10000000
Inc # 0
Extent Map
-----------------------------------------------------------------
0x010001d0 length: 8
Auxillary Map
--------------------------------------------------------
Extent 0 : L1 dba: 0x010001d0 Data dba: 0x010001d3
--------------------------------------------------------
Second Level Bitmap block DBAs
--------------------------------------------------------
DBA 1: 0x010001d1

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

Oracle에 대한 솔루션은 개설 할 수 없습니다. 1. 데이터베이스 서비스 시작; 2. 청취자를 시작하십시오. 3. 포트 충돌을 확인하십시오. 4. 환경 변수를 올바르게 설정하십시오. 5. 방화벽이나 바이러스 백신 소프트웨어가 연결을 차단하지 않도록하십시오. 6. 서버가 닫혀 있는지 확인하십시오. 7. RMAN을 사용하여 손상된 파일을 복구하십시오. 8. TNS 서비스 이름이 올바른지 확인하십시오. 9. 네트워크 연결 확인; 10. Oracle 소프트웨어를 다시 설치하십시오.

Oracle Cursor Closure 문제를 해결하는 방법에는 다음이 포함됩니다. Close 문을 사용하여 커서를 명시 적으로 닫습니다. For Update 절에서 커서를 선언하여 범위가 종료 된 후 자동으로 닫히십시오. 연관된 PL/SQL 변수가 닫히면 자동으로 닫히도록 사용 절에서 커서를 선언하십시오. 예외 처리를 사용하여 예외 상황에서 커서가 닫혀 있는지 확인하십시오. 연결 풀을 사용하여 커서를 자동으로 닫습니다. 자동 제출을 비활성화하고 커서 닫기를 지연시킵니다.

Oracle에서 FOR 루프 루프는 커서를 동적으로 생성 할 수 있습니다. 단계는 다음과 같습니다. 1. 커서 유형을 정의합니다. 2. 루프를 만듭니다. 3. 커서를 동적으로 만듭니다. 4. 커서를 실행하십시오. 5. 커서를 닫습니다. 예 : 커서는 상위 10 명의 직원의 이름과 급여를 표시하기 위해주기별로 만들 수 있습니다.

Oracle View는 Expitility : Oracle 데이터베이스에 로그인하여 내보낼 수 있습니다. 뷰 이름 및 내보내기 디렉토리를 지정하여 EXP 유틸리티를 시작하십시오. 대상 모드, 파일 형식 및 테이블 스페이스를 포함한 내보내기 매개 변수를 입력하십시오. 내보내기를 시작하십시오. IMPDP 유틸리티를 사용하여 내보내기를 확인하십시오.

Oracle은 데이터베이스 회사 일뿐 만 아니라 클라우드 컴퓨팅 및 ERP 시스템의 리더이기도합니다. 1. Oracle은 데이터베이스에서 클라우드 서비스 및 ERP 시스템에 이르기까지 포괄적 인 솔루션을 제공합니다. 2. OracleCloud는 AWS와 Azure에 도전하여 IAA, PAAS 및 SAAS 서비스를 제공합니다. 3. E-BusinessSuite 및 FusionApplications와 같은 Oracle의 ERP 시스템은 기업이 운영을 최적화하는 데 도움이됩니다.

Oracle Log 파일이 가득 차면 다음 솔루션을 채택 할 수 있습니다. 1) 오래된 로그 파일 청소; 2) 로그 파일 크기를 늘리십시오. 3) 로그 파일 그룹을 늘리십시오. 4) 자동 로그 관리를 설정합니다. 5) 데이터베이스를 다시 이용하십시오. 솔루션을 구현하기 전에 데이터 손실을 방지하기 위해 데이터베이스를 백업하는 것이 좋습니다.

Centos 시스템에서 Hadoop 분산 파일 시스템 (HDF)을 구축하려면 여러 단계가 필요합니다. 이 기사는 간단한 구성 안내서를 제공합니다. 1. 초기 단계에서 JDK를 설치할 준비 : 모든 노드에 JavadevelopmentKit (JDK)을 설치하면 버전이 Hadoop과 호환되어야합니다. 설치 패키지는 Oracle 공식 웹 사이트에서 다운로드 할 수 있습니다. 환경 변수 구성 : /etc /프로파일 파일 편집, Java 및 Hadoop 설정 설정 시스템에서 JDK 및 Hadoop의 설치 경로를 찾을 수 있습니다. 2. 보안 구성 : SSH 비밀번호가없는 로그인 SSH 키 : 각 노드에서 ssh-keygen 명령을 사용하십시오.

Oracle 데이터베이스를 중지하려면 다음 단계를 수행하십시오. 1. 데이터베이스에 연결하십시오. 2. 즉시 종료; 3. 셧다운은 완전히 중단됩니다.
