-- 收縮表段(shrink space)
--====================
一、表的增長(zhǎng)方式
?? ?當(dāng)表被創(chuàng)建后,隨著記錄的不斷插入,組成表的區(qū)間會(huì)被填滿,如果啟用了自動(dòng)擴(kuò)展,則當(dāng)區(qū)間填滿后,會(huì)分配新的區(qū)間。假定高水
?? ?位線隨著記錄的增加從最左端往右端來(lái)移動(dòng),當(dāng)?shù)降撞繀^(qū)間的尾端時(shí),則新的區(qū)間將會(huì)被分配。
?? ?
二、表可收縮的原理
?? ?隨著記錄的增加高水位線不斷的右移,記錄的刪除不會(huì)導(dǎo)致高水位線往回(左)移動(dòng)
?? ?刪除記錄后的空閑空間(高水位線左側(cè))盡管可以使用,但其稀疏性導(dǎo)致空間空閑
?? ?注:完整的表掃描所耗費(fèi)的時(shí)間不會(huì)因?yàn)橛涗浀臏p少(刪除)而減少
三、使用 alter table tbname shrink space 來(lái)收縮表段
?? ? 1. 實(shí)現(xiàn)原理
?? ??? ?實(shí)質(zhì)上構(gòu)造一個(gè)新表(在內(nèi)部表現(xiàn)為一系列的DML操作,即將副本插入新位置,刪除原來(lái)位置的記錄)
?? ??? ?靠近末尾處(右端)數(shù)據(jù)塊中的記錄往開(kāi)始處(左端)的空閑空間處移動(dòng)(DML操作),不會(huì)引起DML觸發(fā)器
?? ??? ?當(dāng)所有可能的移動(dòng)被完成,高水位線將會(huì)往左端移動(dòng)(DDL操作)
?? ??? ?新的高水位線右邊的空閑空間被釋放(DDL操作)
?? ??? ?
?? ? 2. 實(shí)現(xiàn)前提條件
?? ??? ?必須啟用行記錄轉(zhuǎn)移(enable row movement)
?? ??? ?僅僅適用于堆表,且位于自動(dòng)段空間管理的表空間(堆表包括:標(biāo)準(zhǔn)表,分區(qū)表,物化視圖容器,物化視圖日志表)
?? ?
?? ? 3. 不能實(shí)現(xiàn)收縮的表
?? ??? ?群集表
?? ??? ?具有LONG類型列的表
?? ??? ?LOB段(盡管表本身可以被縮小),注,10gR2以后版本支持對(duì)LOB段的收縮
?? ??? ?具有基于提交的物化視圖的表(因?yàn)榻昧擞|發(fā)器)
?? ??? ?具有rowid物化視圖的表(因?yàn)閞owid發(fā)生了變化)
?? ??? ?IOT映射表IOT溢出段
?? ??? ?索引基于函數(shù)的表
?? ??? ?未啟用行記錄轉(zhuǎn)移的堆表
?? ??? ?
?? ? 4. 段收縮的優(yōu)點(diǎn)
?? ??? ?提高緩存利用率,提高OLTP的性能
??? ??? ?減少磁盤I/O,提高訪問(wèn)速度,節(jié)省磁盤空間
??? ??? ?段收縮是在線的,索引在段收縮期間維護(hù),不要求額外的磁盤空間
??? ??? ?
?? ? 5. 兩個(gè)選項(xiàng)
?? ??? ?cascade:縮小表及其索引,并移動(dòng)高水位線,釋放空間
?? ??? ?compact:僅僅是縮小表和索引,并不移動(dòng)高水位線,不釋放空間
?? ??? ?alter table tbname shrink space 相當(dāng)于帶cascade參數(shù)
四、實(shí)戰(zhàn)演習(xí)
1. 查看需要收縮的表段的基本情況,此處為表big_table ???
2. 刪除記錄之后,進(jìn)行收縮表段 ???
3. 驗(yàn)證cascade與compact的差異 ???
五、語(yǔ)法總結(jié): ?? ???
六、批量收縮腳本
1. 普通表(根據(jù)相應(yīng)需求修改下面的語(yǔ)句生產(chǎn)相應(yīng)腳本)?? ?
2. 分區(qū)表的處理
?? ?分區(qū)表進(jìn)行shrink space時(shí)發(fā)生ORA-10631錯(cuò)誤.shrink space有一些限制.
?? ?在表上建有函數(shù)索引(包括全文索引)會(huì)失敗。???
? 3. 附show_space腳本(來(lái)自Tom大師) ???
七、快捷參考
有關(guān)性能優(yōu)化請(qǐng)參考
??? Oracle硬解析與軟解析
??? 共享池的調(diào)整與優(yōu)化(Sharedpool Tuning)
??? Buffercache 的調(diào)整與優(yōu)化(一)
??? Oracle表緩存(cachingtable)的使用
?
有關(guān)ORACLE體系結(jié)構(gòu)請(qǐng)參考
??? Oracle密碼文件
??? Oracle參數(shù)文件
??? Oracle聯(lián)機(jī)重做日志文件(ONLINE LOG FILE)
? ?? Oracle歸檔日志
??? Oracle回滾(ROLLBACK)和撤銷(UNDO)
??? Oracle數(shù)據(jù)庫(kù)實(shí)例啟動(dòng)關(guān)閉過(guò)程
??? Oracle10g SGA 的自動(dòng)化管理
??? Oracle實(shí)例和Oracle數(shù)據(jù)庫(kù)(Oracle體系結(jié)構(gòu))
?
有關(guān)閃回特性請(qǐng)參考
??? Oracle閃回特性(FLASHBACK DATABASE)
??? Oracle閃回特性(FLASHBACK DROP & RECYCLEBIN)
??? Oracle閃回特性(Flashback Query、FlashbackTable)
??? Oracle閃回特性(Flashback Version、Flashback Transaction)
?
有關(guān)基于用戶管理的備份和備份恢復(fù)的概念請(qǐng)參考
??? Oracle冷備份
??? Oracle熱備份
??? Oracle備份恢復(fù)概念
??? Oracle基于用戶管理恢復(fù)的處理 (詳細(xì)描述了介質(zhì)恢復(fù)及其處理)
?
有關(guān)RMAN的備份恢復(fù)與管理請(qǐng)參考
??? RMAN 備份詳解
??? RMAN 還原與恢復(fù)
??? RMANcatalog 的創(chuàng)建和使用
??? 基于catalog 創(chuàng)建RMAN存儲(chǔ)腳本
使用RMAN遷移文件系統(tǒng)數(shù)據(jù)庫(kù)到ASM
??? RMAN 備份路徑困惑(使用plus archivelog時(shí))
?
有關(guān)ORACLE故障請(qǐng)參考
??? ORA-01658錯(cuò)誤
??? ORA-00119,ORA-00132 錯(cuò)誤處理
??? 又一例SPFILE設(shè)置錯(cuò)誤導(dǎo)致數(shù)據(jù)庫(kù)無(wú)法啟動(dòng)
??? 對(duì)參數(shù)FAST_START_MTTR_TARGET= 0 的誤解及設(shè)定
??? SPFILE錯(cuò)誤導(dǎo)致數(shù)據(jù)庫(kù)無(wú)法啟動(dòng)(ORA-01565)
?
有關(guān)ASM請(qǐng)參考
??? 創(chuàng)建ASM實(shí)例及ASM數(shù)據(jù)庫(kù)
??? ASM 磁盤、目錄的管理
?
有關(guān)SQL/PLSQL請(qǐng)參考
??? SQLPlus常用命令
??? 替代變量與SQL*Plus環(huán)境設(shè)置
??? 使用Uniread實(shí)現(xiàn)SQLplus翻頁(yè)功能
??? SQL 基礎(chǔ) --> NEW_VALUE的使用
??? SQL 基礎(chǔ) --> 集合運(yùn)算(UNION與UNION ALL)
??? SQL 基礎(chǔ) --> 視圖(CREATEVIEW)
??? SQL 基礎(chǔ) --> 創(chuàng)建和管理表
??? SQL 基礎(chǔ) --> 過(guò)濾和排序
??? SQL 基礎(chǔ) --> 分組與分組函數(shù)
??? SQL 基礎(chǔ) --> 層次化查詢(STARTBY ... CONNECT BY PRIOR)
??? SQL 基礎(chǔ) --> ROLLUP與CUBE運(yùn)算符實(shí)現(xiàn)數(shù)據(jù)匯總
??? PL/SQL --> 異常處理(Exception)
??? PL/SQL --> 流程控制
??? PL/SQL --> 包的創(chuàng)建與管理
??? PL/SQL --> 隱式游標(biāo)(SQL%FOUND)
??? PL/SQL --> INSTEAD OF 觸發(fā)器
??? PL/SQL --> 動(dòng)態(tài)SQL
??? PL/SQL --> 動(dòng)態(tài)SQL的常見(jiàn)錯(cuò)誤
?
有關(guān)ORACLE其它特性
??? Oracle常用目錄結(jié)構(gòu)(10g)
??? 使用OEM,SQL*Plus,iSQL*Plus 管理Oracle實(shí)例
??? 日志記錄模式(LOGGING、FORCE LOGGING 、NOLOGGING)
??? OralceOMF 功能詳解
??? Oracle用戶、對(duì)象權(quán)限、系統(tǒng)權(quán)限 ?
??? Oracle角色、配置文件
??? Oracle分區(qū)表
??? Oracle外部表
??? 使用外部表管理Oracle 告警日志(ALAERT_$SID.LOG)
??? 簇表及簇表管理(Index clustered tables)
??? 數(shù)據(jù)泵 EXPDP 導(dǎo)出工具的使用
??? 數(shù)據(jù)泵 IMPDP 導(dǎo)入工具的使用
??? 導(dǎo)入導(dǎo)出 Oracle 分區(qū)表數(shù)據(jù)
??? SQL*Loader使用方法
??? 啟用用戶進(jìn)程跟蹤
??? 配置非默認(rèn)端口的動(dòng)態(tài)服務(wù)注冊(cè)
??? 配置ORACLE 客戶端連接到數(shù)據(jù)庫(kù)
??? systemsys,sysoper sysdba 的區(qū)別
??? ORACLE_SID、DB_NAME、INSTANCE_NAME、DB_DOMIAN、GLOBAL_NAME
??? Oracle補(bǔ)丁全集 (Oracle 9i 10g 11g Path)
??? Oracle10.2.0.1 升級(jí)到10.2.0.4
?? ??? ? ?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
