MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/md/admin/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/md/admin/semu111.sql

Rem
Rem $Header: sdo/admin/semu111.sql /main/14 2017/05/03 12:18:33 rjanders Exp $
Rem
Rem semu111.sql
Rem
Rem Copyright (c) 2009, 2017, Oracle and/or its affiliates. 
Rem All rights reserved.
Rem
Rem    NAME
Rem      semu111.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    BEGIN SQL_FILE_METADATA
Rem    SQL_SOURCE_FILE: sdo/admin/semu111.sql
Rem    SQL_SHIPPED_FILE: md/admin/semu111.sql
Rem    SQL_PHASE: UPGRADE
Rem    SQL_STARTUP_MODE: NORMAL
Rem    SQL_IGNORABLE_ERRORS: NONE  
Rem    SQL_CALLING_FILE: NONE 
Rem    END SQL_FILE_METADATA
Rem    
Rem    MODIFIED   (MM/DD/YY)
Rem    sravada     01/11/17 - bug 25370681
Rem    rjanders    02/01/15 - #20418139: Cannot grant SELECT to PUBLIC
Rem    rjanders    01/02/15 - long identifier project phase 1
Rem    matperry    11/18/13 - remove set echo off
Rem    rjanders    09/16/13 - OCCS: Remove hardtabs
Rem    rjanders    03/15/13 - #16473696: Start/End _ORACLE_SCRIPT
Rem                           initialization
Rem    matperry    06/26/12 - refactor for 12.1 upgrade scheme: object type
Rem                           upgrades moved to installation scripts
Rem    matperry    06/20/12 - update for 12.1 upgrade
Rem    matperry    03/11/11 - add logging for errors
Rem    vkolovsk    04/21/10 - change RL -> OWL2RL
Rem    vkolovsk    04/19/10 - add RL rulebase
Rem    vkolovsk    11/04/09 - add sameas opt. types
Rem    matperry    02/11/09 - add content for OLS and Virtual Models
Rem    matperry    02/11/09 - Created
Rem

Rem ********************************************************************
Rem #16473696: Indicate Oracle-Supplied object
@@?/rdbms/admin/sqlsessstart.sql
Rem ********************************************************************

------------------------------------------------------------------------------------------
-- The "u" script for each prior release performs the following actions to upgrade      --
-- from release NNN to NNN+1. If NNN+1 is not the current release, then the "u" script  --
-- invokes the script for release NNN+1, so that the upgrade is "stacked.".             --
------------------------------------------------------------------------------------------

alter session set current_schema=MDSYS;

Rem Upgrade SEM from 11.1 to 11.2

Rem Drop obsolete objects (views, packages, etc.) from prior release


Rem ALTER tables to add/change columns and constraints for the new release


Rem Modify static tables for the new release



Rem UPDATE existing columns as needed to reflect new algorithms, etc.

--------------------- Virtual Model support: update view definitons -----------------------
-- only update these views if an rdf network exists --
declare
  network_exists NUMBER;
begin
  -- see if RDF Network is present in DB
  SELECT count(*) INTO network_exists FROM SYS.ALL_TABLES
  WHERE table_name='RDF_VALUE$' AND owner='MDSYS';

  if (network_exists > 0) then 

    begin

      -- modify the existing rdf_model$ view --
      EXECUTE IMMEDIATE '
        CREATE OR REPLACE VIEW MDSYS.rdf_model$ (
          owner
        , model_id
        , model_name
        , table_name
        , column_name
        , model_tablespace_name
        ) AS
        SELECT 
          au.username
        , rmi.model_id
        , rmi.model_name
        , ao.object_name
        , rmi.column_name
        , rmi.model_tablespace_name
        FROM mdsys.rdf_model_internal$ rmi,sys.all_users au,sys.all_objects ao
        WHERE rmi.owner_id=au.user_id AND ao.owner=au.username AND
              rmi.table_id=ao.object_id AND rmi.model_id > 0
        UNION ALL
        SELECT
          au.username
        , rmi.model_id
        , rmi.model_name
        , NULL
        , NULL
        , NULL
        FROM mdsys.rdf_model_internal$ rmi, sys.all_users au
        WHERE rmi.owner_id=au.user_id AND 
              rmi.model_id < 0
      ';

      -- 11g API
      EXECUTE IMMEDIATE 'CREATE OR REPLACE VIEW MDSYS.SEM_MODEL$ AS SELECT * FROM MDSYS.RDF_MODEL$';
      EXECUTE IMMEDIATE 'GRANT READ ON MDSYS.SEM_MODEL$ TO PUBLIC';

      exception
        when others then
          SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE, 
            'SEM_INSTALL: semu111: sem_model$: '||SQLERRM);
    end;

    begin

      -- modify rules index views to filter out virtual model info --
      EXECUTE IMMEDIATE '
        create or replace view MDSYS.RDF_RULES_INDEX_INFO (
          OWNER, INDEX_NAME, INDEX_VIEW_NAME, STATUS, MODEL_COUNT,RULEBASE_COUNT)
        as
          select p.owner, p.indexname, ''RDFI_'' || p.indexname,
                 DECODE(p.status,
                        ''INPROGRESS'',
                        SUBSTR(MDSYS.RDF_APIS_INTERNAL.TEST_INPROGRESS(
                                 ''RULES_INDEX'', p.indexname), 
                               0, 128),
                        p.status),
                 SUM(DECODE(rpd.deptyp, ''M'', 1, 0)),
                 SUM(DECODE(rpd.deptyp, ''R'', 1, 0))
          from mdsys.rdf_precomp$ p, mdsys.rdf_precomp_dep$ rpd
          where p.model_id = rpd.model_id and p.model_id > 0
          group by p.owner, p.indexname, p.status';

      EXECUTE IMMEDIATE '
        create or replace view MDSYS.RDF_RULES_INDEX_DATASETS (
          INDEX_NAME, DATA_TYPE, DATA_NAME) 
        as 
          select p.indexname, ''MODEL'', m.model_name
          from mdsys.rdf_precomp$ p, mdsys.rdf_precomp_dep$ pd, 
               mdsys.rdf_model_internal$ m
          where p.model_id = pd.model_id
            AND pd.deptyp = ''M'' 
            AND pd.depid = m.model_ID
            AND p.model_id > 0
          UNION ALL
          select p.indexname, ''RULEBASE'', r.name
          from mdsys.rdf_precomp$ p, mdsys.rdf_precomp_dep$ pd, 
               mdsys.rdf_rulebase$ r
          where p.model_id = pd.model_id
            AND pd.deptyp = ''R'' 
            AND pd.depid = r.id
            AND p.model_id > 0';

      -- 11g API --
      EXECUTE IMMEDIATE 'CREATE OR REPLACE VIEW MDSYS.SEM_RULES_INDEX_INFO AS SELECT * FROM MDSYS.RDF_RULES_INDEX_INFO';
      EXECUTE IMMEDIATE 'CREATE OR REPLACE VIEW MDSYS.SEM_RULES_INDEX_DATASETS AS SELECT * FROM MDSYS.RDF_RULES_INDEX_DATASETS';

      -- grant SELECT privileges --
      EXECUTE IMMEDIATE 'GRANT READ ON MDSYS.SEM_RULES_INDEX_INFO     TO PUBLIC';
      EXECUTE IMMEDIATE 'GRANT READ ON MDSYS.SEM_RULES_INDEX_DATASETS TO PUBLIC';

      EXECUTE IMMEDIATE 'GRANT READ ON MDSYS.RDF_RULES_INDEX_INFO     TO PUBLIC';
      EXECUTE IMMEDIATE 'GRANT READ ON MDSYS.RDF_RULES_INDEX_DATASETS TO PUBLIC';

      exception
        when others then
          SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE, 
            'SEM_INSTALL: semu111: sem_rules_index_info, sem_rules_index_datasets: '||SQLERRM);
      end;

  -- end if network exists --
  end if;

end;
/
show errors;
    
Rem Create new types and tables for the release


------------ sameAs Optimization / incremental inference / SKOS Rulebase -------
declare
  TABLE_ALREADY_EXIST_EXCEPTION      EXCEPTION;   
  PRAGMA EXCEPTION_INIT(TABLE_ALREADY_EXIST_EXCEPTION,  -955);
  stmt_cre_TS varchar2(2000);
  stmt_cre_clique varchar2(2000);
  stmt_cre_delta varchar2(2000);
  vcTableSpaceName varchar2(100);
  network_exists number;
begin

  -- see if RDF Network is present in DB
  SELECT count(*) INTO network_exists FROM SYS.ALL_TABLES
  WHERE table_name='RDF_VALUE$' AND owner='MDSYS';

  if (network_exists > 0) then 

    -- NOTE: delaying SKOSCORE rulebase creation until semrelod 
    -- becuase rdf_apis_internal.create_rulebase will be invalid after downgrade

    -- get tablespace name --
    begin
      EXECUTE IMMEDIATE
        'select def_tablespace_name from all_part_tables where table_name = :1 and owner = :2'
      INTO vcTableSpaceName
      USING 'RDF_LINK$', 'MDSYS';
      exception
        when others then
          SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE, 
            'SEM_INSTALL: semu111: def_tablespace_name: '||SQLERRM);
    end;

    --creating clique table...
    stmt_cre_clique := '
      CREATE TABLE rdf_clique$ (
        model_id     NUMBER
      , value_id     NUMBER NOT NULL
      , clique_id    NUMBER NOT NULL
      ) PARTITION BY LIST (model_id) (PARTITION MODEL_0 VALUES (0))
      tablespace ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(vcTableSpaceName, FALSE) || ' 
      compress ';

    begin
      EXECUTE IMMEDIATE stmt_cre_clique;
      exception
        when TABLE_ALREADY_EXIST_EXCEPTION then null;
        when others then
          SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE, 
            'SEM_INSTALL: semu111: rdf_clique$: '||SQLERRM);
    end;

    --creating timestamp table...
    stmt_cre_TS := '
      CREATE TABLE rdf_TS$ (
        rule_index_id number,
        model_id     NUMBER
      , TS           timestamp NOT NULL
      ) tablespace ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(vcTableSpaceName, FALSE) || ' 
      compress ';

    begin
      EXECUTE IMMEDIATE stmt_cre_TS;
      exception
        when TABLE_ALREADY_EXIST_EXCEPTION then null;
        when others then
          SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE, 
            'SEM_INSTALL: semu111: rdf_TS$: '||SQLERRM);
    end;

    stmt_cre_delta := 
       'CREATE TABLE rdf_delta$ '
       || ' (model_id number, row_id rowid, TS timestamp) '
       || ' partition by list (model_id) '
--        || ' subpartition by list (scn) '
--        || ' subpartition template (subpartition scn_0 values (0)) '
       || ' (partition  model_0 values (0))'
       || ' tablespace ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(vcTableSpaceName, FALSE)
       || ' compress';
    begin
      execute immediate stmt_cre_delta;
      exception
        when TABLE_ALREADY_EXIST_EXCEPTION then null;
        when others then
          SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE, 
            'SEM_INSTALL: semu111: rdf_delta$: '||SQLERRM);
    end;

    --unique (inferred model id) index on RDF_ts
    begin
      EXECUTE IMMEDIATE '
          CREATE UNIQUE INDEX rdf_ts_idx ON rdf_ts$ (rule_index_id, model_id)
          NOLOGGING '
      || ' tablespace ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(vcTablespaceName, FALSE);
      exception
        when others then
          SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE, 
            'SEM_INSTALL: semu111: rdf_ts_idx: '||SQLERRM);
    end;

  end if;

end;
/
show errors;

--------------- Virtual Model support: create new views ----------------------
-- only create view if rdf network already exists --
declare
  network_exists NUMBER;
begin
  -- see if RDF Network is present in DB
  SELECT count(*) INTO network_exists FROM SYS.ALL_TABLES
  WHERE table_name='RDF_VALUE$' AND owner='MDSYS';

  if (network_exists > 0) then 

    -- Create dummy package for Virtual Model view definitions --
    -- One of the views references a method in this package --
    -- This dummy package will be replaced with the correct one later in the install --
    begin
      EXECUTE IMMEDIATE '
        CREATE OR REPLACE PACKAGE MDSYS.rdf_apis_internal authid definer AS
          FUNCTION vmUnionViewExists(numModels    in int,
                                     numRulebases in int,
                                     vmId         in number,
                                     vmName       in varchar2)
          RETURN varchar2;
        END rdf_apis_internal;';

      exception
        when others then
          SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE, 
            'SEM_INSTALL: semu111: rdf_apis_internal: '||SQLERRM); 
    end;

    begin 
      EXECUTE IMMEDIATE '
        create or replace view MDSYS.RDF_VMODEL_DATASETS (
          VIRTUAL_MODEL_NAME, DATA_TYPE, DATA_NAME) 
        as 
          WITH rpd2hop as
            (select rpd1.model_id, rpd2.deptyp, rpd2.depid
             from mdsys.rdf_precomp_dep$ rpd1,
                  mdsys.rdf_precomp_dep$ rpd2
             where rpd1.depid = rpd2.model_id
               AND rpd1.model_id < 0
               AND rpd1.deptyp = ''X'')
          select p.indexname, ''MODEL'', m.model_name
          from mdsys.rdf_precomp$ p, mdsys.rdf_precomp_dep$ rpd, 
               mdsys.rdf_model_internal$ m
          where p.model_id = rpd.model_id
            AND rpd.deptyp = ''V'' 
            AND rpd.depid = m.model_ID
            AND p.model_id < 0
          UNION ALL
          select p.indexname, ''MODEL'', m.model_name
          from mdsys.rdf_precomp$ p, rpd2hop rpd, 
               mdsys.rdf_model_internal$ m
          where p.model_id = rpd.model_id
            AND rpd.deptyp = ''M'' 
            AND rpd.depid = m.model_ID
            AND p.model_id < 0
          UNION ALL
          select p.indexname, ''RULEBASE'', r.name
          from mdsys.rdf_precomp$ p, rpd2hop rpd, 
               mdsys.rdf_rulebase$ r
          where p.model_id = rpd.model_id
            AND rpd.deptyp = ''R'' 
            AND rpd.depid = r.id
            AND p.model_id < 0
          UNION ALL
          select p1.indexname, ''RULEIDX'', p2.indexname
          from mdsys.rdf_precomp$ p1, mdsys.rdf_precomp$ p2,
               mdsys.rdf_precomp_dep$ rpd
          where p1.model_id = rpd.model_id
            AND rpd.depid = p2.model_id
            AND rpd.deptyp = ''X''
            AND p1.model_id < 0'; 

      exception
        when others then
          SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE, 
            'SEM_INSTALL: semu111: rdf_vmodel_datasets: '||SQLERRM); 
    end;     

    begin
      EXECUTE IMMEDIATE '
        create or replace view MDSYS.RDF_VMODEL_INFO (
          OWNER, VIRTUAL_MODEL_NAME, UNIQUE_VIEW_NAME, DUPLICATE_VIEW_NAME, 
          STATUS, MODEL_COUNT, RULEBASE_COUNT, RULES_INDEX_COUNT)
        as
          select vmi.owner, vmi.indexname, 
                 substr(mdsys.rdf_apis_internal.vmUnionViewExists(vmi.numMods, vmi.numRbs,
                        vmi.model_id, vmi.indexname), 1, 128),
                 substr(''SEMV_'' || vmi.indexname, 1, 128), vmi.status, vmi.numMods,
                 vmi.numRbs, vmi.numIdxs
          from 
           (select p.owner owner, p.model_id model_id, p.indexname indexname, p.status, 
                 SUM(DECODE(rpd.deptyp, ''M'', 1, 0)) + SUM(DECODE(rpd.deptyp, ''V'', 1, 0)) numMods,
                 SUM(DECODE(rpd.deptyp, ''R'', 1, 0)) numRbs,
                 SUM(DECODE(rpd.deptyp, ''X'', 1, 0)) numIdxs
            from mdsys.rdf_precomp$ p, 
               (select rpd1.model_id model_id, rpd1.deptyp deptyp
                from mdsys.rdf_precomp_dep$ rpd1
                where rpd1.model_id < 0 and rpd1.deptyp = ''X'' or
                      rpd1.deptyp = ''V''
                UNION ALL
                select rpd1.model_id model_id, rpd2.deptyp deptyp
                From mdsys.rdf_precomp_dep$ rpd1,
                     mdsys.rdf_precomp_dep$ rpd2
                where rpd1.depid = rpd2.model_id and
                      rpd1.model_id < 0 and rpd1.deptyp = ''X'') rpd
            where p.model_id = rpd.model_id and p.model_id < 0
            group by p.owner, p.model_id, p.indexname, p.status) vmi'; 

      -- support both rdf* and sem* versions --
      EXECUTE IMMEDIATE 'CREATE OR REPLACE VIEW MDSYS.SEM_VMODEL_DATASETS AS SELECT * FROM MDSYS.RDF_VMODEL_DATASETS';
      EXECUTE IMMEDIATE 'CREATE OR REPLACE VIEW MDSYS.SEM_VMODEL_INFO AS SELECT * FROM MDSYS.RDF_VMODEL_INFO';

      -- grant select privileges on the new views --
      EXECUTE IMMEDIATE 'GRANT READ ON MDSYS.SEM_VMODEL_DATASETS TO PUBLIC';
      EXECUTE IMMEDIATE 'GRANT READ ON MDSYS.SEM_VMODEL_INFO     TO PUBLIC';
      EXECUTE IMMEDIATE 'GRANT READ ON MDSYS.RDF_VMODEL_DATASETS TO PUBLIC';
      EXECUTE IMMEDIATE 'GRANT READ ON MDSYS.RDF_VMODEL_INFO     TO PUBLIC';

      exception
        when others then
          SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE, 
            'SEM_INSTALL: semu111: rdf_vmodel_info: '||SQLERRM); 
    end;

  -- end if rdf network exists --
  end if;
end;
/
show errors;


Rem ALTER existing types to add/change attributes and methods for the new release



Rem GRANT any additional privileges required by MYCSYS for the new release

-- stack 11.2 upgrade --
@@semu112.sql

alter session set current_schema=SYS;

Rem ********************************************************************
Rem #16473696: Indicate Oracle-Supplied object
@?/rdbms/admin/sqlsessend.sql
Rem ********************************************************************


OHA YOOOO