Thủ tục tự động insert data vào bảng trong Oracle database, sử dụng PROCEDURE và SCHEDULER
Để tạo thủ tục thêm dữ liệu vào bảng data_tab trong Oracle Database mỗi 5 giây, chúng ta cần làm những bước sau:
- Tạo bảng data_tab với trường id tự động tăng.
- Tạo thủ tục PL/SQL để thêm dữ liệu vào bảng.
- Tạo một job trong Oracle để chạy thủ tục mỗi 5 giây.
1. Tạo bảng data_tab
Chạy các câu lệnh SQL sau trong Oracle SQL*Plus hoặc SQL Developer để tạo bảng:
CREATE TABLE data_tab ( id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, content VARCHAR2(255), date_time TIMESTAMP );
2. Tạo thủ tục PL/SQL
Thủ tục này sẽ chèn dữ liệu vào bảng data_tab:
CREATE OR REPLACE PROCEDURE insert_data_tab IS BEGIN INSERT INTO data_tab (content, date_time) VALUES ('datalinks.vn - duodb - duong nguyen '||to_char(SYSTIMESTAMP,'yyyy-mm-dd hh24:mi:ss'), SYSTIMESTAMP); commit; END; /
3. Tạo job để chạy thủ tục mỗi 5 giây
Sử dụng DBMS_SCHEDULER để tạo một job tự động chạy thủ tục insert_data_tab mỗi 5 giây:
BEGIN DBMS_SCHEDULER.create_job ( job_name => 'INSERT_DATA_TAB_JOB', job_type => 'PLSQL_BLOCK', job_action => 'BEGIN insert_data_tab; END;', start_date => SYSTIMESTAMP, repeat_interval => 'FREQ=SECONDLY; INTERVAL=5', enabled => TRUE ); END; /
Kiểm tra job
Để kiểm tra job đang chạy hay không, bạn có thể dùng câu lệnh sau:
SELECT job_name, enabled, next_run_date, state FROM dba_scheduler_jobs WHERE job_name = 'INSERT_DATA_TAB_JOB';
TRUE: tức là đang chạy
Dừng job
Nếu bạn muốn dừng job, sử dụng câu lệnh sau:
BEGIN DBMS_SCHEDULER.disable('INSERT_DATA_TAB_JOB'); END; /
## Xoá Job khỏi database
BEGIN DBMS_SCHEDULER.drop_job('INSERT_DATA_TAB_JOB'); END; /
Chúng ta có thể dựa vào kịch bản trên để mô phỏng và tạo Partition table theo ngày, tháng…