『壹』 oracle刪除資料庫里大量表中的重復數據
1、建議你刪除了,重新導,推薦。
2、非要刪除的話,也是可以,不過你的表有點多,得考慮好刪除後,表的數據關聯可能會出問題
3、刪除重復的語句,你可以網路一下,或者到我們海楓科技社區中提問一下,用group by 的方式或者ID的方式。網上應該比較多。
4、因為是100多張,你手動寫容易出錯,工作量也大,建議寫個小程序或者sql直接輸出語句來生成對應的3中說的SQL
5、執行。。
海楓科技
『貳』 怎麼批量的刪除資料庫中的表中的數據
這個問題你可能通過查詢oracle的系統表,例如all_all_tables,用這些對象的列表生成一批資料庫刪除對象的語句,然後將這些語句存到文件,用sqlplus的文件參數執行這一批語句。
『叄』 怎麼刪除oracle表中的全部數據
怎麼刪除oracle表中的全部數據
刪除表內容的兩種方法
truncate table 表名;
delete from 表名 where 條件;
兩種方法的區別:
truncate,意思為截斷表,能夠不佔用資源的全部刪除表,優點是速度快,缺點是刪除不能恢復,不能按條件刪除。
delete,意思為刪除,此操作佔用redolog,優點能夠快速恢復和選擇刪除,缺點是刪除慢,大批量的刪除不建議使用。
『肆』 oracle上億表海量數據進行大批量數據刪除有什麼好的解決方案
以下純屬個人意見,請根據實際情況判斷
(1)省下的數據量如果不大,那麼可以考慮建立一張臨時表,將需要保留的數據臨時灌過去,然後truncate該表,然後再把數據灌回來。也可以考慮drop表,然後另外一張表改名,不過這樣可能會有很多的後續操作,比如索引的建立等等,因此一般不用drop操作。
(2)上億的數據,應該有分區吧,如果可能的話,按照分區truncate,這樣也可以。
(3)實在不能truncate,只能delete那麼建議找個欄位循環刪除提交,每次不能太多,最好保持在5萬以下(根據實際情況具體判斷),畢竟delete是最消耗資源的dml語句。
(4)如果可能的話,不要同一時間操作,分批操作,這樣能減少一部分資料庫負載壓力(特別是undo)。
(5)一定要閑時操作,因為delete消耗資源比較多,會使資料庫變慢。
『伍』 oracle中,需刪除幾百張表裡面的部分數據,求語句。
select 'delete ' || table_name || ' where A not like '''%密%''' || '/' from user_tables order by table_name
用這個能批量生成oracle 里所有表,且欄位為A not like '%密%' 的執行語句
自己挑選哪些表需要執行的。或者oracle 里執行,選擇有錯跳過,執行下一選項。
我知道 si objectbrowser有這功能,並不知道你用的什麼工具。
『陸』 Oracle如何批量清空所有表數據
一個游標加一個 execute immediate 就可以具體我給你寫出來吧
--@author WFQ
declare
v_sql varchar2(2000) ;
CURSOR cur is select table_name from user_tables order by table_name ;
begin
for rows in cur
loop
v_sql := 'TRUNCATE TABLE ' || rows.table_name ;
dbms_output.put_line(v_sql);
execute immediate v_sql ;
end loop;
end;
/
『柒』 oracle如何快速刪除表中大量數據
如果是整表刪除且不考慮恢復,直接用truncate table 表名,如果是刪除大部分數據,那麼新建一個相同結構的表,插入保留的數據,將新表與原表互換表名即可。
『捌』 oracle中如何刪除所有表
1、如果想要刪除相應的表格,那麼首先要知道表格位於那個資料庫,這樣才可以進行刪除。
『玖』 oracle怎樣批量刪除和修改
下面一段示例說明了oracle的基本操作insert、update、delete產生的undo的大小和記錄條數。
--insert操作無論是1條或者多條,一次產生一條undo數據
SQL> create table a (b number, c varchar2(30));
Table created
SQL> insert into a values (1,'zhangsan');
1 row inserted
SQL>
SQL> select used_ublk,used_urec from v$session s, v$transaction t
2 where s.audsid=sys_context('userenv', 'sessionid') and s.taddr = t.addr;
USED_UBLK USED_UREC
---------- ----------
1 1
SQL> insert into a select rownum,rownum from al connect by rownum<=50;
50 rows inserted
SQL>
SQL> select used_ublk,used_urec from v$session s, v$transaction t
2 where s.audsid=sys_context('userenv', 'sessionid') and s.taddr = t.addr;
USED_UBLK USED_UREC
---------- ----------
1 2
--delete操作產生的undo條數取決於delete操作本身影響的記錄數SQL> delete from a;
51 rows deleted
SQL>
SQL> select used_ublk,used_urec from v$session s, v$transaction t
2 where s.audsid=sys_context('userenv', 'sessionid') and s.taddr = t.addr;
USED_UBLK USED_UREC
---------- ----------
1 53
SQL> insert into a select rownum,rownum from al connect by rownum<=50;
50 rows inserted
SQL>
SQL> select used_ublk,used_urec from v$session s, v$transaction t
2 where s.audsid=sys_context('userenv', 'sessionid') and s.taddr = t.addr;
USED_UBLK USED_UREC
---------- ----------
1 54
--update操作產生的undo條數取決於被update的數據的原值和新值存在差異的記錄數量
SQL> update a set c=rownum;
50 rows updated
SQL>
SQL> select used_ublk,used_urec from v$session s, v$transaction t
2 where s.audsid=sys_context('userenv', 'sessionid') and s.taddr = t.addr;
USED_UBLK USED_UREC
---------- ----------
2 57
SQL> update a set c=rownum+1000;
50 rows updated
SQL>
SQL> select used_ublk,used_urec from v$session s, v$transaction t
2 where s.audsid=sys_context('userenv', 'sessionid') and s.taddr = t.addr;
USED_UBLK USED_UREC