MINI MINI MANI MO
Rem
Rem $Header: mgwu920.sql 01-jun-2004.14:10:09 chall Exp $
Rem
Rem mgwu920.sql
Rem
Rem Copyright (c) 2002, 2003, Oracle Corporation. All rights reserved.
Rem
Rem NAME
Rem mgwu920.sql - MGW component upgrade script (RDBMS 9.2.0 to 10.1.0)
Rem
Rem DESCRIPTION
Rem Upgrade script for MGW from RDBMS 9.2.0.x to 10.1.0.
Rem
Rem NOTES
Rem This script must be run AS SYSDBA.
Rem
Rem This script is intended to be run during component upgrade process;
Rem typically from mgwdbmig.sql. It should only be called when upgrading
Rem a 9.2.0 database in which the MGW component had been loaded.
Rem
Rem Messaging Gateway agent must be shut down before running this script.
Rem
Rem TOID Note: Starting with RDBMS 10R1, we will assign a fixed OID for
Rem every new MGW type created, rather than having one automatically
Rem assigned by the database. Note however, for any 9.x to 10.1 upgrade,
Rem we will wind up with a mixture, fixed ids for any new types but old
Rem generated ids for existing types. It is something that we (and the
Rem user) has to deal with. OJMS and likely other components face the
Rem same issue if they did not use the OID clause from the start.
Rem
Rem MODIFIED (MM/DD/YY)
Rem chall 06/01/04 - workaround REPLACE TYPE for evolved type (9.2 to
Rem 10.2 downgrade/upgrade)
Rem chall 05/14/04 - add 10gR2 migration hooks
Rem chall 12/15/03 - add OID clause to object types (bug 3316719)
Rem chall 07/29/03 - new fields for mgw$_gateway (bug 2999689)
Rem chall 06/04/03 - remove notify pipes (bug 2984956)
Rem chall 01/17/03 - set mgw$_schedules.latency to NULL (bug 2754884)
Rem chall 11/05/02 - chall_bug-2606429
Rem chall 10/29/02 - Created
Rem
Rem ==========================================================================
Rem ========================================================================
Rem New Admin Types
Rem ========================================================================
CREATE OR REPLACE TYPE sys.mgw_tibrv_properties
OID '00000000000000000000000000021083'
AS OBJECT
(
service VARCHAR2(128),
daemon VARCHAR2(128),
network VARCHAR2(256),
cm_name VARCHAR2(256),
cm_ledger VARCHAR2(256),
STATIC FUNCTION construct
RETURN sys.mgw_tibrv_properties,
STATIC FUNCTION alter_construct
RETURN sys.mgw_tibrv_properties
);
/
grant execute on mgw_tibrv_properties to mgw_administrator_role;
Rem ========================================================================
Rem New Types for TIB/RV Message Type
Rem ========================================================================
create or replace type sys.mgw_number_array_t
oid '00000000000000000000000000021089'
as varray(1024) of NUMBER;
/
grant execute on sys.mgw_number_array_t to public with grant option;
create or replace type sys.mgw_tibrv_field_t
oid '0000000000000000000000000002108a'
as object
(
field_name VARCHAR2(256),
field_id INTEGER,
field_type INTEGER,
number_value NUMBER,
number_array_value sys.mgw_number_array_t,
text_value VARCHAR2(4000),
raw_value RAW(2000),
date_value DATE,
clob_value CLOB,
blob_value BLOB
);
/
grant execute on sys.mgw_tibrv_field_t to public with grant option;
create or replace type sys.mgw_tibrv_ifield_t
oid '0000000000000000000000000002108b'
as object
(
field_name VARCHAR2(256),
field_id INTEGER,
field_type INTEGER,
number_value NUMBER,
number_array_value sys.mgw_number_array_t,
text_value VARCHAR2(4000),
raw_value RAW(2000),
date_value DATE,
clob_index INTEGER,
blob_index INTEGER
);
/
grant execute on sys.mgw_tibrv_ifield_t to public with grant option;
create or replace type sys.mgw_tibrv_ifields_t
oid '0000000000000000000000000002108c'
AS varray(1024) OF sys.mgw_tibrv_ifield_t;
/
grant execute on sys.mgw_tibrv_ifields_t to public with grant option;
create or replace type sys.mgw_tibrv_msg_t
oid '0000000000000000000000000002108d'
as object
(
send_subject VARCHAR2(256),
reply_subject VARCHAR2(256),
cm_time_limit NUMBER,
cm_sender_name VARCHAR2(256),
cm_sequence_num NUMBER,
fields sys.mgw_tibrv_ifields_t,
clob_data1 CLOB,
clob_data2 CLOB,
clob_data3 CLOB,
blob_data1 BLOB,
blob_data2 BLOB,
blob_data3 BLOB,
STATIC FUNCTION construct
RETURN sys.mgw_tibrv_msg_t,
MEMBER PROCEDURE add_bool (
name IN VARCHAR2,
id IN INTEGER,
value IN INTEGER ),
MEMBER PROCEDURE add_f32 (
name IN VARCHAR2,
id IN INTEGER,
value IN FLOAT ),
MEMBER PROCEDURE add_f64 (
name IN VARCHAR2,
id IN INTEGER,
value IN NUMBER ),
MEMBER PROCEDURE add_i8 (
name IN VARCHAR2,
id IN INTEGER,
value IN INTEGER ),
MEMBER PROCEDURE add_i16 (
name IN VARCHAR2,
id IN INTEGER,
value IN INTEGER ),
MEMBER PROCEDURE add_i32 (
name IN VARCHAR2,
id IN INTEGER,
value IN INTEGER ),
MEMBER PROCEDURE add_i64 (
name IN VARCHAR2,
id IN INTEGER,
value IN NUMBER ),
MEMBER PROCEDURE add_ipaddr32 (
name IN VARCHAR2,
id IN INTEGER,
value IN VARCHAR2 ),
MEMBER PROCEDURE add_ipport16 (
name IN VARCHAR2,
id IN INTEGER,
value IN INTEGER ),
MEMBER PROCEDURE add_datetime (
name IN VARCHAR2,
id IN INTEGER,
value IN DATE ),
MEMBER PROCEDURE add_f32array (
name IN VARCHAR2,
id IN INTEGER,
value IN sys.mgw_number_array_t ),
MEMBER PROCEDURE add_f64array (
name IN VARCHAR2,
id IN INTEGER,
value IN sys.mgw_number_array_t ),
MEMBER PROCEDURE add_i8array (
name IN VARCHAR2,
id IN INTEGER,
value IN sys.mgw_number_array_t ),
MEMBER PROCEDURE add_i16array (
name IN VARCHAR2,
id IN INTEGER,
value IN sys.mgw_number_array_t ),
MEMBER PROCEDURE add_i32array (
name IN VARCHAR2,
id IN INTEGER,
value IN sys.mgw_number_array_t ),
MEMBER PROCEDURE add_i64array (
name IN VARCHAR2,
id IN INTEGER,
value IN sys.mgw_number_array_t ),
MEMBER PROCEDURE add_string (
name IN VARCHAR2,
id IN INTEGER,
value IN VARCHAR2 ),
MEMBER PROCEDURE add_string (
name IN VARCHAR2,
id IN INTEGER,
value IN CLOB ),
MEMBER PROCEDURE add_opaque (
name IN VARCHAR2,
id IN INTEGER,
value IN RAW ),
MEMBER PROCEDURE add_opaque (
name IN VARCHAR2,
id IN INTEGER,
value IN BLOB ),
MEMBER PROCEDURE add_xml (
name IN VARCHAR2,
id IN INTEGER,
value IN RAW ),
MEMBER PROCEDURE add_xml (
name IN VARCHAR2,
id IN INTEGER,
value IN BLOB ),
MEMBER PROCEDURE set_send_subject (
value IN VARCHAR2 ),
MEMBER PROCEDURE set_reply_subject (
value IN VARCHAR2 ),
MEMBER PROCEDURE set_cm_time_limit (
value IN NUMBER ),
MEMBER PROCEDURE set_cm_sender_name (
value IN VARCHAR2 ),
MEMBER PROCEDURE set_cm_sequence_num (
value IN NUMBER ),
MEMBER FUNCTION get_send_subject
RETURN VARCHAR2,
MEMBER FUNCTION get_reply_subject
RETURN VARCHAR2,
MEMBER FUNCTION get_cm_time_limit
RETURN NUMBER,
MEMBER FUNCTION get_cm_sender_name
RETURN VARCHAR2,
MEMBER FUNCTION get_cm_sequence_num
RETURN NUMBER,
MEMBER FUNCTION get_field_count
RETURN INTEGER,
MEMBER FUNCTION get_field (
idx IN INTEGER )
RETURN sys.mgw_tibrv_field_t,
MEMBER FUNCTION get_field_by_name (
name IN VARCHAR2 )
RETURN sys.mgw_tibrv_field_t,
MEMBER FUNCTION get_field_by_id (
id IN INTEGER )
RETURN sys.mgw_tibrv_field_t,
MEMBER FUNCTION find_field_name (
name IN VARCHAR2,
start_idx IN INTEGER )
RETURN INTEGER,
MEMBER FUNCTION find_field_id (
id IN INTEGER,
start_idx IN INTEGER )
RETURN INTEGER,
MEMBER PROCEDURE add_ifield (
p_field IN sys.mgw_tibrv_ifield_t ),
MEMBER PROCEDURE add_num_field (
p_name IN VARCHAR2,
p_id IN INTEGER,
p_type IN INTEGER,
p_value IN NUMBER ),
MEMBER PROCEDURE add_numarray_field (
p_name IN VARCHAR2,
p_id IN INTEGER,
p_type IN INTEGER,
p_value IN sys.mgw_number_array_t ),
MEMBER PROCEDURE add_text_field (
p_name IN VARCHAR2,
p_id IN INTEGER,
p_type IN INTEGER,
p_value IN VARCHAR2 ),
MEMBER PROCEDURE add_raw_field (
p_name IN VARCHAR2,
p_id IN INTEGER,
p_type IN INTEGER,
p_value IN RAW ),
MEMBER PROCEDURE add_date_field (
p_name IN VARCHAR2,
p_id IN INTEGER,
p_type IN INTEGER,
p_value IN DATE ),
MEMBER PROCEDURE add_clob_field (
p_name IN VARCHAR2,
p_id IN INTEGER,
p_type IN INTEGER,
p_value IN CLOB ),
MEMBER PROCEDURE add_blob_field (
p_name IN VARCHAR2,
p_id IN INTEGER,
p_type IN INTEGER,
p_value IN BLOB )
);
/
grant execute on sys.mgw_tibrv_msg_t to public with grant option;
Rem ========================================================================
Rem Internal types modified.
Rem
Rem CAUTION: Once a type has evolved by adding a new attribute, widening an
Rem attribute, and so on, a CREATE OR REPLACE TYPE or ALTER TYPE REPLACE
Rem _cannot_ be used to replace the type. An attempt to do so fails with:
Rem ORA-22308: operation not allowed on an evolved type
Rem The error is not displayed if database is opened as STARTUP MIGRATE and
Rem it _appears_ the type is successfully replaced, but in fact, it remains
Rem unchanged. Just adding/dropping type methods does not evolve the type.
Rem
Rem NOTE: For 10.1, new attributes were added to the four MGW internal types,
Rem mgwi_msglink, mgwi_foreignqueue, mgw_subscriber, and mgwi_schedule and
Rem a CREATE OR REPLACE used to replace the type rather than using ALTER TYPE.
Rem Even worse, an attribute was even added in the middle of the existing
Rem attributes for mgwi_msglink.
Rem
Rem For 10.2 (and future releases), ALTER TYPE is used to evolve MGW types.
Rem To get around the evolve/replace issue for a 10.2 to 9.2 downgrade, a
Rem couple changes are needed for the mgwu920 and mgwe920 scripts shipped
Rem with the 10.2 release. First, a DROP TYPE is added before the
Rem CREATE OR REPLACE TYPE since the REPLACE fails for an evolved type.
Rem Second, necessary privileges on the types must be re-granted after the
Rem type is re-created.
Rem
Rem From 10.2 onward, MGW should _always_ use ALTER TYPE for any type
Rem modifications and never replace the entire type.
Rem ========================================================================
-- mgwi_msglink
--
drop type mgwi_msglink;
CREATE OR REPLACE TYPE mgwi_msglink
OID '00000000000000000000000000021090'
AS OBJECT
(
m_linkname VARCHAR2(30),
m_linktype INTEGER,
m_mqseriesProp sys.mgw_mqseries_properties,
m_tibrvProp sys.mgw_tibrv_properties,
m_options sys.mgw_properties,
m_comment VARCHAR2(2000),
m_guid RAW(16),
m_flags INTEGER,
STATIC FUNCTION entry_exists (
p_linkname IN VARCHAR2 )
RETURN INTEGER,
STATIC FUNCTION entry_guid (
p_linkname IN VARCHAR2 )
RETURN RAW,
STATIC FUNCTION construct
RETURN mgwi_msglink,
STATIC FUNCTION construct (
p_linkname IN VARCHAR2,
p_properties IN sys.mgw_mqseries_properties,
p_options IN sys.mgw_properties DEFAULT NULL,
p_comment IN VARCHAR2 DEFAULT NULL )
RETURN mgwi_msglink,
STATIC FUNCTION construct (
p_linkname IN VARCHAR2,
p_properties IN sys.mgw_tibrv_properties,
p_options IN sys.mgw_properties DEFAULT NULL,
p_comment IN VARCHAR2 DEFAULT NULL )
RETURN mgwi_msglink,
STATIC FUNCTION load_entry (
p_linkname IN VARCHAR2 )
RETURN mgwi_msglink,
STATIC FUNCTION load_guid (
p_guid IN RAW )
RETURN mgwi_msglink,
STATIC FUNCTION load_entry_decrypt_text (
p_linkname IN VARCHAR2,
p_key IN RAW )
RETURN mgwi_msglink,
MEMBER PROCEDURE insertData,
MEMBER PROCEDURE deleteData,
MEMBER PROCEDURE updateData,
MEMBER PROCEDURE update_flags (
p_flags IN INTEGER ),
MEMBER PROCEDURE normalizeData,
MEMBER PROCEDURE decryptData (
p_keyText IN RAW,
p_keyRaw IN RAW ),
MEMBER PROCEDURE assignGuid (
p_guid IN RAW DEFAULT SYS_GUID ),
MEMBER PROCEDURE loadMqseries,
MEMBER PROCEDURE insertMqseries,
MEMBER PROCEDURE deleteMqseries,
MEMBER PROCEDURE updateMqseries,
MEMBER PROCEDURE decryptMqseries (
p_keyText IN VARCHAR2,
p_keyRaw IN RAW ),
MEMBER PROCEDURE loadTibrv,
MEMBER PROCEDURE insertTibrv,
MEMBER PROCEDURE deleteTibrv,
MEMBER PROCEDURE updateTibrv,
MEMBER PROCEDURE decryptTibrv (
p_keyText IN VARCHAR2,
p_keyRaw IN RAW )
);
/
grant execute on mgwi_msglink to MGW_AGENT_ROLE;
-- mgwi_foreignqueue
--
drop type mgwi_foreignqueue;
CREATE OR REPLACE TYPE mgwi_foreignqueue
OID '00000000000000000000000000021091'
AS OBJECT
(
m_name VARCHAR2(30),
m_link VARCHAR2(30),
m_provider_queue VARCHAR2(128),
m_domain INTEGER,
m_options sys.mgw_properties,
m_comment VARCHAR2(2000),
m_guid RAW(16),
m_flags INTEGER,
STATIC FUNCTION entry_exists(
p_qname IN VARCHAR2,
p_linkname IN VARCHAR2 )
RETURN INTEGER,
STATIC FUNCTION entry_guid (
p_qname IN VARCHAR2,
p_linkname IN VARCHAR2 )
RETURN RAW,
STATIC FUNCTION construct
RETURN mgwi_foreignqueue,
STATIC FUNCTION construct (
p_name IN VARCHAR2,
p_link IN VARCHAR2,
p_provider_queue IN VARCHAR2 DEFAULT NULL,
p_domain IN INTEGER DEFAULT NULL,
p_options IN sys.mgw_properties DEFAULT NULL,
p_comment IN VARCHAR2 DEFAULT NULL )
RETURN mgwi_foreignqueue,
STATIC FUNCTION load_entry (
p_name IN VARCHAR2,
p_link IN VARCHAR2 )
RETURN mgwi_foreignqueue,
STATIC FUNCTION load_guid (
p_guid IN RAW )
RETURN mgwi_foreignqueue,
MEMBER PROCEDURE insertData,
MEMBER PROCEDURE deleteData,
MEMBER PROCEDURE update_flags (
p_flags IN INTEGER ),
MEMBER PROCEDURE normalizeData,
MEMBER PROCEDURE assignGuid (
p_guid IN RAW DEFAULT SYS_GUID )
);
/
grant execute on mgwi_foreignqueue to MGW_AGENT_ROLE;
-- mgwi_subscriber
--
drop type mgwi_subscriber;
CREATE OR REPLACE TYPE mgwi_subscriber
OID '00000000000000000000000000021092'
AS OBJECT
(
m_id VARCHAR2(30),
m_propType INTEGER,
m_source VARCHAR2(61),
m_destination VARCHAR2(61),
m_rule VARCHAR2(4000),
m_transformation VARCHAR2(61),
m_exceptionQueue VARCHAR2(61),
m_guid RAW(16),
m_configState INTEGER,
m_flags INTEGER,
m_options sys.mgw_properties,
STATIC FUNCTION entry_exists (
p_id IN VARCHAR2 )
RETURN INTEGER,
STATIC FUNCTION entry_guid (
p_id IN VARCHAR2 )
RETURN RAW,
STATIC FUNCTION construct
RETURN mgwi_subscriber,
STATIC FUNCTION construct (
p_id IN VARCHAR2,
p_propType IN INTEGER,
p_source IN VARCHAR2,
p_destination IN VARCHAR2,
p_rule IN VARCHAR2 DEFAULT NULL,
p_transformation IN VARCHAR2 DEFAULT NULL,
p_exceptionQueue IN VARCHAR2 DEFAULT NULL,
p_options IN sys.mgw_properties DEFAULT NULL )
RETURN mgwi_subscriber,
STATIC FUNCTION load_entry (
p_id IN VARCHAR2 )
RETURN mgwi_subscriber,
STATIC FUNCTION load_guid (
p_guid IN RAW )
RETURN mgwi_subscriber,
STATIC PROCEDURE delete_guid (
p_guid IN RAW ),
MEMBER PROCEDURE insertData,
MEMBER PROCEDURE deleteData,
MEMBER PROCEDURE updateData,
MEMBER PROCEDURE update_configState (
p_state IN BINARY_INTEGER ),
MEMBER PROCEDURE update_flags (
p_flags IN INTEGER ),
MEMBER PROCEDURE normalizeData,
MEMBER PROCEDURE assignGuid (
p_guid IN RAW DEFAULT SYS_GUID ),
MEMBER FUNCTION isOutbound
RETURN INTEGER
);
/
grant execute on mgwi_subscriber to MGW_AGENT_ROLE;
-- mgwi_schedule
--
drop type mgwi_schedule;
CREATE OR REPLACE TYPE mgwi_schedule
OID '00000000000000000000000000021093'
AS OBJECT
(
m_id VARCHAR2(30),
m_propType INTEGER,
m_source VARCHAR2(61),
m_destination VARCHAR2(61),
m_startTime DATE,
m_duration NUMBER,
m_nextTime VARCHAR2(200),
m_latency NUMBER,
m_state INTEGER,
m_guid RAW(16),
m_flags INTEGER,
STATIC FUNCTION entry_exists (
p_id IN VARCHAR2 )
RETURN INTEGER,
STATIC FUNCTION entry_guid (
p_id IN VARCHAR2 )
RETURN RAW,
STATIC FUNCTION construct
RETURN mgwi_schedule,
STATIC FUNCTION construct (
p_id IN VARCHAR2,
p_propType IN INTEGER,
p_source IN VARCHAR2,
p_destination IN VARCHAR2,
p_startTime IN DATE,
p_duration IN NUMBER,
p_nextTime IN VARCHAR2,
p_latency IN NUMBER,
p_state IN INTEGER )
RETURN mgwi_schedule,
STATIC FUNCTION load_entry (
p_id IN VARCHAR2 )
RETURN mgwi_schedule,
STATIC FUNCTION load_guid (
p_guid IN RAW )
RETURN mgwi_schedule,
MEMBER PROCEDURE insertData,
MEMBER PROCEDURE deleteData,
MEMBER PROCEDURE updateData,
MEMBER PROCEDURE updateState,
MEMBER PROCEDURE update_flags (
p_flags IN INTEGER ),
MEMBER PROCEDURE normalizeData,
MEMBER PROCEDURE assignGuid (
p_guid IN RAW DEFAULT SYS_GUID )
);
/
grant execute on mgwi_schedule to MGW_AGENT_ROLE;
Rem ========================================================================
Rem Table modifications
Rem ========================================================================
ALTER TABLE mgw$_gateway
ADD
(
max_threads integer default 1,
flags integer default 0 not null,
job_flags integer default 0 not null,
agent_instance number,
agent_start_time timestamp,
last_instance number,
last_start_time timestamp,
last_agent_exitcode integer
)
/
ALTER TABLE mgw$_links
ADD
(
flags integer default 0 not null
)
/
ALTER TABLE mgw$_foreign_queues
ADD
(
flags integer default 0 not null
)
/
ALTER TABLE mgw$_subscribers
ADD
(
flags integer default 0 not null,
options sys.mgw_properties
)
/
ALTER TABLE mgw$_schedules
ADD
(
flags integer default 0 not null
)
/
-- schedule latency first used by MGW agent starting 10.1.0. Set value for
-- existing schedules to NULL so agent's default polling interval is used.
update mgw$_schedules set latency = null;
commit;
Rem ========================================================================
Rem New Tables
Rem ========================================================================
CREATE TABLE mgw$_tibrv_links
(
link_name VARCHAR2(30) NOT NULL,
service VARCHAR2(128),
daemon VARCHAR2(128),
network VARCHAR2(256),
cm_name VARCHAR2(256),
cm_ledger VARCHAR2(256),
CONSTRAINT mgw$_tibrv_links_fk1
FOREIGN KEY (link_name) REFERENCES mgw$_links(link_name)
ON DELETE CASCADE
);
grant select, update on mgw$_tibrv_links to MGW_AGENT_ROLE;
Rem ========================================================================
Rem Other Tasks
Rem ========================================================================
-- grant privileges needed for OJMS LOB workaround
grant UPDATE ANY TABLE to MGW_AGENT_ROLE;
-- remove notification pipes used by MGW prior to 10i release
-- note: dbms_pipe.remove_pipe returns 0 if pipe does not exist. It throws
-- exception ORA-23322 if insufficient privileges, which should not happen.
declare
v_int integer;
begin
v_int := dbms_pipe.remove_pipe('MGW_NOTIFY_PIPE');
v_int := dbms_pipe.remove_pipe('MGW_RESPONSE_PIPE');
end;
/
Rem ========================================================================
Rem Chain to component's next "u" script
Rem ========================================================================
Rem Perform the 10.1.0 to 10.2.0 upgrade actions
@@mgwu101
Rem === End file: mgwu920.sql ================================================
OHA YOOOO