Arquivo para março, 2009

Problema ao Recompilar Package após atualizar Banco de Dados

segunda-feira, março 23rd, 2009

Olá Pessoal

Hoje estarei compartilhando um Problema (Erro) que me fez perder um bom tempo para resolver.

Tudo isso devido o Programa PL/SQL Developer não conseguir recompilar todas as Packages com sucesso.

Recompilei Package por Package e Trigger por Trigger e nada com PL/SQL Developer.

Com isso resolvi mudar a forma de recompilar utilizando a Procedure compile_schema da Package DBMS_UTILITY com SQLPLUS.

Segue abaixo a situação do ambiente e como resolvi.

————————————————————————————-

ERRO SOLICITADO:
Erro após atualizar um Package ou Trigger no Banco de Dados.

ORA-04061: Existing state of string has been invalidated.

ORA-04061: Estado existente de package (USER.REPLIC) foi invalidado.

ORA-06508: PL/SQL: não foi localizada a unidade de programa que está sendo chamada: (USER.REPLIC).

ORA-04088: Erro durante a execução do gatilho (USER.T_COM_FECHAMENTO_IMPORTACAO).

————————————————————————————

CAUSA:
Tentativa de reiniciar a execução de um Package usando existente estado que tem tornado inválido ou inconsistente com o Package, porque o Package tem sido alterado ou dropado.

Programa PL/SQL Developer recompila todos os objetos, consta a Package como compilada com sucesso, mas quando roda a aplicação da Erro na Package.

————————————————————————————

SOLUÇÃO:
Tentar novamente recompilar todos os Pacotes; este erro deveria ser causado a situação atual de todos os pacotes para ser re-inicializado. Executar DBMS_UTILITY.compile_schema.

A Procedure COMPILE_SCHEMA na Package DBMS_UTILITY compila todas as Procedures, Functions, Packages, e Triggers em um Schema específico.

Conectar como SYS ou SYSTEM no SQLPLUS e executar o seguinte comando setando o Schema:

SQL>exec dbms_utility.compile_schema(schema=>’nomeschema’);

Procedimento PL/SQL concluído com sucesso.

Pronto, objetos recompilados com sucesso.

Abraço,

Bruno Murassaki

Comandos Básicos Administração Banco de Dados Oracle

quinta-feira, março 5th, 2009

Olá Pessoal,

Sabe quando um cliente liga deseperado para poder desligar o Servidor de Banco de Dados pois a energia acabou e a bateria do Nobreak está acabando?  Sim, são nesses casos que o Suporte aciona o DBA, mas por algum motivo maior não conseguiram entrar em contato com DBA.

Então o Suporte mesmo pode parar o Banco de Dados corretamente, pois quando voltar o Banco de Dados o Processo de Background SMON não precisrá executar a recuperação da Instância. Evitando assim um crash do Banco de Dados.

Sei que para muitos DBAs esses comandos básicos ja estão mais que decorados, mas estou postando este material para iniciantes ou pessoas que sejam suporte e não conseguiram contactar o DBA. Com isso ele prescisa desligar o Banco de Dados corretamente com esses comandos.

Esse post é dedicado ao meu amigo Jasper que me solicitou esse artigo.

———————————————————————————

1- Iniciar e Parar o Listener

Inicar: lsnrctl start

Parar: lsnrctl stop

Status: lsnrctl status

———————————————————————————

2- Iniciar e Parar o Banco de Dados Oracle Linux

2.1- Iniciar o Banco de Dados:

Conectado como usuario oracle no Linux digite:

sqlplus /nolog

SQL> conn / as sysdba

SQL> startup
ORACLE instance started.
Total System Global Area  184549376 bytes
Fixed Size                             2019448 bytes
Variable Size                     109055880 bytes
Database Buffers                 71303168 bytes
Redo Buffers                          2170880 bytes
Database mounted.
Database opened.

———————————————————————————

2.2 - Declaração SQL para Verificar o Status do BAnco de Dados

SQL> SELECT status FROM V$INSTANCE;

———————————————————————————

2.3- Parar o Banco de Dados:

Conectado como usuario oracle no Linux digite:

sqlplus /nolog

SQL> conn / as sysdba

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
———————————————————————————

3- Iniciar e Parar o Enterprise Manager

Inicar: emctl start dbconsole

Parar: emctl stop dbconsole

Status: emctl status dbconsole

———————————————————————————

4- Desligar o Linux Red Hat

Pronto, após o Banco de Dados estar parado e todos

os seus serviços, agora iremos desligar o Linux:

Não tenho certeza se todos as distribuições

funcionam dessa forma, mas no Red Hat é asssim:

halt -p

———————————————————————————

Abraço

Bruno Murassaki

Problema OEM: Pagina Home do OEM(DB console): java.lang.Exception: IOException in sending Request

terça-feira, março 3rd, 2009

Olá Pessoal,

Hoje irei comentar sobre um problema com Enterprise Manager após a troca do horário de Verão. Esse erro acontecia após logado como SYS ou SYSTEM navegando na aba Home.

SITUACAO DO AMBIENTE (Red Hat Enterprise Linux 5):
Verificar Timezone do Linux:
Descobrir TIme Zone do Linux /etc/sysconfig/clock
America/Sao_Paulo
—————————————————
Banco de Dados Oracle 10g 10.2.0.4
Brazil/East

ERRO SOLICITADO PELO CLIENTE:
Erro na Pagina Home do Enterprise Manager(DB console): java.lang.Exception: IOException in sending Request

CAUSA: TIMEZONE desconfigurado no Agent do Enterprise Manager devido a troca de Horário de Verão.

SOLUCAO:
1-Criar Variavel de Ambiente no Bash_profile
TZ=Etc/GMT+3
export TZ

Para Horário de Verão utilize:
TZ=Etc/GMT+2

Para Horário de Inverno utilize:
TZ=Etc/GMT+3

2-Rodar o Seguinte comando:
emctl resetTZ agent

3- conectar com o usuario SYSMAN e executar os seguinte comandos:
sqlplus /nolog
SQL>conn sysman/senha
SQL>exec mgmt_target.set_agent_tzrgn( ‘nome_servidor:3938′ , ‘Etc/GMT+3′);
SQL>commit;

4-Iniciar o Enterprise Manager:
emctl stop dbconsole
emctl start dbconsole

Abraço

Bruno Murassaki