Rem drv: Rem Rem $Header: emdb/source/oracle/sysman/emdrep/sql/db/latest/changemgr/cm_pkgdef.sql /st_emdbsa_11.2/1 2009/02/02 12:13:29 abodge Exp $ Rem Rem cm_pkgdef.sql Rem Rem Copyright (c) 2002, 2009, Oracle and/or its affiliates. Rem All rights reserved. Rem Rem NAME Rem cm_pkgdef - CM Backend PL/SQL Rem Rem DESCRIPTION Rem CM Backend PL/SQL (along with some UI APIs) Rem Rem NOTES Rem Rem Rem MODIFIED (MM/DD/YY) Rem abodge 01/14/09 - Move CM Synch to DB Control Rem abodge 07/19/05 - Add col to baseline deps table Rem xshen 06/29/05 - support version history Rem chyu 06/28/05 - New repmgr header impl Rem abodge 06/10/05 - Add UDT support Rem abodge 05/31/05 - Continue pub. syn. Rem abodge 05/25/05 - Add pub. synonym option Rem xshen 05/17/05 - grabtrans 'lhan_cm_annotate' Rem xshen 05/16/05 - adding ignore partition consts Rem lhan 05/05/05 - add annotation support Rem lhan 04/28/05 - add ignore table column position flag Rem abodge 04/21/05 - Continue pattern work Rem abodge 04/18/05 - Add name patterns Rem abodge 03/23/05 - Store DB version with baseline versions Rem abodge 03/18/05 - Add init param calls Rem abodge 03/04/05 - Add err and msg constants Rem abodge 03/04/05 - Add constant for version status Rem abodge 03/04/05 - Define constant Rem lhan 01/13/05 - synchronizing capture and compare Rem xshen 11/15/04 - adding exact match to rollup interface Rem abodge 09/29/04 - Add package body type Rem xshen 09/23/04 - adding description column Rem abodge 09/20/04 - Add IGNORE flags to scope spec Rem abodge 09/15/04 - Update definitions, mostly Rem lhan 09/14/04 - lhan_cm_0914 Rem lhan 09/14/04 - move to cm_pkgdef.sql Rem xshen 09/13/04 - reorder cursor columns Rem xshen 09/07/04 - consolidate Rem lhan 09/07/04 - Rem xshen 09/02/04 - tune sql Rem xshen 08/30/04 - add security check for rollup, delete calls etc Rem abodge 08/30/04 - Return hash key for schemaobj query Rem abodge 08/24/04 - Exclude mat views from schemaobjs Rem abodge 08/04/04 - Add grants_hash to comparison Rem xshen 07/28/04 - add set/delete job/exec to comparison Rem abodge 07/26/04 - Add more grant types Rem xshen 07/12/04 - change CLOB to BLOB for differences Rem xshen 07/08/04 - add_obj_to_comparison function Rem abodge 06/25/04 - Fix remove_obj_from_comp for NS obj Rem lhan 06/23/04 - Rem abodge 06/22/04 - NS obj compare work Rem xshen 06/18/04 - Change DDL column to BLOB Rem lhan 06/18/04 - replace CLOB with BLOB for compression Rem abodge 06/17/04 - Nonschema obj compare Rem lhan 06/16/04 - Rem lhan 06/15/04 - Rem xshen 06/14/04 - Add top level comparison roll up call Rem ... ... Rem abodge 04/16/04 - Created Rem -- MGMT_CM package definition -- Includes schema map support CREATE OR REPLACE PACKAGE MGMT_CM as -- Constants for scope spec flags (bit mask values) -- The first two are used in capture, comparison and synchronization. include_grants CONSTANT INTEGER := 1; include_all_schemas CONSTANT INTEGER := 2; -- The rest are used in comparision and synchronization. -- Default is 0 (false) ignore_physical_atts CONSTANT INTEGER := 4; ignore_tablespace CONSTANT INTEGER := 8; match_constraints CONSTANT INTEGER := 16; -- match_constraints values: match_consts_by_def CONSTANT INTEGER := 0; match_consts_by_name CONSTANT INTEGER := 1; constraint_name_diffs CONSTANT INTEGER := 32; -- constraint_name_diffs values ignore_name_diffs CONSTANT INTEGER := 0; report_name_diffs CONSTANT INTEGER := 1; logical_sql_compare CONSTANT INTEGER := 64; compare_stats CONSTANT INTEGER := 128; -- for baseline capture before compare or synch capture_left_first CONSTANT INTEGER := 256; capture_source_first CONSTANT INTEGER := capture_left_first; capture_right_first CONSTANT INTEGER := 512; include_init_params CONSTANT INTEGER := 1024; ignore_tblcol_position CONSTANT INTEGER := 2048; ignore_partition CONSTANT INTEGER := 4096; -- Capture or compare public synonyms on objects in schemas include_public_synonyms CONSTANT INTEGER := 8192; -- Constants for use in scopespec_names match_types col name_pattern_match CONSTANT INTEGER := -3; schema_match CONSTANT INTEGER := -2; object_match_any_type CONSTANT INTEGER := -1; -- Type-specific codes (these are also bit positions in object_types col) table_match CONSTANT INTEGER := 0; index_match CONSTANT INTEGER := 1; view_match CONSTANT INTEGER := 2; trigger_match CONSTANT INTEGER := 3; synonym_match CONSTANT INTEGER := 4; package_match CONSTANT INTEGER := 5; package_body_match CONSTANT INTEGER := 6; procedure_match CONSTANT INTEGER := 7; function_match CONSTANT INTEGER := 8; sequence_match CONSTANT INTEGER := 9; dblink_match CONSTANT INTEGER := 10; mview_match CONSTANT INTEGER := 11; mview_log_match CONSTANT INTEGER := 12; cluster_match CONSTANT INTEGER := 13; tablespace_match CONSTANT INTEGER := 14; rollback_seg_match CONSTANT INTEGER := 15; user_match CONSTANT INTEGER := 16; role_match CONSTANT INTEGER := 17; profile_match CONSTANT INTEGER := 18; udt_match CONSTANT INTEGER := 19; -- Values for scope spec object_types bitmask - integer value -- of the corresponding xxx_match code used as a bit position table_int_value CONSTANT INTEGER := power(2, table_match); index_int_value CONSTANT INTEGER := power(2, index_match); view_int_value CONSTANT INTEGER := power(2, view_match); trigger_int_value CONSTANT INTEGER := power(2, trigger_match); synonym_int_value CONSTANT INTEGER := power(2, synonym_match); package_int_value CONSTANT INTEGER := power(2, package_match); package_body_int_value CONSTANT INTEGER := power(2, package_body_match); procedure_int_value CONSTANT INTEGER := power(2, procedure_match); function_int_value CONSTANT INTEGER := power(2, function_match); sequence_int_value CONSTANT INTEGER := power(2, sequence_match); dblink_int_value CONSTANT INTEGER := power(2, dblink_match); mview_int_value CONSTANT INTEGER := power(2, mview_match); mview_log_int_value CONSTANT INTEGER := power(2, mview_log_match); cluster_int_value CONSTANT INTEGER := power(2, cluster_match); tablespace_int_value CONSTANT INTEGER := power(2, tablespace_match); rollback_seg_int_value CONSTANT INTEGER := power(2, rollback_seg_match); user_int_value CONSTANT INTEGER := power(2, user_match); role_int_value CONSTANT INTEGER := power(2, role_match); profile_int_value CONSTANT INTEGER := power(2, profile_match); udt_int_value CONSTANT INTEGER := power(2, udt_match); -- Scope spec modes schema_mode CONSTANT INTEGER := 0; object_mode CONSTANT INTEGER := 1; -- dependent types for_baseline comment CONSTANT INTEGER := 1; -- Directions for proxy user grants proxy_user CONSTANT INTEGER := 1; proxied_for_user CONSTANT INTEGER := 2; -- Constants for comparison states -- NEITHER means the object is no longer present in either -- source in this version of the comparison neither CONSTANT INTEGER := 0; left_only CONSTANT INTEGER := 1; right_only CONSTANT INTEGER := 2; both_same CONSTANT INTEGER := 3; both_different CONSTANT INTEGER := 4; both_unknown CONSTANT INTEGER := 5; -- Constants indicating which side a mapped query is for unspecified CONSTANT INTEGER := 0; left_side CONSTANT INTEGER := 1; -- CMProcessor.SIDE_1 right_side CONSTANT INTEGER := 2; -- CMProcessor.SIDE_2 -- Action codes returned by update_baseline_version must_update CONSTANT INTEGER := 1; update_maybe CONSTANT INTEGER := 2; -- Action codes for add_obj_to_baseline remove_prev_version CONSTANT INTEGER := 1; no_remove_prev_version CONSTANT INTEGER := 2; -- Constants for GET_COMPARISON_VERSION_OBJECTS all_objects CONSTANT INTEGER := 1; mtime_only CONSTANT INTEGER := 2; nonschema_objects CONSTANT INTEGER := 3; nonschema_nonmtime_objects CONSTANT INTEGER := 4; -- Constants for including/excluding specified schemas include_mode CONSTANT INTEGER := 1; -- Include specified schemas exclude_mode CONSTANT INTEGER := 2; -- Exclude specified schemas -- Status codes for comparison and baseline version status VERSION_STATUS_OK CONSTANT VARCHAR2(2) := 'OK'; VERSION_STATUS_BAD CONSTANT VARCHAR2(3) := 'BAD'; ------------------------------------------------- -- Status Codes for Generate DDL -- ------------------------------------------------- STATUS_NEVERRUN CONSTANT NUMBER(4) := MGMT_JOBS.STATUS_BUCKET_ALL; STATUS_RUNNING CONSTANT NUMBER(3) := MGMT_JOBS.STATUS_BUCKET_RUNNING; STATUS_PROBLEM CONSTANT NUMBER(3) := MGMT_JOBS.STATUS_BUCKET_PROBLEM; STATUS_OK CONSTANT NUMBER(3) := MGMT_JOBS.STATUS_BUCKET_OK; -- Comparison Source Type COMP_DATABASE_T CONSTANT VARCHAR2(1) := 'D'; COMP_BASELINE_T CONSTANT VARCHAR2(1) := 'B'; -- Security: Baseline or Comparison type BASELINE_T CONSTANT VARCHAR2(1) := 'B'; -- not using comp_baseline_t COMPARISON_T CONSTANT VARCHAR2(1) := 'C'; SYNCH_T CONSTANT VARCHAR2(1) := 'S'; -- Error codes raised by MGMT_CM functions and procedures CANNOT_REMOVE_VERSION_ERR CONSTANT INTEGER := -20666; CANNOT_REMOVE_VERSION_ERR_M VARCHAR2(100) := 'Cannot remove comparison or baseline version - new version being processed.'; COMP_USING_BL_VERSION_ERR CONSTANT INTEGER := -20667; COMP_USING_BL_VERSION_ERR_M VARCHAR2(100) := 'Cannot remove baseline version - comparison currently comparing it'; -- Baseline Object History: Change Type: New, Changed, Deleted. new_version CONSTANT INTEGER := 1; changed_version CONSTANT INTEGER := 2; deleted_version CONSTANT INTEGER := 3; -- Record types and cursors TYPE ScopeNamesRecTyp IS RECORD ( match_types number, schema varchar2(30), name varchar2(30)); TYPE scope_names_cur_typ IS REF CURSOR RETURN ScopeNamesRecTyp; /* TYPE ObjectActionRecTyp IS RECORD ( obj_type number, schema varchar2(30), name varchar2(30), action number); TYPE object_action_cur_typ IS REF CURSOR RETURN ObjectActionRecTyp; */ -- Weakly-typed cursor TYPE weak_cur_typ IS REF CURSOR; -- Record type for top-level information about a baseline TYPE BaselineInfoRecTyp IS RECORD ( ss_id RAW(16), source_id RAW(16)); -- Record type for top-level information about a comparison TYPE ComparisonInfoRecTyp IS RECORD ( ss_id RAW(16), left_type VARCHAR2(1), left_source_id RAW(16), left_version NUMBER, right_type VARCHAR2(1), right_source_id RAW(16), right_version NUMBER); -- Overloaded for JDBC: booleans set from JDBC are converted to bits. -- Use setBoolean when calling this. function create_scope_spec( p_typemask in number, p_include_grants in number default 0, p_include_all_schemas in number default 0, p_comparison_flags in number default 0, p_include_init_params in number default 0, p_include_public_syn in number default 0) return raw; -- Create a scope spec -- p_typemask: Bitmask designating types selected by this scope spec -- Sum of xxx_INT_VALUE constants -- p_include_grants: If true, grant information is also selected -- p_include_all_schemas: If true, objects in all schemas are selected -- except those specifically excluded. By default, no schemas are -- selected excpet those specifically included. -- p_comparison_flags: Logical OR of all comparison-only flags: -- ignore_physical_atts -- ignore_tablespace -- match_constraints -- constraint_name_diffs -- logical_sql_compare -- compare_stats -- p_include_init_params: If true, capture or compare database -- init params. -- p_include_public_syn: If true, capture or compare public -- synonyms for objects in the schemas. -- Returns: ID of new scope spec. function create_scope_spec( p_typemask in number, p_include_grants in boolean default false, p_include_all_schemas in boolean default false, p_comparison_flags in number default 0, p_include_init_params in boolean default false, p_include_public_syn in boolean default false) return raw; -- Add a schema to a scope spec. Objects in the schema are either -- included in the scope or excluded, depending on the scope -- spec's include_all_schemas setting. -- p_ss_id: Scope spec ID. -- p_name: Schema name. procedure add_scope_schema( p_ss_id in raw, p_schema_name in varchar2); -- Add a name pattern to a scope spec. For the 10gR2 release, -- the pattern is used to select schema objects based on their -- prefix. For example, adding a pattern "HZ_" selects schema -- objects whose names begin with "HZ_". -- p_ss_id: Scope spec ID. -- p_pattern: Name pattern procedure add_scope_name_pattern( p_ss_id in raw, p_pattern in varchar2); -- Add an object name to a scope spec -- p_ss_id: Scope spec ID. -- p_name: Object name. -- p_match_type: Object type. -- By default, objects of all types having this name are matched, -- subject to scope spec's type bitmask. (OBJECT_MATCH_ANY_TYPE) -- xxx_MATCH: Match the specific type. This overrides the type bitmask. -- p_match_schema: Name of schema containing specific schema object. -- Example: To select table SCOTT.EMP: -- p_name = 'EMP' -- p_match_type = TABLE_MATCH -- p_obj_schema = 'SCOTT' -- To select user SCOTT: -- p_name = 'SCOTT' -- p_match_type = USER_MATCH -- p_obj_schema = null procedure add_scope_name( p_ss_id in raw, p_name in varchar2, p_match_type in number default OBJECT_MATCH_ANY_TYPE, p_obj_schema in varchar2 default null); -- Get scope spec typemask -- p_ss_id: ID of scope spec function get_scope_spec_typemask( p_ss_id in raw) return number; -- Get scope spec flags -- p_ss_id: ID of scope spec function get_scope_spec_flags( p_ss_id in raw) return number; -- Get scope spec names -- p_ss_id: ID of scope spec -- p_ss_names: Cursor to be initialized with scope name data procedure get_scope_spec_names( p_ss_id in raw, p_ss_names in out scope_names_cur_typ); -- Indicate whether an "object-mode" scope spec has schema types. -- p_ss_id: ID of scope spec -- Returns: 0 if scope spec contains no schema types -- >0 otherwise function scope_spec_has_schema_types( p_ss_id in raw) return number; -- Indicate whether an "object-mode" scope spec has nonschema types. -- p_ss_id: ID of scope spec -- Returns: 0 if scope spec contains no nonschema types -- >0 otherwise function scope_spec_has_nonschema_types( p_ss_id in raw) return number; -- Get comma-separated list of schemas included (or excluded) -- in a scope spec. -- p_ss_id: Scope spec ID. function get_schema_list (p_ss_id in raw) return varchar2; -- Get comma-separated list of object name patterns -- in a scope spec. -- p_ss_id: Scope spec ID. function get_name_pattern_list (p_ss_id in raw) return varchar2; -- Initialize a cursor with the name patterns contained in a -- scope spec. procedure get_scope_name_patterns( p_ss_id in raw, p_ss_patterns in out weak_cur_typ); -- Get comma-separated list of schemas included (or excluded) -- in one side of a schema map -- p_owner_id: ID of schema map's owner (e.g., comparison). -- p_side: 'L' or 'R', indicating which side to get the list from function get_schema_list_from_map ( p_owner_id in raw, p_side in varchar2) return varchar2; -- Get comma-separated list of types included in a scope spec typemask. function get_types_list (p_typemask in number) return varchar2; function get_nonschema_types_list (p_typemask in number) return varchar2; -- Get name of type represented by numeric type code function get_type_name (p_type_code in number) return varchar2; function get_nonschema_type_name (p_type_code in number) return varchar2; -- Create a baseline -- p_name: Baseline name -- p_owner: Baseline owner (EM admin) -- p_scope_spec: ID of the baseline's scope specification -- p_source_id: ID of baseline's source database -- Must be a valid target_guid from mgmt_targets -- p_description (optional): Description of the baseline -- p_temporary (optional): 0 if permanent (user-defined) baseline -- 1 if temporary baseline (used by Compare) -- Returns: ID of created baseline function create_baseline( p_name in varchar2, p_owner in varchar2, p_scope_spec in raw, p_source_id in raw, p_description in varchar2 default null, p_temporary in number default 0) return raw; -- Get a baseline's ID from name and owner function get_baseline_id( p_name in varchar2, p_owner in varchar2) return raw; -- Get information about a baseline. procedure get_baseline_info (p_baseline_id in raw, p_baseline_info in out BaselineInfoRecTyp); -- Get a baseline's scope spec -- p_baseline_id: Baseline ID -- Return: ID of baseline's scope spec. function get_baseline_scope_spec( p_baseline_id in raw) return raw; -- Get a baseline's source database ID -- p_baseline_id: Baseline ID -- Return: ID of baseline's source database. function get_baseline_source_id( p_baseline_id in raw) return raw; -- Add a new baseline version -- p_baseline_id: Baseline ID -- Return: Version number of the new version -- 1 for initial version -- curr_version+1 for subsequent versions function add_baseline_version( p_baseline_id in raw) return integer; -- Get current baseline version -- p_baseline_id: Baseline ID -- Return: Version number of the current baseline version -- NOTE: Returns 0 if no baseline version has been created. function get_current_baseline_version( p_baseline_id in raw) return integer; -- Get previous baseline version (before the current version) -- p_baseline_id: Baseline ID -- Return: Version number of the previous baseline version -- NOTE: Returns 0 if no previous baseline version exists. function get_previous_baseline_version( p_baseline_id in raw) return integer; -- Add an object definition to a baseline version -- TO DO: Force version_number to current version, do not allow user to -- specify version? However, reduces efficiency of this call.) -- TO DO: A version of this that accepts an array of objects. -- p_baseline_id: Baseline ID -- p_object_type: Type of object being added, -- one of the xxx_MATCH values -- p_object_schema: Schema containing object being added -- null for nonschema objects -- p_object_name: Name of object being added -- p_version_number: Version to which object is added -- THIS MUST BE THE CURRENT VERSION -- p_object_definition: BLOB containing object's XML definition -- p_prev_version_action: -- REMOVE_PREV_VERSION (default): Remove the previous version -- from this baseline version -- NO_REMOVE_PREVIOUS_VERSION: Do not remove the previous -- version (user is responsible for determining that there is no -- previous version). procedure add_obj_to_baseline( p_baseline_id in raw, p_object_type in number, p_object_schema in varchar2, p_object_name in varchar2, p_version_number in number, p_last_ddl in date, p_hash_value in varchar2, p_object_definition in blob, p_prev_version_action number default REMOVE_PREV_VERSION); procedure add_dependent_to_baseline( p_baseline_id in raw, p_base_obj_type in number, p_base_obj_schema in varchar2, p_base_obj_name in varchar2, p_base_obj_col in varchar2, p_dependent_type in number, p_hash_value in varchar2, p_version_number in number, p_object_definition in blob); procedure add_objgrant_to_baseline( p_baseline_id in raw, p_grantee in varchar2, p_obj_owner in varchar2, p_obj_name in varchar2, p_col_name in varchar2, p_grantor in varchar2, p_privilege in varchar2, p_flag in number, p_version_number in number, p_obj_type in number); procedure add_sysgrant_to_baseline( p_baseline_id in raw, p_grantee in varchar2, p_privilege in varchar2, p_flag in number, p_version_number in number); procedure add_rolegrant_to_baseline( p_baseline_id in raw, p_grantee in varchar2, p_role in varchar2, p_flag in number, p_version_number in number); procedure add_quotagrant_to_baseline( p_baseline_id in raw, p_grantee in varchar2, p_tablespace in varchar2, p_maxbytes in number, p_version_number in number); procedure add_proxygrant_to_baseline( p_baseline_id in raw, p_grantee in varchar2, p_proxy_user in varchar2, p_direction in number, -- MGMT_CM.PROXY_USER or PROXIED_FOR_USER p_version_number in number); procedure add_cons_grp_to_baseline( p_baseline_id in raw, p_grantee in varchar2, p_cons_grp in varchar2, p_flag in number, p_version_number in number); function add_obj_to_baseline( p_baseline_id in raw, p_object_type in number, p_object_schema in varchar2, p_object_name in varchar2, p_version_number in number, p_last_ddl in date, p_hash_value in varchar2, p_addnl_info in varchar2 default null) return blob; function add_dependent_to_baseline( p_baseline_id in raw, p_base_obj_type in number, p_base_obj_schema in varchar2, p_base_obj_name in varchar2, p_base_obj_col in varchar2, p_dependent_type in number, p_hash_value in varchar2, p_version_number in number) return blob; procedure add_init_param_to_baseline( p_baseline_id in raw, p_param_name in varchar2, p_param_value in varchar2, p_version_number in number); -- Add a DBA dependency to a baseline version procedure add_dependency_to_baseline( p_baseline_id in raw, p_dep_obj_type in number, p_dep_obj_schema in varchar2, p_dep_obj_name in varchar2, p_ref_obj_type in number, p_ref_obj_schema in varchar2, p_ref_obj_name in varchar2, p_ref_type in varchar2, p_version_number in number); -- Remove an object from a baseline version -- Call this to indicate that the object has been dropped since -- the last version of this baseline. -- TO DO: Force to current version, as above. -- p_baseline_id: Baseline ID -- p_object_type: Type of object being removed, -- one of the xxx_MATCH values -- p_object_schema: Schema containing object being removed; -- null for nonschema objects -- p_object_name: Name of object being removed -- p_version_number: Version from which object is removed -- THIS MUST BE THE CURRENT VERSION procedure remove_obj_from_baseline( p_baseline_id in raw, p_object_type in number, p_object_schema in varchar2, p_object_name in varchar2, p_version_number in number); procedure remove_nsobj_from_baseline( p_baseline_id in raw, p_object_type in number, p_hash_value in varchar2, p_version_number in number); procedure remove_mvlog_from_baseline( p_baseline_id in raw, p_hash_value in varchar2, p_version_number in number, p_obj_schema in varchar2); -- Remove a dependent identified by dependent type and base object procedure remove_dependent_from_baseline( p_baseline_id in raw, p_dep_type in number, p_base_obj_type in number, p_base_obj_schema in varchar2, p_base_obj_name in varchar2, p_base_obj_col in varchar2, p_version_number in number); -- Remove a depenent identified by dependent type and hash value procedure remove_dependent_from_baseline( p_baseline_id in raw, p_dep_type in number, p_hash_value in varchar2, p_version_number in number); procedure remove_objgrant_from_baseline( p_baseline_id in raw, p_grantee in varchar2, p_obj_owner in varchar2, p_obj_name in varchar2, p_col_name in varchar2, p_grantor in varchar2, p_privilege in varchar2, p_version_number in number); procedure remove_sysgrant_from_baseline( p_baseline_id in raw, p_grantee in varchar2, p_privilege in varchar2, p_version_number in number); procedure remove_rolegrant_from_baseline( p_baseline_id in raw, p_grantee in varchar2, p_role in varchar2, p_version_number in number); procedure remove_qtagrnt_from_baseline( p_baseline_id in raw, p_grantee in varchar2, p_tablespace in varchar2, p_version_number in number); procedure remove_prxygrnt_from_baseline( p_baseline_id in raw, p_grantee in varchar2, p_proxy_user in varchar2, p_version_number in number); procedure remove_cons_grp_from_baseline( p_baseline_id in raw, p_grantee in varchar2, p_cons_grp in varchar2, p_version_number in number); procedure remove_init_prm_from_baseline( p_baseline_id in raw, p_param_name in varchar2, p_version_number in number); procedure remove_depcy_from_baseline( p_baseline_id in raw, p_dep_obj_type in number, p_dep_obj_schema in varchar2, p_dep_obj_name in varchar2, p_ref_obj_type in number, p_ref_obj_schema in varchar2, p_ref_obj_name in varchar2, p_version_number in number); -- Set a baseline version's capture date -- p_baseline_id: Baseline ID -- p_version_number: Version for which to set date -- p_start_date: Job execution id. procedure set_capture_date( p_baseline_id in raw, p_version_number in number, p_execution_id in raw); -- Get objects in a baseline version -- p_baseline_id: Baseline ID -- p_version_number: Version for which to return objects -- p_objects_cursor: Cursor initialized with the objects in -- this baseline version. Columns are: -- obj_type NUMBER -- obj_schema VARCHAR2 -- obj_name VARCHAR2 -- last_ddl DATE -- NOTE: This is not a strongly-typed cursor because the procedure will -- be called from Java code. -- NOTE: THIS MAY BE REMOVED in favor of the schema and non-schema -- versions below. procedure get_baseline_version_objects( p_baseline_id in raw, p_version_number in number, p_objects_cursor in out weak_cur_typ); -- Get nonschema objects in a baseline version -- p_baseline_id: Baseline ID -- p_version_number: Version for which to return schema objects -- p_objects_cursor: Cursor initialized with the objects in -- this baseline version. Columns are: -- obj_type NUMBER -- obj_schema VARCHAR2 -- obj_name VARCHAR2 -- last_ddl DATE -- NOTE: This is not a strongly-typed cursor because the procedure will -- be called from Java code. -- p_scopespec_id (optional): the ID of a scope spec used to restrict -- the objects returned in the query. -- p_mode (optional): SCHEMA_MODE or OBJECT_MODE. Only used in scoped queries. procedure get_baseline_version_nsobj( p_baseline_id in raw, p_version_number in number, p_objects_cursor in out weak_cur_typ, p_scopespec_id in raw default null, p_mode in number default SCHEMA_MODE); -- Get the definition of a single object in a baseline version -- p_baseline_id: Baseline ID -- p_version_number: Version from which to return the object definition -- p_obj_type: Type of the object -- p_obj_schema: Schema containing the object (null if non-schema) -- p_obj_name: Object name -- Returns: BLOB, object's XML definition function get_baseline_obj_definition( p_baseline_id in raw, p_version_number in number, p_obj_type in number, p_obj_schema in varchar2, p_obj_name in varchar2) return blob; procedure get_baseline_version_objgrant( p_baseline_id in raw, p_version_number in number, p_objects_cursor in out weak_cur_typ); procedure get_baseline_version_sysgrant( p_baseline_id in raw, p_version_number in number, p_objects_cursor in out weak_cur_typ); procedure get_baseline_version_rolegrant( p_baseline_id in raw, p_version_number in number, p_objects_cursor in out weak_cur_typ); procedure get_baseline_version_qtagrnt( p_baseline_id in raw, p_version_number in number, p_objects_cursor in out weak_cur_typ); procedure get_baseline_version_prxygrnt( p_baseline_id in raw, p_version_number in number, p_objects_cursor in out weak_cur_typ); procedure get_baseline_version_cons_grps( p_baseline_id in raw, p_version_number in number, p_objects_cursor in out weak_cur_typ); procedure get_baseline_version_init_prms( p_baseline_id in raw, p_version_number in number, p_objects_cursor in out weak_cur_typ); -- Remove a baseline version -- You cannot remove the latest version (why not?) or -- the initial version (TO DO: Error checking) -- p_baseline_id: ID of the baseline -- p_version_number: Version number of the baseline to remove procedure remove_baseline_version( p_baseline_id in raw, p_version_number in number); -- Remove an entire baseline -- p_baseline_id: ID of the baseline to remove procedure remove_baseline( p_baseline_id in raw); -- Create a comparison -- p_name: Comparison name -- p_owner: Comparison owner (EM admin) -- p_scope_spec: ID of the comparison's scope specification -- p_left_source_type: -- 'B' for Baseline or -- 'D' for Database -- p_left_source_id: ID of source -- For Baseline: Must be a valid baseline_guid -- For Database: Must be a valid target_guid from mgmt_targets -- p_left_source_version: Baseline version number -- (ignored for database targets) -- p_right_source_type, p_right_source_id, p_right_source_version: -- Same as for p_left parameters -- p_dependent_type: the description for comparison, optional -- Returns: ID of created comparison function create_comparison( p_name in varchar2, p_owner in varchar2, p_scope_spec in raw, p_left_source_type varchar2, -- 'B' or 'D' p_left_source_id raw, p_left_source_version number default 0, p_right_source_type varchar2, -- 'B' or 'D' p_right_source_id raw, p_right_source_version number default 0, p_description in varchar2 default null) return raw; -- Get a comparison's ID from name and owner function get_comparison_id( p_name in varchar2, p_owner in varchar2) return raw; -- Get a comparison's scope spec function get_comparison_scope_spec( p_comparison_id in raw) return raw; procedure get_comparison_info (p_comparison_id in raw, p_comparison_info in out ComparisonInfoRecTyp); function get_comparison_owner (p_comparison_id in raw) return varchar2; -- Add an entry to schema map, owner can be a comparison or synchronization procedure add_schema_map_entry (p_owner_id in raw, p_left_schema in varchar2, p_right_schema in varchar2); -- Add a new comparison version -- p_comparison_id: Comparison ID -- Return: Version number of the new version -- 1 for initial version -- curr_version+1 for subsequent versions function add_comparison_version( p_comparison_id in raw) return integer; -- Get current comparison version -- p_comparison_id: Comparison ID -- Return: Version number of the current comparison version -- NOTE: Returns null if no comparison version has been created. function get_current_comparison_version( p_comparison_id in raw) return integer; /* -- Get the set of objects in a new comparison version that are present -- in both sources and therefore need to be compared. -- This assumes that the MGMT_CM_TEMP table has been populated with -- information about the objects present in the left and right -- sources. -- p_comparison_id: Comparison ID -- p_objs_for_compare: Cursor, will be initialized with objects present -- in both left and right sources. procedure get_comp_objects_for_compare( p_comparison_id in raw, p_objs_for_compare in out object_action_cur_typ); */ -- Set a baseline version's compare date -- p_comparison_id: Baseline ID -- p_version_number: Version for which to set date -- p_execution_id: Job execution id. procedure set_compare_date( p_comparison_id in raw, p_version_number in number, p_execution_id in raw); -- Add an object record to a comparison version -- TO DO: Force version_number to current version, do not allow user to -- specify version? (However, reduces efficiency of this call.) -- TO DO: A version of this that accepts an array of objects? -- p_comparison_id: Comparison ID -- p_object_type: Type of object being added, -- one of the xxx_MATCH values -- p_object_schema: Schema containing object being added -- null for nonschema objects -- p_object_name: Name of object being added -- p_obj_state: -- LEFT_ONLY: Object is only in left source -- RIGHT_ONLY: Object is only in right source -- BOTH_SAME: Object is in both sources and is identical -- BOTH_DIFFERENT: Object is in both sources and is different -- p_version_number: Version to which object is added -- THIS MUST BE THE CURRENT VERSION -- p_object_diffs: BLOB containing object differences -- Only for state = BOTH_DIFFERENT -- p_prev_version_action: -- REMOVE_PREV_VERSION (default): Remove the previous version -- from this comparison version -- NO_REMOVE_PREVIOUS_VERSION: Do not remove the previous -- version (user is responsible for determining that there is no -- previous version). procedure add_obj_to_comparison( p_comparison_id in raw, p_object_type in number, p_object_schema in varchar2, p_object_name in varchar2, p_obj_state in number, p_left_ddl_time in date, p_left_hash_key in varchar2, p_right_ddl_time in date, p_right_hash_key in varchar2, p_version_number in number, p_object_diffs in blob default null, p_prev_version_action number default REMOVE_PREV_VERSION, p_grants_hash in varchar2 default null, p_comments_hash in varchar2 default null); function add_obj_to_comparison( p_comparison_id in raw, p_object_type in number, p_object_schema in varchar2, p_object_name in varchar2, p_obj_state in number, p_left_ddl_time in date, p_left_hash_key in varchar2, p_right_ddl_time in date, p_right_hash_key in varchar2, p_version_number in number, p_prev_version_action number default REMOVE_PREV_VERSION, p_grants_hash in varchar2 default null, p_comments_hash in varchar2 default null) return blob; -- Remove an object from a comparison version -- (i.e., both objects no longer present in the database) -- Call this to indicate that the object has been dropped in both sources -- the last version of this comparison. -- TO DO: Force to current version, as above. -- p_comparison_id: Comparison ID -- p_object_type: Type of object being removed, -- one of the xxx_MATCH values -- p_object_schema: Schema containing object being removed -- null for nonschema objects -- p_object_name: Name of object being removed procedure remove_obj_from_comparison( p_comparison_id in raw, p_object_type in number, p_object_schema in varchar2, p_object_name in varchar2, p_version_number in number); procedure add_init_prm_to_comp( p_comparison_id in raw, p_param_name in varchar2, p_state in number, p_left_param_value in varchar2, p_right_param_value in varchar2, p_version_number in number); procedure remove_init_prm_from_comp( p_comparison_id in raw, p_param_name in varchar2, p_version_number in number); -- Get objects in a comparison version -- p_comparison_id: Comparison ID -- p_version_number: Version for which to return objects -- p_objects_cursor: Cursor initialized with the objects in -- this comparison version. Columns are: -- obj_type NUMBER -- obj_schema VARCHAR2 -- obj_name VARCHAR2 -- obj_state NUMBER -- last_left_ddl DATE -- last_right_ddl DATE -- left_hash_value VARCHAR2 -- right_hash_value VARCHAR2 -- NOTE: This is not a strongly-typed cursor because the procedure will -- be called from Java code. -- p_mode: -- ALL_OBJECTS: All objects in the baseline -- MTIME_ONLY: Only objects with a valid last-DDL time procedure get_comparison_version_objects( p_comparison_id in raw, p_version_number in number, p_objects_cursor in out weak_cur_typ, p_mode in number default ALL_OBJECTS); -- Get initialization parameters in a comparison version -- p_comparison_id: Comparison ID -- p_version_number: Version for which to return objects -- p_params_cursor: Cursor initialized with the paramaters in -- this comparison version. Columns are: -- param_name -- state -- left_param_value -- right_param_value procedure get_comp_version_init_params( p_comparison_id in raw, p_version_number in number, p_params_cursor in out weak_cur_typ); -- Get the differences for a single object in a comparison version -- p_comparison_id: Comparison ID -- p_version_number: Version from which to return the object differences -- p_obj_type: Type of the object -- p_obj_schema: Schema containing the object (null if non-schema) -- p_obj_name: Object name -- Returns: BLOB, object's XML differences (null if no differences) function get_comparison_obj_differences( p_comparison_id in raw, p_version_number in number, p_obj_type in number, p_obj_schema in varchar2, p_obj_name in varchar2) return blob; -- Remove a comparison version -- You cannot remove the latest version (why not?) or -- the initial version (TO DO: Error checking) -- p_comparison_id: ID of the comparison -- p_version_number: Version number of the comparison to remove procedure remove_comparison_version( p_comparison_id in raw, p_version_number in number); -- Remove an entire comparison -- p_comparison_id: ID of the comparison to remove procedure remove_comparison( p_comparison_id in raw); -- Set a baseline version's job execution id -- p_baseline_id: Baseline ID -- p_version_number: Version for which to set date -- p_exec_id: Job execution ID for this baseline version procedure set_execution_id( p_baseline_id in raw, p_version_number in number, p_execution_id in raw); -- Set a baseline version's job execution id -- p_baseline_id: Baseline ID -- p_version_number: Version for which to set date -- p_exec_id: Job execution ID for this baseline version procedure set_baseline_db_version( p_baseline_id in raw, p_version_number in number, p_db_version in varchar2); -- Set a baseline's job id -- p_baseline_id: Baseline ID -- p_job_id: Job job ID for this baseline procedure set_baseline_job_id( p_baseline_id in raw, p_job_id in raw); -- Set a comparison version's job execution id -- p_comparison_id: comparison ID -- p_version_number: Version for which to set date -- p_exec_id: Job execution ID for this comparison version procedure set_comparison_execution_id( p_comparison_id in raw, p_version_number in number, p_execution_id in raw); -- Set a comparison's job id -- p_comparison_id: Comparison ID -- p_job_id: Job job ID for this baseline procedure set_comparison_job_id( p_comparison_id in raw, p_job_id in raw); ------------------------------------------------- -- Synchronize ------------------------------------------------- function create_synchronization( p_name in varchar2, p_owner in varchar2, p_scope_spec in raw, p_source_type varchar2, -- 'B' or 'D' p_source_id raw, p_source_version number default 0, p_target_id raw, p_description in varchar2 default null) return raw; -- Get a synchronization's ID from name and owner function get_synchronization_id( p_name in varchar2, p_owner in varchar2) return raw; -- Get a synchronization's scope spec function get_synchronization_scope_spec( p_synch_id in raw) return raw; function add_synchronization_version( p_synch_id in raw, p_processing_mode in number) return integer; -- Remove an entire synchronization -- p_synch_id: ID of the synchronization to remove procedure remove_synchronization( p_synch_id in raw); -- Remove a synchronization version -- p_synch_id: ID of the synchronization -- p_version_number: Version number of the synchronization to remove procedure remove_synchronization_version( p_synch_id in raw, p_version_number in number); -- Set a synch version's job execution id procedure set_synch_execution_id( p_synch_id in raw, p_version_number in number, p_execution_id in raw); -- Set a synchronization version's synch date procedure set_synch_date( p_synch_id in raw, p_version_number in number, p_execution_id in raw); -- Set a synchronization version's synch script function set_synch_script( p_synch_id in raw, p_version_number in number) return blob; -- Add a script line function add_synch_script_line( p_synch_id in raw, p_version_number in number, p_object_type in number, p_object_schema in varchar2, p_object_name in varchar2, p_script_line_no in number, p_script_step_no in number, p_script_line_type in varchar2, p_script_section in varchar2, p_line_edited in varchar2) return blob; -- Add an impact report entry procedure add_synch_impact_entry( p_synch_id in raw, p_version_number in number, p_object_type in number, p_object_schema in varchar2, p_object_name in varchar2, p_message_type in varchar2, p_message_severity in number, p_result_cursor OUT weak_cur_typ); -- Add an object to a synch version. function add_obj_to_synch( p_synch_id in raw, p_object_type in number, p_object_schema in varchar2, p_object_name in varchar2, p_comp_state in number, p_source_hash_key in varchar2, p_target_hash_key in varchar2, p_version_number in number, p_grants_hash in varchar2 default null, p_comments_hash in varchar2 default null, p_addnl_info in varchar2 default null, p_excluded in number default 0) return blob; -- Remove an object from a synch version procedure remove_obj_from_synch( p_synch_id in raw, p_object_type in number, p_object_schema in varchar2, p_object_name in varchar2, p_version_number in number); -- Set a synchronization's job id -- p_synch_id: Synch ID -- p_job_id: job ID for this synch procedure set_synch_job_id( p_synch_id in raw, p_job_id in raw); ------------------------------------------------- -- Generate DDL For Baseline Version -- ------------------------------------------------- -- Drop DDL -- Side effect procedure drop_baseline_version_ddl (p_baseline_guid IN RAW ,p_baseline_version IN NUMBER ); -- Prepare a lob for ddl generation function get_ddl_for_generate (p_baseline_guid IN RAW ,p_baseline_version IN NUMBER ) return blob; -- Start Generate DDL -- Side effect: Turn ddl_status code to 'Running' procedure start_generate_ddl (p_baseline_guid IN RAW ,p_baseline_version IN NUMBER ); -- End Generate DDL -- Side effect: Save DDL and Turn ddl_status code to 'Ok' procedure end_generate_ddl (p_baseline_guid IN RAW ,p_baseline_version IN NUMBER ); -- Fail Generate DDL -- Side effect: Turn ddl_status code to 'Problem' procedure fail_generate_ddl (p_baseline_guid IN RAW ,p_baseline_version IN NUMBER ); -- Check if current em user has the right to delete -- an entire baseline or comparison/ version / drop ddl. -- returns 0 if can not remove -- returns 1 if can remove function has_remove_priv(p_guid IN RAW ,p_type IN VARCHAR2) return NUMBER; -- Check if current em user has the right to create -- new version for a baseline / comparison. -- Used for: edit schedule, recapture/repeat comparison. -- returns 0 if can not create new version -- returns 1 if can function has_create_new_version_priv(p_guid IN RAW ,p_type IN VARCHAR2) return NUMBER; -- Check if current em user has the right to generate DDL -- for a baseline version. -- returns 0 if can not generate DDL -- returns 1 if can function has_generate_ddl_priv(p_guid IN RAW ,p_version IN NUMBER) return NUMBER; -- Check if current em user has the right to view METADATA -- for a baseline / comparison version / generated DDL. -- returns 0 if can view metadata -- returns 1 if can function has_view_metadata_priv(p_guid IN RAW ,p_version IN NUMBER ,p_type IN VARCHAR2) return NUMBER; ------------------------------------------------ -- UI: Baselines Rollup Information -- ------------------------------------------------ procedure get_baselines_rollup( p_target_name IN VARCHAR2 DEFAULT NULL , p_target_type IN VARCHAR2 DEFAULT NULL , p_owner IN VARCHAR2 DEFAULT NULL , p_name IN VARCHAR2 DEFAULT NULL , p_exact_match IN NUMBER DEFAULT 0 , p_result_cursor OUT weak_cur_typ ); procedure get_comparisons_rollup( p_source_name IN VARCHAR2 DEFAULT NULL , p_source_type IN VARCHAR2 DEFAULT NULL , p_owner IN VARCHAR2 DEFAULT NULL , p_name IN VARCHAR2 DEFAULT NULL , p_exact_match IN NUMBER DEFAULT 0 , p_result_cursor OUT weak_cur_typ ); procedure get_synchronizations_rollup( p_source_name IN VARCHAR2 DEFAULT NULL , p_source_type IN VARCHAR2 DEFAULT NULL , p_owner IN VARCHAR2 DEFAULT NULL , p_name IN VARCHAR2 DEFAULT NULL , p_exact_match IN NUMBER DEFAULT 0 , p_result_cursor OUT weak_cur_typ ); ------------- -- Annotation ------------- procedure add_one_comp_obj_annotation( p_comparison_id in raw, p_object_type in number, p_object_schema in varchar2, p_object_name in varchar2, p_version_number in number, p_user_name in varchar2, p_message in varchar2, p_annotation_type in varchar2 default null); procedure add_bulk_comp_obj_annotation( p_cm_objs in CM_OBJ_LIST, p_user_name in varchar2, p_message in varchar2, p_annotation_type in varchar2 default null); procedure set_one_comp_obj_ignored( p_comparison_id in raw, p_object_type in number, p_object_schema in varchar2, p_object_name in varchar2, p_version_number in number, p_ignored in number); procedure set_bulk_comp_obj_ignored( p_cm_objs in CM_OBJ_LIST, p_ignored in number); procedure set_one_comp_obj_ignored( p_comparison_id in raw, p_object_type in number, p_object_schema in varchar2, p_object_name in varchar2, p_version_number in number, p_ignored in number, p_user_name in varchar2, p_message in varchar2, p_annotation_type in varchar2 default null); procedure set_bulk_comp_obj_ignored( p_cm_objs in CM_OBJ_LIST, p_ignored in number, p_user_name in varchar2, p_message in varchar2, p_annotation_type in varchar2 default null); procedure set_bulk_synch_obj_excluded( p_cm_objs in CM_OBJ_LIST, p_excluded in number); procedure get_object_history( p_baseline_id in raw, p_obj_type in number, p_obj_schema in varchar2, p_obj_name in varchar2, p_history_cursor in out weak_cur_typ); ------------- END SPEC ---------------------------------- end; / show errors;