- This topic has 2 replies, 2 voices, and was last updated 7 years, 2 months ago by Andre Luiz.
-
AuthorPosts
-
4 de setembro de 2017 at 10:01 pm #108969Andre LuizParticipant
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
5 de setembro de 2017 at 12:58 am #108971José Laurindo ChiappaModeratorColega, 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/SepSYS 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
lrSYS DATA_PUMP_DIR C:oraclexeapporacle/admin/xe/dpdump/
SYS XMLDIR C:oraclexeapporacleproduct11.2.0serverrdbms
xmlSYS 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_DATA6 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_HISTORY9 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:USERSExport: 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 :
”
EXCLUDEDefault: 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.parExport: 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:34C: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=yImport: 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
5 de setembro de 2017 at 3:38 am #108974Andre LuizParticipantChiappa
Mais uma vez, obrigado pelas dicas/aula.
Como iniciante, ainda tenho muito o que aprender.Valeu!!!
-
AuthorPosts
- You must be logged in to reply to this topic.