Home » Công cụ tự động khai báo datafile – Oracle

Công cụ tự động khai báo datafile – Oracle

by tuanlp

1. Mục đích

– Giúp DBA chủ động quản trị, không bị động trong các trường hợp ban đêm, ngày nghỉ, đi du lịch. Công cụ tự động add datafile theo cấu hình ngưỡng thiết lập sẵn hoặc thiết lập default.

– Việc add datafile đã kiểm tra các điều kiện chặt chẽ, không để xảy ra lỗi.

– Câu lệnh kiểm tra dung lượng tablespace chạy nhanh, không gây cao tải.

2. Hoạt động

– Tự động tìm kiếm tablespace có dung lượng sử dụng >= ngưỡng.

– Tìm kiếm diskgroup thỏa mãn:

Đã từng được add datafile vào diskgroup trước đó, tránh trường hợp add vào các vùng FRA, REDO

Free >= 60Gb

Hoặc chủ động điền tên diskgroup để add datafile

– Tùy biến số lượng datafile mỗi lần add thêm, default là 3 file, mỗi file 100M, autoextend on next 20M

– Tùy biến phần trăm dung lượng tablespace theo ngưỡng, defaul là %Used=80, %Used Of Max=90.

3. Kết quả

– Tablespace, câu lệnh add datafile, thời gian thực hiện được lưu vào bảng LOGON_AUTO_ADD_DATAFILE để truy vết.

ALTER TABLESPACE <TABLESPACE_NAME> ADD DATAFILE '+DATA' SIZE 100M AUTOEXTEND ON NEXT 20M;
ALTER TABLESPACE <TABLESPACE_NAME> ADD DATAFILE '+DATA' SIZE 100M AUTOEXTEND ON NEXT 20M;
ALTER TABLESPACE <TABLESPACE_NAME> ADD DATAFILE '+DATA' SIZE 100M AUTOEXTEND ON NEXT 20M;

4. Triển khai

– Bước 1. Grant quyền cho user SYSTEM

GRANT ALTER TABLESPACE TO SYSTEM;
GRANT SELECT ANY DICTIONARY TO SYSTEM;
GRANT ALTER ANY TABLE TO SYSTEM;

– Bước 2. Tạo procedure TOOL_AUTO_ADD_DATAFILE

File đính kèm: auto_add_datafile.plb, copy file này lên OS.

su - oracle
sqlplus / as sysdba
@path/auto_add_datafile.plb

– Bước 3. Tạo job, 30 phút chạy một lần

BEGIN
DBMS_SCHEDULER.CREATE_JOB
(
job_name => 'SYSTEM.JOB_TOOL_AUTO_ADD_DATAFILE'
,start_date => TO_TIMESTAMP_TZ('2017/10/18 23:50:00.000000 +07:00','yyyy/mm/dd hh24:mi:ss.ff tzr')
,repeat_interval => 'FREQ=MINUTELY; INTERVAL=30'
,end_date => NULL
,job_class => 'DEFAULT_JOB_CLASS'
,job_type => 'PLSQL_BLOCK'
,job_action => 'BEGIN SYSTEM.TOOL_AUTO_ADD_DATAFILE.Add_Datafile (1,80,90,NULL); END;'
,comments => NULL
);
DBMS_SCHEDULER.ENABLE
(name => 'SYSTEM.JOB_TOOL_AUTO_ADD_DATAFILE');
END;
/

5. Chạy job manual

DECLARE
p_error VARCHAR2 (4000);
p_used NUMBER := 80; -- % used of tablespace
p_max NUMBER := 90; -- % used of max tablespace
is_run NUMBER := 0; --:=0 --> chi output ra command, :=1 --> output command + execute command.
p_dg VARCHAR2 (100) := NULL; --> Diskgroup chỉ định add datafile, NULL là để script tự tìm diskgroup
BEGIN
SYSTEM.TOOL_AUTO_ADD_DATAFILE.Add_Datafile (is_run,
p_used,
p_max,
p_dg);
DBMS_OUTPUT.put_line (p_error);
END;
/

You may also like