oracle高水位線

?ORACLE在邏輯存儲上分4個粒度:?表空間,?段,?區?和?塊.

?

??????1.1?塊:?是粒度最小的存儲單位,現在標準的塊大小是8K,ORACLE每一次I/O操作也是按塊來操作的,也就是說當ORACLE從數據文件讀數據時,是讀取多少個塊,而不是多少行.??每一個Block里可以包含多個row.

?

???????1.2?區:?由一系列相鄰的塊而組成,這也是ORACLE空間分配的基本單位,舉個例子來說,當我們創建一個表Dave時,首先ORACLE會分配一區的空間給這個表,隨著不斷的INSERT數據到Dave,原來的這個區容不下插入的數據時,ORACLE是以區為單位進行擴展的,也就是說再分配多少個區給Dave,而不是多少個塊.

?

???????1.3?段:?是由一系列的區所組成,?一般來說,?當創建一個對象時(表,索引),就會分配一個段給這個對象.?所以從某種意義上來說,段就是某種特定的數據.如CREATE TABLE Dave,這個段就是數據段,而CREATE INDEX ON Dave(NAME), ORACLE同樣會分配一個段給這個索引,但這是一個索引段了.查詢段的信息可以通過數據字典: SELECT * FROM USER_SEGMENTS來獲得.

?

???????1.4?表空間:?包含段,區及塊.表空間的數據物理上儲存在其所在的數據文件中.一個數據庫至少要有一個表空間

ORACLE用HWM來界定一個段中使用的塊和未使用的塊。由于空間是為新插入的行保留的,并且要適應現有行的增長。被占用的最高空間稱為最高使用標記?(HWM)

? ? ? ? ?1.當我們創建一個表時, ORACLE就會為這個對象分配一個段, 在這個段中即使我們未插入任何記錄, 也至少有一個區被分配, 第一 ? ? ? ? ? ? ?個區的第一個塊就稱為段頭塊(SEGMENT_HEADER), 段頭中就儲存了一些信息, 其中HWM的信息就存儲在此。

? ? ? ? ? ?此時, 因為第一 個區的第一塊用于存儲段頭的一些信息, 雖然沒有存儲任何實際的記錄, 但也算是被使用, 此時HWM是位于第2個 ? ? ? ? ? ? ?塊, 當我們不斷插入數據后, 第一個塊已經放不下后面新插入的數據, 此時, ORACLE將高水位之上的塊用于存儲新增數據, 同時, ? ? ? ? ? ? HWM本身也向上移, 也就是說, 當我們不斷插入數據時, HWM會不斷上移, 這樣, 在HWM之下的, 就表示使用過的塊。 HWM之上 ? ? ? ? ? ? 的就表示已分配但從未使用過的塊。

????????2 .HWM在插入數據時, 當現有空間不足而進行空間的擴展時會向上移, 但刪除數據時不會往下移。

? ? ? ??3 .HWM本身的信息是存儲在段頭?:

? ? ? ? ? ? ? ? ? 在段空間是手工管理方式時, ORACLE是通過FREELIST(一個單向鏈表)來管理段內的空間分配,

? ? ? ? ? ? ? ? ? 在段空間是自動管理方式時, ORACLE是通過BITMAP來管理段內的空間分配。

????????4 .ORACLE的全表掃描是讀取高水位標記(HWM)以下的所有塊。

? ? ? ? 5.HWM通常增長的幅度為一次5個數據塊,原則上HWM只會增大,不會縮小,即使將表中的數據全部刪除,HWM還是為原值,但 ? ? ? ? ? ?是如果我們在表上使用了truncate命令,則該表的HWM會被重新置為0,這條高水位線在日常的增刪操作中只會上漲,不會下跌

?所以問題就產生了, 當用戶發出一個全表掃描時, ORACLE始終必須從段一直掃描到HWM, 即使它什么也沒有發現。 該任務延長了全表 ?掃描的時間。

低HWM:

??? 在管理段的時候通常有兩種方法:手動管理段空間(Manual Segment Space Management )和自動段空間(Automatic Segment Space Management)

在手動段空間管理(Manual Segment Space Management)中,段中只有一個HWM,但是在Oracle 9i Release1才添加的自動段空間管理(Automatic Segment Space Management)中,又有了一個低HWM的概念出來。為什么有了HWM還又有一個低HWM呢,這個是因為自動段空間管理的特性造成的。

在手段段空間管理中,當數據插入以后,如果是插入到新的數據塊中,數據塊就會被自動格式化等待數據訪問。而在自動段空間管理中,數據插入到新的數據塊以后,數據塊并沒有被格式化,而是在第一次訪問這個數據塊的時候才格式化這個塊。所以我們又需要一條水位線,用來標示已經被格式化的塊。這條水位線就叫做低HWM。一般來說,低HWM肯定是低于等于HWM的。

HWM數據庫的操作有如下影響:

a) 全表掃描通常要讀出直到HWM標記的所有的屬于該表數據庫塊,即使該表中沒有任何數據。

b) 即使HWM以下有空閑的數據庫塊,鍵入在插入數據時使用了append關鍵字,則在插入時使用HWM以上的數據塊,此時HWM會自動增大。

使用delete不能使高水位線降低,使用truncate可以使用高水位線降低,所以當刪除整表數據或者分區最好是用truncate,
當用delete刪除大表數據時后,還是要重建表,這樣可以降低高水位線

?

TRUNCATE命令回收了由delete命令產生的空閑空間為了保留由delete命令產生的空閑空間,可以使用TRUNCATE TABLE 55LINUX REUSE STORAGE.用此命令后,該表還會是原先的1024塊

?

采用TRUNCATE語句刪除一個表的數據的時候,類似于重新建立了表,不僅把數據都刪除了,還把HWM給清空恢復為0。所以如果需要把表清空,在有可能利用TRUNCATE語句來刪除數據的時候就利用TRUNCATE語句來刪除表,特別是那種數據量有可能很大的臨時存儲表。

在9i的時候,一個很成熟的碎片整理技術。

整理表碎片通常的方法是move表

高水位以下合并碎片,不移動高水位

當然move是不能在線進行的,

不跟參數表還是在原來的表空間

而且move后相應的索引也會失效,需要重建

如果以后還要繼續向這個表增加數據,沒有必要move,只是釋放出來的空間,只能這個表用,其他的表或者segment無法使用該空間

table在進行move操作時,我們只能對它進行select的操作,DML會全部阻塞(move生成的undo和redo是非常少的)。反過來說,當我們的一個session對table進行DML操作且沒有commit時,?
在另一個session中是不能對這個table進行move操作的,否則oracle會返回這樣的錯誤信息:ORA-00054(資源正忙)
?

?

?

? ?oracle在10g時候提供了shrink space碎片整理功能,不僅能整理碎片還可以收縮高水位,索引也不需要重建。

shrink的一個優點是能在線進行,不影響表上的DML操作,當然,并發的DML操作在shrink結束的時刻會出現短暫的block;?
shrink的另外一個優點是在碎片整理結束后,表上相關的index仍然enable。shrink在整理表碎片的時候,行源的rowid已經發生改變,那為什么相關的索引還能enable呢?其實oracle在進行shrink的時候會對相應的索引進行維護,以保證index在shrink結束的時候index仍然有效。這個維護不同于索引rebuild,不會對索引的空間進行整理,shrink有cascede選項,如果在shrink的時候加上該選項,就會對表上相應的索引空間進行整理。

?

SHRINK(收縮) TABLE(表空間收縮)

實質上構造一個新表(在內部表現為一系列的DML操作,即將副本插入新位置,刪除原來位置的記錄)靠近末尾處(右端)數據塊中的記錄往開始處(左端)的空閑空間處移動(DML操作),不會引起DML觸發器當所有可能的移動被完成,高水位線將會往左端移動(DDL操作),新的高水位線右邊的空閑空間被釋放(DDL操作)

????

???從10g開始, ORACLE開始提供SHRINK的命令, 假如我們的表空間中支持自動段空間管理(ASSM), 就可以使用這個特性縮小段, 即降低HWM。 10g的這個新特性,?必須啟用行記錄轉移(enable row movement)僅僅適用于堆表,且位于自動段空間管理的表空間(堆表包括:標準表,分區表,物化視圖容器,物化視圖日志表)

???????如果經常在表上執行DML操作, 會造成數據庫塊中數據分布稀疏, 浪費大量空間。 同時也會影響權標掃描的性能。 因為全表掃描需要訪問更多的數據塊。從oracle10g開始, 表可以通過SHRINK來重組數據使數據分布更緊密, 同時降低HWM釋放空閑數據塊。???????

shrink必須開啟行遷移功能。

segment shrink分為兩個階段:

1 數據重組(compact):

執行ALTER TABLE test SHRINK SPACE compact:

通過一系列insert、delete操作, 將數據盡量排列在段的前面。 在這個過程中需要在表上加RX鎖, 即只在需要移動的行上加鎖。由于涉及到rowid的改變, 需要enable row movement, 同時要disable基于rowid的trigger。 這一過程對業務影響比較小。

2. HWM調整:

執行ALTER TABLE test SHRINK SPACE:

調整HWM位置, 釋放空閑數據塊第一步中的結果已經存儲到磁盤,不會重新在整理碎片,只是收縮高水位,釋放空間。此過程需要在表上加X鎖, 會造成表上的所有DML語句阻塞。在業務特別繁忙的系統上可能造成比較大的影響。

?

?

如果系統業務比較繁忙, 可以先執行shrink space compact重組數據, 然后在業務不忙的時候再執行shrink space降低HWM釋放空閑數據塊。

?

?

?

我們先看下shrink的工作原理,shrink的算法是從segment的底部開始,移動row到segment的頂部,移動的過程相當于delete/insert操作的組合,在這個過程中會產生大量的undo和redo信息。在HP Unix上還存在BUG,在10.1.0.3.0中,在shrink的時候可能會觸發BUG 3888229,產生巨大數量的redo和undo。move是直接移動數據塊的位置,鑒于上面的原因,在使用shrink的時候,耗時可能非常長,通常慢于move。

對于空間的要求,shrink不需要額外的空間,move需要兩倍的空間。

通過上面的分析,shrink雖然有online的特性,但是也存在很多問題,所以,在進行表碎片整理的時候,還是建議停機檢修,使用move,以下是一些move時候的注意點:?
1、move前最好邏輯備份待整理的表;?
2、對于大表,建議開啟并行和nologging?
alter table test move nologging parallel 2;?
3、整理完畢后重建相關的索引?
alter index ind_test rebuild nologging parallel 2;?
4、恢復表和索引的并行度、logging?
alter table test logging parallel 1;

?
1. move過程中需要額外的表空間,需要的大小大約等于當前表中數據量的大小,move結束后立即釋放該額外空間。?
2. move過程中對表加排它鎖,會影響其他session的DML操作。?
3. move操作并不會維護索引,因此move完畢后需要對索引rebuild。?
4. move操作會降低HWM,但是并不會釋放HWM以上的空塊,也就是說,move只會對HWM以下的塊進行操作。?
5. move操作的一些相關測試數據:以2000000數據(233M)為例,刪除800000條數據,執行move操作。?
大概用時4秒,共產生了319K的redo,56K的undo。表由233M縮小至145M。?
6. move操作可以完全消除行遷移。?
7. move操作后,為表分配的數據段位置發生了改變,即段頭塊的位置發生了改變。
shrink過程中并沒有用到額外的表空間。
shrink操作其實可以分為兩步:?
第一步:對數據進行重組,即只會整理碎片,不會降低高水位,也就是說不會釋放空間。?
通過一系列的delete/insert組合來完成,具體的語法是 alter table t1 shrink space compact。該過程會在表上加共享鎖,在移動的行中加排它鎖。并且會維護索引。?
第二步:降低HWM,回收空間,與move不同的是,shrink可以回收HWM以上的塊。該過程會在表上加排它鎖,因此業務繁忙時并不適合執行該降低HWM的操作。
shrink操作會維護索引,但是不會對索引進行碎片整理。如果加入cascade選項,那么維護索引的同時會對索引進行碎片整理。
shrink操作的一些相關測試數據:以2000000數據(233M)為例,刪除800000條數據,分兩步執行shrink操作。?
數據重組大概用時1分鐘58秒,共產生了895M的redo,353M的undo。回收HWM階段僅用1秒,產生了4K的redo,1K的undo。表由233M縮小至226M。
shrink操作不能完全消除行遷移。
shrink操作后,為表分配的數據段位置并沒有發生變化,即段頭塊的位置沒有改變。
?
create table HWM as select * from dba_objects;SQL> SELECT segment_name, segment_type, blocks FROM dba_segmentsWHERE segment_name='HWM';    DBA_SEGMENTS.BLOCKS 表示分配給這個表的所有的數據庫塊的數目SQL> ANALYZE TABLE hwm ESTIMATE STATISTICS;          SQL> SELECT table_name,num_rows,blocks,empty_blocksFROM user_tablesWHERE table_name='HWM';USER_TABLES.BLOCKS表示已經使用過的數據庫塊的數目,即水線。
USER_TABLES.EMPTY_BLOCKS 代表分配給該表,
但是在水線以上的數據庫塊,即從來沒有使用的數據塊。BLOCKS + EMPTY_BLOCKS (700+323=1023)比DBA_SEGMENTS.BLOCKS少1個數據庫塊,
這是因為有一個數據庫塊被保留用作segment header。
DBA_SEGMENTS.BLOCKS 表示分配給這個表的所有的數據庫塊的數目。
USER_TABLES.BLOCKS表示已經使用過的數據庫塊的數目。SQL> SELECT COUNT (DISTINCTDBMS_ROWID.ROWID_BLOCK_NUMBER(rowid)||DBMS_ROWID.ROWID_RELATIVE_FNO(rowid)) "Used"FROM hwm;有多少塊容納數據SQL> delete from hwm;         
SQL> commit;
SQL> ANALYZE TABLE hwm ESTIMATE STATISTICS; 
SQL> SELECT table_name,num_rows,blocks,empty_blocksFROM user_tablesWHERE table_name='HWM';SQL> TRUNCATE TABLE hwm;  
SQL> ANALYZE TABLE hwm ESTIMATE STATISTICS;                  
SQL> SELECT table_name,num_rows,blocks,empty_blocksFROM user_tablesWHERE table_name='HWM';

?

?
move

alter table xxx move ? ?

--壓縮快之后所有索引都會失效,需要重建一下索引
ALTER INDEX INDEX_NAME REBUILD;

?

高水位以下合并碎片,同時壓縮表,不移動高水位。
alter table xxx move compress?

?

釋放未

使用空

DEALLOCATE UNUSED為釋放HWM上面的未使用空間,但是并不會釋放HWM下面的自由空間,也不會移動HWM的位置.

Alter??table table_name deallocate unused

?
查詢失效索引語句select index_name,table_name,tablespace_name,status From dba_indexes Where owner='ISC' And status<>'VALID';?
?
select file_id,bytes/1024/1024 
from dba_free_space 
where tablespace_name='TEST';
?
?

普通表

?????????Sql腳本,改腳本會生成相應的語句

?????????select'alter table '||table_name||' enable row movement;'||chr(10)||'alter table '||table_name||' shrink space;'||chr(10)from user_tables;

?????????select'alter index '||index_name||' shrink space;'||chr(10)from user_indexes;

?????????分區表

?????????進行shrink space時 發生ORA-10631錯誤.shrink space有一些限制.

?????????在表上建有函數索引(包括全文索引)會失敗。

?????????Sql腳本,改腳本會生成相應的語句????

?
?
select 'alter table '||table_name||' enable row movement;'||chr(10)||'
alter table '||table_name||' shrink space;'||chr(10) 
from user_tables where ;select 'alter index '||index_name||' shrink space;'||chr(10) 
from user_indexes 
where uniqueness='NONUNIQUE' ;select 'alter table '||segment_name||' modify subpartition '
||partition_name||' shrink space;'||chr(10) 
from 
user_segments 
where segment_type='TABLE SUBPARTITION' ';
?
啟動關閉行遷移

alter table?table_name?enable row movement ;

alter table?table_name disable row movement;?

注意, alter table table_name row movement語句會造成引用表table_name的對象(如存儲過程、包、視圖等)變為無效。 需要執行utlrp.sql來編譯無效的對象。?

?
把碎片率高的表找出,按表的空間大小排序找出來,不支持壓縮表select 'drop table ' || segment_name || ' purge;', sum(bytes)/1024/1024 Mbytese?
from user_segments a , user_tables b
where segment_type='TABLE' ?
and a.segment_name=b.TABLE_NAME?
and b.COMPRESSION='DISABLED'?
group by segment_name,COMPRESSION?
order by sum(bytes)/1024/1024 desc;
?
SHRINK(收縮)?

alter table table_name shrink space [<null> | compact | cascade] ;

大表可同時降低表自身和表空間的高水位線,小表則只可以降低表自身的高水位線

?

收縮表, 相當于把塊中數據打結實了, 但會保持high water mark 。
alter table table_name shrink space compact ;
?
收縮表, 降低high water mark
alter table table_name shrink space ; ?

?

收縮表, 降低high water mark, 并把相關索引也要收縮一下。
alter table table_name shrink space cascade ;?

回縮索引。
alter index idx_name shrink space ;?

?

?

統計信息

因為所有的信息都是根據dba_tables,表的信息是根據統計信息得到的,所以如果統計信息不準確,那么整個搜索的結果都可能是錯誤的

exec dbms_stats.gather_table_stats('user','table_name');

exec dbms_stats.gather_table_stats(user,'test1',estimate_percent=>100);

exec dbms_stats.gather_table_stats(user,'ISC_USER',CASCADE=>TRUE);

?

select table_name,last_analyzed from user_tables where table_name = 'ISC_USER' order by last_analyzed desc ;

?
?查找數據庫中某個表空間下,可以實際存儲和需要的表空間差別最大的表
SELECT 
NUM_ROWS,AVG_ROW_LEN*NUM_ROWS/1024/1024/0.9 NEED, BLOCKS*8/1024 TRUE,
(BLOCKS*8/1024-AVG_ROW_LEN*NUM_ROWS/1024/1024/0.9) RECOVER_MB,
TABLE_NAME
FROM dba_tables
WHERE tablespace_name='PSAPSR3' 
AND BLOCKS*8/1024-AVG_ROW_LEN*NUM_ROWS/1024/1024/0.9>100
SELECT table_name,
ROUND((blocks * 8/1024), 2) "高水位空間 M",
ROUND((num_rows * avg_row_len / 1024/1024), 2) "真實使用空間 M",
ROUND((blocks * 10 / 100) * 8, 2) "預留空間(pctfree) M",
ROUND((blocks * 8 - (num_rows * avg_row_len / 1024) -blocks * 8 * 10 / 100), 2) 
"浪費空間 M",
((blocks * 8-(num_rows * avg_row_len / 1024))/1024)/(blocks * 8/1024) 
"浪費空間 %"
FROM user_tables
WHERE table_name = 'ISC_USER';
?

Oracle 9i:

???????(1)如果是INEXTENT,?可以使alter table tablename deallocate unused將HWM以上所有沒使用的空間釋放

???????(2)?如果MINEXTENT >HWM?則釋放MINEXTENTS?以上的空間。如果要釋放HWM以上的空間則使用KEEP 0。

???????SQL>alter table tablesname deallocate unused keep 0;

???????(3)truncate table drop storage(缺省值)命令可以將MINEXTENT?之上的空間完全釋放(交還給操作系統),并且重置HWM。

???????(4)如果僅是要移動HWM,而不想讓表長時間鎖住,可以用truncate table reuse storage,僅將HWM重置。

???????(5)ALTER TABLE MOVE會將HWM移動,但在MOVE時需要雙倍的表空間,而且如果表上有索引的話,需要重構索引

???????(6)DELETE表不會重置HWM,也不會釋放自由的空間(也就是說DELETE空出來的空間只能給對象本身將來的INSERT/UPDATE使用,不能給其它的對象使用)

?

Oracle 10g:

???????(1)可以使用alter table test_tab shrink space命令來聯機移動hwm,

???????(2)如果要同時壓縮表的索引,可以發布:alter table test_tab shrink space cascade

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535507.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535507.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535507.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

oracle檢查點

檢 查 點 概述 ■l當修改數據時&#xff0c;需要首先將數據讀入內存中&#xff08;Buffer Cache&#xff09;&#xff0c;修改數據的同時&#xff0c;Oracle會記錄重做信息&#xff08;Redo&#xff09;用于恢復。因 為有了重做信息的存在&#xff0c;Oracle不需要在提交時…

文獻翻譯:Java theory and practice: Fixing the Java Memory Model, Part 2

Java theory and practice: Fixing the Java Memory Model, Part 2 譯&#xff1a;Java 理論與實踐&#xff1a;修復 Java 內存模型&#xff0c;第 2 部分 翻譯自&#xff1a;http://www.ibm.com/developerworks/library/j-jtp03304/&#xff08;原文寫于2004年3月&#xff0…

oracle的buffercache

LRU空閑或者干凈的鏈&#xff0c;可以從這里找到未修改的數據LRUW臟鏈&#xff0c;一個臟塊同時掛到了lruw和檢查點隊列&#xff0c;LRUW分冷端和熱端&#xff0c;冷端即為更新頻率較低的一端&#xff0c;熱端為更新頻率較高的一端&#xff0c;dbwn寫入數據文件時從冷端開始寫入…

oracle的undo

Undo段中區的狀態free expiredinactiveactive 顯示UNDO區信息 SELECT extent_ id, bytes&#xff0c; status FROM dba_ _undo_ _extentsWHERE segment_ name SYSSMU1S ; 圖解一一個事務的操作流程 Undo段的組成:段頭、回滾塊 事務ID …

SQLPlus命令詳細說明

SQLPlus命令詳細說明 2011-10-19 17:23:01 分類&#xff1a; Oracle 1. 執行一個SQL腳本文件 SQL>start file_name SQL> file_name 2. 對當前的輸入進行編輯 SQL>edit 3. 重新運行上一次運行的sql語句 SQL>/ 4. 將顯示的內容輸出到指定文件 SQL> S…

oracle的EMCTL

Microsoft Windows [版本 6.1.7601] 版權所有 (c) 2009 Microsoft Corporation。保留所有權利。 C:\Users\Administrator>emctl start dbconsole Environment variable ORACLE_UNQNAME not defined. Please set ORACLE_UNQNAME to da tabase unique name. C:\Users\Administ…

RHEL7 修改SSH默認端口

1.查詢seliunx [roottest10597 ~]# getenforce Enforcing [roottest10597 ~]# semanage port -l|grep ssh ssh_port_t tcp 222.設置selinux端口 [roottest10597 ~]# semanage port -a -t ssh_port_t -p tcp 10022 [roottest10597 ~]# semanage …

oracle預定義異常

NO_DATA_FOUND&#xff1a;執行查詢無數據、引用一個末初使化的表、通過UTL_FILE包調用到尾的文件TOO_MANY_ROWS&#xff1a;采用SELECT INTO語句&#xff0c;但返回的記錄超過了1條DUP_VAL_ON_INDEX:插入或者更新語句&#xff0c;與唯一索引相沖突TIMEOUT_ON_RESOURCE:等待資源…

常用系統函數oracle

單行函數日期函數ADD_MONTHS(date, n):用于從一個日期值增加或減少一些月份 MONTHS_BETWEEN(date1, date2):判斷兩個日期之間相差的月份 LAST_DAY(date): 函數返回包含日期的月份的最后一天 ROUND(date[,fmt]): 將日期d按照fmt指定的格式舍入&#xff0c;fmt為字符串 TRU…

oracle游標

游標&#xff08;cursor &#xff09;是一個私有的SQL工作區域,是一個指向上下文區的句柄或指針&#xff0c;位于內存中的 "臨時表"。 游標是SQL的一個內存工作區&#xff0c;由系統或用戶以變量的形式定義。游標的作用就是用于臨時存儲從數據庫中提取的數據塊。在某…

找出占用cpu最高的線程

ps -eo %cpu,pid |sort -n -k1 -r | head -n 1| awk {print $2}| xargs top -b -n1 -Hp | grep COMMAND -A1 |tail -n 1 |awk {print $1}| xargs printf 0x%x ? 在命令行輸入top&#xff0c;然后shiftp查看占用CPU最高的進程&#xff0c;記下進程號 ? 在命令行輸入top -Hp…

系統學習SpringFramework:Spring 概述

本篇內容包括&#xff1a;Spring/SpringFrame 概述、Spring IOC 和 AOP 概述、Spring 全家桶內容概述&#xff08;包括&#xff1a;Spring Boot、Spring Cloud、Spring Cloud data flow …&#xff09;等內容&#xff01; 一、Spring/SpringFrame 概述 Spring 是一個生態體系&…

存儲過程與函數oracle

存儲在數據庫中供所有用戶程序調用的子程序叫做存儲過程&#xff0c;存儲函數。 存儲過程是在大型數據庫系統中&#xff0c;用PL/SQL語言編寫的能完成一定處理功能的存儲在數據庫字典中的程序&#xff0c;它是一個命名的 PL/SQL 塊&#xff0c;經編譯后存儲在數據庫中&#xff…

系統學習SpringFramework:Spring IOC

本篇內容包括&#xff1a;IOC 和 DI 的概念、Spring 容器&#xff0c;即 BenaFactory 與 AplicationConext 等 IOC 相關內容。 一、IOC 和 DI 的概念 1、IOC IoC&#xff08;Inversion of control &#xff09;即“控制反轉”&#xff0c;它是一種設計思想而非一個技術實現。…

徹底卸載oracle

linux刪除Oracle安裝目錄下的所有文件和文件夾即可。windows 1.關閉oracle所有的服務。可以在windows的服務管理器中關閉 2.打開注冊表&#xff1a;regedit 打開路徑&#xff1a; HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ 刪除該路徑下的所有以oracle開始的服務…

系統學習SpringFramework:Spring AOP

本篇內容包括&#xff1a;Spring AOP 概述&#xff08;AOP 簡介、AOP 為什么叫面向切面編程、AOP 主要用來解決的問題 和 AOP 的相關術語&#xff09;、Spring AOP Demo&#xff08;xml 方式、注解方式&#xff09;以及相關知識點&#xff08;JDK 動態代理和 CGLIB 代理、Sprin…

rowid

ROWID的格式rowidOOOOOOFFFBBBBBBRRR說明數據對象號相對文件號數據塊號行號 上述表格是Oracle 9i及以上版本數據庫中的rowid格式: 6位對象號3位相對文件號6位數據塊號3位行號&#xff0c;是一個18位的64進制值。這個18位的64進制值在數據庫內卻是以10個bytes合計80個bit的二進制…

git和gitlab安裝

1.下載git最新包 https://mirrors.edge.kernel.org/pub/software/scm/git/ 將最新包上傳至服務器/home目錄 tar -Jxvf 解壓 進入git目錄 ./configure --prefix/usr/local/git make make install 錯誤解決&#xff1a;Cant locate ExtUtils/MakeMaker.pm in INC yum i…

系統學習SpringFramework:循環依賴與三級緩存

本篇內容包括&#xff1a;Spring 中的循環依賴問題&#xff08;包括 Spring 中的循環依賴問題和Spring 中的循環依賴的 5 種場景的介紹&#xff09;、Spring 三級緩存介紹、4 個 Spring 無法自動解決的循環以來場景以及其對應的手動解決方式。 一、Spring 中的循環依賴問題 1、…

oracle安裝需要的包列表

redhat7.5安裝圖形界面&#xff1a; [rootwwyt ~]# rpm -ivh --nodeps --force xorg-x11-font* [rootwwyt ~]# mount -o loop -t iso9660 rhel-server-7.5-x86_64-dvd.iso /media/iso/ [rootwwyt ~]# cat /etc/yum.repos.d/my.repo [base] nameredhat7.5 baseurlfile:///m…