久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

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

143次閱讀
沒有評論

共計 3016 個字符,預計需要花費 8 分鐘才能閱讀完成。

丸趣 TV 小編給大家分享一下 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 如何刪除數據文件 / 表空間”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-24發表,共計3016字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 饶阳县| 普定县| 镇沅| 西林县| 南乐县| 开平市| 通城县| 洞头县| 阿巴嘎旗| 策勒县| 中卫市| 台江县| 全州县| 沂南县| 洪泽县| 呼图壁县| 涡阳县| 星座| 卫辉市| 华坪县| 广宁县| 唐海县| 漳州市| 河南省| 新邵县| 呈贡县| 石嘴山市| 股票| 南涧| 冀州市| 鹤岗市| 武强县| 多伦县| 彩票| 蒲城县| 隆安县| 木兰县| 清涧县| 沂源县| 基隆市| 牡丹江市|