quinta-feira, 30 de dezembro de 2010

Wraping PL/SQL code

Segue mais uma dica interessante.

O comando wrap no Oracle, usado para esconder o código fonte PL/SQL.
Para encriptar um arquivo Oracle você deverá:
Acessar o prompt :
Navegar até a pasta onde o arquivo se encontra e executar o seguinte comando:

Wrap iname=nomedoarquivo.sql oname=nomedoarquivocriptografado

Para detalhes como restrições e outras implementações segue link abaixo:

http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28370/wrap.htm

segunda-feira, 27 de dezembro de 2010

COMANDOS ÚTEIS ORACLE

Pessoal,

Achei interessante postar alguns comandos que podem ser úteis no dia a dia de um DBA Oracle.


-- VERIFICA INSTANCIA (IDENTIFICAR NOME DA INSTANCIA E INFORMAÇÕES DA MESMA)
SELECT * FROM GLOBAL_NAME;
SELECT * FROM V$INSTANCE;

--VERSAO DO ORACLE (VERIFICAR QUAL É A VERSAO DO ORACLE)
SELECT VERSION FROM V$INSTANCE

-- VERIFICAR QUAIS SÃO OS USUÁRIOS DO SISTEMA (VERIFICAR TODOS OS USUÁRIOS EXISTENTES)
SELECT * FROM DBA_USERS

-- CONTA OBJETOS DO SCHEMA (CONTA E LISTA TODOS OS TIPOS DE OBJETOS COM UM OWNER ESPECÍFICO)
SELECT COUNT(OBJECT_TYPE), OBJECT_TYPE
FROM DBA_OBJECTS
WHERE OWNER LIKE 'RM%'
GROUP BY OBJECT_TYPE;
SPOOL OFF

-- VERIFICA ATRIBUTOS DO USUÁRIO (ATRIBUTOS GERAIS DE USUÁRIOS)
SELECT * FROM DBA_USERS
WHERE USERNAME LIKE 'RM%';
SELECT * FROM DBA_TAB_PRIVS
WHERE GRANTOR LIKE 'RM%';

-- VERIFICA PREVILEGIOS DO USUÁRIO
SELECT * FROM DBA_SYS_PRIVS
WHERE GRANTEE LIKE 'RM%';
SELECT * FROM DBA_ROLE_PRIVS
WHERE GRANTEE LIKE 'RM%';

-- DESATIVA USUÁRIO / ATIVA
ALTER USER USER RM ACCOUNT LOCK;
ALTER USER USER RM ACCOUNT UNLOCK;
ALTER USER USER RM PASSWORD EXPIRE;

-- VERIFICA STATUS DA CONTA
SELECT USERNAME, ACCOUNT_STATUS FROM DBA_USERS


-- VERIFICAR SE TEM ALGUM USUÁRIO USANDO O SISTEMA (BOM CASO DESEJE PARAR O SERVICO DO ORACLE SERVER)
SELECT SADDR, SID, USERNAME, LOGON_TIME, STATUS,
OSUSER, MACHINE, PROGRAM
FROM V$SESSION;

-- VERIFICA PREVILEGIOS DE ROLE
SELECT * FROM DBA_ROLE_PRIVS;

-- CONTA OBJETOS DO SCHEMA
SELECT COUNT(OBJECT_TYPE), OBJECT_TYPE
FROM DBA_OBJECTS
GROUP BY OBJECT_TYPE;

-- CONTA OBJETOS DE UM SCHEMA ESPECÍFICO
SELECT COUNT(OBJECT_TYPE), OBJECT_TYPE
FROM DBA_OBJECTS
WHERE OWNER LIKE 'RM%'
GROUP BY OBJECT_TYPE;

-- CONTA OBJETOS INVALIDOS
SELECT COUNT (*)
FROM DBA_OBJECTS
WHERE STATUS='INVALID'
AND OWNER LIKE 'RM%';

-- VERIFICA OBJETOS INVALIDOS
SELECT OBJECT_TYPE, OBJECT_NAME, STATUS
FROM DBA_OBJECTS
WHERE STATUS='INVALID'
AND OWNER LIKE 'RM%';

-- GERA SCRIPTS DOS OBJETOS INVALIDOS
SELECT 'ALTER'||' '|| OBJECT_TYPE ||' '||OWNER ||'.'|| OBJECT_NAME || ' COMPILE;'
FROM DBA_OBJECTS
WHERE STATUS='INVALID'
AND OWNER LIKE 'RM%';

-- VERIFICA AS ROLES RM
SELECT * FROM DBA_ROLES WHERE ROLE LIKE '%RM%';
SELECT * FROM DBA_SYS_PRIVS WHERE LIKE '%RM%';


--ALTERAR SENHA DE USUARIO
ALTER USER USER RM IDENTIFIED BY 'NOVA_SENHA';

--PROPRIEDADES DO SERVER (lANGUAGE, CHARACTER SET E ETC..)
SELECT * FROM NLS_DATABASE_PARAMETERS


--PROPRIEDADES DA SESSAO (lANGUAGE, CHARACTER SET E ETC..)
SELECT * FROM NLS_SESSION_PARAMETERS

--MOSTRA INFORMÇÕES GERAIS DA PARAMETRIZAÇÃO (NÃO FUNCIONA NO SQL TOOLS)
SHOW PARAMETERS

--VERIFICAR TRIGGERS NA BASE
SELECT * FROM DBA_TRIGGERS WHERE TABLE_OWNER='RM'


--VARIAVEIS DE AMBIENTE
CONN SYSTEM@INSTANCIA
SPOOL C:\LOGS
SET ECHO ON
SET TIMING ON
SET LINES 1000
SET SQLBL ON
ALTER SESSION SET NLS_DATE_FORMAT = 'DD/MM/YYYY HH24:MI:SS';
SELECT SYSDATE FROM DUAL;
SHOW USER

segunda-feira, 13 de dezembro de 2010

Utilizando funçoes e operadores para cadeia de caracteres Parte I

Pessoal,

Hoje vou dar uma dica sobre tratamento de cadeia de carcateres falando sobre a função SUBSTRING(SQL Server) e SUBSTR(Oracle)

Quando se deseja obter em uma cadeia de caracteres um conjunto específico dos mesmos podemos utilizar as função acima citadas.
Por exemplo, suponhamos que eu queira obter uma consulta que me retorne uma máscara de cliente fornecedor alterada. A máscara tem o seguinte formato L######.## ou seja, começa com uma letra possui uma sequencia númerica separada por ponto.
Ao realizar o select a máscara me retorna F12345.01 para que eu obtenha o valor sem tratado da forma que desejo realizo o seguinte SELECT:

Oracle:

SELECT SubStr(CAMPO_CLI_FOR,2,6)||SubStr(CAMPO_CLI_FOR,-2,2) FROM TABELA WHERE TABLE_CONDITION=CONDIÇÃO

SQL:

SELECT SUBSTRING(CAMPO_CLI_FOR,2,6)+SUBSTRING(CAMPO_CLI_FOR,-2,2) FROM TABELA


O resultado será uma máscara sem a letra e sem o ponto:
########

Abraços e até a proxima.