MINI MINI MANI MO

Path : /proc/self/root/opt/oracle/product/18c/dbhomeXE/R/migration/imp/
File Upload :
Current File : //proc/self/root/opt/oracle/product/18c/dbhomeXE/R/migration/imp/rqsys_refidupdate.sql

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