0
テーブルtblmailのレコードの10年前に10億のデータが必要です。 私はバッチサイズでやっています。オラクルで何百万ものデータをパージするベストプラクティス
CREATE OR REPLACE PROCEDURE PURGE_Data AS
batch_size INTEGER := 1000;
pvc_procedure_name CONSTANT VARCHAR2(50) := 'Purge_data';
pvc_info_message_num CONSTANT NUMBER := 1;
pvc_error_message_type CONSTANT VARCHAR2(5) := 'ERROR';
v_message schema_mc.db_msg_log.message%TYPE;
v_msg_num schema_mc.db_msg_log.msg_num%TYPE;
/*
Purpose: Provide stored procedures to be used to purge unwanted archives.
*/
BEGIN
Delete from tblmail where createdate_dts < (SYSDATE - INTERVAL '10' YEAR) and ROWNUM <= batch_size;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
v_msg_num := SQLCODE;
v_message := 'Error deleting from tblmail table';
INSERT INTO error_log
(date, num, type, source, mail)
VALUES
(systimestamp, v_msg_num, pvc_error_message_type,pvc_procedure_name, v_message);
COMMIT;
END;
一括収集と削除を使用する必要がありますか?これを行う最善の方法は何ですか?
単一の削除操作はバッチ処理よりも高速ですが、データベースが10億レコードの一回限りの削除を許可するように構成されていない可能性があります。何行保管していますか?あなたはこれについてあなたのDBAと話しましたか? –