oracle10g如何刪除數(shù)據(jù)文件/表空間

小編給大家分享一下oracle10g如何刪除數(shù)據(jù)文件/表空間,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)長(zhǎng)期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為那曲企業(yè)提供專業(yè)的成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì),那曲網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

1.獲取開(kāi)啟
select 'alter table ' || owner || '.'|| table_name || ' enable row movement; ' from dba_tables where tablespace_name='USERS';
select 'alter table ' || owner || '.'|| table_name || ' shrink space CASCADE; ' from dba_tables where tablespace_name='USERS';



oracle刪除(釋放)數(shù)據(jù)文件/表空間流程


生產(chǎn)環(huán)境:數(shù)據(jù)庫(kù)里空間不足,niptest 表空間251G,只使用了17G


再alter database datafile '...../niptest1' resize 10G; 的時(shí)候說(shuō)超出了范圍要求 


由于表變動(dòng)比較頻繁,高水位值比較大


(高水位 HWM “High Water Mark “:oracle中block有沒(méi)有使用的分界線,它會(huì)隨著數(shù)據(jù)的insert而上升,但它并不會(huì)隨數(shù)據(jù)的delete而下降,因此全表掃描的時(shí)間并不因數(shù)據(jù)的delete而減少,相反可能由于塊清除反而全表掃描時(shí)間增加)


刪除表空間步驟:


 


1)  批量將niptest表空間中的表move 到USERS表空間,再刪除表空間niptest
首先看下此表空間內(nèi)的表  move到其他表空間  防止數(shù)據(jù)丟失


select * from dba_tables where tablespace_name='NIPTEST'; 
select * from dba_extents where tablespace_name='NIPTEST';
select * from dba_segments where tablespace_name='NIPTEST';
SELECT 'alter table '||owner||'.'||table_name||' move tablespace USERS;' FROM DBA_tables WHERE TABLESPACE_NAME='NIPTEST'; 批量把表移動(dòng)到其他表空間


 


******  move (降低高水位)


優(yōu)點(diǎn):可以移動(dòng)表到其他表空間,在執(zhí)行命令時(shí)不需要執(zhí)行alter table table_name enable row movement


缺點(diǎn):表move 會(huì)導(dǎo)致表中的索引失效,要rebuild;同時(shí)表會(huì)產(chǎn)生行級(jí)鎖......;在此如果表中有LOB字段 時(shí)要用一下命令來(lái)實(shí)現(xiàn)表空間移動(dòng):alter table owner.table_name move tablespace tablespace_name lob (lob_column) store as lob segment  tablespace tablespace_name;也可以單獨(dú)move lob,index要rebuild


 


******  shrink space


優(yōu)點(diǎn):降低高水位時(shí)索引不會(huì)失效


缺點(diǎn):不能將表移動(dòng)到其他表空間;高水位降低效果沒(méi)有move明顯;同時(shí)在執(zhí)行命令前要先執(zhí)行(alter table table_name enable row movement允許行移動(dòng))也會(huì)表會(huì)產(chǎn)生行級(jí)鎖.......,shrink比move更耗費(fèi)cpu,產(chǎn)生很多current block這樣生成巨大的redo與undo 如果表中索引很少可以建議使用move降低高水位






2) 移動(dòng)完表發(fā)現(xiàn) 主鍵和索引還是在源表空間


SELECT * FROM DBA_extents WHERE TABLESPACE_NAME='USERS';   -->查看原表空間的主鍵和索引
alter index XX rebuild tablespace ;


---> 批量執(zhí)行索引重建
SELECT 'alter index  '||owner||'.'||segment_name||' rebuild tablespace USERS;' FROM DBA_extents WHERE TABLESPACE_NAME='NIPTEST';   批量將主鍵索引重建到其他表空間
select * from dba_segments where tablespace_name='NIPTEST';弄完上面的操作,這里還有數(shù)據(jù),不要在意,那是回收站的,無(wú)需修改直接刪表空間即清空


 


(3) 表都移動(dòng)完了  之后 先把數(shù)據(jù)文件offline drop再刪除數(shù)據(jù)文件


alter database datafile '/home/oracle/app/oracle/oradata/kfdb/niptest1' offline drop; 


---> 查看下數(shù)據(jù)文件狀態(tài)


select status from dba_tablespaces v$datafile where tablespace_name='NIPTEST'; -----offline
--> 再刪除表空間
drop tablespace niptest; --> 刪除表空間,但不刪除其文件 
drop tablespace niptest including contents; -->刪除表空間同時(shí)刪除表空間的數(shù)據(jù)對(duì)象
drop tablespace niptest including contents and datafiles; 


 --> 刪除表空間時(shí)刪除數(shù)據(jù)對(duì)象及其OS系統(tǒng)文件一起刪除,,以便釋放空間,前提表空間不能是數(shù)據(jù)庫(kù)默認(rèn)表空間 
否則會(huì) 報(bào)錯(cuò):ORA-12919: Can not drop the default permanent tablespace


 


 


(4) 怎么查看下數(shù)據(jù)庫(kù)的默認(rèn)表空間是什么:
select * from database_properties where property_name = 'DEFAULT_PERMANENT_TABLESPACE';  


如果您刪除的表空間是數(shù)據(jù)庫(kù)默認(rèn)表空間要用一下命令來(lái)


更換數(shù)據(jù)庫(kù)默認(rèn)表空間:alter database default tablespace users;
 再執(zhí)行: drop tablespace niptest including contents and datafiles;  


[root@kfdb49 kfdb]# df -hl  --> 看下OS系統(tǒng)空間情況  --- 表空間釋放


------創(chuàng)建表空間的語(yǔ)句:
create tablespace niptest datafile '/home/oracle/app/oracle/oradata/kfdb/niptest1' size 10G autoextend on next XXM maxsize XXm extent management local;


有的人會(huì)想著再創(chuàng)建一個(gè)niptest 為10G的表空間,避免后期imp時(shí)源表的表空間是niptest


: 其實(shí)不需要,如果庫(kù)中沒(méi)有niptest表空間,就算imp源表的表空間是niptest,也會(huì)導(dǎo)入到用戶的默認(rèn)表空間,有niptest表空間的話則會(huì)導(dǎo)入到niptest表空間(如果后續(xù)不想擁有niptest表空間 就要斬草除根的將niptest刪除之后不要?jiǎng)?chuàng)建)


回收unlimited tablespace 給予額外權(quán)限niptest表空間權(quán)限會(huì)正常導(dǎo)入,否則報(bào)錯(cuò)


額外權(quán)限和用戶默認(rèn)表空間是一個(gè)的話可以正常導(dǎo)入,否則知道表結(jié)構(gòu)到用戶默認(rèn)表空間

以上是“oracle10g如何刪除數(shù)據(jù)文件/表空間”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

當(dāng)前文章:oracle10g如何刪除數(shù)據(jù)文件/表空間
URL標(biāo)題:http://bm7419.com/article46/goideg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、網(wǎng)站設(shè)計(jì)、全網(wǎng)營(yíng)銷推廣、關(guān)鍵詞優(yōu)化、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)