MINI MINI MANI MO
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