Pular para o conteúdo
Viewing 3 posts - 1 through 3 (of 3 total)
  • Author
    Posts
  • #108969
    Avatar de Andre LuizAndre Luiz
    Participant

      Boa tarde!

      Estou precisando localizar em qual tablespaces ficam armazenados as procederes, funções e pkgs do schema do usuário?
      observando que quando a procedure é criada não é especificado em qual local o script deverá ser armazenado, isso é feito automático pelo banco.
      Estou fazendo um exp sem a tablespace de log, onde só consta as tabelas de log dos usuários, mas ao importar o bkp as procederes, funções e pkgs do schema não estão sendo importadas.

      Fiz uma verificação em todas as tablespaces do schema e encontrei apenas as triggers e índices do schema.

      Como o banco XE não suporte a cláusula “Exclude” para excluir algumas tabelas tenho que exportar sem a tablespace

      #108971
      Avatar photoJosé Laurindo Chiappa
      Moderator

        Colega, o conceito que te falta é que os objetos compostos por CÓDIGO PL/SQL (como Procedures, packages, etc) fica NECESSARIAMENTE ARMAZENADO na tablespace SYSTEM : p manual de CONCEITOS BÁSICOS (online em http://docs.oracle.com/cd/B28359_01/server.111/b28318/physical.htm#CNCPT003 no caso de versão 11g) o diz textualmente :

        “All data stored on behalf of stored PL/SQL program units (procedures, functions, packages and triggers) resides in the SYSTEM tablespace.”

        Agora : isso posto, Não Faz Sentido o que vc diz, que “Como o banco XE não suporte a cláusula “Exclude….” : essa cláusula EXCLUDE é do EXPDP, ie, do DATAPUMP, e não tem NADA A VER com a Edição do database, e XE ACEITA SIM exportação via datapump… Exemplo (de um export full excluindo apenas uma determinada tablespace :

        ==> como o datapump/expdp trabalha com ** DIRECTORIES **, e não com PATH físico, vejamos quais Directories eu tenho :

        SYSTEM:@XE:SQL>select * from all_directories;

        OWNER DIRECTORY_NAME DIRECTORY_PATH


        SYS TEMP_DIR C:EXPAND
        SYS SUBDIR C:/Expand/db-sample-schemas-12.2.0.1/order_entry//
        2002/Sep

        SYS SS_OE_XMLDIR C:/Expand/db-sample-schemas-12.2.0.1/order_entry/
        SYS LOG_FILE_DIR C:Expanddb-sample-schemas-12.2.0.1log_xe
        SYS DATA_FILE_DIR C:/Expand/db-sample-schemas-12.2.0.1/sales_history
        /

        SYS MEDIA_DIR C:/Expand/db-sample-schemas-12.2.0.1/product_media
        /

        SYS TMP C:Usersjlchi_000
        SYS ORACLECLRDIR C:oraclexeapporacleproduct11.2.0serverbinc
        lr

        SYS DATA_PUMP_DIR C:oraclexeapporacle/admin/xe/dpdump/
        SYS XMLDIR C:oraclexeapporacleproduct11.2.0serverrdbms
        xml

        SYS ORACLE_OCM_CONFIG_DIR C:ADEaime_xe28oracle/ccr/state

        11 linhas selecionadas.

        ==> vamos ver quais tablespaces eu tenho, pra eu tentar excluir algumas via parâmetro EXCLUDE, que nem vc quer :

        SYSTEM:@XE:SQL>select tablespace_name from dba_tablespaces;

        TABLESPACE_NAME

        SYSTEM
        SYSAUX
        UNDOTBS1
        TEMP
        USERS
        TEST_DATA

        6 linhas selecionadas.

        ==> vamos consultar alguns dos stored PL/SQLs, pra confirmar que eles serão sim gerados no dump file :

        SYSTEM:@XE:SQL>select DISTINCT owner, type, NAME from DBA_SOURCE where owner = ‘HR’ order by 1,2,3
        2 ;

        OWNER TYPE NAME


        HR PACKAGE CUST_SAL
        HR PACKAGE BODY CUST_SAL
        HR PROCEDURE ADD_JOB_HISTORY
        HR PROCEDURE P1
        HR PROCEDURE RUNSELECT
        HR PROCEDURE SECURE_DML
        HR TRIGGER SECURE_EMPLOYEES
        HR TRIGGER TRIG_TESTE_SEQUENCE
        HR TRIGGER UPDATE_JOB_HISTORY

        9 linhas selecionadas.

        SYSTEM:@XE:SQL>

        SYSTEM:@XE:SQL>exit

        ==> ok, vou usar o directory DATA_PUMP_DIR pro meu exemplo… Não é obrigatório mas vou navegar pra ele e disparar o expdp/datapump dentro da pasta real para onde o DIRECTORY aponta, pra que depois eu possa ver e mostrar os arqs gerados mais facilmente :

        C:Usersjlchi_000>cd C:oraclexeapporacle/admin/xe/dpdump/

        ==> disparo o dump via DATAPUMP/EXPDP que é quem suporta a opção de exclude :

        C:oraclexeapporacleadminXEdpdump>expdp system/oracle directory=DATA_PUMP_DIR dumpfile=expdp_full_exclud_tabls.dmp logfile=expdp_full_exclud_tabls.exp full=y exclude=tablespac
        es:USERS

        Export: Release 11.2.0.2.0 – Production on Seg Set 4 16:59:09 2017

        Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

        Conectado a: Oracle Database 11g Express Edition Release 11.2.0.2.0 – 64bit Production
        ORA-39001: valor de argumento inválido
        ORA-39038: O caminho de objeto “TABLESPACES” não é suportado para jobs de FULL.

        C:oraclexeapporacleadminXEdpdump>

        ==>> OPA : viu a msg que deu ??? Tá BEM CLARO, o problema *** NÃO É *** com o XE ou não XE, é que para export FULL , que é o que vc quer, não dá pra excluir Tablespaces… Isso é COMPLETAMENTE DOCUMENTADO, veja o Manual em http://docs.oracle.com/cd/E11882_01/server.112/e22490/dp_export.htm#SUTIL847 que claramente diz :


        EXCLUDE

        Default: There is no default

        Purpose

        Enables you to filter the metadata that is exported by specifying objects and object types to be excluded from the export operation.

        Syntax and Description

        EXCLUDE=object_type[:name_clause] [, …]

        The object_type specifies the type of object to be excluded. To see a list of valid values for object_type, query the following views: DATABASE_EXPORT_OBJECTS for full mode…”

        ==> SE vc fizer a consulta na view DATABASE_EXPORT_OBJECTS, vc VAI VEr que realmente filtragem por TABLESPACE não tá disponível na versão 11g…

        O que fazer : Já que vc quer excluir as tabelas de LOG que estão na tablespace de log, FAÇA ISSO !! No caso, sempre que eu quero informar cláusulas mais complexas pro client do datapump (ou do exp tradicional, que fosse) eu PREFIRO usar um PARFILE, pra evitar erros por causa de caracteres especiais :

        C:oraclexeapporacleadminXEdpdump>type param_exclude.par
        exclude=TABLE:” in (select table_name from DBA_TABLES where tablespace_name=’USERS’)”

        C:oraclexeapporacleadminXEdpdump>

        ==> Sacou a lógica ?? Estou excluindo ** TODAS ** as tabelas que residem na tablespace USERS… A execução :

        C:oraclexeapporacleadminXEdpdump>expdp system/oracle directory=DATA_PUMP_DIR dumpfile=expdp_full_exclud_tabls.dmp logfile=expdp_full_exclud_tabls.exp full=y parfile=param_exc
        lude.par

        Export: Release 11.2.0.2.0

        Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

        Conectado a: Oracle Database 11g Express Edition Release 11.2.0.2.0 – 64bit Production
        Iniciando “SYSTEM”.”SYS_EXPORT_FULL_01″: system/******** directory=DATA_PUMP_DIR dumpfile=expdp_full_exclud_tabls.dmp logfile=expdp_full_exclud_tabls.exp full=y parfile=param_excl
        ude.par
        Estimativa em andamento com o método BLOCKS…
        Processando o tipo de objeto DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA
        Estimativa em andamento com o método BLOCKS…
        Processando o tipo de objeto DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA
        Estimativa total usando o método de BLOCKS: 164.2 MB
        Processando o tipo de objeto DATABASE_EXPORT/TABLESPACE
        Processando o tipo de objeto DATABASE_EXPORT/PROFILE
        Processando o tipo de objeto DATABASE_EXPORT/SYS_USER/USER
        Processando o tipo de objeto DATABASE_EXPORT/SCHEMA/USER
        …..
        . . exportou “APEX_040000″.”WWV_FLOW_ROW_TEMPLATES” 482.7 KB 500 linhas
        . . exportou “APEX_040000″.”WWV_FLOW_PROCESSING” 585.6 KB 284 linhas
        ORA-39181: Apenas parte dos dados de tabela pode ser exportada devido ao controle de acesso detalhado em “OE”.”PURCHASEORDER”
        . . exportou “OE”.”PURCHASEORDER” 243.9 KB 132 linhas
        . . exportou “APEX_040000″.”WWV_FLOW_PAGE_DA_ACTIONS” 408.9 KB 2844 linhas
        . . exportou “APEX_040000″.”WWV_FLOW_CUSTOM_AUTH_SETUPS” 44.28 KB 76 linhas
        . . exportou “TEST_USER”.”TEST_TAB” 287.3 KB 10000 linhas
        . . exportou “APEX_040000″.”WWV_FLOW_BUTTON_TEMPLATES” 170.4 KB 428 linhas
        ….
        . . exportou “SYSTEM”.”REPCAT$_TEMPLATE_TARGETS” 0 KB 0 linhas
        . . exportou “SYSTEM”.”REPCAT$_USER_AUTHORIZATIONS” 0 KB 0 linhas
        . . exportou “SYSTEM”.”REPCAT$_USER_PARM_VALUES” 0 KB 0 linhas
        . . exportou “SYSTEM”.”SQLPLUS_PRODUCT_PROFILE” 0 KB 0 linhas
        Tabela-mestre “SYSTEM”.”SYS_EXPORT_FULL_01″ carregada/descarregada com sucesso


        Conjunto de arquivos de dump para SYSTEM.SYS_EXPORT_FULL_01 é:
        C:ORACLEXEAPPORACLEADMINXEDPDUMPEXPDP_FULL_EXCLUD_TABLS.DMP
        O job “SYSTEM”.”SYS_EXPORT_FULL_01″ foi concluído com 1 erro(s) em 17:23:34

        C:oraclexeapporacleadminXEdpdump>

        ==> Blz ? Agora vou importar só alguns tipos de objetos (e com a opção de gerar arquivo com o conteúdo, pra eu poder mostrar ele) :

        C:oraclexeapporacleadminXEdpdump>impdp system/oracle directory=DATA_PUMP_DIR dumpfile=expdp_full_exclud_tabls.dmp logfile=expdp_full_exclud_tabls.imp include=PACKAGE,FUNCTION
        ,PROCEDURE show=y

        Import: Release 11.2.0.2.0

        Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

        Conectado a: Oracle Database 11g Express Edition Release 11.2.0.2.0 – 64bit Production
        Modo Legado Ativo devido aos seguintes parâmetros:
        Parâmetro do Modo Legado: “show=TRUE” Localização: Command Line, Substituído com: “sqlfile=expdp_full_exclud_tabls.sql”
        Tabela-mestre “SYSTEM”.”SYS_SQL_FILE_FULL_01″ carregada/descarregada com sucesso
        Iniciando “SYSTEM”.”SYS_SQL_FILE_FULL_01″: system/******** directory=DATA_PUMP_DIR dumpfile=expdp_full_exclud_tabls.dmp logfile=expdp_full_exclud_tabls.imp include=PACKAGE,FUNCTIO
        N,PROCEDURE sqlfile=expdp_full_exclud_tabls.sql
        Processando o tipo de objeto DATABASE_EXPORT/SCHEMA/PACKAGE/PACKAGE_SPEC
        Processando o tipo de objeto DATABASE_EXPORT/SCHEMA/PACKAGE/GRANT/OWNER_GRANT/OBJECT_GRANT
        Processando o tipo de objeto DATABASE_EXPORT/SCHEMA/FUNCTION/FUNCTION
        Processando o tipo de objeto DATABASE_EXPORT/SCHEMA/FUNCTION/GRANT/OWNER_GRANT/OBJECT_GRANT
        Processando o tipo de objeto DATABASE_EXPORT/SCHEMA/PROCEDURE/PROCEDURE
        Processando o tipo de objeto DATABASE_EXPORT/SCHEMA/PROCEDURE/GRANT/OWNER_GRANT/OBJECT_GRANT
        Processando o tipo de objeto DATABASE_EXPORT/SCHEMA/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC
        Processando o tipo de objeto DATABASE_EXPORT/SCHEMA/FUNCTION/ALTER_FUNCTION
        Processando o tipo de objeto DATABASE_EXPORT/SCHEMA/PROCEDURE/ALTER_PROCEDURE
        Processando o tipo de objeto DATABASE_EXPORT/SCHEMA/PACKAGE_BODIES/PACKAGE/PACKAGE_BODY
        O job “SYSTEM”.”SYS_SQL_FILE_FULL_01″ foi concluído com sucesso

        ==> resultado :

        C:oraclexeapporacleadminXEdpdump>type expdp_full_exclud_tabls.sql

        — CONNECT SYSTEM
        ALTER SESSION SET EVENTS ‘10150 TRACE NAME CONTEXT FOREVER, LEVEL 1’;
        ALTER SESSION SET EVENTS ‘10904 TRACE NAME CONTEXT FOREVER, LEVEL 1’;
        …..
        — new object type path: DATABASE_EXPORT/SCHEMA/PACKAGE/PACKAGE_SPEC
        CREATE PACKAGE dbms_repcat_auth wrapped
        a000000
        1
        abcd
        abcd
        abcd
        abcd
        abcd

        — CONNECT HR
        CREATE PACKAGE “CUST_SAL” AS
        x number;
        y date;
        PROCEDURE find_sal(c_id employees.EMPLOYEE_ID%type);
        END cust_sal;
        /
        — CONNECT APEX_040000
        CREATE package apexws
        is
        …..

        ====>> c.q.d. : as procedures/functions/packages NÃO SÃO eliminadas num export FULL seja qual for a tablespace de usuário que vc eliminar, E já que o datapump 11g (seja em qual EDITION for!!) não permite excluir tablespaces diretamente, vc exclui TABELAS ou ÌNDICES que residam na tabblespace que vc quer…

        []s

        Chiappa

        #108974
        Avatar de Andre LuizAndre Luiz
        Participant

          Chiappa

          Mais uma vez, obrigado pelas dicas/aula.
          Como iniciante, ainda tenho muito o que aprender.

          Valeu!!!

        Viewing 3 posts - 1 through 3 (of 3 total)
        • You must be logged in to reply to this topic.
        plugins premium WordPress