موقع اجرای یک کوئری مربوط به گزارش در دیتابیس استندبای با خطای زیر مواجه میشدیم:
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;
درباره این سایت