RE: [oracle_br] Re: Como ignorar Materialized View no exp (antigo)
Olá Chiappa, Usar o data pump realmente não é uma opção, pois o ambiente de produção é do nosso cliente, e como não administramos o ambiente, as politicas de segurança deles não permitem nenhum tipo de acesso ao servidor de banco de dados, nem criar data base link. Vou estudar as outras opções que você indicou. Obrigado, Everson De: oracle_br@yahoogrupos.com.br em nome de jlchia...@yahoo.com.br [oracle_br] Enviado: sexta-feira, 28 de setembro de 2018 13:07 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Re: Como ignorar Materialized View no exp (antigo) Blz ? Bom, primeira coisa : imagino que o dump file é gerado/gravado na máquina do usuário final que vai fazer o import (via comando exp) , E essa tal máquina do usuário final já possui o client Oracle instalado (senão não ia ter instalado nem exp nem imp), E essa mesma máquina possui acesso via rede AO BANCO onde os dados devem ser importados, correto ? O usuário em si não tem acesso AO SERVIDOR ORACLE, mas acesso via rede AO DATABASE claro que deve ter, senão o import no banco destino a partir dessa máquina de usuário não seria possível Muito bem : não é porque o usuário/máquina não tem acesso ao servidor que não possa rodar o impdp, okdoc ?? Para o usuário poder rodar o impdp na máquina dele importando o dump file num banco remoto, uma dessas opções deve ser verdadeira : 1. o dump file foi gerado via expdp num diretório lá no servidor Oracle de origem E esse diretório pode ser acessado via rede lá pelo servidor destino : aí é simplesmente o usuário final gerar o dump file executando na máquina dele : expdp usuario/senha@bancoremoto DIRECTORY=objetodirectoryCRIADONOBANCOORIGEMapontandoprumapastadoservidor demasopções. e aí ele faria o import executando na máquina dele : impdp usuario/senha@bancoremoto DIRECTORY=objetodirectoryCRIADONOBANCODESTINOapontandoprumapastadoservidor demasopções. ==> DEPENDENDO de qual seja o Sistema Operacional nos dois servidores, esse 'compartilhamento' da pasta/diretório no servidor do banco origem para poder ser lido pelo banco destino pode ser feito com NFS, UNC, Samba, etc... OU 2. depois de gerado o dump file lá no servidor TRANSFERE (via FTP ou rcp, digamos) o dump file para o servidor destino : isso PODERIA ser um shell script lá no banco origem (via job de banco, via cron, etc), ou PODERIA ser uma procedure PL/SQL executada pelo usuário https://oracle-base.com/articles/misc/ftp-from-plsql exemplifica como rodar FTP e https://asktom.oracle.com/pls/asktom/f?p=100:11:0P11_QUESTION_ID:16212348050 mostra como rodar um shell script, ambos os casos (creio) poderiam ser disparados pelo seu usuário final conectando nos bancos via um programa client qquer, OU MESMO o usuário final teria na máquina dele um shell script /.BAT script que já faz isso tudo pra ele OU 3. (a opção menos desejável, caso não haja NENHUM TIPO de comunicação entre os dois servidores Oracle) , o usuário poderia ter um banquinho Oracle qquer free, de pequeno porte (um Oracle XE, digamos), banquinho esse que teria um DBLINK com o banco origem dos dados E então o usuário conectaria nesse banquinho local e geraria o dump file com dados vindos do servidor Oracle remoto via parâmetro NETWORK_LINK... Aí deveria haver algum tipo de SHARE da pasta local da máquina do usuário com o servidor Oracle destino, aí o usuário rodaria o impdp na máquina dele conectando no banco destino desejado e usando um DIRECTORY que lê a pasta local dele ===>> OKDOC Só se NENHUMA DESSAS OPÇÕES for viável aí SIM vc teria que apelar pro exp/imp tradicionais : o problema aí é que o exp/imp tradicionais NÃO POSSUEM COMANDOS pra excluir determinados objetos, essa é UMA das muitas melhorias introduzidas no datapump... No exp/imp tradicionais, vc VAI ter que apelar pra alguma gambiarra, tipo : OU tentar adicionar um WHERE no export ou criar uma política de VPD que não traga as views que vc quer excluir (vide https://asktom.oracle.com/pls/apex/f?p=100:11:0P11_QUESTION_ID:525933920034625) , OU cria na mão antes do import no banco destino objetos com o mesmo nome das views que vc não quuer importar e usa IGNORE=Y (https://deepakdba.wordpress.com/2009/12/08/import-in-oracle-9i/ fala sobre o IGNORE) , OU alguma gambi pesada, tipo Editar o dump file pra renomear/excluir as views que vc não quer, colocar a tablespace onde a view materializada vai ser criada temporariamente em read-only, ou coisas assim... []s Chiappa
[oracle_br] Como ignorar Materialized View no exp (antigo)
Olá amigos, Temos uma rotina aqui para renomear schemas, para isso fazemos backup com o exp e importamos com as opções FROMUSER e TOUSER do imp, o problema é que para views materializadas esse remap não funciona direito. Para resolver esse problema, temos um procedimento que é executado antes do backup, que guarda em uma tabela os DDLs das views materializadas, essa tabela vai junto no backup, e com isso conseguirmos recriá-las após o import. O problema é que no momento em que a MV é criada no imp, ele já cria o job de refresh, e quando vamos recriar as MVs elas estão lockadas por causa do job do refresh. O que gostaria de saber, é se tem como não exportar as MVs, ou ignorar elas no import. Não podemos usar o data pump, pois esse procedimento é feito por usuário não DBA, que não tem acesso ao servidor. Não podemos apagar, ou desativar o job, antes do export, pois ele é feito em ambiente de produção. Será que algum dos colegas consegue me ajudar? Oracle 11.2.0.4. Obrigado, Everson
[oracle_br] Ajuda com enq: TM - contention
Olá amigos, (oracle 11.2.0.3) Estou enfrentando alguns problemas de contenção TM, mas não estou conseguindo achar a solução. Por exemplo. Faço um delete na tabela X, essa tabela X tem FK para outras 8 tabelas, mas todas as colunas da tabela X que possuem FK estão indexadas. Até onde eu sei, a falta de índice na tabela 'filha', causa lock em casa de alteração no pai, correto? Sendo assim, não vejo oq fazer para prevenir esse tipo de contenção. Vocês podem me ajudar? Obrigado. Everson
RE: [oracle_br] Re: Importar dump do mysql no oracle
Oi Chiappa,Eu vi esse link, mas pelo oq eu vi no SQL Developer ele só faz a migração conectando nos dois bancos, e do mysql eu só tenho o backup. To: oracle_br@yahoogrupos.com.br From: oracle_br@yahoogrupos.com.br Date: Mon, 22 Aug 2016 09:01:19 -0700 Subject: [oracle_br] Re: Importar dump do mysql no oracle Opa : eu nunca usei MySQL, mas http://stackoverflow.com/questions/32566944/how-to-restore-import-a-sql-file-mysql-into-oracle-database indica que o freeware Oracle SQL Developer é capaz de importar arquivos .SQL vindos do MYSQL num database Oracle, tente com ele... []s Chiappa
[oracle_br] Importar dump do mysql no oracle
Olá amigos,Um cliente me enviou um dump (.sql) de um banco mySql, e preciso importar ele no Oracle apenas para consulta.Alguém conhece alguma forma de fazer isso?Tenho oracle 10g, 11g e 12c aqui, posso importar em qquer um deles.Obrigado,Everson
RE: [oracle_br] Oracle Database 12cR2, quando sai?
Se for final do ano mesmo, é sinal que vão postergar mais uma vez o lançamento :( To: oracle_br@yahoogrupos.com.br From: oracle_br@yahoogrupos.com.br Date: Wed, 23 Mar 2016 10:32:46 -0300 Subject: Re: [oracle_br] Oracle Database 12cR2, quando sai? Uma equipe da Oracle ACS que está atuando em um cliente nosso, me disse que até o final deste ano o R2 sai sim. Em 23 de março de 2016 10:21, Everson Piza eversonp...@hotmail.com [oracle_br] escreveu: Olá amigos, No site da Oracle apenas diz que o 12cR2 (para linux_ x86-64), sai no primeiro semestre de 2016, mas sei que eles costuma alterar essa data. Alguém tem alguma informação mais precisa, se vai sair em breve mesmo, ou se pode ser postergado? Estamos fazendo um planejamento de migração do produção de 11g para 12c, e como o custo de homologação é alto, se puder eu prefiro esperar pela R2. Visto que a própria Oracle diz que de uma release para outra podem ter funcionalidades alteradas. Obrigado, Everson -- Fabrício Pedroso Jorge.Administrador de Banco de Dados certificacaobd.com.br Resumo Profissional:http://br.linkedin.com/in/fabriciojorge Contatos:+ 55 91 988991116 skype: fabricio.pedroso.jorge fpjb...@gmail.com
[oracle_br] Oracle Database 12cR2, quando sai?
Olá amigos, No site da Oracle apenas diz que o 12cR2 (para linux_ x86-64), sai no primeiro semestre de 2016, mas sei que eles costuma alterar essa data. Alguém tem alguma informação mais precisa, se vai sair em breve mesmo, ou se pode ser postergado? Estamos fazendo um planejamento de migração do produção de 11g para 12c, e como o custo de homologação é alto, se puder eu prefiro esperar pela R2. Visto que a própria Oracle diz que de uma release para outra podem ter funcionalidades alteradas. Obrigado, Everson
RE: [oracle_br] Como identificar o sql que esta consumindo TEMP e como liberar?
Oi Paulo, Infelizmente não ajuda. Veja no exemplo abaixo que o sql_id fica constantemente alterado. SQL> select sql_id, blocks from gv$sort_usage where inst_id = 2 and SESSION_ADDR='000C90F5A398'; SQL_IDBLOCKS- --1jxtarkfn0wvy 303104 SQL> select sql_id, blocks from gv$sort_usage where inst_id = 2 and SESSION_ADDR='000C90F5A398'; SQL_IDBLOCKS- --gb1za3y68sc3g 303104 SQL> select sql_id, blocks from gv$sort_usage where inst_id = 2 and SESSION_ADDR='000C90F5A398'; SQL_IDBLOCKS- --6wadfytm8vcjp 303104 SQL> To: oracle_br@yahoogrupos.com.br From: oracle_br@yahoogrupos.com.br Date: Thu, 26 Nov 2015 10:46:25 -0200 Subject: Re: [oracle_br] Como identificar o sql que esta consumindo TEMP e como liberar? Veja se essa query ajuda a identificar o SQLID. select '_SqlId___|_Owner__|_TableSpace_|_Type|_Size' S_ from dual union allselect S from (select rpad (nvl (s.SQL_ID, ' '), 13, ' ') ||'|'|| rpad (s.USERNAME, 20, ' ') ||'|'|| rpad (s.TABLESPACE, 20, ' ') ||'|'||rpad (s.SEGTYPE, 9, ' ') ||'|'|| to_char (s.BLOCKS * t.BLOCK_SIZE / 1048576, '999G990') ||'M' S from GV$SORT_USAGE s, DBA_TABLESPACES t where t.TABLESPACE_NAME = s.TABLESPACE order by s.BLOCKS, s.SEGTYPE, s.USERNAME, s.SQL_ID) ; Att, Paulo BarbosaAdm de Banco de Dados skype: paulobarbosa.sp Cel.: (11) 98869-0988 Em 26 de novembro de 2015 10:24, Everson Piza eversonp...@hotmail.com [oracle_br] escreveu: Olá amigos, Temos uma aplicação que trabalha com servidor de aplicação rodando jboss com pool de conexões. Temos tipo problema com estouro de TEMP, analisando a v$sort_usage eu percebo que uma sessão demora as vezes mais de 1 dia para liberar o segmento temporário usado, e essa sessão já foi devolvida para o pool do jboss algumas vezes e utilizada por outros processos, ou seja, seja quem for que consumiu a temp não esta mais em execução. Cheguei a desconfiar que seja algum cursor aberto que não foi devidamente fechado, mas não encontrei nenhum indicio disso, poucos cursores estão com o TYPE = OPEN. O que fazemos quando isso acontece é matar as sessões que estão com mais temp, o problema é que como essa sessão está em uso por outro processo, acabamos criando outro problema, sem contar o transtorno de negociar o kill session em um ambiente de produção. Alguém tem alguma dica para me passar, queria saber como identificar o sql que esta consumindo a temp, saber pq ele não fechou, e saber como faço para forçar que todos cursores sejam fechados e que a temp seja liberada. select * from v$version ; BANNEROracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit ProductionPL/SQL Release 11.2.0.4.0 - ProductionCORE11.2.0.4.0 ProductionTNS for Linux: Version 11.2.0.4.0 - ProductionNLSRTL Version 11.2.0.4.0 - Production Obrigado,Everson
[oracle_br] Como identificar o sql que esta consumindo TEMP e como liberar?
Olá amigos, Temos uma aplicação que trabalha com servidor de aplicação rodando jboss com pool de conexões. Temos tipo problema com estouro de TEMP, analisando a v$sort_usage eu percebo que uma sessão demora as vezes mais de 1 dia para liberar o segmento temporário usado, e essa sessão já foi devolvida para o pool do jboss algumas vezes e utilizada por outros processos, ou seja, seja quem for que consumiu a temp não esta mais em execução. Cheguei a desconfiar que seja algum cursor aberto que não foi devidamente fechado, mas não encontrei nenhum indicio disso, poucos cursores estão com o TYPE = OPEN. O que fazemos quando isso acontece é matar as sessões que estão com mais temp, o problema é que como essa sessão está em uso por outro processo, acabamos criando outro problema, sem contar o transtorno de negociar o kill session em um ambiente de produção. Alguém tem alguma dica para me passar, queria saber como identificar o sql que esta consumindo a temp, saber pq ele não fechou, e saber como faço para forçar que todos cursores sejam fechados e que a temp seja liberada. select * from v$version ; BANNEROracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit ProductionPL/SQL Release 11.2.0.4.0 - ProductionCORE11.2.0.4.0 ProductionTNS for Linux: Version 11.2.0.4.0 - ProductionNLSRTL Version 11.2.0.4.0 - Production Obrigado,Everson