دیتابیس اوراکل



موقع اجرای یک کوئری مربوط به گزارش در دیتابیس استندبای با خطای زیر مواجه میشدیم:

ORA-00600: internal error code, arguments: [kdsgrp1], [], [], [], [], [], [], [], []

 

طبق داکیومنت مربوط به باگ Bug 9652898 که در Oracle Support خوندم ، موقع اجرای این کوئری در trace file به یک object id  اشاره میکند که با analyze کردن آن آبجکت در دیتابیس اصلی خطای مورد نظر رفع شد.

exec dbms_stats.gather_table_stats(ownname => 'OWN1',tabname => 'TABLE1');

 

 


set serveroutput on; 
set verify off; 

declare

  sql_str varchar2(1000);
  cursor cur_syn is
    select owner, table_name
      from dba_tables
    where owner = 'MIG_ARES_3'
       and table_name not in ('T_INV_PRICING_ELEMENT','T_TMS_WEIGHING_STATION');

begin

  for rec_syn in cur_syn loop
    sql_str := 'DROP TABLE ' || rec_syn.owner || '.' || rec_syn.table_name ||
                   'CASCADE CONSTRAINTS';
    dbms_output.put_line(sql_str);
    execute immediate sql_str;
  end loop;

end;
 


set serveroutput on; 
set verify off; 


declare 


  sql_str varchar2(2000); 
  cursor cur_syn is
    select owner,synonym_name,table_owner,table_name
      from dba_synonyms
     where table_owner='USER1';   


begin


  for rec_syn in cur_syn loop
    sql_str := 'CREATE OR REPLACE SYNONYM ' || rec_syn.owner ||'.'|| rec_syn.synonym_name || ' for USER2.' || rec_syn.TABLE_NAME ;
    execute immediate sql_str;
    dbms_output.put_line (sql_str);
  end loop; 


end;
 


create table LIST_DROP_PART

"tab_own" varchar2(128 byte), 
"tab_name" varchar2(128 byte), 
"interval" number
);

 

create table RESULT_DROP_PART
(    
"tab_own" varchar2(128 byte), 
"tab_name" varchar2(128 byte), 
"part_name" varchar2(128 byte), 
"high_value" long, 
"exec_date" date
);

 

create or replace procedure DROP_PARTITION_PRC as

  cursor tab_cur is
    select a.table_owner,
           a.table_name,
           a.partition_name,
           a.high_value,
           a.partition_position
      from dba_tab_partitions a
     where exists (select 1
              from list_drop_part b
             where a.table_owner = upper(b.tab_own)
               and a.table_name = upper(b.tab_name))
       and a.partition_position between 1 and
           (select max(c.partition_position) - 10
              from dba_tab_partitions c
             where a.table_owner = c.table_owner
               and a.table_name = c.table_name);

begin

  for tab_rec in tab_cur loop

    execute immediate 'alter table ' || tab_rec.table_owner || '.' ||
                      tab_rec.table_name || ' drop partition ' ||
                      tab_rec.partition_name || ' update global indexes ';
    insert into result_drop_part
    values
      (tab_rec.table_owner,
       tab_rec.table_name,
       tab_rec.partition_name,
       tab_rec.high_value,
       sysdate);
    commit;

    dbms_output.put_line('alter table ' || tab_rec.table_owner || '.' ||
                         tab_rec.table_name || ' drop partition ' ||
                         tab_rec.partition_name ||
                         ' update global indexes ');

  end loop;

end DROP_PARTITION_PRC;

 


alter table A.TEST modify

partition by range (TIME1) interval(numtodsinterval(1, 'DAY')) 

subpartition by list (SERIAL1)

   subpartition template

   ( subpartition SERIAL_P1 values (110)

   , subpartition SERIAL_P2 values (111)

   , subpartition SERIAL_P3 values (112)

   , subpartition SERIAL_P4 values (113)

   )

(  

   partition TEST_P1 values less than (to_date('19-03-2019', 'DD-MM-YYYY'))  

) online update indexes parallel;


بعد از flashback در دیتابیس اصلی، وقتی خواستم روی استندبای همان  دستور flashback  را اجرا کنم با خطای زیر روبرو شدم:

flashback pluggable database PDB1 to timestamp TO_TIMESTAMP('20-11-06 10:25:00','YYYY-MM-DD HH24:MI:SS');

ORA-39885: flashback/PITR of a pluggable database before its creation is not allowed

 

بعد از آن برای همان زمان ، در دیتابیس اصلی SCN مربوطه را پیدا و دستور flashback را مجددا با دستور SCN اجرا کردیم:

select timestamp_to_scn(TO_TIMESTAMP('2019-02-01 :45:00','YYYY-MM-DD HH24:MI:SS')) as scn

 from dual;

flashback pluggable database PDB1 to timestamp SCN 211427454;

 

بعد از اجرای دستور بالا مجددا خطای زیر را دریافت شد:

(3):Recovery of pluggable database PDB1 aborted due to pluggable database open resetlog marker.

(3):To continue recovery, restore all data files for this PDB to checkpoint SCN lower than 211427382, or timestamp before 02/01/2019 :45:01, and restart recovery

Errors with log +FRA/IUMSPRD1/ARCHIVELOG/2019_02_02/thread_1_seq_3450.674.999172645

MRP0: Background Media Recovery terminated with error 39874

2019-02-02T12:42:32.802424+00:00

Errors in file /u01/app/oracle/diag/rdbms/iumsprd1/iumsprd/trace/iumsprd_pr00_100007.trc:

ORA-39874: Pluggable Database PDB1 recovery halted

ORA-39873: Restore all data files to a checkpoint SCN lower than 211427382.

 

برای حل خطای بالا ( همانطور که در خطا گفته شده است ) ، PDB را به SCN قبل از زمان تعیین شده flashback کردیم و مشکل حل شد.

select timestamp_to_scn(TO_TIMESTAMP('2019-02-01 :40:00','YYYY-MM-DD HH24:MI:SS')) as scn

 from dual;

flashback pluggable database PDB1 to timestamp SCN 2114400;


تبلیغات

آخرین ارسال ها

آخرین جستجو ها

My Notes روبش صفحه ای برای اشتراک اندوخته ها بهترین کافه رستوران در شیراز نشریه حقیقت کار عملی سوالات تستی ارتینگ(امتحانات پایانی) proxeedplus فروشگاه اینترنتی دریاچه نمایندگی فروش اندرس هاوزر