Thứ Bảy, 11 tháng 1, 2020

Script thêm partition theo 1 giờ, 12 giờ cho bảng dữ liệu lớn

1. Script thêm partition theo 1 giờ:
declare
   v_table_name   varchar2 (40)  := 'BẢNG CÓ PARTITION THEO 1 GIỜ';
   v_statement    varchar2 (500) := '';
   from_date      varchar2 (40)  := '01/02/2020';
   v_index_name   varchar2 (40)  := '';

   cursor c_index
   is
      select index_name
        from user_indexes
       where table_name = v_table_name;
begin
   for j in 0 .. 27
   loop
      for i in 0 .. 24
      loop
         v_statement :=
               ' alter table '
            || v_table_name
            || ' add partition DATA'
            || to_char (to_date (from_date, 'dd/mm/yyyy') + j + i / 24,
                        'yyyymmddhh24'
                       )
            || ' values less than (to_date('''
            || to_char (  trunc (to_date (from_date, 'dd/mm/yyyy hh24'))
                        + j
                        + i / 24
                        + 1 / 24,
                        'dd/mm/yyyy hh24'
                       )
            || ''',''dd/mm/yyyy hh24'')) tablespace DATA'
            || ';';
         dbms_output.put_line (v_statement);
      end loop;
   end loop;
end;

2. Script thêm partition theo 12 giờ:
declare
   v_table_name   varchar2 (40)  := 'BẢNG CÓ PARTITION THEO 12 GIỜ ';
   v_statement    varchar2 (500) := '';
   from_date      varchar2 (40)  := '01/02/2020';
   v_index_name   varchar2 (40)  := '';

   cursor c_index
   is
      select index_name
        from user_indexes
       where table_name = v_table_name;
begin
   for j in 0 .. 27
   loop
      for i in 0 .. 1
      loop
         v_statement :=
               ' alter table '
            || v_table_name
            || ' add partition DATA'
            || to_char (to_date (from_date, 'dd/mm/yyyy') + j + i / 2,
                        'yyyymmddhh24'
                       )
            || ' values less than (to_date('''
            || to_char (  trunc (to_date (from_date, 'dd/mm/yyyy hh24'))
                        + j
                        + i / 2
                        + 1 / 2,
                        'dd/mm/yyyy hh24'
                       )
            || ''',''dd/mm/yyyy hh24'')) tablespace HTDS'
            || to_char (to_date (from_date, 'dd/mm/yyyy') + j, 'yyyymm')
            || ';';
         dbms_output.put_line (v_statement);
      end loop;
   end loop;
end;

 3. Script kiểm tra partition cuối cùng
 select   t1.table_owner, t1.table_name, t1.partition_name, t1.tablespace_name,
         t1.high_value
    from dba_tab_partitions t1
   where (t1.table_owner, t1.table_name, t1.partition_position) in (
            select   table_owner, table_name, max (partition_position)
                from dba_tab_partitions
               where table_owner not in
                        ('SYS',
                         'SYSTEM',
                         'SYSMAN',
                         'OUTLN',
                         'DBSNMP',
                         'WMSYS',
                         'EXFSYS',
                         'CTXSYS',
                         'XDB',
                         'ORDSYS',
                         'MDSYS',
                         'OLAPSYS',
                         'DMSYS',
                         'SCOTT'
                        )
            group by table_owner, table_name)
     and t1.table_name not like 'BIN$%'
order by t1.partition_name desc;

select table_owner || '.' || table_name
  from dba_tab_partitions
 where partition_name like '%201912%' and table_name not like 'BIN%'
minus
select table_owner || '.' || table_name
  from dba_tab_partitions
 where partition_name like '%202001%';


*****
Hãy nhanh tay đăng ký khóa học "Quản trị cơ sở dữ liệu Oracle 12c cơ bản" trên Unica giành cho những bạn mới học cơ sở dữ liệu Oracle hoặc cần nâng cao kiến thức, kinh nghiệm thực tiễn trên Unica (giá gốc 900K, giá khi đăng ký HÔM NAY là 299K):

Bước 1: Truy cập Unica.vn, bấm ĐĂNG KÝ nếu chưa có tài khoản
Bước 2: Đăng nhập tài khoản học viên trên Unica.vn

Bước 4: Bấm KÍCH HOẠT NGAYđể thanh toán và bắt đầu vào học.
*****
@ Trần Văn Bình - Founder of Oracle DBA AZ 

 #học oracle #oracle database #khóa học oracle online #khóa học oca #học oca ở đâu #oca là gì #oca oracle #BossData #OraAz #OracleDBAAz #OracleTutorial #Quản_trị_cơ_sở_dữ_liệu_Oracle #OracleDBA #OracleDatabaseAdministration

ĐỌC NHIỀU

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