亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

oracle10g如何刪除數據文件/表空間

發布時間:2021-11-09 13:42:43 來源:億速云 閱讀:155 作者:小新 欄目:關系型數據庫

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

1.獲取開啟
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刪除(釋放)數據文件/表空間流程


生產環境:數據庫里空間不足,niptest 表空間251G,只使用了17G


再alter database datafile '...../niptest1' resize 10G; 的時候說超出了范圍要求 


由于表變動比較頻繁,高水位值比較大


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


刪除表空間步驟:


 


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


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'; 批量把表移動到其他表空間


 


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


優點:可以移動表到其他表空間,在執行命令時不需要執行alter table table_name enable row movement


缺點:表move 會導致表中的索引失效,要rebuild;同時表會產生行級鎖......;在此如果表中有LOB字段 時要用一下命令來實現表空間移動:alter table owner.table_name move tablespace tablespace_name lob (lob_column) store as lob segment  tablespace tablespace_name;也可以單獨move lob,index要rebuild


 


******  shrink space


優點:降低高水位時索引不會失效


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






2) 移動完表發現 主鍵和索引還是在源表空間


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


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


 


(3) 表都移動完了  之后 先把數據文件offline drop再刪除數據文件


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


---> 查看下數據文件狀態


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


 --> 刪除表空間時刪除數據對象及其OS系統文件一起刪除,,以便釋放空間,前提表空間不能是數據庫默認表空間 
否則會 報錯:ORA-12919: Can not drop the default permanent tablespace


 


 


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


如果您刪除的表空間是數據庫默認表空間要用一下命令來


更換數據庫默認表空間:alter database default tablespace users;
 再執行: drop tablespace niptest including contents and datafiles;  


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


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


有的人會想著再創建一個niptest 為10G的表空間,避免后期imp時源表的表空間是niptest


: 其實不需要,如果庫中沒有niptest表空間,就算imp源表的表空間是niptest,也會導入到用戶的默認表空間,有niptest表空間的話則會導入到niptest表空間(如果后續不想擁有niptest表空間 就要斬草除根的將niptest刪除之后不要創建)


回收unlimited tablespace 給予額外權限niptest表空間權限會正常導入,否則報錯


額外權限和用戶默認表空間是一個的話可以正常導入,否則知道表結構到用戶默認表空間

以上是“oracle10g如何刪除數據文件/表空間”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

股票| 安义县| 长海县| 波密县| 托里县| 乌拉特后旗| 新沂市| 通辽市| 盐山县| 日喀则市| 城固县| 遂溪县| 承德县| 梧州市| 卓尼县| 调兵山市| 常宁市| 牟定县| 宝清县| 驻马店市| 子长县| 开远市| 丘北县| 湟中县| 文山县| 郴州市| 峡江县| 海宁市| 涡阳县| 富裕县| 景泰县| 深州市| 县级市| 怀化市| 绥棱县| 开远市| 淄博市| 林芝县| 友谊县| 利川市| 修文县|