[oracle_br] Auditoria do usuário no Oracle
Boa tarde amigos, Meu cenário Oracle: banner Oracle Database 10g Release 10.2.0.3.0 - 64bit Production full_version -- 10.2.0.3.0 version_bit 10.2.0.3.0 - 64bit isDb64bit isHPUX ARQUIVAMENTO -- -- --- True False STARTED Meu cenário Linux: LSB Version: :core-3.0-amd64:core-3.0-ia32:core-3.0-noarch:graphics-3.0-amd64:graphics-3.0-ia32:graphics-3.0-noarch Distributor ID: EnterpriseEnterpriseAS Description:Enterprise Linux Enterprise Linux AS release 4 (October Update 7) Release:4 Codename: OctoberUpdate7 Problemática: Me foi requisitado implementar auditorias em usuários conectados ao Oracle, apesar de muito pesquisar, ainda não encontrei solução para a requisição e antes que possam sugerir, não temos a menor possibilidade de adquirir o "Oracle Audit Vault" ou algum outro produto o qual seja pago da oracle ou de qualquer outro fornecedor, INFELIZMENTE. O que me foi requisitado, seria uma auditoria que indicasse o que o usuário está fazendo no banco, seu trajeto no db, que tipo de transação está sendo feita, sql utilizado, quais objetos ('FUNCTION', 'MATERIALIZED VIEW', 'PACKAGE', 'PACKAGE BODY', 'PROCEDURE', 'JOB', 'SEQUENCE', 'SYNONYM', 'TABLE', 'TRIGGER', 'TYPE', 'TYPE BODY', 'VIEW', etc) estão sendo usadas, tempo logado, etc, em fim, seria como uma reversa da conexão do usuário no DB, Particularmente não tenho a menor ideia de como implementar tal auditoria, nem se realmente seria possível implementá-la desta forma sem que se utilizassem outros recursos "PAGOS" da Oracle ou de algum outro fornecedor. Neste sentido, requisito aos amigos com maior experiência no Oracle, sugestões, mesmo rotinas já implementadas por vocês, as quais armazenem e retornem estas informações, desde que possam ser disponibilizadas, claro. Agradeço para ajuda e orienteção. Atenciosamente, [image: Foto Cristiano Vasconcelos Barbosa] *Cristiano Vasconcelos Barbosa.'.* * Analista de Sistemas & Banco de Dados* | Cel: +55 (85) 9691.8331 -- http://br.linkedin.com/in/cristianovasconcelos *DEUS MEUMQUE JUS*.'. *DÓMINI SUMUS*.'. Contact me: [image: Google Talk] cvasconcel...@gmail.com [image: Skype] cvasconcelosb [image: MSN] cvasconcel...@hotmail.com [image: Y! Messenger] cvasconcel...@yahoo.com.br [image: My QR VCard] <http://s.wisestamp.com/links?url=http%3A%2F%2Fbr.linkedin.com%2Fin%2Fcristianovasconcelos=Y3Zhc2NvbmNlbG9zYkBnbWFpbC5jb20%3D>
[oracle_br] Re:Re: PROXY USER by jlchiappa
** transações ** específicas tais como: Insert, Update, Delete" - vamos deixar bem claro, primeiro, que no RDBMS Oracle uma TRANSAÇÃO é o que é aberto automaticamente pelo primeiro INSERT/UPDATE/DELETE que o banco receber numa sessão , e ela é Encerrada com COMMIT ou ROLLBACK - INSERT/UPDATE/DELETE ** não ** representam em si e por si uma Transação... Segundo, rigorosamente NÃO EXISTE o conceito de permissão apenas para uma Transação num RDBMS , e em especial no RDBMS Oracle : as permissões valem imediatamente após o GRANT, e VÃO PERMANECER presentes até que um REVOKE as elimine,TENHA ou NÃO sido aberta uma transação, tenha ou não desconectado a sessão que fez o grant, não importa []s Chiappa OBS : estando CLARO que permissão por Transação ** não existe **, se for o caso, Explica direitinho pra gente sobre o seu ambiente (ie, se há um POOL de conexões aí ou não (e qual é ele, se houver, especificando softwares/APIs/versões/modo pelo qual o pool foi implementado/criado), diga se cada comando SQL éexecutado numa nova sessão ou não, que aí a gente pode tentar te dar alternativas para permissão POR SESSÃO, isso sim existe : isso vai passar por roles não-default ou por contextos globais sendo acessados por trigger de logon ou coisas assim, mas Só COm os DETALHES todos a gente pode te indicar mais direitinho as alternativas... Amigos, Boa noite... Meu oracle é: banner -- Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 version_bit 10.2.0.3.0 - 64bi Arquivamento STARTED Amigos, estou precisando implementar o recurso "PROXY USER" e estou tendo dificuldades, gostaria que algum dos amigos com maior experiência no oracle demonstrasse com detalhes como o processo ocorre. Em uma aplicação que é acessada via web, onde o usuário cadastrado no banco tem apenas o privilégio de sistema de "create session", preciso que o mesmo, ao conectar-se no sistema adquira o "CONNECT, RESOURCE " e determinadas permissões do dono do sistema/tabelas para efetuar transações específicas tais como: Insert, Update, Delete, as quais poderiam ser repassadas ao usuário que se conecta via web por uma role específica se for o caso, e ao sair, que essas permissões fossem revogadas. Agradeço a atenção e a ajuda... Atenciosamente, [image: Foto Cristiano Vasconcelos Barbosa] *Cristiano Vasconcelos Barbosa.'.* * Analista de Sistemas & Banco de Dados* | Cel: +55 (85) 9691.8331 -- http://br.linkedin.com/in/cristianovasconcelos *DEUS MEUMQUE JUS*.'. *DÓMINI SUMUS*.'. Contact me: [image: Google Talk] cvasconcel...@gmail.com [image: Skype] cvasconcelosb [image: MSN] cvasconcel...@hotmail.com [image: Y! Messenger] cvasconcel...@yahoo.com.br [image: My QR VCard] <http://s.wisestamp.com/links?url=http%3A%2F%2Fbr.linkedin.com%2Fin%2Fcristianovasconcelos=Y3Zhc2NvbmNlbG9zYkBnbWFpbC5jb20%3D>
[oracle_br] PROXY USER
Amigos, Boa noite... Meu oracle é: banner -- Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 version_bit 10.2.0.3.0 - 64bi Arquivamento STARTED Amigos, estou precisando implementar o recurso "PROXY USER" e estou tendo dificuldades, gostaria que algum dos amigos com maior experiência no oracle demonstrasse com detalhes como o processo ocorre. Em uma aplicação que é acessada via web, onde o usuário cadastrado no banco tem apenas o privilégio de sistema de "create session", preciso que o mesmo, ao conectar-se no sistema adquira o "CONNECT, RESOURCE " e determinadas permissões do dono do sistema/tabelas para efetuar transações específicas tais como: Insert, Update, Delete, as quais poderiam ser repassadas ao usuário que se conecta via web por uma role específica se for o caso, e ao sair, que essas permissões fossem revogadas. Agradeço a atenção e a ajuda... Atenciosamente, [image: Foto Cristiano Vasconcelos Barbosa] *Cristiano Vasconcelos Barbosa.'.* * Analista de Sistemas & Banco de Dados* | Cel: +55 (85) 9691.8331 -- http://br.linkedin.com/in/cristianovasconcelos *DEUS MEUMQUE JUS*.'. *DÓMINI SUMUS*.'. Contact me: [image: Google Talk] cvasconcel...@gmail.com [image: Skype] cvasconcelosb [image: MSN] cvasconcel...@hotmail.com [image: Y! Messenger] cvasconcel...@yahoo.com.br [image: My QR VCard] <http://s.wisestamp.com/links?url=http%3A%2F%2Fbr.linkedin.com%2Fin%2Fcristianovasconcelos=Y3Zhc2NvbmNlbG9zYkBnbWFpbC5jb20%3D>
[oracle_br] Revolve e Grant.
Amigos, Boa noite... Meu oracle é: banner -- Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 version_bit 10.2.0.3.0 - 64bi Arquivamento STARTED O cenário é o seguinte: Possuo role RL_EXEMPLO onde possui SELECT, INSERT, UPDATE, DELETE. Esta role é aplicada a várias tabelas do meu sistema. Foi gerado um arquivo texto com +/- 200 tabelas que possuem esta role. Preciso de duas rotinas, uma que faça a leitura deste arquivo texto e aplique o revoke nas permissões de INSERT, UPDATE E DELETE nestas tabelas, uma a uma, na sequência e de uma só vez. E outra rotina que faça justamente o contrário, do acima exposto, ou seja, que seja aplicada Grant de INSERT, UPDADE E DELETE às referidas tabelas, ou seja, devolvendo as mesmas ao estado anterior, original caso o que preciso fazer aconteça errado e precise emergencialmente retornar ao que era antes. Desde logo, agradeço a atenção e disponibilidade. -- Atenciosamente, Cristiano Vasconcelos Barbosa.'. Analista de Sistemas & Banco de Dados | Cel: +55 (85) 9691.8331 http://br.linkedin.com/in/cristianovasconcelos DEUS MEUMQUE JUS.'. DÓMINI SUMUS.'. Contact me: cvasconcel...@gmail.com
[oracle_br] Registros deletados...
Amigos, Boa noite... Meu oracle é: banner -- Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 version_bit 10.2.0.3.0 - 64bi Arquivamento STARTED Atualmente não possuo auditoria em tabelas, devido ao alto custo. Possuo um cenário no qual foram deletados registros de uma tabela "tb_tabela" da data do dia 01/10 ao dia 09/10, e gostaria de saber se tem como saber, ESPECIFICAMENTE, o dia a hora e quem teria deletado estes registros, caso exista alguma solução para minha solicitação, o amigo que possuí-la, gostaria que disponibilizasse a estrutura para que fosse possível aplicá-la em meu ambiente. Desde logo, agradeço a atenção e disponibilidade. Atenciosamente, [image: Foto Cristiano Vasconcelos Barbosa] *Cristiano Vasconcelos Barbosa.'.* * Analista de Sistemas & Banco de Dados* | Cel: +55 (85) 9691.8331 -- http://br.linkedin.com/in/cristianovasconcelos *DEUS MEUMQUE JUS*.'. *DÓMINI SUMUS*.'. Contact me: [image: Google Talk] cvasconcel...@gmail.com [image: Skype] cvasconcelosb [image: MSN] cvasconcel...@hotmail.com [image: Y! Messenger] cvasconcel...@yahoo.com.br [image: My QR VCard] <http://s.wisestamp.com/links?url=http%3A%2F%2Fbr.linkedin.com%2Fin%2Fcristianovasconcelos=Y3Zhc2NvbmNlbG9zYkBnbWFpbC5jb20%3D>
[oracle_br] Auditoria de usuário no oracle
logoff_time = TO_CHAR (SYSDATE, 'hh24:mi:ss') WHERE SYS_CONTEXT ('USERENV', 'SESSIONID') = session_id; -- *** -- Compute the elapsed minutes -- *** UPDATE stats$user_log SET elapsed_minutes = ROUND ( (logoff_day - logon_day) * 1440) WHERE SYS_CONTEXT ('USERENV', 'SESSIONID') = session_id; COMMIT; END; / Time Start: 10/07/2015 14:02:12 USER_ID SESSION_ID HOST LAST_PROGRAM LAST_ACTION LAST_MODULE LOGON_DAY LOGON_TIME LOGOFF_DAY LOGOFF_TIME ELAPSED_MINUTES - -- -- - - -- -- --- --- QUEST 0 srvorcl01 10/07/15 12:55:19 QUEST 0 srvorcl01 10/07/15 12:57:19 QUEST 0 srvorcl01 10/07/15 13:01:19 QUEST 0 srvorcl01 10/07/15 13:09:19 SYS0 srvorcl01 10/07/15 13:09:48 QUEST 0 srvorcl01 10/07/15 13:19:19 QUEST 0 srvorcl01 10/07/15 13:21:49 QUEST 0 srvorcl01 10/07/15 13:23:49 QUEST 0 srvorcl01 10/07/15 13:27:49 QUEST 0 srvorcl01 10/07/15 13:29:19 SYS0 srvorcl01 10/07/15 13:35:23 QUEST 0 srvorcl01 10/07/15 13:35:49 QUEST 0 srvorcl01 10/07/15 13:39:20 QUEST 0 srvorcl01 10/07/15 13:49:20 QUEST 0 srvorcl01 10/07/15 13:51:50 QUEST 0 srvorcl01 10/07/15 13:59:20 16 rows selected. Time End: 10/07/2015 14:02:12 Elapsed Time for Script Execution: 484 msecs Um segundo agravante, este mais sério, é que a trigger quando implementada impossibilita conexões ao banco, retornando o erro abaixo: ORA-00604: ocorreu um erro no nível 1 SQL recursivo ORA-01438: valor maior que a precisão especificada usado para esta coluna ORA-06512: em line 2, permitindo apenas conexão do usuário SYS ou de algum outro que possua role de DBA, usuário convencional, nem pensar. Apesar do erro apresentado, a estrutura acima descrita poderia ser uma solução para meu problema, assim, gostaria de pedir ajuda aos amigos do grupo, para aqueles que possuem maior experiência com cenários de auditoria e desenvolvimento em PL/SQL para que olhassem esta estrutura e reportassem como poderia ser dada solução para os erros descritos, ou ainda, caso já possuma um tipo de auditoria com estas informações ou superiores já impletentadas em seus cenários, que enviassem para que eu pudesse implementá-la em meu ambiente de trabalho. Desde já, agradeço a disponibilidade e ajuda de todos. Atenciosamente, [image: Foto Cristiano Vasconcelos Barbosa] *Cristiano Vasconcelos Barbosa.'.* * Analista de Sistemas Banco de Dados* | Cel: +55 (85) 9691.8331 -- http://br.linkedin.com/in/cristianovasconcelos *DEUS MEUMQUE JUS*.'. *DÓMINI SUMUS*.'. Contact me: [image: Google Talk] cvasconcel...@gmail.com [image: Skype] cvasconcelosb [image: MSN] cvasconcel...@hotmail.com [image: Y! Messenger] cvasconcel...@yahoo.com.br [image: My QR VCard] http://s.wisestamp.com/links?url=http%3A%2F%2Fbr.linkedin.com%2Fin%2Fcristianovasconcelossn=Y3Zhc2NvbmNlbG9zYkBnbWFpbC5jb20%3D
[oracle_br] Re:Re: tnsnames.ora
Caros amigos, Boa tarde! Mais uma vez gostaria de agradecer aos amigos que responderam minha solicitação de ajuda. OBS.: Amigo Chiappa, quanto ao uso do modelo referido no TNSNAMES E LISTENER, foi a título de exemplificação das várias instâncias que tinha disponível, todas com ALIAS referentes à instância principal, para que fosse visto que minha necessidade, seria tanto o nome da instância principal como as demais de desenvolvimento. Peço que me perdoe se o modelo sugerido ficou confuso para análise, contudo, sua ajuda, como sempre, foi de suma importância para elucidar a questão. Fiz as devidas alterações e atualmente já consigo gerar SPOOL com o nome da instância desejada, seja ela a de produção ou desenvolvimento. Vou tentar melhorar este script para dinamicamente, apontando qual instância almejada, já possa obter o spool desejado. Atenciosamente, [image: Foto Cristiano Vasconcelos Barbosa] *Cristiano Vasconcelos Barbosa.'.* * Analista de Sistemas Banco de Dados* | Cel: +55 (85) 9691.8331 -- http://br.linkedin.com/in/cristianovasconcelos *DEUS MEUMQUE JUS*.'. *DÓMINI SUMUS*.'. Contact me: [image: Google Talk] cvasconcel...@gmail.com [image: Skype] cvasconcelosb [image: MSN] cvasconcel...@hotmail.com [image: Y! Messenger] cvasconcel...@yahoo.com.br [image: My QR VCard] http://s.wisestamp.com/links?url=http%3A%2F%2Fbr.linkedin.com%2Fin%2Fcristianovasconcelossn=Y3Zhc2NvbmNlbG9zYkBnbWFpbC5jb20%3D
[oracle_br] tnsnames.ora
Caros amigos, Boa tarde! Meu oracle é: Current Versions Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi PL/SQL Release 10.2.0.3.0 - Production CORE 10.2.0.3.0 Production TNS for Linux: Version 10.2.0.3.0 - Production NLSRTL Version 10.2.0.3.0 - Production e gostaria da ajuda dos senhore(a)s para a seguinte questão: Meu arquivo TNSNAMES.ORA é configurado com diversos ALIAS da minha instância original, isso porque utilizo alguns servidores de desenvolvimento em máquinas distintas com a replicação da instância principal, mudando apenas seu ALIAS, COMO NO CASO ABAIXO. BASED4,BASED4.WORLD = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.X.X.X)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = BASE.WORLD) (SID = BASEd4) ) ) Neste exemplo, o nome real da instância, banco principal, seria o BASE.WORLD, só que como roda no servidor de desenvolvimento, seu host (está apontando para um banco de desenvolvimento) e seu SID foi modificado para um ALIAS BASEd4. Agora vem a questão. Em várias pesquisas na net, quando desejo obter o nome do banco, nas estruturas que tenho e as que pesquisei, ISSO PARA SAÍDA EM SPOOL, obtenho sempre o nome do banco real, no caso, BASE.WORLD ou apenas BASE configurado no parâmetro SERVICE_NAME, só que o que estou precisando mesmo é diferenciar as instâncias pelo SID do TNSNAMES.ORA, ou seja, SID = BASEd4 e não pelo SERVICE_NAME = BASE.WORLD, haja vista que em todos os SERVICE_NAME a saída será sempre a mesma, ou seja BASE.WORLD que é o nome real do banco, o que vai, para mim, realmente diferenciar, A NÍVEL DE RELATÓRIO, é o SID, este sim, que traz o ALIAS da instância a qual desejo o relatório. Exemplo: Estrutura de select: SELECT'Output.compara.info-db_' || VALUE || '_' || TO_CHAR (SYSDATE, 'dd-mm-') || '.txt' AS spoolfile FROM v$parameter WHERE (name = 'db_name'); / Saída: SPOOLFILE --- Output.compara.info-db_BASE_30-06-2015.txt 1 row selected. Time End: 30/06/2015 16:34:09 Elapsed Time for Script Execution: 528 msecs Na saída do relatório, gerado no servidor de desenvolvimento BASEd4, o nome do DB que saiu no spool foi BASE, quando eu gostaria que saísse o BASEd4 que é o ALIAS atribuído ao BASE para que não tivesse sempre o trabalho de renomear o spool gerado. Gostaria da ajuda dos amigos para ver se seria possível extrair esta informação de algum lugar. Ela também está disposta no LISTENER.ORA LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 172..X.X.X)(PORT = 1521)) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = base.world) (SID_NAME = BASE)# -- Principal ) (SID_DESC = (GLOBAL_DBNAME = base.world) (SID_NAME = BASEd4) #-- Desenvolvimento ) ) Agradeço pela ajuda. Atenciosamente, [image: Foto Cristiano Vasconcelos Barbosa] *Cristiano Vasconcelos Barbosa.'.* * Analista de Sistemas Banco de Dados* | Cel: +55 (85) 9691.8331 -- http://br.linkedin.com/in/cristianovasconcelos *DEUS MEUMQUE JUS*.'. *DÓMINI SUMUS*.'. Contact me: [image: Google Talk] cvasconcel...@gmail.com [image: Skype] cvasconcelosb [image: MSN] cvasconcel...@hotmail.com [image: Y! Messenger] cvasconcel...@yahoo.com.br [image: My QR VCard] http://s.wisestamp.com/links?url=http%3A%2F%2Fbr.linkedin.com%2Fin%2Fcristianovasconcelossn=Y3Zhc2NvbmNlbG9zYkBnbWFpbC5jb20%3D
[oracle_br] Estrutura de consulta...
Meu oracle é: banner -- Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 version_bit 10.2.0.3.0 - 64bi Arquivamento STARTED Boa noite amigos, Estou precisando listar de TODAS as minhas tabelas de um determinado Owner, com campos tipo DATE. Esta estrutura me retorna as tabelas com campo tipo DATE. select k.table_name,k.column_name from all_tab_columns k, (select * from all_tables where owner = 'FULANO' and num_rows 0 ) T where k.DATA_TYPE ='DATE' AND K.TABLE_NAME = T.TABLE_NAME. Além disso, preciso listar o conteúdo dos referidos Campos encontrados, resultado da pesquisa acima, e checar se a referida data é igual ou superior à SYSDATE, lembrando que, cada tabela pode ter um ou mais Campos tipo DATE. Melhor explicando, no meu ambiente, para um determinado Owner, preciso listar as tabelas, seus referidos Campos e valores os quais sejam do tipo DATE checando se esses valores são igual ou superior à SYSDATE. Solicito a ajuda dos amigos que possuem maior habilidade com PL/SQL. Caso algum dos amigos já tenham passado por igual necessidade e possua a estrutura, peço que a enviem, em caso contrário, para aqueles os quais são exímios em PL/SQL, que possam ajudar-me com a referida codificação. Aguardo retorno e, desde já, agradeço a atenção e ajuda dispensadas à minha solicitação. -- Atenciosamente, Cristiano Vasconcelos Barbosa.'. Analista de Sistemas Banco de Dados | Cel: +55 (85) 9691.8331 http://br.linkedin.com/in/cristianovasconcelos DEUS MEUMQUE JUS.'. DÓMINI SUMUS.'. Contact me: cvasconcel...@gmail.com
[oracle_br] snapshot database oracle
Boa tarde amigos, Meu oracle é: banner -- Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 version_bit 10.2.0.3.0 - 64bi Arquivamento STARTED Gostaria de efetuar de um script que gerasse a reversa COMPLETA do banco de dados, tudo mesmo, desde a criação dos usuários, triggers, functions, procedures, roles, tabelas, etc. Deveria ser com saída para spool, ou caso algum dos amigos já possua implementado em sua empresa formas de armazenamento destas informações em tabelas criadas para este fim, seria muito bom. Desde logo agradeço pela ajuda... Atenciosamente, [image: Foto Cristiano Vasconcelos Barbosa] *Cristiano Vasconcelos Barbosa.'.* * Analista de Sistemas Banco de Dados* | Cel: +55 (85) 9691.8331 -- http://br.linkedin.com/in/cristianovasconcelos *DEUS MEUMQUE JUS*.'. *DÓMINI SUMUS*.'. Contact me: [image: Google Talk] cvasconcel...@gmail.com [image: Skype] cvasconcelosb [image: MSN] cvasconcel...@hotmail.com [image: Y! Messenger] cvasconcel...@yahoo.com.br [image: My QR VCard] http://s.wisestamp.com/links?url=http%3A%2F%2Fbr.linkedin.com%2Fin%2Fcristianovasconcelossn=Y3Zhc2NvbmNlbG9zYkBnbWFpbC5jb20%3D
[oracle_br] Trigger de logon...
failed for the trigger. *Action: Options are to resolve the compilation/authorization errors, disable the trigger, or drop the trigger. Código de fornecedor 4098 = ATT == # -- A TRIGGER NÃO APRESENTA ERROS DE COMPILAÇÃO SELECT LINE, POSITION, REPLACE (TEXT, CHR (10), ' '), attribute FROM SYS.ALL_ERRORS A WHERE A.NAME = 'TG_BLOCK_TOOLS_FROM_PROD' AND A.TYPE = 'TRIGGER' AND A.OWNER = 'SYS' ORDER BY ATTRIBUTE, LINE, POSITION; Time Start: 28/05/2015 10:07:29 no rows selected. (SEM ERROS DE COMPILACAO...) Time End: 28/05/2015 10:07:30 Elapsed Time for Script Execution: 514 msecs Atenciosamente, [image: Foto Cristiano Vasconcelos Barbosa] *Cristiano Vasconcelos Barbosa.'.* * Analista de Sistemas Banco de Dados* | Cel: +55 (85) 9691.8331 -- http://br.linkedin.com/in/cristianovasconcelos *DEUS MEUMQUE JUS*.'. *DÓMINI SUMUS*.'. Contact me: [image: Google Talk] cvasconcel...@gmail.com [image: Skype] cvasconcelosb [image: MSN] cvasconcel...@hotmail.com [image: Y! Messenger] cvasconcel...@yahoo.com.br [image: My QR VCard] http://s.wisestamp.com/links?url=http%3A%2F%2Fbr.linkedin.com%2Fin%2Fcristianovasconcelossn=Y3Zhc2NvbmNlbG9zYkBnbWFpbC5jb20%3D
[oracle_br] Trigger de Logon.
Boa tarde! Meu oracle é: banner full_version version_bit ARQUIVAMENTO - -- - Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 10.2.0.3.0 10.2.0.3.0 - 64bi STARTED Caros amigos, estou precisando de uma trigger de logon que: A) permita acesso ao banco apenas do sistema web desenvolvido; B) permita acesso ao banco apenas dos form´s e report´s; C) que boqueie programas de desenvolvimento tais como: '%TOAD%'-- Toad; '%T.O.A.D%'-- Toad; '%SQLNAV%'-- SQL Navigator; '%PLSQLDEV%'-- PLSQL Developer; '%BUSOBJ%'-- Business Objects; '%EXCEL%'-- MS-Excel plug-in; '%SQLPLUS%'-- SQLPLUS; '%DEVELOPER%'-- Oracle SQL Developer; '%IFBLD%'-- Oracle Forms Developer Builder; '%RWBUILDER%'-- Oracle Reports Builder; '%RAPTOR%' entre outros; D) que permita acesso aos programas acima relacionados na alínea 'C' apenas para os usuários relacionados, ou ainda, máquinas relacionadas (IP´s). Caso alguns dos amigos possuam uma trigger do tipo ou mais estruturada ainda, caso possam ajudar-me, ficaria bastante grato. Tenho que implementar esta rotina na minha plataforma, já pesquisei algumas trigger´s de logon mas nenhuma que fosse completa ou que se adequasse ao meu cenário, assim, gostaria da ajuda dos amigos os quais possuem uma maior experiência com a administração do Oracle. Obrigado... Atenciosamente, [image: Foto Cristiano Vasconcelos Barbosa] *Cristiano Vasconcelos Barbosa.'.* * Analista de Sistemas Banco de Dados* | Cel: +55 (85) 9691.8331 -- http://br.linkedin.com/in/cristianovasconcelos *DEUS MEUMQUE JUS*.'. *DÓMINI SUMUS*.'. Contact me: [image: Google Talk] cvasconcel...@gmail.com [image: Skype] cvasconcelosb [image: MSN] cvasconcel...@hotmail.com [image: Y! Messenger] cvasconcel...@yahoo.com.br [image: My QR VCard] http://s.wisestamp.com/links?url=http%3A%2F%2Fbr.linkedin.com%2Fin%2Fcristianovasconcelossn=Y3Zhc2NvbmNlbG9zYkBnbWFpbC5jb20%3D
[oracle_br] Automatizando cópia do ARCHIVELOG
Bom dia!, Gostaria de iniciar agradecendo aos amigos que responderam ao meu questionamento passado, muito obrigado... Caros amigos, minha versão do DB oracle é: banner Oracle Database 10g Release 10.2.0.3.0 - 64bit Production MODO full_version version_bit isDb64bit isHPUX ARQUIVAMENTO -- - - -- --- 10.2.0.3.0 10.2.0.3.0 - 64bit True FalseSTARTED Gostaria de saber se existe algum parâmetro no Oracle o qual possa ser informado para que o próprio oracle administre a cópia dos ARCHIVELOG´S após arquivamento dos mesmos para uma nova localização em outro servidor, servidor remoto, funcionando assim como uma cópia dos ARCHIVESLOG´S como se fosse uma cópia de backup. Hoje estou fazendo manualmente, por meio de shell disparado via crontab de tempo em tempo, sem ter a certeza que o archive já fez ou não seu arquivamento com ou sem sucesso, neste cenário atual que estou trabalhando, como poderia confirmar se o ARCHIVELOG já fez seu arquivamento com sucesso para que pudesse mandá-los íntegros, sem estar com a transação incompleta???. Algum dos amigos poderiam ajudar-me na formação deste script/shell???. Teria que interagir com o RMAN forçando o arquivamento ou teria outra solução mais prática de fazê-lo???. Agradeço de logo a ajuda dos amigos... Atenciosamente, [image: Foto Cristiano Vasconcelos Barbosa] *Cristiano Vasconcelos Barbosa.'.* * Analista de Sistemas Banco de Dados* | Cel: +55 (85) 9691.8331 -- http://br.linkedin.com/in/cristianovasconcelos *DEUS MEUMQUE JUS*.'. *DÓMINI SUMUS*.'. Contact me: [image: Google Talk] cvasconcel...@gmail.com [image: Skype] cvasconcelosb [image: MSN] cvasconcel...@hotmail.com [image: Y! Messenger] cvasconcel...@yahoo.com.br [image: My QR VCard] http://s.wisestamp.com/links?url=http%3A%2F%2Fbr.linkedin.com%2Fin%2Fcristianovasconcelossn=Y3Zhc2NvbmNlbG9zYkBnbWFpbC5jb20%3D
[oracle_br] Objetos...
Boa tarde amigos, Gostaria de saber se existe alguma forma de saber se um pacote PL/SQL, procedimento ou função está sendo usado? Minha plataforma é Oracle Database 10g Enterprise Edition Release 10.2.0.3.0. Caso algum dos amigos possua uma consulta que me retorne esta informação, ficaria grato pela ajuda. Atenciosamente, [image: Foto Cristiano Vasconcelos Barbosa] *Cristiano Vasconcelos Barbosa.'.* * Analista de Sistemas Banco de Dados* | Cel: +55 (85) 9691.8331 -- http://br.linkedin.com/in/cristianovasconcelos *DEUS MEUMQUE JUS*.'. *DÓMINI SUMUS*.'. Contact me: [image: Google Talk] cvasconcel...@gmail.com [image: Skype] cvasconcelosb [image: MSN] cvasconcel...@hotmail.com [image: Y! Messenger] cvasconcel...@yahoo.com.br [image: My QR VCard] http://s.wisestamp.com/links?url=http%3A%2F%2Fbr.linkedin.com%2Fin%2Fcristianovasconcelossn=Y3Zhc2NvbmNlbG9zYkBnbWFpbC5jb20%3D
[oracle_br] Instalação Oracle
Amigos, Boa tarde! Estou tentando instalar o oracle 10*g* Release 2 (10.2) for Linux x86-64 no linux: -- Tipo de sistema Linux instalado / Kernel / S.O. -- -- Mostrando a versao completa do kernel e as informaces do sistema -- Linux srvbiod 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux -- Checando se voce esta executando o kernel x86_64 em uma plataforma x86_64: -- x86_64 x86_64 CentOS release 6.6 (Final) Kernel \r on an \m Estou seguindo o Oracle_Application_Server-10g_quickinstall da própria Oracle e não estou obtendo sucesso. Mesmo pós inúmeras pesquisas na net e tentativas, ainda não consegui instalar a plataforma. O erro dado é: [oracle@srvbiod ~]$ ./runInstaller.sh Iniciando Oracle Universal Installer... Verificando requisitos do Installer... Verificando a versão do sistema operacional: deve ser redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1, asianux-2 or redhat-CentOS release 6.4 (Final) Passado Todos os requisitos do Installer atendidos. Preparando para iniciar o Oracle Universal Installer de /tmp/OraInstall2015-01-16_11-07-55AM. Aguarde ...[oracle@srvbiod ~]$ Oracle Universal Installer, Versão 10.2.0.1.0 Produção Copyright (C) 1999, 2005, Oracle. Todos os direitos reservados. Exception java.lang.UnsatisfiedLinkError: /tmp/OraInstall2015-01-16_11-07-55AM/jre/1.4.2/lib/i386/libawt.so: libXt.so.6: wrong ELF class: ELFCLASS64 occurred.. java.lang.UnsatisfiedLinkError: /tmp/OraInstall2015-01-16_11-07-55AM/jre/1.4.2/lib/i386/libawt.so: libXt.so.6: wrong ELF class: ELFCLASS64 at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(Unknown Source) at java.lang.ClassLoader.loadLibrary(Unknown Source) at java.lang.Runtime.loadLibrary0(Unknown Source) at java.lang.System.loadLibrary(Unknown Source) at sun.security.action.LoadLibraryAction.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at sun.awt.NativeLibLoader.loadLibraries(Unknown Source) at sun.awt.DebugHelper.clinit(Unknown Source) at java.awt.Component.clinit(Unknown Source) at oracle.sysman.oii.oiif.oiifm.OiifmGraphicInterfaceManager.init(OiifmGraphicInterfaceManager.java:222) at oracle.sysman.oii.oiic.OiicSessionInterfaceManager.createInterfaceManager(OiicSessionInterfaceManager.java:193) at oracle.sysman.oii.oiic.OiicSessionInterfaceManager.getInterfaceManager(OiicSessionInterfaceManager.java:202) at oracle.sysman.oii.oiic.OiicInstaller.getInterfaceManager(OiicInstaller.java:436) at oracle.sysman.oii.oiic.OiicInstaller.runInstaller(OiicInstaller.java:926) at oracle.sysman.oii.oiic.OiicInstaller.main(OiicInstaller.java:866) Exception in thread main java.lang.NoClassDefFoundError at oracle.sysman.oii.oiif.oiifm.OiifmGraphicInterfaceManager.init(OiifmGraphicInterfaceManager.java:222) at oracle.sysman.oii.oiic.OiicSessionInterfaceManager.createInterfaceManager(OiicSessionInterfaceManager.java:193) at oracle.sysman.oii.oiic.OiicSessionInterfaceManager.getInterfaceManager(OiicSessionInterfaceManager.java:202) at oracle.sysman.oii.oiif.oiifm.OiifmAlert.clinit(OiifmAlert.java:151) at oracle.sysman.oii.oiic.OiicInstaller.runInstaller(OiicInstaller.java:984) at oracle.sysman.oii.oiic.OiicInstaller.main(OiicInstaller.java:866) Já tentei inúmeras soluções dispostas na net, INFELIZMENTE sem sucesso, o pior é que esta mesma instalação já fiz por diversas vezes e jamais tive problemas, desta vez, não sei o que aconteceu, mas não consegui instalar. Gostaria da ajuda dos amigos, fico bastante agradecido se algum dos amigos poder contribuir com solução para meu problema. Atenciosamente, [image: Foto Cristiano Vasconcelos Barbosa] *Cristiano Vasconcelos Barbosa.'.* * Analista de Sistemas Banco de Dados* | Cel: +55 (85) 9691.8331 -- http://br.linkedin.com/in/cristianovasconcelos *DEUS MEUMQUE JUS*.'. *DÓMINI SUMUS*.'. Contact me: [image: Google Talk] cvasconcel...@gmail.com [image: Skype] cvasconcelosb [image: MSN] cvasconcel...@hotmail.com [image: Y! Messenger] cvasconcel...@yahoo.com.br [image: My QR VCard] http://s.wisestamp.com/links?url=http%3A%2F%2Fbr.linkedin.com%2Fin%2Fcristianovasconcelossn=Y3Zhc2NvbmNlbG9zYkBnbWFpbC5jb20%3D
[oracle_br] Re:Re: URGENTE - Banco/Sistema degradado ...
Caros Amigos, Aos que gentilmente responderam minha solicitação de ajuda, AGRADEÇO IMENSAMENTE. Ao nobre Fernando Franquini que com tão hábil capacidade de julgar, questionou a contratação de um DBA, acredito jovem SUMIDADE que, VOCÊ NÃO DEVERIA FAZER PARTE de um grupo de discussões, haja vista, termos, agora sim, VERDADEIRAS SUMIDADES NO ASSUNTO, tais como, e aí rogo pela liberdade de citar ambos, Mosan Santos e José Laurindo Chiappa, entre muitos outros que VERDADEIRAMENTE DOMINAM O ASSUNTO e com muita HUMILDADE, RESPEITO, DIGNIDADE E ÉTICA PROFISSIONAL ajudam aos demais colegas de trabalho. Acredito que você por não ter no momento algo de real proveito e aprazível para dizer, pronunciou-se talvez pensando em si mesmo. Desejo a você, Fernando Franquini, sucesso e, que não venha no futuro a precisar do auxílio dos profissionais que realmente enobrecem os grupos de discussões Oracle, caso contrário, segundo sua visão estreita do que venha a ser um grupo de discussões e ajuda mútua, você também vai precisar contratar um VERDADEIRO DBA ORACLE para transmitir-lhe ensinamentos, primeiro de ÉTICA PROFISSIONAL, depois de Oracle . -- Cristiano Vasconcelos Barbosa .'. Analista de Sistemas. DEUS MEUMQUE JUS.'. DÓMINI SUMUS.'. [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] URGENTE - Banco/Sistema degradado ...
Caros Amigos CENÁRIO: S.O. - Enterprise Linux Enterprise Linux AS release 4 (October Update 7) Linux servidor.dominio.istancia.local 2.6.9-78.0.0.0.1.ELsmp #1 SMP Fri Jul 25 16:04:35 EDT 2008 x86_64 x86_64 x86_64 GNU/Linux DB - Oracle Database 10g Release 10.2.0.3.0 - 64bit Production CASO: Não é sempre, mas em determinados momentos nosso sistema torna-se lento e degradado em performance, quando acontece é entre o período de 12:00 às 13:30, neste período rodam alguns jobs, assim: a) Gostaria de saber como identificar os jobs que estão rodando naquele momento e seu tempo de duração de execução. b) Em relação a performance do banco, como posso identificar qual consulta e/ou procedimento está degradando o banco naquele momento, com o respectivo nome do usuário, seu SID e SERIAL e se possível SQLTEXT para que possa derrubá-lo??? OBRIGADO PELA AJUDA -- Cristiano Vasconcelos Barbosa .'. Analista de Sistemas. DEUS MEUMQUE JUS.'. DÓMINI SUMUS.'. [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Derrubando usuários
CENÁRIO: S.O. - Enterprise Linux Enterprise Linux AS release 4 (October Update 7) Linux servidor.dominio.istancia.local 2.6.9-78.0.0.0.1.ELsmp #1 SMP Fri Jul 25 16:04:35 EDT 2008 x86_64 x86_64 x86_64 GNU/Linux DB - Oracle Database 10g Release 10.2.0.3.0 - 64bit Production CASO: Caros amigos, atualmente com a estrutura abaixo, consigo derrubar usuários com mais de uma hora de conexão inativa, por exemplo, contudo gostaria de acrescentar a estrutura o texto de sql utilizado pelo usuário, para saber o que ele estava fazendo, como poderia ser feito isto Fiz alguns testes com o v$sql, com o v$sqltext, o v$sqlarea, contudo, ao final, comparando a saida da estrutura original com a modificada com a inclusão das referidas visões, o resultado final não são os mesmos. Teria como implementar o texto de sql nesta estrutura, conservando a mesma saída, apenas acrescentando o texto sql. Estou enviando a estrutura completa para que os amigos possam testar e constatar as saídas como são distintas Estrutura ORIGINAL: SELECT'ALTER SYSTEM KILL SESSION ' || CHR (39) || s.sid || ',' || s.serial# || CHR (39) || ' IMMEDIATE; /* ' || to_char(s.logon_time, 'DD.MON. - HH24:MI:SS') || CHR (32) || CHR (39) || CHR (32) || UPPER (s.osuser) || CHR (32) || CHR (39) || CHR (32) || UPPER (s.program) || ' */' as -- KILL SESSION FROM v$session s WHERE s.username IS NOT NULL AND s.username NOT IN ('SYS', 'SYSTEM') AND s.event = 'SQL*Net message from client' AND s.SECONDS_IN_WAIT 3600 -- 1 hora ORDER BY to_char(s.logon_time, 'HH24:MI:SS') ALTER SYSTEM KILL SESSION '540,39355' IMMEDIATE; /* 08.JUN.2011 - 12:08:38 ' USUARIO 01' */ ALTER SYSTEM KILL SESSION '507,796' IMMEDIATE; /* 08.JUN.2011 - 13:32:28 ' USUARIO 02' */ ALTER SYSTEM KILL SESSION '581,32756' IMMEDIATE; /* 08.JUN.2011 - 13:38:00 ' USUARIO 03' */ ALTER SYSTEM KILL SESSION '610,16866' IMMEDIATE; /* 08.JUN.2011 - 13:48:15 ' USUARIO 04' */ ALTER SYSTEM KILL SESSION '661,49836' IMMEDIATE; /* 08.JUN.2011 - 13:48:44 ' USUARIO 05' */ ALTER SYSTEM KILL SESSION '494,7625' IMMEDIATE; /* 08.JUN.2011 - 13:55:14 ' USUARIO 06' */ ALTER SYSTEM KILL SESSION '598,22462' IMMEDIATE; /* 08.JUN.2011 - 13:56:56 ' USUARIO 07' */ ALTER SYSTEM KILL SESSION '622,27210' IMMEDIATE; /* 08.JUN.2011 - 14:08:40 ' USUARIO 08' */ OBS: Ao rodar o SELECT original, temos 08 SAÍDAS DIFERENTES. Estrutura MODIFICADA UNDEF sid SELECT'ALTER SYSTEM KILL SESSION ' || CHR (39) || s.sid || ',' || s.serial# || CHR (39) || ' IMMEDIATE; /* ' || to_char(s.logon_time, 'DD.MON. - HH24:MI:SS') || CHR (32) || CHR (39) || CHR (32) || UPPER (s.osuser) || CHR (32) || CHR (39) || CHR (32) || UPPER (s.program) || CHR (32) || CHR (39) || CHR (32) || UPPER (st.sql_text) || ' */' as -- KILL SESSION FROM v$session s, v$sqltext st WHERE s.username IS NOT NULL AND st.address = s.sql_address AND st.hash_value = s.sql_hash_value AND s.username NOT IN ('SYS', 'SYSTEM') AND s.osuser NOT IN ('cvasconcelos') AND s.event = 'SQL*Net message from client' AND s.SECONDS_IN_WAIT 3600 -- 1 hora ORDER BY to_char(s.logon_time, 'HH24:MI:SS') ALTER SYSTEM KILL SESSION '610,16866' IMMEDIATE; /* 08.JUN.2011 - 13:48:15 ' USUARIO 04' ' E(SUBSTR(:B1,1,1),'R','T') || SUBSTR(:B1,2,4) ALTER SYSTEM KILL SESSION '610,16866' IMMEDIATE; /* 08.JUN.2011 - 13:48:15 ' USUARIO 04' ' SELECT NM_TELA || ''FROM TB_TELA WHERE CD_TELA = REPLAC */ OBS: Ao rodar o SELECT modificado, temos apenas uma saída, visto que, o ID é repetido. Ambos os SELECT´s foram rodados na mesma hora, apresentando resultados diferentes. -- Cristiano Vasconcelos Barbosa .'. Analista de Sistemas. DEUS MEUMQUE JUS.'. DÓMINI SUMUS.'. [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] RES: RES: [oracle_fasttrack] Automatização geração de relatórios
Meus amigos de fórum, Agradeço a todos pela ajuda dispensada, nosso amigo Sergio Tavares Coutinho do fórum oracle_fasttrack foi feliz em suas colocações, meu problema foi resolvido. Mais uma vez, obrigado Sergio. -- Cristiano Vasconcelos Barbosa .'. Analista de Sistemas. DEUS MEUMQUE JUS.'. DÓMINI SUMUS.'. [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Automatização geração de relatórios
Caros amigos, CENÁRIO: S.O. - Enterprise Linux Enterprise Linux AS release 4 (October Update 7) Linux servidor.dominio.istancia.local 2.6.9-78.0.0.0.1.ELsmp #1 SMP Fri Jul 25 16:04:35 EDT 2008 x86_64 x86_64 x86_64 GNU/Linux DB - Oracle Database 10g Release 10.2.0.3.0 - 64bit Production CASO: Estou precisando automatizar geração diariá de informações em arquivo texto, onde na nomenclatura do arquivo gerado tenha nomearq_ddmmyy:hhmm.txt. Este arquivo após ser gerado é copiado do servidor da DB para uma outra máquina e jogado em uma área de ftp. Pois bem, este procedimento atualmente está sendo feito manualmente, então gostaria de saber como poderia ser feito automaticamente em determinada hora do dia sem que seja preciso intervir. Estou em duvida de como proceder em relação a automatização da cópia a ser realizada pelo servidor e principalmente em relação a geração do arquivo .TXT no oracle: O procedimento pode ser feito pelo Scheduler Job do oracle, ou poderá ser feito pela Cron do S.O. Linux disparando um shell de conexão com SQL*Plus chamando um SCRIPT com a estrutura de SELECT a qual gerará as informações necessárias ???. Caso alguns dos amigos possuam essa estrutura, favor repassá-la com instruções. Em sugestão dadas por alguns colaboradores dos grupos, implementei a rotina abaixo descrita na cron do linux: ## # CRONTAB # # Data: 12/05/2011 ## # 53 08 12 5 4 /bin/su - oracle -c sqlplus usuario/senha @/home/oracle/usr_criacao.sql /var/tmp/usr_criacao.log1 Onde 15 significa: aos 15 minustos Onde 14 significa: às 14 horas Onde 11 significa: dia 11 do mês Onde 5 significa: Mês 5 Onde 3 significa: Quarta-feira Onde oracle -c significa: rodar a linha de comando após conectar usuário oracle Conteudo do Script: REM Script Teste:usr_criacao.sql spool /home/oracle/usr_criacao.txt SELECT u.name, D.ACCOUNT_STATUS, D.LOCK_DATE, TO_CHAR (u.ctime, 'dd/mm/ hh24:mi:ss') AS Criao, TO_CHAR (u.ptime, 'dd/mm/ hh24:mi:ss') AS Modificacao FROM sys.user$ u, dba_users d WHERE u.name = d.username AND u.ctime = D.CREATED AND d.created BETWEEN TO_DATE ('01/01/2009', 'dd/mm/yy') AND TO_DATE ('31/12/2009', 'dd/mm/yy') ORDER BY d.created spool off -- Saída de Log´s: --- CENÁRIO 01 Log da rotina quando gerada pela Crontab: # cat usr_criacao.log1 SQL*Plus: Release 10.2.0.3.0 - Production on Qui Mai 12 08:53:01 2011 Copyright (c) 1982, 2006, Oracle. All Rights Reserved. Conectado a: Oracle Database 10g Release 10.2.0.3.0 - 64bit Production SQL Desconectado de Oracle Database 10g Release 10.2.0.3.0 - 64bit Production CENÁRIO 02 Rotina gerada sem ser pela Crontab, linha de comando executada no prompt do sistema: # /bin/su - oracle -c sqlplus usuario/senha @/home/oracle/usr_criacao.sql /var/tmp/usr_criacao.log Log da rotina quando gerada sem ser pela Crontab: # cat usr_criacao.log SQL*Plus: Release 10.2.0.3.0 - Production on Qui Mai 12 08:24:42 2011 Copyright (c) 1982, 2006, Oracle. All Rights Reserved. Conectado a: Oracle Database 10g Release 10.2.0.3.0 - 64bit Production SQL SQL PERGUNTA ? Diante dos dois cenários acima expostos, gostaria de saber o por que da não geração das informações por parte do script, ONDE ESTÁ O ERRO, por que no CENÁRIO 01 após a conexão ao sqlplus o script não é gerado e sim desconectado do banco ???. Por que no CENÁRIO 02 é gerada essa saída SQL SQL ficando a sessão ativa, como se estivesse gerando algo sem na verdade gerar nada, tendo que ser derrubada para findar. Aos amigos com maior experiência na plataforma, peço ajuda, acredito ser um detalhe, só que QUAL ??? Mais uma vez AGRADEÇO A ATENÇÃO E AJUDA DISPENSADAS. -- Cristiano Vasconcelos Barbosa .'. Analista de Sistemas. DEUS MEUMQUE JUS.'. DÓMINI SUMUS.'. [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Ultimo Login do Usuario
Caros amigos, Boa tarde!, Bem, para começar irei especificar a plataforma de trabalho: Tenho um servidor linux rodando o Oracle 10g. Já fiz alguns testes mas ainda não tenho o que preciso, tenho muitos usuários cadastrados no banco de dados, INFELIZMENTE, novos usuários são constantemente inseridos no DB pelo sistema fim para que possam trabalhar no mesmo, acontece que, a dispensa de alguns não são excluídas do sistema, nem muito menos comunicadas para mim, para que possa exclui-las do banco, desta feita, gostaria de saber quais usuários estão inativos no banco em uma faixa de data, por exemplo, quais usuários não usam o informações do banco de 01/01/2011 a 25/03/2011. Com esta informação poderei ou excluir o usuário do banco de dados, ou apenas bloquear sua conta. Obrigado ... -- Cristiano Vasconcelos Barbosa .'. Analista de Sistemas. DEUS MEUMQUE JUS.'. DÓMINI SUMUS.'. [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Instalacao do OAS 10g
(OiicSessionInterfaceManager.java:180) at oracle.sysman.oii.oiic.OiicSessionInterfaceManager.getInterfaceManager(OiicSessionInterfaceManager.java:189) at oracle.sysman.oii.oiif.oiifm.OiifmAlert.clinit(OiifmAlert.java:111) at oracle.sysman.oii.oiic.OiicInstaller.runInstaller(OiicInstaller.java:719) at oracle.sysman.oii.oiic.OiicInstaller.main(OiicInstaller.java:575) Ps.: Detalhe, a versão do *CentOS-5.5,* descrita no início da instalação, foi acrescentada no arquivo oramparam.ini contido pa pasta /install/linux/. Obrigado -- Cristiano Vasconcelos Barbosa .'. Analista de Sistemas. DEUS MEUMQUE JUS.'. DÓMINI SUMUS.'. [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] DDL CREATE PUBLIC SYNONYM
Caros amigos, Boa tarde ! Estou precisando de um SCRIPT que gere DDL para extrair de todos os objetos de um determinado OWNER o CREATE PUBLIC SYNONYM. P.exe. os CREATE PUBLIC SYNONYM das tables, views, sequences, procedures, functions, packages. Qualquer objeto que possa ter um PUBLIC SYNONYM. Obrigado. -- Cristiano Vasconcelos Barbosa .'. Analista de Sistemas Banco de Dados. DEUS MEUMQUE JUS.'. DÓMINI SUMUS.'. [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] RMAN - database point-in-time recovery (Recuperaçã o baseada em horário)
Caros amigos, saudações e uma boa tarde! Preciso testar a restauração do DB Oracle 10G pelo RMAN no modo ARCHIVELOG, tentando recuperar o banco em um certo ponto no tempo. Aparentemente seria fácil se fosse realizado no mesmo servidor, acontece que estou querendo fazer esta recuperação em outro servidor, no caso, SERVIDOR2, abaixo explico melhor o caso concreto. Meu cenário: Tenho um servidor linux rodando o Oracle 10g no modo Archivelog (SERVIDOR1), diariamente é feito na MADRUGADA um backup da área /home/oracle/flash_recovery_area completa; da área /home/oracle/app/product/102/dbs também completa, assim como uma exportação full do banco de dados, todos para um arquivo arquivo.tar que é copiado para um outro servidor (SERVIDOR2) com as mesmas configurações do principal (IDÊNTICO), inclusive com a mesma instância instalada, só que não operacional. Supondo que foi feito este backup da MADRUGADA citado acima do (SERVIDOR1) para o (SERVIDOR2), e que num cenário de desastre o servidor principal (SERVIDOR1) falhou por exemplo 9:30 horas após o backup ter sido feito para o servidor backup (SERVIDOR2) onde foi feita a recuperação da instância via RMAN, ou seja, o backup foi feito às 5:00hs da manhã e o ISSECSERVER1 parou às 14:30hs. Como seria o procedimento passo-a-passo (se for possível) para recuperar pelo RMAN no (SERVIDOR2) o banco por completo no ponto o mais próximo que possível do momento em que ocorreu o desastre do servidor principal (SERVIDOR1), para que houvesse o mínimo de perda de dados possível , ou seja, digamos que hoje às 08:30 eu fiz a recuperação completa do backup que foi feito às 5:00hs da madruga da instância que roda no SERVIDOR1, esta restauração do banco foi feita no SERVIDOR2, acontece que o SERVIDOR1 lá pelas 14:30hs parou de funcionar, então dado que já possuo uma instância completa recuperada no SERVIDOR2, basta que eu faça sua atualização para a condição anterior às 14:30hs, hora de parada do SERVIDOR1, digamos que eu queira recuperar até às 14:00hs, como devo então proceder, quais arquivos devo copiar para o SERVIDOR2 para que eu possa através do RMAN fazer o chamado database point-in-time recovery - Recuperação baseada em horário. Se tiverem maretial, especificamente sobre o assunto, agradeço ???. -- Cristiano Vasconcelos Barbosa .'. Analista de Sistemas. DEUS MEUMQUE JUS.'. DÓMINI SUMUS.'. [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Re: [OraOracle] Recovery com o RMAN no modo ARCHIVELOG
/oradata/DB11G/datafile/o1_mf_sysaux_5fzgbs5o_.dbf channel ORA_DISK_1: restoring datafile 3 to /u01/app/oracle/oradata/DB11G/datafile/o1_mf_undotbs1_5fzgbs7x_.dbf channel ORA_DISK_1: restoring datafile 4 to /u01/app/oracle/oradata/DB11G/datafile/o1_mf_users_5fzgbsbv_.dbf channel ORA_DISK_1: restoring datafile 5 to /u01/app/oracle/oradata/DB11G/datafile/o1_mf_sca_5fzgz9q6_.dbf channel ORA_DISK_1: reading from backup piece /u01/app/oracle/flash_recovery_area/DB11G/backupset/2009_11_01/o1_mf_nnndf_TAG20091101T105818_5gv1hbvx_.bkp channel ORA_DISK_1: piece handle=/u01/app/oracle/flash_recovery_area/DB11G/backupset/2009_11_01/o1_mf_nnndf_TAG20091101T105818_5gv1hbvx_.bkp tag=TAG20091101T105818 channel ORA_DISK_1: restored backup piece 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:35 Finished restore at 01-NOV-09 Vamos fazer o recover do bancod de dados, neste momento são aplicados os archives, o RMAN irá avisar se um dos backupsets dos archives não estiver no diretório de backup. RMAN recover database; Starting recover at 01-NOV-09 using channel ORA_DISK_1 starting media recovery archived log for thread 1 with sequence 19 is already on disk as file /u01/app/oracle/flash_recovery_area/DB11G/onlinelog/o1_mf_1_5fzgf2m7_.log archived log file name=/u01/app/oracle/flash_recovery_area/DB11G/onlinelog/o1_mf_1_5fzgf2m7_.log thread=1 sequence=19 media recovery complete, elapsed time: 00:00:00 Finished recover at 01-NOV-09 Com o recover completo vamos abrir o banco de dados com a opção RESETLOGS, neste momento são criados os redologs e as tablespaces temporárias. RMAN alter database open resetlogs; database opened RMAN Pronto, seu banco ja está no ar, é sempre bom executar um novo backup após a recuperação. Uma das boas práticas é fazer o backup compactado com o comando: BACKUP AS COMPRESSED BACKUPSET DATABASE; Ou setar na configuração do RMAN via linha de comando ou no Enterprise Manager dbconsole, pode também abrir vários processos de backups (paralelo). CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET PARALLELISM 3; E determinar um diretório para guardar oa backups. CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/backup/rman/db11g/bkp_cf_db11g_%F.rman'; CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/u01/backup/rman/db11g/bkp_db11g_%U.rman'; CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/backup/rman/db11g/snap_cf_db11g.rman'; Espero ter ajudado... Abraço a todos. -- *From:* Cristiano Vasconcelos cvasconcel...@gmail.com *To:* Grupo OraOracle oraora...@yahoogrupos.com.br; Lista de Usuários Oracle usuarios_ora...@yahoogrupos.com.br; Oracle in Brazil oracle_br@yahoogrupos.com.br; Oracle Tools oracle_to...@yahoogrupos.com.br *Sent:* Sat, October 31, 2009 11:18:20 PM *Subject:* [OraOracle] Recovery com o RMAN no modo ARCHIVELOG Boa noite, Favor, tem alguem que possa me ajudar ??? !!! ... Bem, para começarmos, em resposta às indagações feitas pelo colega Chiappa, segue os parâmetros de configuração RMAN como estão hoje: RMAN show all; os parâmetros de configuração RMAN são: CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default CONFIGURE BACKUP OPTIMIZATION OFF; # default CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO COMPRESSED BACKUPSET; CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default CONFIGURE MAXSETSIZE TO UNLIMITED; # default CONFIGURE ENCRYPTION FOR DATABASE OFF; # default CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/home/oracle/ flash_recovery_ area/empresa /backcontrol/ snapcf_clp2. f'; Em resposta às suas indegações a) confirmar que o backup ESTÀ SENDO FEITO MESMO, isso não é Automático, não é por vc ter uma FRA que há backups corretos e consistentes lá dentro... R.a) A verificação é feita diariamente e SIM, EXISTEM backups corretos e consistentes na FRA. b) saber ** exatamente ** como está sendo feito esse backup - se é via script, se é comando manual, exatamente QUAL o comando RMAN que está sendo usado (provavelmente BACKUP DATABASE dentro do RMAN, mas os detalhes de sintaxe são cruciais, como os CHANNELs, tranquilamente se pode criar canais de gravação para FORA da FRA)... Precisamos saber também se o RMAN está configurado pra fazer também o backup dos CONTROLFILES (isso vc checa nele mesmo com SHOW ALL), e teríamos que saber qual é a política (ie, quando/aque horas/com que frequência vc vc está tirando backups, se são COLDs ou HOT, se são incrementais ou sempre level 0) R.b) O backup é
[oracle_br] Recovery com o RMAN no modo ARCHIVELOG
BACKUP TER SIDO FEITO para o servidor backup (SERVIDOR2), como seria o procedimento passo-a-passo para recuperar pelo RMAN no (SERVIDOR2) o banco por completo no ponto o mais próximo que possível do momento em que ocorreu o desastre do servidor principal (SERVIDOR1), para que houvesse o mínimo de perda de dados possível Quais os arquivos que devo ter restaurado no (SERVIDOR2) para a recuperação FULL do banco de dados e os comandos que devem ser dados na sequência, são os control files; os redolog´s; os datafiles, ou todos tem que ser restaurados em seus respectivos path´s para que o banco possa ser restaurado por compelo via RMAN? -- Cristiano Vasconcelos Barbosa .'. Analista de Sistemas DEUS MEUMQUE JUS.'. DÓMINI SUMUS.'. [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Recovery com o RMAN no modo ARCHIVELOG
Caros amigos, saudações e uma boa tarde! Senhores, como em momentos passados vc´s já me socorreram, estou novamente pedindo ajuda. Preciso testar a restauração do DB Oracle 10G pelo RMAN no modo ARCHIVELOG, apesar de já ter lido alguns post's sobre o assunto, ainda possuo algumas dúvidas. Meu cenário: Tenho um servidor linux rodando o Oracle 10g em Archivelog (SERVIDOR1), diariamente é feito um backup da área /home/oracle/flash_recovery_area completa; da área /home/oracle/app/product/102/dbs também completa, assim como uma exportação full do banco de dados, todos para um arquivo .tar que é copiado para um outro servidor (SERVIDOR2) com as mesmas configurações do principal, inclusive com a mesma instância instalada, só que não operacional. Muitos dizem que é MOLEZA, só que na prática tudo é diferente, e como eu não tenho essa prática de trabalhar com o RMAN ainda, estou me socorrendo de quem já tem, então te pergunto: supondo que foi feito este backup citado acima do (SERVIDOR1) para o (SERVIDOR2), e que num cenário de desastre o servidor principal (SERVIDOR1) falhou por exemplo 4 horas após o backup ter sido feito para o servidor backup (SERVIDOR2), como seria o procedimento passo-a-passo (se for possível) para recuperar pelo RMAN no (SERVIDOR2) o banco por completo no ponto o mais próximo que possível do momento em que ocorreu o desastre do servidor principal (SERVIDOR1), para que houvesse o mínimo de perda de dados possível Não querendo me aproveitar do conhecimento e ajuda, más gostaria também de algum material da Oracle e do RMAN de preferência em português ???. Agradeço pela atenção e ajuda. OBRIGADO ... -- Cristiano Vasconcelos Barbosa .'. Analista de Sistemas DEUS MEUMQUE JUS.'. DÓMINI SUMUS.'. [As partes desta mensagem que não continham texto foram removidas]