quarta-feira, 27 de outubro de 2010

Importando dados do txt

O arquivo pode estar no formato TXT ou no formato CVS que poderá ser aberto em vários editores. Segue abaixo um exemplo de arquivos de dados.

1 passo: Criar um arquivo .ctl com a seguite estrutura

LOAD DATA
INFILE 'imp_uo.txt' --arquivo a ser importado
INTO TABLE IMP_UO -- tabela que ira receber os dados
FIELDS TERMINATED BY ';' -- delimitador
(NIDENTIFICADOR, SNUMERO, SNOME, SORGAO, SUGRESP) -- campos da tabela

2 passo: Executar o comando no prompt do DOS

sqlldr userid=usuario/senha@instancia control=arquivodopasso1.ctl log=logfile.log

quinta-feira, 14 de outubro de 2010

COMO BLOQUEAR CONEXÕES DE APLICATIVOS

CREATE OR REPLACE TRIGGER "SYS"."AUDIT_LOGON" AFTER LOGON ON DATABASE
DECLARE
v_sid number;
v_program varchar2(64);
v_msg varchar2(200);
BEGIN
EXECUTE IMMEDIATE 'SELECT DISTINCT sid FROM sys.v_$mystat'
INTO v_sid;

EXECUTE IMMEDIATE 'SELECT program FROM sys.v_$session WHERE sid = :b1'
INTO v_program
USING v_sid;

v_msg := 'Tentativa de conexao com: ' ||v_program||' recusada!!!';

-- programas bloqueados
IF (UPPER(v_program) LIKE '%TOAD%' OR
UPPER(v_program) LIKE '%PLSQLDEV%' OR
UPPER(v_program) LIKE '%MSACCESS%' OR
UPPER(v_program) LIKE '%EXCEL%' OR
UPPER(v_program) LIKE '%PLUS%') THEN
RAISE_APPLICATION_ERROR(-20000,v_msg,true);
END IF;
END;

quinta-feira, 12 de agosto de 2010

terça-feira, 10 de agosto de 2010

Listar Colunas das Tabelas

Para listar as colunas de uma tabela ou esquema basta executar a seguinte consulta como SYS.

SELECT * FROM ALL_TAB_COLUMNS

quarta-feira, 7 de julho de 2010

Import / Export

imp system/senha@tns fromuser=usuario touser=usuario file=arquivo.dmp log=arquivo.log analyze=no ignore=yes buffer=100000


exp system/senha@tns owner=nomedoesquema file=nomedoesquema.dmp log= nomedoesquema.log compress=no consistent=yes statistics = none

segunda-feira, 31 de maio de 2010

OBJETOS INVÁLIDOS

Para listar os objetos inválidos na sua base de dados execute a sequinte instrução SQL

SELECT OWNER, OBJECT_NAME, OBJECT_TYPE FROM DBA_OBJECTS WHERE STATUS = 'INVALID' ORDER BY OWNER,OBJECT_TYPE;

Para recompilar objetos inválidos na base basta executar o seguinte comando:

@?/rdbms/admin/utlrp.sql

segunda-feira, 24 de maio de 2010

Alterando uma TableSpace

As vezes acontece de criarmos uma tabela apontando para uma tablespace errada, se isso acontecer não se desespere, temos como alterar esse valor passando a apontar para a tablespace desejada, para isso execute o seguinte script:

ALTER TABLE MOVE TABLESPACE


Como não iremos fazer isso para todas as tabelas criei um scrit para facilitar a vida. hehe

SELECT 'ALTER TABLE ' ( TABLE_NAME ) ' MOVE TABLESPACE ' FROM DBA_TABLES WHERE OWNER = 'DONO DO OBJETO';


Detalhes, se a tabela tiver campo BLOG.. vai da pau


OBS: Troque os parenteses () por PIPE

quarta-feira, 12 de maio de 2010

Número máximo de 20 sessões no Oracle XE

Matar sessão

Para matar a sessão de um determiando usuário primeiro você deve saber o seu SID e SERIAL, para isso basta executar a sql logado como SYS

SELECT SID, SERIAL#, USERNAME, MACHINE FROM V$SESSION

Após descobrir o SID e SERIAL execute:

ALTER SYSTEM KILL SESSION 'SID_DESEJADO, SERIAL#_DESEJADO' IMMEDIATE;

Alterando valor do total de erros de login

O Oracle por questões de segurança limita o usuário errar a sua senha no máxim 10 vezes, após isso a conta do usuário é bloqueada gerando o erro ORA-28000, para evitar isso podemos alterar o parâmetro que limita essa quantidade, lembrando que fazendo isso você estará tirando a segurança do seu banco de dados, para verificar esse valor execute o seguinte script como SYS:

SELECT * FROM DBA_PROFILES WHERE PROFILE = 'DEFAULT' AND RESOURCE_NAME = 'FAILED_LOGIN_ATTEMPTS'

A coluna LIMIT informa o total de erros de login. Para alterar esse valor faça:

ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS "NOVO_VALOR";

Desbloqueando Usuario

Quando você recebe o erro ORA-28000: The account is locked é porque o usuário errou a senha inúmeras vezes, pra ser mais específico 10 vezes, isso é o valor default que o oracle permite. Então para desbloquear a conta do usuário você deverá executar o seguinte script como SYS:

ALTER USER "NOME DO USUARIO" IDENTIFIED BY "NOVA SENHA" ACCOUNT UNLOCK;


Com isso você irá definir uma nova senha para o usuário bloqueado e ele estará disponível para fazer o login no Oracle.

sexta-feira, 7 de maio de 2010

Recuperar senha do usuário SYS

Caso você tenha esquecido a senha do usuario SYS ou SYSTEM, não se desespere hehe, no Oracle tem como você redefinir essas senhas. Para isso você deve seguir os seguintes passos:

1 - remova o arquivo PWD.ORA , caso esteja com medo basta renomeá-lo. Esse arquivo encontra-se no diretorio $ORACLE_HOME/database ou $ORACLE_HOME/dbs
2 - No prompt de comando digite: ORAPWD file= diretorio\PWD.ORA password=novasenha

Pronto com isso você redefiniu a senha do usuario SYS, para testar entre no sqlplus utilizando a nova senha.

SQLPlus sys/novasenha as sysdba

Descobrindo objetos criados

Para listar os objetos criados em uma determinada data/hora basta fazer uma consulta na tabela DBA_OBJECTS, nela existe um campo CREATED que indica a data e hora em que o objeto foi criado.

Isso me salvou de deixar "lixo" para o usuario SYS.. hehe