Oracle11g 用于检索元数据的Oracle SQL查询

Oracle11g 用于检索元数据的Oracle SQL查询,oracle11g,Oracle11g,我需要一个sql查询,它将从一个模式中检索所有元数据信息。我们将无法在此创建数据库链接。因此,需要将两个模式的元数据转储到两个不同的表中,然后比较我以前为其他人做过的模式。如果你喜欢,可以随意使用 CREATE PROCEDURE copy_prc AS BEGIN NULL; END; CREATE FUNCTION copy_fun RETURN BOOLEAN AS BEGIN RETURN TRUE; END; CREATE PACKAGE copy_pkg AS

我需要一个sql查询,它将从一个模式中检索所有元数据信息。我们将无法在此创建数据库链接。因此,需要将两个模式的元数据转储到两个不同的表中,然后比较我以前为其他人做过的模式。如果你喜欢,可以随意使用

CREATE PROCEDURE copy_prc
AS
BEGIN
    NULL;
END;


CREATE FUNCTION copy_fun RETURN BOOLEAN
AS
BEGIN
    RETURN TRUE;
END;


CREATE PACKAGE copy_pkg AS
    PROCEDURE pkg_prc;
END copy_pkg;


CREATE PACKAGE BODY copy_pkg AS
    PROCEDURE pkg_prc
    AS
    BEGIN
        NULL;
    END;
END copy_pkg;


CREATE TABLE source_codes
(
    s_database     VARCHAR2(30)
,   s_package_name VARCHAR2(30)
,   s_source_code  CLOB
);


DECLARE
    CURSOR objects_cur IS
        SELECT  object_name, DBMS_METADATA.GET_DDL(object_type, object_name) r_source_code
        FROM    dba_objects
        WHERE   owner       =  USER
        AND     object_type IN ('PROCEDURE', 'FUNCTION', 'PACKAGE')
        AND     object_name IN ('COPY_PRC', 'COPY_FUN', 'COPY_PKG');

    TYPE objects_ntt IS TABLE OF objects_cur%ROWTYPE;

    l_objects  objects_ntt;
    l_database_name  VARCHAR2(100);
BEGIN
    OPEN  objects_cur;
    FETCH objects_cur BULK COLLECT INTO l_objects;
    CLOSE objects_cur;

    l_database_name := sys_context('USERENV', 'DB_NAME');

    FORALL indx IN 1..l_objects.COUNT
        INSERT INTO source_codes
        (
            s_database
        ,   s_package_name
        ,   s_source_code
        )
        VALUES
        (
            l_database_name
        ,   l_objects(indx).object_name
        ,   l_objects(indx).r_source_code
        );

    COMMIT;
END;

SELECT  s_database, s_package_name, DBMS_LOB.SUBSTR(s_source_code, 40)
FROM    source_codes;
/*
my_db_name COPY_FUN "  CREATE OR REPLACE FUNCTION "SCHEMA_NAME".""
my_db_name COPY_PKG "  CREATE OR REPLACE PACKAGE "SCHEMA_NAME"."C"
my_db_name COPY_PRC "  CREATE OR REPLACE PROCEDURE "SCHEMA_NAME"."
*/

a) 你需要什么深度?b) 你需要什么东西?c) 你试过什么?用户对象用户角色用户系统用户选项卡用户索引用户索引列用户约束用户序列用户同义词用户触发用户作业用户数据库链接用于(a)和(b)。现在,再一次-您尝试了什么?我使用Informatica连接到不同的数据库模式,启动一个查询并检索元数据信息,转储到两个不同的表中。一个表将包含关于第一个db模式的所有meadata信息,另一个表将包含关于第二个db模式的所有元数据信息。它与模式无关:“dba_对象”。在您的情况下,最好使用“所有对象”。PowerCenter可以从文件运行PL/SQL。