рд╕рдВрд╕реНрдХрд░рдг 11 рдЬреА рдореЗрдВ, рдУрд░реЗрдХрд▓ рдиреЗ рдХрдИ рд░реЛрдорд╛рдВрдЪрдХ рдирдИ рд╡рд┐рднрд╛рдЬрди рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдкреЗрд╢ рдХрд┐рдпрд╛ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдВрддрд░рд╛рд▓ рд╡рд┐рднрд╛рдЬрди рдХрд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХрд╛рд░реНрдп - рд╡рд┐рднрд╛рдЬрди рдХреЛ рд╕реАрдорд╛ рд╕реЗ рдмрд╛рд╣рд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рднрд╛рдЬрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
11g рд╕реЗ рдкрд╣рд▓реЗ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рдЖрдкрдХреЛ рд╕рдордп-рд╕рдордп рдкрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдпрд╛ рддреЛ рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреЛ рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЕрдиреБрднрд╛рдЧ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣реА рд╣реИ, рдРрд╕реА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛ рд▓рдЧрд╛рддрд╛рд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рднрд╛рдЬрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕рдорд╛рдзрд╛рди рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛ред
рдкрд╣рд▓реЗ рдореИрдВ 11 рдЬреА рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реВрдВ:
create table res ( res_id number not null , res_date date , hotel_id number(3), guest_id number ) partition by range (res_id) interval (100) store in (users) ( partition p1 values less than (101) );
create table res ( res_id number not null , res_date date , hotel_id number(3), guest_id number ) partition by range (res_id) interval (100) store in (users) ( partition p1 values less than (101) );
create table res ( res_id number not null , res_date date , hotel_id number(3), guest_id number ) partition by range (res_id) interval (100) store in (users) ( partition p1 values less than (101) );
create table res ( res_id number not null , res_date date , hotel_id number(3), guest_id number ) partition by range (res_id) interval (100) store in (users) ( partition p1 values less than (101) );
create table res ( res_id number not null , res_date date , hotel_id number(3), guest_id number ) partition by range (res_id) interval (100) store in (users) ( partition p1 values less than (101) );
create table res ( res_id number not null , res_date date , hotel_id number(3), guest_id number ) partition by range (res_id) interval (100) store in (users) ( partition p1 values less than (101) );
create table res ( res_id number not null , res_date date , hotel_id number(3), guest_id number ) partition by range (res_id) interval (100) store in (users) ( partition p1 values less than (101) );
create table res ( res_id number not null , res_date date , hotel_id number(3), guest_id number ) partition by range (res_id) interval (100) store in (users) ( partition p1 values less than (101) );
create table res ( res_id number not null , res_date date , hotel_id number(3), guest_id number ) partition by range (res_id) interval (100) store in (users) ( partition p1 values less than (101) );
create table res ( res_id number not null , res_date date , hotel_id number(3), guest_id number ) partition by range (res_id) interval (100) store in (users) ( partition p1 values less than (101) );
create table res ( res_id number not null , res_date date , hotel_id number(3), guest_id number ) partition by range (res_id) interval (100) store in (users) ( partition p1 values less than (101) );
рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП рдПрдХ p1 рд╕реЗрдХреНрд╢рди рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ res_id рдХреЙрд▓рдо рдорд╛рди 1-100 рдХреА рд╕реАрдорд╛ рдореЗрдВ рд╣реИред рдЬрдм 101 рд╕реЗ рдХрдо res_id рд╕реНрддрдВрдн рдорд╛рди рд╡рд╛рд▓реЗ рд░рд┐рдХреЙрд░реНрдбреНрд╕ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ p1 рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЬрдм рдирдП рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ рдЗрд╕ рд╕реНрддрдВрдн рдХрд╛ рдорд╛рди 101 рд╕реЗ рдЕрдзрд┐рдХ рдпрд╛ рдмрд░рд╛рдмрд░ рд╣реЛрддрд╛ рд╣реИ, рддреЛ Oracle рдбреЗрдЯрд╛рдмреЗрд╕ 11g рдПрдХ рдирдпрд╛ рдЕрдиреБрднрд╛рдЧ рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред рдЖрдк рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдФрд░ рдЕрдиреНрдп рдирдИ рд╡рд┐рднрд╛рдЬрди рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ
рдЬреЛ рдЕрд░реБрдк рдирдВрджрд╛ рджреНрд╡рд╛рд░рд╛ рдУрд░реЗрдХрд▓ рдкрддреНрд░рд┐рдХрд╛ рдХреЗ рд░реВрд╕реА рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдПрдХ рд▓реЗрдЦ рдХреЗ
рдЕрдиреБрд╡рд╛рдж рдореЗрдВ рд╣реИрдВ ред
рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рдЕрдиреНрдп DBMS рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╡рд┐рднрд╛рдЬрди рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдЕрдВрддрд░рд╛рд▓ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдмрдврд╝рддреА рд╡рд┐рднрд╛рдЬрди рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди
рдПрдХ рдкрд░реАрдХреНрд╖рдг рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдБ:
- рдЯреЗрдмрд▓ рдЯреЗрд╕реНрдЯ_рдкрд╛рд░реНрдЯ рдмрдирд╛рдПрдВ (
- рдЖрдИрдбреА рд╕рдВрдЦреНрдпрд╛ рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реИ ,
- рдирд╛рдо varchar2 (100) рд╢реВрдиреНрдп рдирд╣реАрдВ ,
- рдорд╛рд▓рд┐рдХ varchar2 (100) рдЕрд╢рдХреНрдд рдирд╣реАрдВ ,
- рдкреНрд░рдХрд╛рд░ varchar2 (100) рд╢реВрдиреНрдп рдирд╣реАрдВ ,
- рдмрдирд╛рдИ рдЧрдИ рддрд╛рд░реАрдЦ рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реИ ,
- constraint test_part_pk
- рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА (рдЖрдИрдбреА)
- )
- рд╡рд┐рднрд╛рдЬрди (рдЖрдИрдбреА) рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрди (рд╡рд┐рднрд╛рдЬрди p1 рдорд╛рди (10000) рд╕реЗ рдХрдо );
рдпрд╣ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ рдХрд┐ рдпрджрд┐ рдРрд╕реА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХреЛрдИ рдЕрдВрддрд░рд╛рд▓ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╡рд┐рднрд╛рдЬрди рдЦрдВрдб рдХреЗ рдЕрдзрд┐рдХрддрдо рдЦрдВрдб рдХреА рд╕реАрдорд╛ рд╕реЗ рдкрд╣рд▓реЗ рдирдП рдЦрдВрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╡рд╛рдВрдЫрдиреАрдп рд╣реЛрдЧрд╛ред рд╕реАрдорд╛ рдкрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд┐рддрдиреЗ рдкреНрд░рдореБрдЦ рдореВрд▓реНрдп рд╣реИрдВ, рд╣рдо рдПрдХ рд╕рд░рд▓ рд╕реВрддреНрд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рд╡рд┐рднрд╛рдЬрди_рд╕рд╛рдЗрдЬ - (рдХреА-рд╕реНрдЯрд╛рд░реНрдЯ_рдХреА_рдЗрди_рдкрд╛рд░реНрдЯрд┐рд╢рди) , рдЬрд╣рд╛рдВ рдХреБрдВрдЬреА рд╡рд░реНрддрдорд╛рди рд╡рд┐рднрд╛рдЬрди рдХреБрдВрдЬреА рд╣реИ, start_key_in_partition рдкрд╣рд▓реА рдХреБрдВрдЬреА рд╣реИ рдЬреЛ рдЗрд╕ рдЦрдВрдб рдореЗрдВ рдЖрддреА рд╣реИ, рд╡рд┐рднрд╛рдЬрди_рд╕рд╛рдЗрдЬ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдФрд░% рдкреВрд░реНрдгрд╛рдВрдХ рд╡рд┐рднрд╛рдЬрди (div) рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рд╣реИред рдЖрдорддреМрд░ рдкрд░, рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рднрд╛рдЬрди рдХреЛ рд╕рдорд╛рди рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рд╣рдо рдЗрд╕ рд╕реВрддреНрд░ рдХреЛ рдирд┐рдореНрди рдореЗрдВ рд╕рд░рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдкрд╛рд░реНрдЯреАрд╢рди_рд╕рд╛рдЗрдЬрд╝ - рдХреБрдВрдЬреА% рдкрд╛рд░реНрдЯреАрд╢рди_рд╕рд╛рдЗрдЬрд╝ред
рдпрд╣ рд╣рдореЗрдВ рдХреНрдпрд╛ рджреЗрддрд╛ рд╣реИ: рдкрд▓ рдХреЛ рдЬрд╛рдирдирд╛, рд╣рдо рдПрдХ рдЯреНрд░рд┐рдЧрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рдШрдЯрдирд╛ рдХреЗ рд╣реЛрдиреЗ рдкрд░ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред
рдпрд╣ рдЯреНрд░рд┐рдЧрд░ рдмрдирд╛рдПрдВ:
- tr_test_part рдЯреНрд░рд┐рдЧрд░ рдмрдирд╛рдПрдВ рдпрд╛ рдмрджрд▓реЗрдВ
- test_part рдкрд░ рдбрд╛рд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ
- рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП
- рдЬрдм (mod ( NEW .id, 10000) = 6000)
- рдШреЛрд╖рд┐рдд
- l_part_name рдирдВрдмрд░;
- l_maxvalue рд╕рдВрдЦреНрдпрд╛;
- l_exist рд╕рдВрдЦреНрдпрд╛;
- l_partition_exists рдЕрдкрд╡рд╛рдж ;
- PRAGMA EXCEPTION_INIT (l_partition_exists, -14074);
- PRAGMA AUTONOMOUS_TRANSACTION;
- рд╢реБрд░реВ рдХрд░рдирд╛
- l_part_name: = ceil (: NEW .ID / 10000) +1;
- рд╢реБрд░реВ
- рддрддреНрдХрд╛рд▓ 'рдЕрджрд▓рд╛-рдмрджрд▓реА рддрд╛рд▓рд┐рдХрд╛ xtender.test_part add рд╡рд┐рднрд╛рдЬрди p' || l_part_name || 'рдорд╛рди рд╕реЗ рдХрдо (' || l_maxvalue || ')' ?
- рдЕрдкрд╡рд╛рдж
- рдЬрдм l_partition_exists рддрдм рд╢реВрдиреНрдп ;
- рдЕрдВрдд;
- рдЕрдВрдд tr_test_part;
рд╕реНрд╡рд╛рдпрддреНрдд рд▓реЗрдирджреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдпрд╣ рдЯреНрд░рд┐рдЧрд░, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ 'P' + 10,000 рдХреА рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдЦрдВрдб рдмрдирд╛рддрд╛ рд╣реИ, рдЬрдм ID рд╣рдорд╛рд░реА рд╡рд┐рднрд╛рдЬрди рдХреБрдВрдЬреА рд╣реИ, рдЕрдиреБрднрд╛рдЧ рд╕реАрдорд╛ (10000-4000 = 6000, рдЕрд░реНрдерд╛рдд рдЖрдИрдбреА = 6000, рддрдХ 4,000 рдорд╛рди рд╢реЗрд╖ рд╣реИрдВ) 16000,26000, рдЖрджрд┐), рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдпрд╣ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЦрдВрдб рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ (рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 6000 рд╡рд╛рдВ рд░рд┐рдХреЙрд░реНрдб рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝рдХрд░, рдпрд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЕрдиреБрднрд╛рдЧ рдЬреЛрдбрд╝рдХрд░)ред рд╡рд┐рднрд╛рдЬрди рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ - 10000 рдФрд░ 4000, рдЖрдкрдХреЛ рдЕрдкрдиреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЪреБрдирдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рд╕реАрдорд╛ (рдЙрджрд╛рд╣рд░рдг рдореЗрдВ 4000) рдПрдХ рдмрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рд░рд┐рдХреЙрд░реНрдб рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдпрдерд╛, рдбреЗрдЯрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд▓реЗрди-рджреЗрди рдХреЗ рд╕рдордп, рд▓реЗрдирджреЗрди рдирдП рдЕрдиреБрднрд╛рдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ "рдкрддрд╛" рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд▓реЗрди-рджреЗрди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдпрд╣ рдореМрдЬреВрдж рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдХреБрдВрдЬреА рдХреЛ рдЕрдиреБрднрд╛рдЧ рдореИрдкрд┐рдВрдЧ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдирд╣реАрдВ рдбрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣
рдкрд░рд┐рд╡рд░реНрддрди рддрд╛рд▓рд┐рдХрд╛ рд╡рд┐рднрд╛рдЬрди default_partition рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛, рдЬрд┐рд╕рдХреА рдореИрдВ рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд░рдирдЯрд╛рдЗрдо рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛ред
рдЕрдиреБрднрд╛рдЧ рднрд░рдХрд░ рд╣рдорд╛рд░реЗ рдЯреНрд░рд┐рдЧрд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:
insert into xtender.test_part
select rownum, o.OBJECT_NAME, o.OWNER, o.OBJECT_TYPE, o.CREATED
from all_objects o
where rownum<1000;
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдиреБрдХреНрд░рдо рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд┐ "рдХрджрдо" рдХреИрд╢рд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг, рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдЯреНрд░рд┐рдЧрд░ рдХреЛ рдмрджрд▓рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рддрд╛рдХрд┐ рдпрд╣ рдЕрдиреБрднрд╛рдЧ рдХреЗ рдЕрдВрдд рд╕реЗ 4000 рд╕реЗ 3900 рд░рд┐рдХреЙрд░реНрдб рддрдХ рдорд╛рдиреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдЪрд▓рддрд╛ рд╣реИ:
рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓реЗрдВ
рдЬрдм (mod (NEW.id, 10000) = 6000)
рдкрд░
рдЬрдм (mod (NEW.id, 10000) 6000 рдФрд░ 6100 рдХреЗ рдмреАрдЪ)
рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди
рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рд╣рдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЕрдиреБрднрд╛рдЧ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдЗрд╕реЗ рдЕрд▓рдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рд░рд┐рдХреЙрд░реНрдб рдкрд╣рд▓реЗ рд╣реА рдорд┐рд▓ рдЪреБрдХреЗ рд╣реИрдВ, рддреЛ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдЯреНрд░реИрдХ рдХрд░реЗрдВ
рдбреЗрдЯрд╛ рдбрд┐рдХреНрд╢рдирд░реА рдореЗрдВ рд╣рдо
dba_tab_partitions рд╕реЗ рдЪрдпрди рдХрд░рдХреЗ рдкрд╛рд░реНрдЯреАрд╢рди рдЯреЗрдмрд▓ рдХреЗ рд╕рднреА рд╕реЗрдХреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ
рдкрд╛рд░реНрдЯреАрд╢рди рдЯреЗрдмрд▓ рдореЗрдВ рд╕реЗрдХреНрд╢рди рдХреЗ рдХреНрд░рдо рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░
high_value рд╕реЗрдХреНрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ
рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЕрдВрддрд┐рдо рдЕрдиреБрднрд╛рдЧ рдХрд╛ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдореЗрдВ рд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕рдореЗрдВ рд╕реЗ рдПрдХ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрди рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЬрд┐рдирдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЕрдиреБрднрд╛рдЧреЛрдВ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╢реБрд░реВ рд╣реБрдИ, рд╣рдореЗрдВ рдПрдХ рд╕реВрдЪрдирд╛ рднреЗрдЬрдиреА рд╣реЛрдЧреАред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- рдпрджрд┐ рдЖрдкрдиреЗ рдИ-рдореЗрд▓ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрд▓рд░реНрдЯ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЕрд▓рд░реНрдЯ рдореЗрдВ рдХреЗрд╡рд▓ рдШрдЯрдирд╛ рд▓рд┐рдЦреЗрдВред
- рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкрддреНрд░ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд▓рд┐рдЦреЗрдВред
рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк
dbms_system.ksdwrt рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ:
- рдкрд╣рд▓рд╛ (BINARY_INTEGER) - рдЬрд╣рд╛рдВ рд╕рдВрднрд╡ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП: 1 - рдорд╛рдирдХ рдЯреНрд░реЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП, 2 - to alert.log, 3 - рджреЛрдиреЛрдВ;
- рдФрд░ рджреВрд╕рд░рд╛ (varchar2) - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реА рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВред
рдПрдХ рдЙрджрд╛рд╣рд░рдг:
exec dbms_system.ksdwrt (2, 'рдЯреЗрд╕реНрдЯ рдЕрд▓рд░реНрдЯ рд╕рдВрджреЗрд╢');
рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк
utl_mail рдкреИрдХреЗрдЬ рдпрд╛ рдирд┐рдЪрд▓реЗ рд╡рд╛рд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ -
utl_smtp рдпрд╛
utl_tcp ред
utl_mail utl_smtp рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЖрд╡рд░рдг рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ smtp_out_server рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдк рдЗрд╕реЗ рд╕рддреНрд░ рдХреЗ рд▓рд┐рдП рдЬреИрд╕реЗ рд╣реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ -
тАЬALTER SESSION SET smtp_out_server =тАжтАЭ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП
тАЬALTER SYSTEM SET smtp_out_server =тАжтАЭ ред
рдЕрдЧрд░ рдЖрдкрдХреЛ рдпрд╣ рдкреИрдХреЗрдЬ рдШрд░ рдкрд░ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ рддреЛ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рди рд╣реЛрдВ - рд╢реБрд░реВ рдореЗрдВ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рджреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдЪрд▓рд╛рдиреЗ рд╣реЛрдВрдЧреЗ:
sqlplus sys/<pwd> SQL> @$ORACLE_HOME/rdbms/admin/utlmail.sql SQL> @$ORACLE_HOME/rdbms/admin/prvtmail.plb
рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде
pkg_partitions рдкреИрдХреЗрдЬ рдореЗрдВ рд▓рд╛рдирд╛
рдкреИрдХреЗрдЬ рдХреЗ рддрд░реАрдХреЗ:
- рдлрд╝рдВрдХреНрд╢рди get_penultimate_maxvalue (p_table_owner varchar2, p_table_name varchar2) рд╡рд╛рдкрд╕реА varchar2;
рдлрд╝рдВрдХреНрд╢рди рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдирд╛рдо рдХреЛ рд╕реНрд╡рд╛рдореА рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рджрдВрдбрд╛рддреНрдордХ рдЦрдВрдб рдХреА рд╕реНрдерд┐рддрд┐ рдорд╛рди (рдЙрдЪреНрдЪ_рдЧреБрдг) рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдЕрдВрддрд┐рдо рдЕрдиреБрднрд╛рдЧ рдПрдХ рдореИрдХреНрд╕рд╡реЗрд▓реНрдпреВ рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд╛рд▓рд╛ рдПрдХ рдЦрдВрдб рд╣реИ, рдФрд░ рддрджрдиреБрд╕рд╛рд░, рдирдП рдЕрдиреБрднрд╛рдЧ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рдЧрдореНрдп рдЕрдиреБрднрд╛рдЧ рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
- рдлрд╝рдВрдХреНрд╢рди get_maxvalued_partitions рд╡рд╛рдкрд╕реА рдЯреЗрдмрд▓_рдкреНрд░реЙрдкреНрд╕_рдЕрд░реЗ рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдмрджреНрдз;
рдлрд╝рдВрдХреНрд╢рди рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдФрд░ рдЙрдирдХреЗ рдорд╛рд▓рд┐рдХреЛрдВ рдХреЗ рдирд╛рдо рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬрд┐рдирдХреЗ рдЕрдВрддрд┐рдо рдЕрдиреБрднрд╛рдЧ рдХреЛ рднрд░рдирд╛ рд╢реБрд░реВ рд╣реБрдЖред
рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг:
- рдЪреБрдирдирд╛
- рдкреАред *,
- sys.pkg_partitions.get_penultimate_maxvalue (p.table_owner, p.table_name) pre_maxvalue
- рд╕реЗ
- рддрд╛рд▓рд┐рдХрд╛ (sys.pkg_partitions.get_maxvalued_partitions) рдкреА
- рдлрд╝рдВрдХреНрд╢рди get_maxvalued_partitions_html рд╡рд╛рдкрд╕реА varchar2 ;
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди get_maxvalued_partitions рдХреЗ рд╕рдорд╛рди рд╣реА рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди HTML рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд░реВрдк рдореЗрдВ
- рдкреНрд░рдХреНрд░рд┐рдпрд╛ send_partitions_report (рдореЗрд▓ varchar2 );
рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рднреЗрдЬрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдЕрдиреБрднрд╛рдЧ рднрд░рдирд╛ рд╢реБрд░реВ рд╣реБрдЖред рдПрдХрдорд╛рддреНрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдкрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реЗ рднреЗрдЬрдирд╛ рд╣реИред
рдкреИрдХреЗрдЬ рдХреЛрдб:
- рдкреИрдХреЗрдЬ рдмреЙрдбреА pkg_partitions рдмрдирд╛рдПрдВ рдпрд╛ рдмрджрд▓реЗрдВ
- / ** рд╕рдорд╛рд░реЛрд╣ рдЕрдиреБрднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ
- * @ рдЕрдкрд░рдо i_table_name рддрд╛рд▓рд┐рдХрд╛ рдирд╛рдо
- * @ рд╡рд╛рдкрд╕реА varchar2
- * /
- рдлрд╝рдВрдХреНрд╢рди get_penultimate_maxvalue (p_table_owner varchar2, p_table_name varchar2) рд░рд┐рдЯрд░реНрди varchar2 рд╣реИ
- l_cursor рдкреВрд░реНрдгрд╛рдВрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ dbms_sql.open_cursor;
- l_ignore рдирдВрдмрд░;
- l_long_val varchar2 (4000);
- l_long_len рд╕рдВрдЦреНрдпрд╛;
- l_buflen рд╕рдВрдЦреНрдпрд╛: = 4000;
- l_curpos рд╕рдВрдЦреНрдпрд╛: = 0;
- рд╢реБрд░реВ рдХрд░рдирд╛
- dbms_sql.parse (l_cursor,
- ' all_tab_partitions p рд╕реЗ p.high_value рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдЬрд╣рд╛рдВ p.table_owner рдЬреИрд╕реЗ: o рдФрд░ p.table_name рдЬреИрд╕реЗ: x рдФрд░ p.partition_position = (select max (p1.partition_position) -1 all_tab_partitions p1 рд╕реЗ рдЬрд╣рд╛рдБ p.table_owner рдкрд╕рдВрдж рд╣реИ: o рдФрд░ p1ред table_name рдЬреИрд╕реЗ: x) '
- ред
- dbms_sql.native);
- dbms_sql.bind_variable (l_cursor, ': x' , p_table_name);
- dbms_sql.bind_variable (l_cursor, ': o' , p_table_owner);
- dbms_sql.define_column_long (l_cursor, 1);
- l_ignore: = dbms_sql рдирд┐рд╖реНрдкрд╛рджрд┐рдд (l_cursor);
- рдЕрдЧрд░ (dbms_sql.fetch_rows (l_cursor)> 0)
- рддреЛ
- dbms_sql.column_value_long (l_cursor, 1, l_buflen, l_curpos,
- l_long_val, l_long_len);
- рдЕрдВрдд рдпрджрд┐ ;
- dbms_sql.close_cursor (l_cursor);
- рд╡рд╛рдкрд╕реА l_long_val;
- рдЕрдВрдд ;
- / ** рдлрд╝рдВрдХреНрд╢рди рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдФрд░ рдЙрдирдХреЗ рдорд╛рд▓рд┐рдХреЛрдВ рдХреЗ рдирд╛рдо рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рдирдХреЗ рдЕрдВрддрд┐рдо рдЕрдиреБрднрд╛рдЧ рдХреЛ рднрд░рдирд╛ рд╢реБрд░реВ рд╣реБрдЖ
- * @ рд╡рд╛рдкрд╕реА
- * table_name varchar2 (4000),
- * table_owner varchar2 (4000),
- * рд╡рд┐рднрд╛рдЬрди_ рд╕рдВрдЦреНрдпрд╛ рд╕рдВрдЦреНрдпрд╛,
- * рд╡рд┐рднрд╛рдЬрди_рдирд╛рдо varchar2 (4000));
- * /
- рдлрд╝рдВрдХреНрд╢рди get_maxvalued_partitions рд╡рд╛рдкрд╕реА рдЯреЗрдмрд▓_рдкреНрд░реЙрдкреНрд╕_рдЕрд░реЗ рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдмрджреНрдз рд╣реИ
- l_cursor рдкреВрд░реНрдгрд╛рдВрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ dbms_sql.open_cursor;
- l_count рд╕рдВрдЦреНрдпрд╛;
- l_ignore рдкреВрд░реНрдгрд╛рдВрдХ ;
- l_data table_props;
- рдХрд░реНрд╕рд░ l_partitions рд╣реИ
- рдЪреБрдирдирд╛
- pl.table_owner,
- pl.table_name,
- рдЧрд┐рдирддреА (1) cnt,
- рдЕрдзрд┐рдХрддрдо (pl.partition_name) рд░рдЦрдирд╛ (d.partition_position рджреНрд╡рд╛рд░рд╛ рдЕрдВрддрд┐рдо рдХреНрд░рдо рдореЗрдВ рд░рдЦрдирд╛) (рд╡рд┐рднрд╛рдЬрди)
- dba_tab_partitions pl рд╕реЗ
- рдЬрд╣рд╛рдВ pl.table_name 'BIN $%' рдХреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛
- pl.table_owner, pl.table_name рджреНрд╡рд╛рд░рд╛ рд╕рдореВрд╣
- рдЧрд┐рдирддреА (1)> 1;
- рд╢реБрд░реВ
- L_partitions рдореЗрдВ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП
- рд▓реВрдк
- dbms_sql.parse (l_cursor,
- 'рд╕реЗрд▓реЗрдХреНрдЯ рдХрд╛рдЙрдВрдЯ (1) ' || part.table_owner || 'ред' part.table_name
- || 'рд╡рд┐рднрд╛рдЬрди (' || part.partition_name || ')'
- || 'рдЬрд╣рд╛рдВ рдкрдВрдХреНрддрд┐рдо <2
- ред
- dbms_sql.native);
- dbms_sql.define_column (l_cursor, 1, l_count);
- l_ignore: = dbms_sql.execute_and_fetch (l_cursor);
- dbms_sql.column_value (l_cursor, 1, l_count);
- рдЕрдЧрд░ (l_count> 0) рддреЛ
- l_data.table_name: = part.table_name;
- l_data.table_owner: = part.table_owner;
- l_data.partitions_count: = part.cnt;
- l_data.partition_name: = part.partition_name;
- рдкрд╛рдЗрдк рдкрдВрдХреНрддрд┐ (l_data);
- рдЕрдВрдд рдпрджрд┐ ;
- END LOOP;
- рдЕрдВрдд;
- / ** рдлрд╝рдВрдХреНрд╢рди рдЬреЛ HTML рдХреЗ рд░реВрдк рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдФрд░ рдЙрдирдХреЗ рдорд╛рд▓рд┐рдХреЛрдВ рдХреЗ рдирд╛рдо рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЕрдВрддрд┐рдо рдЕрдиреБрднрд╛рдЧ рднрд░рдирд╛ рд╢реБрд░реВ рд╣реБрдЖ рдерд╛
- * @ рд╡рд╛рдкрд╕реА
- * table_name varchar2 (4000),
- * table_owner varchar2 (4000),
- * рд╡рд┐рднрд╛рдЬрди_ рд╕рдВрдЦреНрдпрд╛ рд╕рдВрдЦреНрдпрд╛,
- * рд╡рд┐рднрд╛рдЬрди_рдирд╛рдо varchar2 (4000));
- * /
- рдлрд╝рдВрдХреНрд╢рди get_maxvalued_partitions_html рд╡рд╛рдкрд╕реА varchar2 рд╣реИ
- l_cursor рдкреВрд░реНрдгрд╛рдВрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ dbms_sql.open_cursor;
- l_count рд╕рдВрдЦреНрдпрд╛;
- l_ignore рдкреВрд░реНрдгрд╛рдВрдХ ;
- l_data varchar2 (4000);
- рдХрд░реНрд╕рд░ l_partitions рд╣реИ
- рдЪреБрдирдирд╛
- pl.table_owner,
- pl.table_name,
- рдЧрд┐рдирддреА (1) cnt,
- рдЕрдзрд┐рдХрддрдо (pl.partition_name) рд░рдЦрдирд╛ (d.partition_position рджреНрд╡рд╛рд░рд╛ рдЕрдВрддрд┐рдо рдХреНрд░рдо рдореЗрдВ рд░рдЦрдирд╛) (рд╡рд┐рднрд╛рдЬрди)
- dba_tab_partitions pl рд╕реЗ
- рдЬрд╣рд╛рдВ pl.table_name 'BIN $%' рдХреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛
- pl.table_owner, pl.table_name рджреНрд╡рд╛рд░рд╛ рд╕рдореВрд╣
- рдЧрд┐рдирддреА (1)> 1;
- рд╢реБрд░реВ
- l_data: = '<html> <body> <table рдмреЙрд░реНрдбрд░ = 1>'
- || '<tr> <th> рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдирд╛рдо </ th>'
- || '<th> рдЯреЗрдмрд▓ рдХреЗ рдорд╛рд▓рд┐рдХ </ th>'
- || '<th> рд╡рд┐рднрд╛рдЬрди рдХреА рдЧрд┐рдирддреА </ th>'
- || '<th> рд╡рд┐рднрд╛рдЬрди рдирд╛рдо </ th>'
- || '<th> рдкреНрд░реА рдореИрдХреНрд╕рд╡реЗрд▓реБ </ th>' ;
- L_partitions рдореЗрдВ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП
- рд▓реВрдк
- dbms_sql.parse (l_cursor,
- 'рд╕реЗрд▓реЗрдХреНрдЯ рдХрд╛рдЙрдВрдЯ (1) ' || part.table_owner || 'ред' part.table_name
- || 'рд╡рд┐рднрд╛рдЬрди (' || part.partition_name || ')'
- || 'рдЬрд╣рд╛рдВ рдкрдВрдХреНрддрд┐рдо <2
- ред
- dbms_sql.native);
- dbms_sql.define_column (l_cursor, 1, l_count);
- l_ignore: = dbms_sql.execute_and_fetch (l_cursor);
- dbms_sql.column_value (l_cursor, 1, l_count);
- рдЕрдЧрд░ (l_count> 0) рддреЛ
- l_data: = l_data || '<tr> <td>'
- part.table_name
- || '</ td> <td>'
- || part.table_owner ||
- || '</ td> <td>'
- || рднрд╛рдЧ
- || '</ td> <td>'
- || part.partition_name
- || '</ td> </ tr>' ;
- рдЕрдВрдд рдпрджрд┐ ;
- END LOOP;
- l_data: = l_data || '</ table> </ body> </ html>' ;
- рд╡рд╛рдкрд╕реА l_data;
- рдЕрдВрдд;
- / **
- * рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рднреЗрдЬрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЬрд┐рд╕рдХрд╛ рдЕрдВрддрд┐рдо рднрд╛рдЧ рднрд░рдиреЗ рд▓рдЧрд╛
- * /
- рдкреНрд░рдХреНрд░рд┐рдпрд╛ send_partitions_report (рдореЗрд▓ varchar2)
- рд╣реИ
- msg_body varchar2 (4000);
- рд╢реБрд░реВ
- pkg_partitions.get_maxvalued_partitions_html рдХреЛ рдбреНрдпреВрд╕ рд╕реЗ msg_body рдореЗрдВ рдЪреБрдиреЗрдВ ;
- - EXECUTE IMMEDIATE 'рдкрд╣рд▓реЗ рд╕реЗрд╢рди рд╕реЗрдЯ smtp_out_server =' 'our_mailserver' '' ;
- utl_mail.send (
- рдкреНрд░реЗрд╖рдХ => 'oracleDBA@dbdomain.com' ,
- рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ => рдореЗрд▓,
- рд╡рд┐рд╖рдп => 'рдореИрдХреНрд╕рд╡реЗрд▓реНрдб рд╡рд┐рднрд╛рдЬрди рд░рд┐рдкреЛрд░реНрдЯ' ,
- рд╕рдВрджреЗрд╢ => msg_body,
- mime_type => 'text / html' );
- рдЕрдВрдд;
- рдЕрдВрдд pkg_partitions;
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдпреБрдкреАрдбреАрдЬреИрд╕рд╛ рдХрд┐
zhekappp рдиреЗ
рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛
рд╣реИ, рдЖрдк рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕рд╛рдВрдЦреНрдпрд┐рдХреА рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддреЗ рд╕рдордп num_rows рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред Dbms_stats.gather_table_stats рдХреЗ рд╕рд╛рде dbms_job рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдиреМрдХрд░реА рдЬреЛрдбрд╝рдХрд░ рд╕рд╛рдВрдЦреНрдпрд┐рдХреА рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рддрдм рдЖрдкрдХреЛ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХреЛ рд╣рдЯрд╛рдиреЗ рдФрд░ рдЕрдиреБрд░реЛрдз рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
- рдЪреБрдирдирд╛
- pl.table_owner,
- pl.table_name,
- рдЧрд┐рдирддреА (1) cnt,
- рдЕрдзрд┐рдХрддрдо (pl.num_rows) рд░рдЦреЗрдВ (dense_rank рдЕрдВрддрд┐рдо рдХреНрд░рдо рджреНрд╡рд╛рд░рд╛ (pl.partition_position)) рд╡рд┐рднрд╛рдЬрди_,
- рдЕрдзрд┐рдХрддрдо (pl.partition_name) рд░рдЦрдирд╛ (d.partition_position рджреНрд╡рд╛рд░рд╛ рдЕрдВрддрд┐рдо рдХреНрд░рдо рдореЗрдВ рд░рдЦрдирд╛) (рд╡рд┐рднрд╛рдЬрди)
- dba_tab_partitions pl рд╕реЗ
- рдЬрд╣рд╛рдВ pl.table_name 'BIN $%' рдХреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛
- pl.table_owner, pl.table_name рджреНрд╡рд╛рд░рд╛ рд╕рдореВрд╣
рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдкреИрдХреЗрдЬ рдХреЛрдб рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
http://www.xt-r.com/2010/10/pkgpartitions.htmlрд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдирд┐рд╖реНрдкрд╛рджрди
рдпрд╣ рдХреЗрд╡рд▓ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдЗрд╕реЗ dbms_job рдХреЗ рд╕рд╛рде рдХрд░рддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛ рдЕрдзрд┐рдЧреНрд░рд╣рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рджреИрдирд┐рдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдирд┐рд╖реНрдкрд╛рджрди:
- рдШреЛрд╖рд┐рдд
- рдиреМрдХрд░реА рдмрд╛рдЗрдирд░реА_рдЗрдиреНрдЯреЗрдЧрд░;
- рд╢реБрд░реВ рдХрд░рдирд╛
- dbms_job.submit (
- рдиреМрдХрд░реА,
- 'pkg_partitions.send_partitions_report (' 'dba@domain.ru' ');' ' ред
- sysdate,
- 'trunc (sysdate) +1' );
- dbms_output.put_line (job);
- рдЕрдВрдд ;