MINI MINI MANI MO
Rem
Rem $Header: oracler/migration/imp/rqsys_refidupdate.sql /main/2 2015/09/08 12:46:31 qinwan Exp $
Rem
Rem rqsys_refidupdate.sql
Rem
Rem Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
Rem
Rem NAME
Rem rqsys_refidupdate.sql - <one-line expansion of the name>
Rem
Rem DESCRIPTION
Rem <short description of component this file declares/defines>
Rem
Rem NOTES
Rem <other useful comments, qualifications, etc.>
Rem
Rem MODIFIED (MM/DD/YY)
Rem qinwan 06/26/15 - creation
Rem
Rem BEGIN SQL_FILE_METADATA
Rem SQL_SOURCE_FILE: oracler/migration/imp/rqsys_refidupdate.sql
Rem SQL_SHIPPED_FILE:
Rem SQL_PHASE:
Rem SQL_STARTUP_MODE: NORMAL
Rem SQL_IGNORABLE_ERRORS: NONE
Rem SQL_CALLING_FILE:
Rem END SQL_FILE_METADATA
SET ECHO ON
SET FEEDBACK 1
SET NUMWIDTH 10
SET LINESIZE 80
SET TRIMSPOOL ON
SET TAB OFF
SET PAGESIZE 100
set serveroutput on;
-- show database version
SELECT * FROM v$version;
select user from dual;
-- update refobjID on rq$datastorerefdbobject and rq$refdbobject
create table system.rq$tmpdsrefobj as
select a.dsowner, a.dsname, b.objname,
d.refobjname, d.refobjtype, d.refobjparm, d.refobjowner
from rqsys.rq$datastore a, rqsys.rq$datastoreobject b,
rqsys.rq$datastorerefdbobject c, rqsys.rq$refdbobject d
where a.dsID = b.dsID and b.objID = c.objID and c.refobjID = d.refobjID;
select count(*) num_obj from system.rq$tmpdsrefobj;
delete from rqsys.rq$datastorerefdbobject;
delete from rqsys.rq$refdbobject;
Declare
v_refobjID number := NULL;
v_refobjTyp VARCHAR2(16);
v_refobjOwn VARCHAR2(128);
v_refobjNam VARCHAR2(128);
BEGIN
FOR c IN (SELECT dsowner, dsname, objname, refobjname, refobjtype,
refobjparm, refobjowner FROM system.rq$tmpdsrefobj)
LOOP
-- v_refobjID := rqsys.rq$GetRefDBObjectID(c.refobjname, c.refobjtype,
-- c.refobjowner);
v_refobjOwn := c.refobjowner;
if (c.refobjtype = 'rqScript') then
v_refobjTyp := 'VIEW';
v_refobjNam := c.refobjname || '_V';
else
if (c.refobjtype = 'model') then
v_refobjTyp := 'MINING MODEL';
else
v_refobjTyp := c.refobjtype;
end if;
v_refobjNam := c.refobjname;
end if;
begin
select object_id into v_refobjID
from all_objects
where owner = c.refobjowner AND object_name = upper(v_refobjNam) AND
object_type = upper(v_refobjTyp);
if (v_refobjID is not null) then
rqsys.rq$AddDataStoreRefDBObjectImpl(c.dsowner, c.dsname, c.objname,
v_refobjID, c.refobjname, c.refobjtype,
c.refobjparm, c.refobjowner);
else
DBMS_OUTPUT.PUT_LINE('Database ' || c.refobjtype ||
' object ' || c.refobjowner || '.' || c.refobjname ||
' does not exist');
end if;
exception
when others then
DBMS_OUTPUT.PUT_LINE('Database ' || v_refobjTyp ||
' object ' || v_refobjOwn || '.' || v_refobjNam ||
' cannot be found');
end;
END LOOP;
END;
/
drop table system.rq$tmpdsrefobj purge;
select * from rqsys.rq$datastorerefdbobject order by 1, 2;
select refobjID from rqsys.rq$refdbobject order by 1;
exit;
OHA YOOOO