Thứ Hai, 21 tháng 11, 2022

[VIP5] Gói chụp tải định kỳ DBA_CT


Mục đích: Gói chụp tải định kỳ DBA_CT 3-5 phút 1 lần khắc phục tình trạng AWR, ASH không chụp đầy đủ để trong bất kỳ trường hợp nào có thể nhanh chóng tra cứu nguyên nhân gây tải cao, active sesion cao, sesion cao, câu lệnh SQL chiếm tải, dung lượng user tăng đột biến, dung lượng tablespace tăng đột biến,...
create user binhtv identified by oracle;
grant connect, resource, dba to binhtv;

--DROP TABLE BINHTV.DBAMF_LOG_JOBS CASCADE CONSTRAINTS;

CREATE TABLE BINHTV.DBAMF_LOG_JOBS
(
  ID          NUMBER,
  NAME        VARCHAR2(4000 BYTE),
  STATUS      VARCHAR2(50 BYTE),
  EVENT_DATE  DATE                              DEFAULT sysdate,
  NOTE        VARCHAR2(2000 BYTE)
)
TABLESPACE USERS
PCTUSED    0
PCTFREE    10
INITRANS   1
MAXTRANS   255
STORAGE    (
            INITIAL          64K
            NEXT             1M
            MINEXTENTS       1
            MAXEXTENTS       UNLIMITED
            PCTINCREASE      0
            BUFFER_POOL      DEFAULT
           )
LOGGING 
NOCOMPRESS 
NOCACHE
MONITORING;


-- Start of DDL Script for Table BINHTV.DBAMF_CT_TBS_SIZE

-- Drop the old instance of DBAMF_CT_TBS_SIZE
DROP TABLE binhtv.dbamf_ct_tbs_size
/

CREATE TABLE binhtv.dbamf_ct_tbs_size
    (id                             NUMBER,
    tbs_name                       VARCHAR2(100 BYTE),
    size_gb                        NUMBER,
    event_date                     DATE DEFAULT sysdate,
    note                           VARCHAR2(1000 BYTE))
  PCTFREE     10
  INITRANS    1
  MAXTRANS    255
  TABLESPACE  users
  STORAGE   (
    INITIAL     65536
    NEXT        1048576
    MINEXTENTS  1
    MAXEXTENTS  2147483645
  )
  NOCACHE
  MONITORING
  NOPARALLEL
  LOGGING
/

DROP SEQUENCE BINHTV.DBAMF_LOG_JOBS_SEQ;

CREATE SEQUENCE BINHTV.DBAMF_LOG_JOBS_SEQ
  START WITH 2156723
  MAXVALUE 9999999999999999999999999999
  MINVALUE 1
  NOCYCLE
  CACHE 20
  NOORDER;

-- End of DDL Script for Table BINHTV.DBAMF_CT_TBS_SIZE
-- Start of DDL Script for Table BINHTV.DBAMF_CT_USER_SIZE

-- Drop the old instance of DBAMF_CT_USER_SIZE
DROP TABLE binhtv.dbamf_ct_user_size
/

CREATE TABLE binhtv.dbamf_ct_user_size
    (id                             NUMBER,
    user_name                      VARCHAR2(100 BYTE),
    size_mb                        NUMBER,
    event_date                     DATE DEFAULT sysdate,
    note                           VARCHAR2(1000 BYTE))
  PCTFREE     10
  INITRANS    1
  MAXTRANS    255
  TABLESPACE  users
  STORAGE   (
    INITIAL     65536
    NEXT        1048576
    MINEXTENTS  1
    MAXEXTENTS  2147483645
  )
  NOCACHE
  MONITORING
  NOPARALLEL
  LOGGING
/
-- End of DDL Script for Table BINHTV.DBAMF_CT_USER_SIZE
-- Start of DDL Script for Table BINHTV.DBAMF_CT_VMSTAT

-- Drop the old instance of DBAMF_CT_VMSTAT
DROP TABLE binhtv.dbamf_ct_vmstat
/

CREATE TABLE binhtv.dbamf_ct_vmstat
    (event_date                     DATE,
    duration                       NUMBER,
    server_name                    VARCHAR2(30 BYTE),
    runque_waits                   NUMBER,
    swap_in                        NUMBER,
    swap_out                       NUMBER,
    cpu_user                       NUMBER,
    cpu_sys                        NUMBER,
    cpu_idle                       NUMBER,
    cpu_wait                       NUMBER,
    swapd                          NUMBER,
    ram_free_k                     NUMBER)
  PCTFREE     10
  INITRANS    1
  MAXTRANS    255
  TABLESPACE  users
  STORAGE   (
    INITIAL     65536
    NEXT        1048576
    MINEXTENTS  1
    MAXEXTENTS  2147483645
  )
  NOCACHE
  MONITORING
  NOPARALLEL
  LOGGING
/

-- Grants for Table
GRANT INSERT ON binhtv.dbamf_ct_vmstat TO monitor
/
-- End of DDL Script for Table BINHTV.DBAMF_CT_VMSTAT
-- Start of DDL Script for Table BINHTV.DBAMF_DISK_USAGE

-- Drop the old instance of DBAMF_DISK_USAGE
DROP TABLE binhtv.dbamf_disk_usage
/

CREATE TABLE binhtv.dbamf_disk_usage
    (host_name                      VARCHAR2(40 BYTE),
    disk_name                      VARCHAR2(50 BYTE),
    disk_size                      VARCHAR2(20 BYTE),
    disk_free                      VARCHAR2(20 BYTE),
    disk_percen                    VARCHAR2(10 BYTE),
    disk_mount                     VARCHAR2(50 BYTE),
    db_ip                          VARCHAR2(20 BYTE),
    event_date                     DATE DEFAULT sysdate)
  PCTFREE     10
  INITRANS    1
  MAXTRANS    255
  TABLESPACE  users
  STORAGE   (
    INITIAL     65536
    NEXT        1048576
    MINEXTENTS  1
    MAXEXTENTS  2147483645
  )
  NOCACHE
  MONITORING
  NOPARALLEL
  LOGGING
/
-- End of DDL Script for Table BINHTV.DBAMF_DISK_USAGE
-- Start of DDL Script for Table BINHTV.DBAMF_LOG_GG

-- Drop the old instance of DBAMF_LOG_GG
DROP TABLE binhtv.dbamf_log_gg
/

CREATE TABLE binhtv.dbamf_log_gg
    (id                             NUMBER,
    program                        VARCHAR2(20 BYTE),
    status                         VARCHAR2(50 BYTE),
    gg_group                       VARCHAR2(100 BYTE),
    lag                            VARCHAR2(50 BYTE),
    time_since_chkpt               VARCHAR2(50 BYTE),
    event_date                     DATE DEFAULT sysdate)
  PCTFREE     10
  INITRANS    1
  MAXTRANS    255
  TABLESPACE  users
  STORAGE   (
    INITIAL     65536
    NEXT        1048576
    MINEXTENTS  1
    MAXEXTENTS  2147483645
  )
  NOCACHE
  MONITORING
  NOPARALLEL
  LOGGING
/
-- End of DDL Script for Table BINHTV.DBAMF_LOG_GG
-- Start of DDL Script for Table BINHTV.DBAMF_LOG_JOBS

-- Drop the old instance of DBAMF_LOG_JOBS
DROP TABLE binhtv.dbamf_log_jobs
/

CREATE TABLE binhtv.dbamf_log_jobs
    (id                             NUMBER,
    name                           VARCHAR2(4000 BYTE),
    status                         VARCHAR2(50 BYTE),
    event_date                     DATE DEFAULT sysdate,
    note                           VARCHAR2(2000 BYTE))
  PCTFREE     10
  INITRANS    1
  MAXTRANS    255
  TABLESPACE  users
  STORAGE   (
    INITIAL     65536
    NEXT        1048576
    MINEXTENTS  1
    MAXEXTENTS  2147483645
  )
  NOCACHE
  MONITORING
  NOPARALLEL
  LOGGING
/
-- End of DDL Script for Table BINHTV.DBAMF_LOG_JOBS
-- Start of DDL Script for Table BINHTV.DBAMF_LOG_OP

-- Drop the old instance of DBAMF_LOG_OP
DROP TABLE binhtv.dbamf_log_op
/

CREATE TABLE binhtv.dbamf_log_op
    (id                             NUMBER,
    msg                            VARCHAR2(1000 BYTE),
    event_date                 TIMESTAMP (6) DEFAULT sysdate,
    type                           VARCHAR2(1000 BYTE),
    note                           VARCHAR2(1000 BYTE))
  PCTFREE     10
  INITRANS    1
  MAXTRANS    255
  TABLESPACE  users
  STORAGE   (
    INITIAL     65536
    NEXT        1048576
    MINEXTENTS  1
    MAXEXTENTS  2147483645
  )
  NOCACHE
  MONITORING
  NOPARALLEL
  LOGGING
/
CREATE SEQUENCE BINHTV.DBAMF_LOG_OP_SEQ
  START WITH 1
  MAXVALUE 9999999999999999999999999999
  MINVALUE 1
  NOCYCLE
  CACHE 20
  NOORDER;


-- End of DDL Script for Table BINHTV.DBAMF_LOG_OP
-- Start of DDL Script for Table BINHTV.DBAMF_LOG_WN

-- Drop the old instance of DBAMF_LOG_WN
DROP TABLE binhtv.dbamf_log_wn
/

CREATE TABLE binhtv.dbamf_log_wn
    (id                             NUMBER,
    msg                            VARCHAR2(1000 BYTE),
    event_date                     TIMESTAMP (6) DEFAULT sysdate,
    type                           VARCHAR2(1000 BYTE),
    note                           VARCHAR2(1000 BYTE))
  PCTFREE     10
  INITRANS    1
  MAXTRANS    255
  TABLESPACE  users
  STORAGE   (
    INITIAL     65536
    NEXT        1048576
    MINEXTENTS  1
    MAXEXTENTS  2147483645
  )
  NOCACHE
  MONITORING
  NOPARALLEL
  LOGGING
/

-- End of DDL Script for Table BINHTV.DBAMF_LOG_WN
-- Start of DDL Script for Table BINHTV.DBAMF_TAB_CYCLE

-- Drop the old instance of DBAMF_TAB_CYCLE
DROP TABLE binhtv.dbamf_tab_cycle
/

CREATE TABLE binhtv.dbamf_tab_cycle
    (id                             NUMBER,
    owner                          VARCHAR2(50 BYTE),
    table_name                     VARCHAR2(200 BYTE),
    purpose                        VARCHAR2(1000 BYTE),
    cycle_days                     NUMBER,
    rw_days                        NUMBER,
    readonly_days                  NUMBER,
    size_mb                        NUMBER,
    num_rows                       NUMBER,
    note                           VARCHAR2(1000 BYTE))
  PCTFREE     10
  INITRANS    1
  MAXTRANS    255
  TABLESPACE  users
  STORAGE   (
    INITIAL     65536
    NEXT        1048576
    MINEXTENTS  1
    MAXEXTENTS  2147483645
  )
  NOCACHE
  MONITORING
  NOPARALLEL
  LOGGING
/

-- End of DDL Script for Table BINHTV.DBAMF_TAB_CYCLE
-- Start of DDL Script for Table BINHTV.DBAMF_CT_SQL

-- Drop the old instance of DBAMF_CT_SQL
DROP TABLE binhtv.dbamf_ct_sql
/

CREATE TABLE binhtv.dbamf_ct_sql
    (inst_id                        NUMBER,
    username                       VARCHAR2(30 BYTE),
    sid                            NUMBER,
    osuser                         VARCHAR2(30 BYTE),
    machine                        VARCHAR2(64 BYTE),
    event                          VARCHAR2(64 BYTE),
    sql_id                         VARCHAR2(13 BYTE),
    sql_text                       VARCHAR2(3000 BYTE),
    logon_time                     DATE,
    event_date                     DATE DEFAULT sysdate)
  PCTFREE     10
  INITRANS    1
  MAXTRANS    255
  TABLESPACE  users
  STORAGE   (
    INITIAL     65536
    NEXT        1048576
    MINEXTENTS  1
    MAXEXTENTS  2147483645
  )
  NOCACHE
  MONITORING
  NOPARALLEL
  LOGGING
/

-- End of DDL Script for Table BINHTV.DBAMF_CT_SQL
-- Start of DDL Script for Table BINHTV.DBAMF_CT_SESSION

-- Drop the old instance of DBAMF_CT_SESSION
DROP TABLE binhtv.dbamf_ct_session
/

CREATE TABLE binhtv.dbamf_ct_session
    (username                       VARCHAR2(50 BYTE),
    status                         VARCHAR2(10 BYTE),
    count_low                      VARCHAR2(5 BYTE),
    count_avg                      VARCHAR2(5 BYTE),
    count_high                     VARCHAR2(5 BYTE),
    count_critical                 VARCHAR2(5 BYTE),
    notes                          VARCHAR2(1000 BYTE),
    event_date                     DATE DEFAULT sysdate,
    count                          NUMBER)
  PCTFREE     10
  INITRANS    1
  MAXTRANS    255
  TABLESPACE  users
  STORAGE   (
    INITIAL     65536
    NEXT        1048576
    MINEXTENTS  1
    MAXEXTENTS  2147483645
  )
  NOCACHE
  MONITORING
  NOPARALLEL
  LOGGING
/

-- End of DDL Script for Table BINHTV.DBAMF_CT_SESSION
-- Start of DDL Script for Table BINHTV.DBAMF_CT_OBJ_SIZE

-- Drop the old instance of DBAMF_CT_OBJ_SIZE
DROP TABLE binhtv.dbamf_ct_obj_size
/

CREATE TABLE binhtv.dbamf_ct_obj_size
    (id                             NUMBER,
    object_owner                   VARCHAR2(50 BYTE),
    object_name                    VARCHAR2(200 BYTE),
    size_gb                        NUMBER,
    event_date                     DATE DEFAULT sysdate,
    note                           VARCHAR2(1000 BYTE))
  PCTFREE     10
  INITRANS    1
  MAXTRANS    255
  TABLESPACE  users
  STORAGE   (
    INITIAL     65536
    NEXT        1048576
    MINEXTENTS  1
    MAXEXTENTS  2147483645
  )
  NOCACHE
  MONITORING
  NOPARALLEL
  LOGGING
/

-- End of DDL Script for Table BINHTV.DBAMF_CT_OBJ_SIZE
-- Start of DDL Script for Table BINHTV.DBAMF_CT_DISK_USAGE

-- Drop the old instance of DBAMF_CT_DISK_USAGE
DROP TABLE binhtv.dbamf_ct_disk_usage
/

CREATE TABLE binhtv.dbamf_ct_disk_usage
    (host_name                      VARCHAR2(40 BYTE),
    disk_name                      VARCHAR2(50 BYTE),
    disk_size                      VARCHAR2(20 BYTE),
    disk_free                      VARCHAR2(20 BYTE),
    disk_percen                    VARCHAR2(10 BYTE),
    disk_mount                     VARCHAR2(50 BYTE),
    db_ip                          VARCHAR2(20 BYTE),
    event_date                     DATE DEFAULT sysdate)
  PCTFREE     10
  INITRANS    1
  MAXTRANS    255
  TABLESPACE  users
  STORAGE   (
    INITIAL     65536
    NEXT        1048576
    MINEXTENTS  1
    MAXEXTENTS  2147483645
  )
  NOCACHE
  MONITORING
  NOPARALLEL
  LOGGING
/

-- End of DDL Script for Table BINHTV.DBAMF_CT_DISK_USAGE
-- Start of DDL Script for Table BINHTV.DBAMF_CPU_MEM_USAGE

-- Drop the old instance of DBAMF_CPU_MEM_USAGE
DROP TABLE binhtv.dbamf_cpu_mem_usage
/

CREATE TABLE binhtv.dbamf_cpu_mem_usage
    (id                             NUMBER,
    pct_usage                      NUMBER,
    type                           VARCHAR2(50 BYTE),
    event_date                     DATE DEFAULT sysdate,
    note                           VARCHAR2(100 BYTE))
  PCTFREE     10
  INITRANS    1
  MAXTRANS    255
  TABLESPACE  users
  STORAGE   (
    INITIAL     65536
    NEXT        1048576
    MINEXTENTS  1
    MAXEXTENTS  2147483645
  )
  NOCACHE
  MONITORING
  NOPARALLEL
  LOGGING
/

-- End of DDL Script for Table BINHTV.DBAMF_CPU_MEM_USAGE

-- Start of DDL Script for Package SYS.DBA_CT
-- Drop the old instance of DBA_CT
DROP PACKAGE sys.dba_ct
/

CREATE OR REPLACE 
PACKAGE     sys.dba_ct
IS
    procedure ct_session;
    procedure ct_sql;
    procedure ct_obj_size;
    procedure ct_user_size;
    procedure ct_tbs_size;
END; -- Package spec
/


CREATE OR REPLACE 
PACKAGE BODY sys.dba_ct
IS
   free_space_low_level   NUMBER := 80000;                              --2500MB

  
  procedure ct_session
  is
    v_err varchar2(1000);
  begin
    -- Check 9h, 11h, 15h, 17h, 18h thi chay cau lenh
    --if (to_char(sysdate,'hh24')) in ('08','09','11','15','16','17','18') then
         insert into binhtv.dbamf_log_jobs (id,name,status,event_date, note)
            values(binhtv.dbamf_log_jobs_seq.nextval,'Starting sys.dba_ct.ct_session',1,sysdate,'binhtv.dbamf_ct_session');
         commit;
        insert into binhtv.dbamf_ct_session(username ,status,count)
        select /* count , status*/ username,status, count(*) from gv$session group by username,status order by count(*) desc;
        commit;
         --sys.send_sms_binhtv('sys.dba_ct.ct_session:' || to_char(sysdate,'dd/mm/yyyy hh24:mi:ss'));
         commit;
         insert into binhtv.dbamf_log_jobs (id,name,status,event_date, note)
            values(binhtv.dbamf_log_jobs_seq.nextval,'Completed sys.dba_ct.ct_session',1,sysdate,'binhtv.dbamf_ct_session');
         commit;
    --end if;
   EXCEPTION
        WHEN others THEN
            --send_sms_binhtv('Error sys.dba_ct.ct_session:' || SQLERRM);
            v_err := substr(SQLERRM,1,200);
            insert into binhtv.dbamf_log_jobs (id,name,status,event_date, note)
                values(binhtv.dbamf_log_jobs_seq.nextval,'Error sys.dba_ct.ct_session',-1,sysdate,'Error sys.dba_ct.ct_session, '||v_err);
            commit;
            send_sms_binhtv('Error sys.dba_ct.ct_session, '||v_err);
            commit;
   END;

    procedure ct_sql
    is
        v_err varchar2(1000);
    begin
     -- Check 9h, 11h, 15h, 17h, 18h thi chay cau lenh
     --if (to_char(sysdate,'hh24')) in ('08','09','11','15','17','18') then
         insert into binhtv.dbamf_log_jobs (id,name,status,event_date, note)
            values(binhtv.dbamf_log_jobs_seq.nextval,'Starting sys.dba_ct.ct_sql',1,sysdate,'binhtv.dbamf_ct_sql');
         commit;
         insert into binhtv.dbamf_ct_sql(inst_id ,username,sid,osuser,machine,EVENT,sql_id,SQL_TEXT,logon_time)
             SELECT distinct s.inst_id inst_id, s.username, s.SID SID, s.osuser, s.machine,DECODE(S.WAIT_TIME, 0, S.EVENT, 'CPU') EVENT,
             s.sql_id, SUBSTR(DECODE(SS.SQL_TEXT, NULL, AA.NAME, SS.SQL_TEXT), 1, 1000) SQL_TEXT,s.logon_time
             FROM GV$SESSION S, GV$SQLSTATS SS, AUDIT_ACTIONS AA
             WHERE  S.STATUS = 'ACTIVE' AND S.SQL_ID = SS.SQL_ID (+) AND AA.ACTION = S.COMMAND and s.type != 'BACKGROUND' AND S.TYPE = 'USER'
             and s.username  NOT in ('SYS','SYSMAN','DBSNMP','GGATE','GOLDENGATE')
             --AND username in 'SYS'
             --and DECODE(S.WAIT_TIME, 0, S.EVENT, 'CPU') like '%cell single block physical read%'
             --and lower(ss.sql_text) like lower('%parallel%')
             --and s.sid=1234
             --and s.machine like '%BINHTV%'
             --and s.sql_id ='ccwg0nqr1zbu7'
             ORDER BY username,sql_id;
          commit;
           --sys.send_sms_binhtv('sys.dba_ct.ct_sql' || to_char(sysdate,'dd/mm/yyyy hh24:mi:ss'));
           commit;
           insert into binhtv.dbamf_log_jobs (id,name,status,event_date, note)
             values(binhtv.dbamf_log_jobs_seq.nextval,'Completed sys.dba_ct.ct_sql',1,sysdate,'binhtv.dbamf_ct_sql');
           commit;
     --end if;
    EXCEPTION
         WHEN others THEN
             --send_sms_binhtv('Error sys.dba_ct.ct_sql: ' || SQLERRM);
             v_err := substr(SQLERRM,1,200);
             insert into binhtv.dbamf_log_jobs (id,name,status,event_date, note)
                 values(binhtv.dbamf_log_jobs_seq.nextval,'Error sys.dba_ct.ct_sql',-1,sysdate,'Error sys.dba_ct.ct_sql'||v_err);
             commit;
           send_sms_binhtv('Error sys.dba_ct.ct_sql, '||v_err);
    END;

    procedure ct_obj_size
    is
        v_err varchar2(1000);
    begin
     -- Check 9h, 11h, 15h, 17h, 18h thi chay cau lenh
     --if (to_char(sysdate,'hh24')) in ('08','09','11','15','17','18') then
     insert into binhtv.dbamf_log_jobs (id,name,status,event_date, note)
        values(binhtv.dbamf_log_jobs_seq.nextval,'Starting sys.dba_ct.ct_obj_size',1,sysdate,'binhtv.dbamf_obj_size');
     commit;
      insert into binhtv.dbamf_ct_obj_size(object_owner,object_name,size_gb)
          select owner, segment_name, round(sum(bytes)/1024/1024/1024,2)  from dba_segments
              where segment_name not like '%$%'
              and segment_name not like '%XX%'
              and segment_name not like '%TMP%'
              group by owner, segment_name
              having  round(sum(bytes)/1024/1024/1024) >1
              order by sum(bytes)desc, owner, segment_name
              ;
       commit;
       --sys.send_sms_binhtv('sys.dba_ct.ct_obj_size' || to_char(sysdate,'dd/mm/yyyy hh24:mi:ss'));
       commit;
       insert into binhtv.dbamf_log_jobs (id,name,status,event_date, note)
         values(binhtv.dbamf_log_jobs_seq.nextval,'Completed sys.dba_ct.ct_obj_size',1,sysdate,'binhtv.dbamf_obj_size');
       commit;
     --end if;
    EXCEPTION
         WHEN others THEN
             v_err := substr(SQLERRM,1,200);
             insert into binhtv.dbamf_log_jobs (id,name,status,event_date, note)
                 values(binhtv.dbamf_log_jobs_seq.nextval,'Error sys.dba_ct.ct_obj_size',-1,sysdate,'Error sys.dba_ct.ct_obj_size'||v_err);
             commit;
             send_sms_binhtv('Error sys.dba_ct.ct_obj_size: ' || v_err);

    END;

    procedure ct_user_size
    is
    begin
     -- Check 9h, 11h, 15h, 17h, 18h thi chay cau lenh
     --if (to_char(sysdate,'hh24')) in ('08','09','11','15','17','18') then
     insert into binhtv.dbamf_log_jobs (id,name,status,event_date, note)
        values(binhtv.dbamf_log_jobs_seq.nextval,'Starting sys.dba_ct.ct_user_size',1,sysdate,'binhtv.dbamf_user_size');
     commit;
       insert into binhtv.dbamf_ct_user_size(user_name, size_mb)
        select owner, round(sum(bytes)/1024/1024,2)  from dba_segments
        group by owner
        order by round(sum(bytes)/1024/1024)desc, owner;
       commit;
       --sys.send_sms_binhtv('sys.dba_ct.ct_user_size' || to_char(sysdate,'dd/mm/yyyy hh24:mi:ss'));
       commit;
       insert into binhtv.dbamf_log_jobs (id,name,status,event_date, note)
         values(binhtv.dbamf_log_jobs_seq.nextval,'Completed sys.dba_ct.ct_user_size',1,sysdate,'binhtv.dbamf_user_size');
       commit;
     --end if;
    EXCEPTION
         WHEN others THEN
             send_sms_binhtv('Error sys.dba_ct.ct_user_size: ' || SQLERRM);
             insert into binhtv.dbamf_log_jobs (id,name,status,event_date, note)
                 values(binhtv.dbamf_log_jobs_seq.nextval,'Error sys.dba_ct.ct_user_size' ,-1,sysdate,'Error sys.dba_ct.ct_user_size' );
             commit;
    END;

    procedure ct_tbs_size
    is
    begin
     -- Check 9h, 11h, 15h, 17h, 18h thi chay cau lenh
     --if (to_char(sysdate,'hh24')) in ('08','09','11','15','17','18') then
     insert into binhtv.dbamf_log_jobs (id,name,status,event_date, note)
        values(binhtv.dbamf_log_jobs_seq.nextval,'Starting sys.dba_ct.ct_tbs_size',1,sysdate,'binhtv.dbamf_ct_tbs_size');
     commit;
        insert into binhtv.dbamf_ct_tbs_size(tbs_name, size_gb)
        select tablespace_name, round(sum(bytes)/1024/1024/1024,2)  from dba_segments
        group by tablespace_name
        order by round(sum(bytes)/1024/1024/1024)desc, tablespace_name;

       commit;
       --sys.send_sms_binhtv('sys.dba_ct.ct_tbs_size' || to_char(sysdate,'dd/mm/yyyy hh24:mi:ss'));
       commit;
       insert into binhtv.dbamf_log_jobs (id,name,status,event_date, note)
         values(binhtv.dbamf_log_jobs_seq.nextval,'Completed sys.dba_ct.ct_tbs_size',1,sysdate,'binhtv.dbamf_ct_tbs_size');
       commit;
     --end if;
    EXCEPTION
         WHEN others THEN
             send_sms_binhtv('Error sys.dba_ct.ct_tbs_size: ' || SQLERRM);
             insert into binhtv.dbamf_log_jobs (id,name,status,event_date, note)
                 values(binhtv.dbamf_log_jobs_seq.nextval,'Error sys.dba_ct.ct_tbs_size' ,-1,sysdate,'Error sys.dba_ct.ct_tbs_size' );
             commit;
    END;
END;
/


-- End of DDL Script for Package SYS.DBA_CT

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master