Posso criar um alerta em um ORA-
erro definido pelo usuário?
Quero que o EM me notifique quando ocorrer o seguinte erro:
begin
raise_application_error(-20118, 'myerror');
end;
/
Posso criar um alerta em um ORA-
erro definido pelo usuário?
Quero que o EM me notifique quando ocorrer o seguinte erro:
begin
raise_application_error(-20118, 'myerror');
end;
/
Meu PCI escaneado encontrou algumas vulnerabilidades no meu Exadata. Devo atualizar o pacote glibc.
Antes disso, quero fazer backup do sistema para não estragar alguma coisa. Por qual ferramenta posso fazer backup do sistema operacional?
Eu usei acronis, clonezilla, mas talvez eu tenha uma versão antiga, porque eles não são capazes de fazer backup do sistema.
Por favor, me dê algum conselho.
Quando o oracle converte implicitamente o tipo de data? de quais parâmetros isso depende?
Estou executando o seguinte:
SELECT SYSDATE - '01-01-01' FROM DUAL
e pegou :
SELECT SYSDATE - '01-01-01' FROM DUAL
*
ERROR at line 1:
ORA-01722: invalid number
por que o Oracle não está convertendo varchar '01-01-01' para data?
nls_date_format I have set to 'DD-MM-RR'
Quais riscos de segurança podem ocorrer com os usuários do domínio?
create user "OPS$KA\USERNAME" identified externally.
grant create session to "OPS$KA\MARIK";
Então MARIK que está no domínio KA, pode fazer logon no banco de dados sem senha.
Pergunto se o oracle verifica se o usuário é realmente um usuário do domínio?
Por exemplo, existe o risco de que alguém com o nome de computador LB e o nome de usuário MARIK possa se conectar ao banco de dados, mesmo que não seja um usuário de domínio?
Posso ter um sistema de proteção de dados como:
Primário: 11.2.0.1 Em espera: 11.2.0.3
Em modo de espera lógico?
Em standby físico as versões(releases) devem ser as mesmas?
Quero verificar apenas os pré-requisitos e gerar um log sem instalar o banco de dados Oracle.
Quando executo o seguinte comando:
./runInstaller -silentvalidate -responseFile /0/grid/response/crs_install_mk.rsp
Ele me mostra o seguinte erro:
The command line arguments '-silentvalidate' are not valid options. Type 'oui -help' at the command line for instructions on appropriate command line usage.
Usage: runInstaller [-options] [(<CommandLineVariable=Value>)*]
O runInstaller também tem uma opção -executePrereqs
, mas tenta iniciar o instalador no modo GUI.
Portanto, quero verificar apenas os pré-requisitos e gerar log sem iniciar uma GUI.
Versão do Oracle: 11g R2
Eu larguei o disco do diskgroup ASM:
> ALTER DISKGROUP DATA01 DROP DISK DISK1;
A Oracle fez uma operação de rebalanceamento e, em seguida, descartou o disco.
Agora, quero excluir o disco da biblioteca ASM e devolver o disco ao sistema:
# oracleasm deletedisk -v DISK1
Clearing disk header: oracleasm-write-label: Unable to open device "/dev/oracleasm/disks/DISK1":
Device or resource busy failed
Unable to clear disk "DISK1"
Os detalhes do sistema: 11.2.0.1 RAC de 2 nós
Por que o ASM não limpa o cabeçalho do disco? Onde ver o log detalhado?
------------------------------------Edit1------------- -------------------------------
# fuser /dev/oracleasm/disks/DISK1
não retorna nada em ambos os nós
Fiz backup de arquivos de dados em 31.12.2013. Ele concluiu os backups de arquivos de dados com êxito, mas os backups de archivelog falharam.
Agora, quero determinar quais archivelogs devo fazer backup para ter certeza de que meu banco de dados será recuperável após a restauração do backup de arquivos de dados de 31.12.2013.
Encontrei alerta sobre bloco corrompido no log de alerta. O bloco corrompido pertencia à tabela chamada DOCS. Como não tenho nenhum backup desse banco de dados, decidi recriar a tabela DOCS para resolver a corrupção. E aqui está um problema.
Gerou todos os scripts:
1. DDL for table.
2. DDL for constraints,triggers,indexes on the table.
3. DDL for the constraints that references this table.
4. Saved grants on this table.
Agora eu quero descartar a tabela, mas deixar suas dependências e, em seguida, recriar a tabela com suas restrições, gatilhos, índices.
Como eu posso fazer isso?
------------------------Editar
Parece ser muito simples.
criar tabela new_table como select * from my_table;
inserir dados
insira em my_table como select * from new_table
Esta solução funciona para recriar a tabela (é uma maneira correta de recriar uma tabela). Mas a corrupção não resolveu, durante a inserção na tabela no Alert.log gerou o mesmo erro sobre a corrupção do bloco.
Nos comentários @Mindaugas Riauba escreveu uma solução e funcionou. Eu só quero saber por que minha solução sobre mesa de recriação não funcionou e a solução de @Mindaugas Riauba funcionou?
Obrigado @Mindaugas Riauba novamente!
Eu configurei o backup automático do arquivo de controle:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u02/backup/%F';
Em seguida, adicionei um tablespace de teste ao banco de dados:
create tablespace test datafile '+DATA01' size 10m;
E não há backup automático do arquivo de controle e também nenhuma entrada no arquivo de log de alerta sobre como fazer o backup.
Por quê?
Estou usando o Oracle 10g XE. Percebi um erro de bloco corrompido no arquivo de dados 1 no log de alerta. Como descobri, o Oracle XE não oferece suporte ao Block Media Recovery (precisa ser Enterprise Edition).
Então eu fiz o seguinte:
shutdown immediate;
startup mount;
recover database;
alter database open;
Mas os blocos corrompidos ainda estão lá.
Meu comando de recuperação não deveria ter resolvido esse problema? Por que não?
Editar
Eu restaurei antes de recuperar e agora funciona. Portanto, as seguintes etapas estão funcionando:
shutdown immediate;
startup mount;
restore database;
recover database;
alter database open;
A recuperação apenas procura o SCN e, se o SCN for atual para o arquivo de dados, não recupera nada? Nem mesmo os corrompidos?
Como eu acho que a recuperação é apenas para aplicar logs de arquivo (ou logs online) para alcançar o SCN atual, mas não corrigir corrupções.
Eu quero que meu DB envie os dados para o cliente de forma criptografada. Pesquisei no Google e descobri que o Oracle tem SSL. Infelizmente, não consigo encontrar um tutorial passo a passo que explique como criar um certificado autoassinado, configurar o SSL no lado do banco de dados, configurar o SSL no lado do cliente e testá-lo.
Por favor, compartilhe seu conhecimento comigo.
Agradeço antecipadamente.
---EDITAR
Meus passos:
new-root-ca.sh
e importado como um certificado confiável no servidor de banco de dados.sign-server-cert.sh
e importado como um certificado de usuário no servidor de banco de dados.Aqui estou confuso, .... não sei como configurar o lado do cliente
Em ssl.ca-0.1 também há arquivos new-user-cert.sh
e sign-user-cert.sh
, para que são usados, não entendo.
Tentei executá-los usando a mesma solicitação de certificação que foi exportada do servidor de banco de dados e tentei importá-la na carteira do cliente ESTOU ERRADO?
Pode ser sim, porque não importa certificado de usuário... Estou muito confuso, não entendo a ideia principal.
Copiei a carteira gerada no servidor de banco de dados no local da carteira do lado do cliente, ESTOU CERTO?
Eu quero desligar um nó no RAC. Eu fiz os seguintes passos:
Encerrar instância de banco de dados
export ORACLE_SID=mydb1
sqlplus / as sysdba
shutdown immediate;
encerrar instância ASM
. oraenv
+ASM1
sqlplus / as sysasm
shutdown immediate;
Mas apresenta o seguinte erro:ORA-15097: cannot SHUTDOWN ASM instance with connected client
Por favor, diga-me quais etapas devo fazer para encerrar todos os serviços e instâncias no servidor que faz parte do RAC?
Eu fiz os seguintes passos:
Exclua o backup INCREMENTAL LEVEL 0 sem informar ao controlfile. Portanto, excluí-lo manualmente. E não fez verificação cruzada.
Banco de dados com backup com NÍVEL INCREMENTAL 1 (sem fazer verificação cruzada). Como pode ser surpreendente, o log me mostrou que o INCREMENTAL LEVEL 1 foi feito com sucesso.
Observe que não tenho backup INCREMENTAL LEVEL 0 , mas controlfile não sabe disso. Eu tenho apenas INCREMENTAL LEVEL 1 .
Tentei restaurar o banco de dados com esse backup, mas é claro que não consegui. Ele estava me dizendo que nenhum backup do arquivo de dados 1-5 foi encontrado ...
Se controlfile soubesse sobre backups EXPIRED, então o backup INCREMENTAL LEVEL 1 primeiro faria INCREMENTAL LEVEL 0 e depois disso INCREMENTAL LEVEL 1 .
Como evitar esta situação. Tenho que usar o chrosscheck no meu script de backup? Ou definir a janela de recuperação no RMAN?
Eu tenho banco de dados Oracle 11g. O backup é feito pelo Netbackup Server. Portanto, o próprio Netbackup exclui os backups por meio de sua retenção. A política de retenção do RMAN está configurada para REDUNDÂNCIA 2.
Por favor, me aconselhe.
Se eu alterar o IP do servidor de banco de dados Oracle, quais problemas podem ser causados e como resolvê-los?
hosts
arquivotnsnames.ora
arquivo listener.ora
arquivotnsnames.ora
arquivos de clientesPelo que sei não é necessário ter listener.ora
e tnsnames.ora
arquivos no servidor de banco de dados; é necessário se você precisar se conectar a outro banco de dados. Estou certo?
Eu tenho banco de dados de instância única, versão 11.2.0.1.0
Descobri que meu banco de dados, especificamente o USERS
tablespace, aumentou drasticamente de tamanho.
Como posso descobrir quais operações DML estão sendo executadas nos objetos localizados neste tablespace?
Gostaria de saber se é necessário escrever commit após insert/delete/update em function/procedure?
Exemplo:
create or replace function test_fun
return number is
begin
delete from a;
return 0;
end;
ou procedimento
create or replace procedure aud_clear_pro
as
begin
delete from a;
end;
precisa de commit após a exclusão?
Não consigo entender a seguinte situação:
Se eu chamar a função/procedimento da janela SQL, ela requer confirmação
mas
Se eu agendar uma função/procedimento usando dbms_scheduler e executar o trabalho, a instrução delete será confirmada automaticamente.
PORQUE?
Quero agendar função no Oracle.
begin
dbms_scheduler.create_job(job_name => 'aud_clear',
job_type => 'PLSQL_BLOCK',
job_action => 'aud_clear_fun',
start_date => sysdate,
repeat_interval => 'freq=daily; byminute=0; bysecond=0',
end_date => null,
enabled => true,
comments => 'Created By: MK; Truncates aud$ table');
end;
Já tentei indicar vários outros valores para job_action, por exemplo:
declare
my_var number;
begin
select aud_clear_fun into my_var from dual;
end;
Mas não funciona. Você pode me fornecer a sintaxe correta da função de agendamento?
--aud_clear_fun
create or replace function aud_clear_fun
return number is
begin
delete from a;
return 0;
end;
--Trabalho
begin
dbms_scheduler.create_job(job_name => 'aud_clear',
job_type => 'PLSQL_BLOCK',
job_action => 'begin
mari_dba.aud_clear_fun();
end;',
start_date => sysdate,
end_date => NULL,
repeat_interval => 'freq=daily; byminute=0; bysecond=0',
enabled => true);
end;
--Execução
begin
dbms_scheduler.run_job('aud_clear');
end;
--Erro
ORA-06550: line 2, column 50:
PLS-00221: 'AUD_CLEAR_FUN' is not a procedure or is undefined
ORA-06550: line 2, column 50:
PL/SQL: Statement ignored
ORA-06512: at "SYS.DBMS_ISCHED", line 185
ORA-06512: at "SYS.DBMS_SCHEDULER", line 486
ORA-06512: at line 2
View program sources of error stack?
Eu tenho o Oracle RAC nos servidores muito poderosos e pode-se dizer que esses servidores têm memória extra, cpu e armazenamento :) ... então meus servidores são muito mais poderosos do que o necessário.
Meu gerente e outros administradores (que não têm recursos suficientes) precisam que meu RAC seja movido para a máquina virtual, para utilizar os servidores RAC para suas necessidades.
Preciso do seu conselho... O que fazer? Preciso mover meu RAC em máquinas virtuais? se não, que argumentos devo usar para provar que essa ideia é estúpida?
Muito obrigado, esperando suas sugestões e argumentos inteligentes...
Eu tenho uma coluna CLOB e quero ler seus dados linha por linha para inseri-los em outra tabela.
Agora vamos criar a mesma situação que eu tenho:
Dados em uma tabela MyTable_1
OWNER | TABLE_NAME | SQL
----------------------------
HR | AAA | <CLOB>
Nela <CLOB>
constam os seguintes dados:
CREATE TABLE AAA
( A NUMBER
);
Eu quero que minha tabela fique assim (vamos chamá-la de MyTable_2 ):
OWNER | TABLE_NAME | SQL
----------------------------
HR | AAA |CREATE TABLE AAA
HR | AAA |( A NUMBER
HR | AAA |);