我们有一个实时日志表数据量太大了(这个不是分区表),这个表不能中断业务,我们先要在线删除部分数据。有这个是生产库不能中断业务不能使用create table rename 的方法来搞。我就老老实实的使用rowid批删除的方法。
create or replace procedure delete_table_by_condition(table_name varchar2,
condition varchar2) is
type mycursor_type is ref cursor;
mycursor mycursor_type;
--cursor mycursor is
-- SELECT ROWID FROM table_name WHERE condition order by rowid;
type rowid_table_type is table of rowid index by pls_integer;
v_rowid rowid_table_type;
v_sql_getrowid varchar2(400);
v_sql_del_table varchar2(400);
BEGIN
v_sql_getrowid := 'SELECT ROWID FROM ' || table_name || ' WHERE ' ||
condition || ' order by rowid ';
v_sql_del_table := 'delete from ' || table_name || ' WHERE rowid = :1';