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



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

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;


تبلیغات

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

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

مشاوره کسب و کار آنلاین با من سفر کن علمی-سرگرمی سریال های ترکی در حال پخش برنامه نویس و مهندس نرم افزار لینک-بهترین-گروه-های-تلگرام کدنگار English with Amir تولید و فروش کره بادام زمینی خانگی به صورت عمده و خرد Mr Python | مستر پایتون