oracle批量刪除某使用者下的表

2022-04-16 02:16:04 字數 1203 閱讀 1710

昨天幹了一天的體力活,到快下班時被要求刪除一批測試庫上錯誤的表,主要是這些表的字段和生產上欄位順序對不上,然後讓我寫個指令碼,讓dba執行一下,主要是刪表這種東西我們都沒許可權.

然後,我就被難到了,我記得以前都是刪乙個表啊,還沒有批量刪過表啊,而且以前刪表都是先刪除約束再刪表的,難道這次讓我去把每個表的約束和表名找出來寫成乙個個刪除語句?心想這得加班到明天啊,於是乎網上肯定有oracle的批量刪除表指令碼吧.

然後找啊找,找了十多個,要麼是指令碼本身有錯,要麼還是不成功,最後發現是我的ip沒有許可權,不過能用的指令碼還是鎖定了乙個,因為我在另外有刪除許可權的使用者下建了一批表通過這個指令碼能刪除,

這個指令碼就是

begin

for a in (select * from user_constraints t where t.owner = 'peri' and upper(t.table_name) like 'temp_p4%') loop

execute immediate 'alter table '|| a.table_name ||' drop constraint '||a.constraint_name;

end loop;

for x in (select * from all_tables t where t.owner = 'peri' and upper(t.table_name) like 'temp_p4%') loop

execute immediate 'drop table ' ||x.table_name;

end loop;

end;

我上面是刪除peri使用者下temp_p4開頭的表,第乙個迴圈刪除約束,第二個迴圈刪除表

這個指令碼有個缺陷,那就是只能用peri使用者登入才能正確執行第乙個迴圈.

到了今早,就是別人給我指出來這個問題,然後我看他怎麼寫指令碼,然後我就驚訝了

drop table ....;

drop table ....;

drop table ....;

drop table ....;

drop table ....;

drop table ....;

......

我說你不用刪除約束的嗎?

他說他們以前都只刪表就行,不用刪約束.

好吧,這個我還是賺的,至少我知道了在這裡怎麼批量刪除表,也知道了以後去其它地方怎麼批量刪除表.

ORACLE刪除某使用者下所有物件

sql指令碼 唯一注意的是下面的f dropobj.sql 為操作的.sql 你的電腦沒有f盤,請換為d或者e其他存在的碟符 用於刪除當前使用者的所有物件 use for drop all objects in current user set heading off set feedback of...

ORACLE刪除某使用者下所有物件

sql指令碼 唯一注意的是下面的f dropobj.sql 為操作的.sql 你的電腦沒有f盤,請換為d或者e其他存在的碟符 用於刪除當前使用者的所有物件 use for drop all objects in current user set heading off set feedback of...

oracle下匯出某使用者下的表

scott tiger是使用者名稱和密碼,handson是匯出的例項名 按使用者方式匯出資料 owner當中寫的是使用者名稱 exp scott tiger handson file scott back owner scott 按表方式匯出資料 talbes當中寫的是全部表的名稱 exp scot...