rem rem $Header: rdbms/admin/dbmspexp.sql /main/26 2010/01/18 02:41:06 mjangir Exp $ rem Rem Copyright (c) 1992, 2010, Oracle and/or its affiliates. Rem All rights reserved. Rem NAME Rem dbmspexp.sql - Package spec. for procedural extensions to export Rem NOTE - Package body is in: .../exp/prvtpexp.sql Rem DESCRIPTION Rem This file defines a pl/sql package containing Rem functions that are called by export to dynamically link in Rem pl/sql logic in the export process. Rem The package body is to be released only in PL/SQL binary form. Rem PUBLIC FUNCTION(S) Rem pre_table - Get actions to be executed before tgt table is imported. Rem post_table - Get actions to be executed after tgt table is imported. Rem get_domain_index_metadata - Intermediary procedure between export and Rem the ODCIIndexGetMetadata method on a domain index's Rem implementation type Rem begin_import_domain_index - begin to import to domain index' secobj Rem insert_secobj - insert an entry (index, secobj) into secobj$ Rem get_domain_index_tables - Intermediary procedure between export and Rem the ODCIIndexUtilGetTableNames method on a domain index Rem (returns the names of secondary objects to be exported) Rem get_v2_domain_index_tables - Intermediary procedure between export and Rem the ODCIIndexUtilGetTableNames method on a post V2 Rem domain index implementation. Returns TRUE if the domain indexes Rem secondary objects should be exported. Rem check_match_template - Return's 1 if a table partition subpartitions Rem were created using the table template partition Rem get_object_comment - Returns string used to generate operator or Rem indextype comment statement. Rem nulltochr0 - Replace \0 with CHR(0) in varchar Rem func_index_default Rem - get default$ from col$ for a func index, convert it to Rem varchar2 from long and call function nulltochr0 Rem RETURNS Rem Rem NOTES Rem Rem MODIFIED (MM/DD/YY) Rem mjangir 01/06/10 - Bug 9247416: add procedure to set hakan event Rem tbhukya 09/29/08 - Use NUMBER datatype in func_index_default Rem mjangir 05/07/08 - bug 7007411: remove procedure set_traceon rom Rem package body. Rem tbhukya 04/16/08 - Bug 6904527: remove procedure Rem set_imp_flush_shared_pool from package. Rem kamble 03/13/07 - bug 5664206 Rem kamble 09/24/04 - bug 3591564: func_index_default and nulltochr0 Rem jgalanes 08/10/04 - lrg 1725399 CONNECT role changes Rem tchorma 04/08/04 - 3503807:func to generate comment for oper,idxtyp Rem bmccarth 02/13/04 - Add function to verify subpart. created using Rem table subpartition template Rem bmccarth 12/14/00 - pass gmflags to get_v2_domain_index_tables Rem bmccarth 11/06/00 - domain index v2 secondary object check Rem bmccarth 07/14/00 - domain index V2 work Rem yhu 06/08/00 - add two procedures for transpotable tablespace i Rem cyyip 07/07/99 - replace '&' with 'and' Rem nvishnub 03/26/99 - E/I support for fast rebuild of domain indexes. Rem ncramesh 08/07/98 - change for sqlplus Rem gclaborn 07/02/98 - Add version string to getmetadata prototype Rem nagarwal 06/08/98 - add extidx_imp_lib Rem nagarwal 06/04/98 - add routines for operators Rem gclaborn 05/04/98 - Adjust for changes to ODCI interface Rem gclaborn 04/13/98 - Change sense of multiblock param Rem gclaborn 04/07/98 - Add Domain Index routines Rem ixhu 04/11/96 - AQ support: table object only Rem dsdaniel 04/07/94 - merge changes from branch 1.1.710.1 Rem adowning 03/29/94 - merge changes from branch 1.1.710.2 Rem adowning 02/02/94 - split file into public / private binary files Rem dsdaniel 01/31/94 - Branch_for_patch Rem dsdaniel 01/31/94 - Branch_for_patch Rem dsdaniel 12/29/93 - Creation CREATE OR REPLACE PACKAGE DBMS_EXPORT_EXTENSION AS ------------------------------------------------------------ -- Overview -- -- This package implements PL/SQL extensions to Export. -- ... --------------------------------------------------------------------- -- SECURITY -- This package is owned by SYS, and is granted to PUBLIC. -- The procedures dynamically called by the package are called using -- The parse_as_user option ------------------------------------------------------------------------------ -- EXCEPTIONS -- unExecutedActions EXCEPTION; -- A function was not called with the same parameters until it returned NULL. -- This indicates an internal error in EXPORT. -- CONSTANTS -- -- Function codes for the expact$ table. -- func_pre_table CONSTANT NUMBER := 1; /* execute before loading table */ func_post_tables CONSTANT NUMBER := 2; /* execute after loading all tables */ func_pre_row CONSTANT NUMBER := 3; /* execute before loading row */ func_post_row CONSTANT NUMBER := 4; /* execute after loading row */ func_row CONSTANT NUMBER := 5; /* execute in lieu of loading row */ ------------------------------------------------------------------------------ -- PROCEDURES AND FUNCTIONS FUNCTION pre_table(obj_schema IN VARCHAR2, obj_name IN VARCHAR2) RETURN VARCHAR2; -- execute pre_table functions from the expact$ table, for a specific object -- Input Parameters: -- obj_schema -- The schema of the object being exported. -- obj_name -- The name for the object being exported. -- Result: -- A string containg a procedure invocation to be put in the export stream. -- If non-null, this procedure should be called again (immediately) for the -- same object. If NULL, there are no additional pre_table calls to -- be exported to the stream for this object and function. -- Exceptions: -- unExecutedActions -- Any error encountered during executing of the action FUNCTION post_tables(obj_schema IN VARCHAR2, obj_name IN VARCHAR2) RETURN VARCHAR2; -- execute post_tables functions from the expact$ table, for a specific object -- Input Parameters: -- obj_schema -- The schema of the object being exported. -- obj_name -- The name for the object being exported. -- Result: -- A string containing a procedure invocation to be put in the export stream. -- If non-null, this procedure should be called again (immediately) for the -- same object. -- If NULL, there are no additional post_tables calls to be exported to the -- stream for this object. -- Exceptions: -- unExecutedActions -- Any error encountered during executing of the action ---------------------------------------------------------------------------- -- ROW FUNCTIONS WILL BE ADDED IN THE FUTURE ---------------------------------------------------------------------------- FUNCTION get_domain_index_metadata ( index_name IN VARCHAR2, index_schema IN VARCHAR2, type_name IN VARCHAR2, type_schema IN VARCHAR2, version IN VARCHAR2, newblock OUT PLS_INTEGER, gmflags IN NUMBER DEFAULT -1 ) -- Post-v1 DI only RETURN VARCHAR2; -- Acts as intermediary between export and the ODCIIndexGetMetadata method on -- a domain index's implementation type. This allows the index to return -- PL/SQL-based "metadata" such as policy info. Strings are returned -- representing pieces of PL/SQL blocks to execute at import time. Multiple -- PL/SQL blocks can be built -- -- PARAMETERS: -- index_name, index_schema - Identifies current index -- type_name, type_schema - Identifies index's implementation type -- exp_version - Export's version; e.g, '08.01.03.00.00' -- newblock - Allows callee to write multiple blocks of PL/SQL code. -- non-zero: Return string starts a new block, -- zero: Return string continues current block. -- gmflags - Only for post-V1 getindexmetadata call. The default -- value is -1 due to a bug in the use of NULL for NUMBER -- datatypes. -- See catodci.sql for description of the flags -- RETURNS: -- A piece of a PL/SQL block to be executed at import time. The BEGIN/END; -- surrounding each block should not be returned as export will add these. -- This routine will be repeatedly called until an empty string is returned. -- FUNCTION get_object_source ( objid IN NUMBER, objtype IN NUMBER) RETURN VARCHAR2; -- This function is used to get the source string for CREATE OPERATOR and -- CREATE INDEXTYPE. The function is passed the object number and the -- object type and the string returned is the SQL statement needed to -- create the operator or the index type. -- PARAMTERS: -- objid - object number of the operator or indextype -- objtype - object type (32 for indextype, 33 for operators) -- RETURNS: -- The SQL string that can be used to create the operator or the indextype -- specified by the object id -- get_domain_index_tables -- for post V1 domain index implementations, see the _v2_ version below -------------------------- FUNCTION get_domain_index_tables ( index_name IN VARCHAR2, index_schema IN VARCHAR2, type_name IN VARCHAR2, type_schema IN VARCHAR2, read_only IN PLS_INTEGER, version IN VARCHAR2, get_tables IN PLS_INTEGER) RETURN VARCHAR2; -- Acts as intermediary between export and the ODCIIndexUtilGetTableNames -- method on a domain index's implementation type. This allows the index to -- return list of secondary tablenames (seperated by comma) which are to be -- exported and imported to speed up rebuild of domain indexes during import. -- PARAMETERS: -- index_name, index_schema - Identifies current index -- type_name, type_schema - Identifies index's implementation type -- version - Export's version; e.g, '08.01.03.00.00' -- read_only - Is this a read-only transaction ? True for Export if -- CONSISTENT=y. Note: some types may not be able to exploit -- fast rebuild in a read-only environment. -- 1 => read_only. -- get_tables - Export will first call this function with get_tables=1. -- In this case, the function will instantiate both an instance of the -- implementation type as defined by type_name and type_schema, and an -- object of type ODCIIndexInfo using parameters index_name and index_schema. -- It will then call ODCIIndexUtilGetTableNames method on the implementation -- type using the ODCIIndexInfo object just constructed. The routine will -- also maintain in a PL/SQL variable of session scope the context returned -- from ODCIIndexUtilGetTableNames to be handed back upon its second call. -- -- After export writes all the tables returned on the first call to its -- dump file, it will call get_domain_index_tables again with parameter -- get_tables=0. In this case, this function will then call the -- ODCIIndexCleanup method on the ODCIIndexInfo object constructed in the -- first call handing in the internally stored context. When this returns, -- it will clean up its state and return a NULL string to export. -- get_v2_domain_index_tables -- v1 domain index implementations use the above routine. -------------------------- FUNCTION get_v2_domain_index_tables ( index_name IN VARCHAR2, index_schema IN VARCHAR2, type_name IN VARCHAR2, type_schema IN VARCHAR2, read_only IN PLS_INTEGER, version IN VARCHAR2, get_tables IN PLS_INTEGER, gmflags IN NUMBER) RETURN INTEGER; -- Acts as intermediary between export and the ODCIIndexUtilGetTableNames -- method on a domain index's implementation type. -- Unlike the initial (v1) impelementation, the _v2_ 0/1 -- value which export will use to determine if all the secondary objects -- associated with a domain index should be exported (1) or not (0) -- -- PARAMETERS: -- index_name, index_schema - Identifies current index -- type_name, type_schema - Identifies index's implementation type -- version - Export's version; e.g, '08.01.03.00.00' -- read_only - Is this a read-only transaction ? True for Export if -- CONSISTENT=y. Note: some types may not be able to exploit -- fast rebuild in a read-only environment. -- 1 => read_only. -- get_tables - Ignored. -- gmflags - Flags for domain index. May have TransTblspc set if -- in transportable mode. -- begin_import_domain_index -------------------------- PROCEDURE begin_import_domain_index ( idxschema IN VARCHAR2, idxname IN VARCHAR2); -- truncates the table odci_secobj$, and set up index schema and name -- PARAMETERS: -- idxschema, idxname - Identifies current index -- insert_secobj -------------------------- PROCEDURE insert_secobj ( secobjschema IN VARCHAR2, secobjname IN VARCHAR2); -- insert an entry into the table odci_secobj$, -- PARAMETERS: -- secobjschema, secobjname - Identifies current secondary table -- -- Checks to see if a partition has made use of a template partition clause -- FUNCTION check_match_template ( pobjno IN INTEGER ) RETURN INTEGER; -- get_object_comment --------------------------- FUNCTION get_object_comment ( objid IN NUMBER, objtype IN NUMBER) RETURN VARCHAR2; -- This function is used to get the source string for COMMENT OPERATOR and -- COMMENT INDEXTYPE. The function is passed the object number, and the type -- of object (indextype or operator). The string returned is the SQL -- statement needed to comment the operator or the indextype. If there is no -- comment registered for this operator or indextype, the return string is -- empty. -- PARAMETERS: -- objid - object number of the operator or indextype -- objtype - object type (32 for indextype, 33 for operators) -- RETURNS: -- The SQL string that can be used to comment the operator or the indextype -- specified by the object id. If there is no comment registered, the string -- is empty. PROCEDURE set_imp_events; PROCEDURE set_hakan_event; PROCEDURE set_secondaryobj_event; PROCEDURE reset_secondaryobj_event; PROCEDURE set_iot_event; PROCEDURE set_exp_opq_typ_event; PROCEDURE reset_exp_opq_typ_event; PROCEDURE set_no_outlines; PROCEDURE set_nls_numeric_char; PROCEDURE reset_nls_numeric_char; PROCEDURE set_exp_timezone; PROCEDURE set_exp_sortsize; PROCEDURE set_statson; PROCEDURE set_resum; PROCEDURE set_resumnam ( name IN VARCHAR2); PROCEDURE set_resumtim ( time IN INTEGER); PROCEDURE set_resumnamtim ( name IN VARCHAR2, time IN INTEGER); PROCEDURE set_imp_timezone( timezone IN VARCHAR2); PROCEDURE set_imp_skip_indexes_on; PROCEDURE set_imp_skip_indexes_off; -- NULLTOCHR0 - Replace \0 with CHR(0) in varchar -- PARAMETERS: -- value - varchar value -- RETURNS: varchar value with substitutions made FUNCTION nulltochr0(value IN VARCHAR2) RETURN VARCHAR2 ; -- FUNC_INDEX_DEFAULT - get default$ from col$ for a func index -- and convert it to varchar2 from long -- PARAMETERS: -- tabobj - binary_integer value -- colname - varchar2 value -- RETURNS: clob value converted from long -- ERROR: if value > 32000 bytes, then pl/sql will raise error ORA-6502 -- The error should be fine as the default$ contains the expression for -- a functional index which is unlikely to exceed 32000 bytes FUNCTION func_index_default (tabobj IN NUMBER, colname IN VARCHAR2) RETURN CLOB; END DBMS_EXPORT_EXTENSION; / GRANT execute ON sys.dbms_export_extension to public; create or replace library extidx_imp_lib trusted as static; /