sexta-feira, 20 de abril de 2012

Redo Log Buffer (Oracle OCA)

Buffer circular da SGA que contém informações sobre as alterações do banco de dados, contem entradas ‘redo’ de mudanças feitas por operações DML e DLL, contendo informações necessárias para reconstruir ou refazer essas mudanças, ou de operação interna. Quanto necessário é usado para recuperação de banco.


Os processo de servidor faz as alterações para o ‘buffer cache’, entradas ‘redo’, são geradas e escritas no ‘redo log buffer’ na SGA. Essas entradas assumem, continuo e sequencial espaço no ‘buffer’. O processo de fundo LGWR escreve o ‘redo log buffer’ para o ativo ‘redo log file’ no disco.

LGWR: responsável por gerenciamento e escrita do redo log buffer para o redo log file (arquivo de redo) no disco, escreve todas entradas de ‘redo’ que tem sido copiado dentro do buffer desde a última escrita, em uma proporção continua:

-Uma gravação efetuada quando o processo do usuário efetua uma transação;
- Redo log buffers;
- Cada 3 segundos;
- Quando o redo log buffer é 1/3 do total;
- Quando um processo DBWn (Database Writer) escreve os buffers modificados para o disco se necessário


quarta-feira, 18 de abril de 2012

Database Buffer Cache (Oracle OCA)


Conforme vou lendo o material oficial da Oracle, vou publicando um resumo sobre o tópico lido, conforme vou pesquisando ou achando mais material a respeito desse tópico, pretendo ir complementando e aos poucos ir deixando o material como um todo cada vez mais completo

Parte do SGA, compartilhada por todos usuários concorrentes, que mantém cópias de bloco de dados para serem lidas pelos arquivos de dados.

A primeira vez o processo de usuários o Banco Oracle requer um particular pedaço de dados, procurando no ‘database buffer cache’. Se existir, le diretamente da memória, tornando bem mais rápido o processo, senão copia o bloco de dados para arquivo de dados no disco após acessar os dados.

Organizado em duas listas  blocos alterados e blocos pouco utilizados recentemente, quando um processo servidor precisa ler dados de um bloco do disco para o database ‘buffer cache’,  pesquisa a LRU para localizar um bloco livre e, quando encontrar um bloco alterado, movimenta-o para a lista de blocos alterados. Esse processo termina quando um bloco livre é localizado ou quando um número específico de blocos são pesquisados sem encontrar um bloco livre

sexta-feira, 30 de março de 2012

Estrutura de memória (Oracle OCA)

Conforme vou estudando para OCA, vou passsando um resumo, um caminho das pedras tirado do material oficial da Oracle. Caso desejem se aprofundar mais de algum dos assuntos, podem ir pesquisando especificamente pelo Google a fora.

System Global Area (SGA): Grupo de estrutura de memória compartilhada, contêm dados e informações de controle para uma instância, compartilhada por todos servidores e processos de fundo.


- Database Buffer Cache: detém cópias de blocos de dados, lidas do arquivo de dados, acessada por todos usuários conectados simultaneamente.

- Redo Log Buffer: buffer circular que armazena informações sobre mudanças no banco, contendo informações necessárias para reconstruir as alterações efetuadas

- Shared Pool: onde o processo de servidor verifica se existe um comando idêntico, alocando área privada SQL do lado da sessão. É dividida em três partes
   - Library: Biblioteca utilizada para o Oracle armazenar SQL
      - Shared SQL Area: Contêm plano de execução SQL
   - Data Dicionary: coleção de bancos, tabelas e views, contendo informações referentes ao banco
   - Other: outro

- Large Pool: memória opcional, dividida em quatro partes:
   - I/O :
   - Free memory:
   - Response:
   - Request:

- Java Pool: usado para sessões específicas de código Java

- Stream Pool: usado por Oracle Stream (Ferramenta Oracle de processo e gerenciamento de eventos)

Program Global Area (PGA): Região de memória que contém dados e controle de informações para um servidor de processos de fundo, não compartilhada criada pelo banco quando servidor ou processo de fundo é iniciado, sendo seu acesso exclusivo para servidor de processos.

segunda-feira, 26 de março de 2012

Conexão Oracle (Oracle OCA)

Retornando, depois de um período de muita correria, uma breve introdução do Administration Workshop I

Um servidor de banco Oracle consiste em banco e uma ou mais instâncias.

A instância consiste em estrutura de memória e processos de fundo

Quando uma instância é iniciada, a área de memória compartilhada é chamada, SGA alocada e processos de fundo iniciados

Um banco de dados consiste na estrutura física e lógica.

Uma conexão é a comunicação entre um processo de usuário e uma instância

Uma sessão é uma conexão específica de um usuário para uma instância através de um processo de usuário, representa o estado do login do usuário, como por exemplo validação de usuário e senha.

Conexão
1) Uma instância é iniciada no nó aonde o banco é instalado,

2) Um usuário inicia uma aplicação, que tenta estabelecer conexão com o servidor

3) O servidor inicia um ouvinte apropriado, que detecta a conexão requisitada para a aplicação e cria processo dedicado

4) O usuário inicia uma DML (select, insert, update, delete, merge)

5) O processo de servidor recebe a afirmação e checa ‘chared pool’ (componente SGA), se não existe SQL idêntico compartilhado, se existir, verifica os privilégios do usuário para dados requeridos

6) O processo do servidor recupera o valor necessário, ou para atual tabela ou armazenados no ‘buffer cache’

7) O servidor de processos modifica as informações no SGA, por que a transação é ‘commitada’, o LGWR grava a transação no ‘redo log file’ e o DWBn modifica os blocos permanentemente no disco

8) Se a transação ocorre com sucesso, o servidor de processo encaminha mensagem através da rede para aplicação, senão uma mensagem de erro é transmitida

9) Através desse procedimento, outros processos de fundo são iniciados

Após iniciada instância, a mesma é associada com o banco específico ( ‘monta o banco’), o banco está pronto para ser aberto quando acessível para usuários autorizados. Múltiplas instancias podem ser executadas de forma concorrente em um mesmo computador, cada acesso é o próprio banco físico.


Uma instância Oracle usa estrutura de memória e processos para gerenciar o acesso ao banco. Toda estrutura de memória existente na memória principal do computador que constitui o servidor do banco. Processos são programados para trabalhar na memória desse computador




quinta-feira, 26 de janeiro de 2012

Scripts SQL úteis no dia a dia de um DBA Oracle

Faz algum tempinho que copiei esse documento, não sei a fonte, caso o autor solicite, retiro do blog, mas como o íntuíto é ajudar, creio que isso não vai acontecer.

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

VERIFICA INSTANCIA
SELECT * FROM GLOBAL_NAME;

DUMP
<!--[if !supportLineBreakNewLine]--><!--[endif]-->

VERIFICAR QUAIS SÃO OS USUÁRIOS DO SISTEMA

SELECT USERNAME FROM DBA_USERS
WHERE USERNAME LIKE ‘USER%‘;

CONTA OBJETOS DO SCHEMA

SELECT COUNT(OBJECT_TYPE), OBJECT_TYPE
FROM DBA_OBJECTS
WHERE OWNER LIKE ‘USER%‘
GROUP BY OBJECT_TYPE;
SPOOL OFF

NO TERMINAL LINUX

$export ORACLE_SID=INSTANCE
$exp system@INSTANCE BUFFER=1000000 FILE=EXP_INSTANCE_USER_DATA.DMP LOG=EXP_INSTANCE_USER_DATA.LOG OWNER=USUÁRIOS LISTADOS CONSISTENT=Y
gzip EXP_INSTANCE_USER_DATA*
<!--[endif]-->

DESATIVAÇÃO DE UM SCHEMA
VERIFICAR SE TEM ALGUM USUÁRIO USANDO O SISTEMA

SELECT SADDR, SID, USERNAME, LOGON_TIME, STATUS, OSUSER, MACHINE, PROGRAM
FROM V$SESSION
WHERE USERNAME LIKE ‘USER%‘;

VERIFICAR QUAIS SÃO OS USUÁRIOS DO SISTEMA

SELECT USERNAME FROM DBA_USERS
WHERE USERNAME LIKE ‘USER%‘;

VERIFICA ATRIBUTOS DO USUÁRIO

SELECT * FROM DBA_USERS
WHERE USERNAME LIKE ‘USER%‘;

SELECT * FROM DBA_TAB_PRIVS
WHERE GRANTOR LIKE ‘USER%‘;

VERIFICA PREVILEGIOS DO USUÁRIO

SELECT * FROM DBA_SYS_PRIVS
WHERE GRANTEE LIKE ‘USER%‘;

SELECT * FROM DBA_ROLE_PRIVS
WHERE GRANTEE LIKE ‘USER%‘;

CONTA OBJETOS DO SCHEMA

SELECT COUNT(OBJECT_TYPE), OBJECT_TYPE
FROM DBA_OBJECTS
WHERE OWNER LIKE LIKE ‘USER%‘
GROUP BY OBJECT_TYPE;

DESATIVA USUÁRIO

ALTER USER USER ACCOUNT LOCK;

ALTER USER USER PASSWORD EXPIRE;

VERIFICA STATUS DA CONTA

SELECT USERNAME, ACCOUNT_STATUS FROM DBA_USERS
WHERE USERNAME LIKE ‘USER%’;
SPOOL OFF

DESATIVAÇÃO DE UMA INSTANCIA
VERIFICAR SE TEM ALGUM USUÁRIO USANDO O SISTEMA

SELECT SADDR, SID, USERNAME, LOGON_TIME, STATUS,OSUSER, MACHINE, PROGRAM
FROM V$SESSION;

VERIFICAR QUAIS SÃO OS USUÁRIOS DO SISTEMA

SELECT USERNAME FROM DBA_USERS ;

VERIFICA ATRIBUTOS DO USUÁRIO

SELECT * FROM DBA_USERS;

SELECT * FROM DBA_TAB_PRIVS;

VERIFICA PREVILEGIOS DO USUÁRIO

SELECT * FROM DBA_SYS_PRIVS;

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;

NO TERMINAL

EXPORT ORACLE_SID=INSTANCE

SQLPLUS / AS SYSDBA

SQL> SHUTDOWN IMMEDIATE;

EXECUÇÃO DE SCRIPT

VERIFICAR QUAIS SÃO OS USUÁRIOS DO SISTEMA

SELECT USERNAME FROM DBA_USERS
WHERE USERNAME LIKE ‘USER%‘;

VERIFICA SE O OBJETOS JÁ EXISTE

SELECT OWNER, OBJECT_NAME, OBJECT_TYPE, CREATED, LAST_DDL_TIME, STATUS
FROM ALL_OBJECTS
WHERE OWNER LIKE ‘USER%‘
AND OBJECT_NAME = ‘OBJECT_NAME’;

CONTA OBJETOS DO SCHEMA

SELECT COUNT(OBJECT_TYPE), OBJECT_TYPE
FROM DBA_OBJECTS
WHERE OWNER LIKE ‘USER%‘
GROUP BY OBJECT_TYPE;

CONTA OBJETOS INVALIDOS

SELECT COUNT (*)
FROM DBA_OBJECTS
WHERE STATUS=’INVALID’
AND OWNER LIKE ‘USER%‘;

VERIFICA OBJETOS INVALIDOS

SELECT OBJECT_TYPE, OBJECT_NAME, STATUS
FROM DBA_OBJECTS
WHERE STATUS=’INVALID’
AND OWNER LIKE ‘USER%‘;

EXECUTA O SCRIPT

CONN USER@INSTANCE

@C:\CAMINHO\SCRIPT.SQL

CONN SYSTEM@INSTANCE

VERIFICA SE O OBJETOS JÁ EXISTE

SELECT OWNER, OBJECT_NAME, OBJECT_TYPE, CREATED, LAST_DDL_TIME, STATUS
FROM ALL_OBJECTS
WHERE OWNER LIKE ‘USER%‘
AND OBJECT_NAME = ‘OBJECT_NAME’;

SELECT * FROM DBA_TAB_PRIVS
WHERE GRANTOR LIKE ‘USER%’;

CONTA OBJETOS DO SCHEMA

SELECT COUNT(OBJECT_TYPE), OBJECT_TYPE
FROM DBA_OBJECTS
WHERE OWNER LIKE ‘USER%‘
GROUP BY OBJECT_TYPE;

CONTA OBJETOS INVALIDOS

SELECT COUNT (*)
FROM DBA_OBJECTS
WHERE STATUS=’INVALID’
AND OWNER LIKE ‘USER%‘;

VERIFICA OBJETOS INVALIDOS

SELECT OBJECT_TYPE, OBJECT_NAME, STATUS
FROM DBA_OBJECTS
WHERE STATUS=’INVALID’
AND OWNER LIKE ‘USER%‘;

GERA SCRIPTS DOS OBJETOS INVALIDOS

SELECT ‘ALTER’ OBJECT_TYPE OWNER OBJECT_NAME ‘ COMPILE;’
FROM DBA_OBJECTS
WHERE STATUS=’INVALID’
AND OWNER LIKE ‘USER%‘;

VERIFICA OBJETOS INVALIDOS

SELECT OBJECT_NAME, OBJECT_TYPE, STATUS
FROM DBA_OBJECTS
WHERE STATUS=’INVALID’
AND OWNER LIKE ‘USER%‘;

SPOOL OFF

CRIACAO DE USUÁRIO
VERIFICAR SE EXISTE ESSE USUÁRIO NO SISTEMA

SELECT USERNAME FROM DBA_USERS
WHERE USERNAME LIKE ‘USER%‘;

CRIAR A TABLESPACE PARA O USUÁRIO

CREATE TABLESPACE INSTANCE_SCHEMA_01
DATAFILE ‘CAMINHO/INSTANCE_SCHEMA.DBF’ SIZE 64M
AUTOEXTEND ON NEXT 1M
SEGMENT SPACE MANAGEMENT AUTO;

VERIFICA SE TEM ALGUMA ROLE PARA ESSE USUÁRIO

SELECT * FROM DBA_ROLES WHERE ROLE LIKE ‘%USER%‘;

SELECT * FROM DBA_SYS_PRIVS WHERE LIKE ‘%USER%‘;

SELECT * FROM DBA_TAB_PRIVS WHERE LIKE ‘%USER%‘;

CRIAR O USUÁRIO

CREATE USER USER
IDENTIFIED BY ‘SENHA‘
DEFAULT TABLESPACE INSTANCE_SCHEMA_01
TEMPORARY TABLESPACE TEMP;

APLICA GRANT

GRANT RESOURCE, CONNECT TO USER;

VERIFICAR SE O USUÁRIO FOI CRIADO

SELECT * FROM DBA_USERS
WHERE USERNAME LIKE ‘USER%‘;

VERIFICA ROLES DO USUARIO CRIADO

SELECT * FROM DBA_SYS_PRIVS
WHERE GRANTEE LIKE ‘USER%‘;

SELECT * FROM DBA_ROLE_PRIVS
WHERE GRANTEE LIKE ‘USER%‘;

VERIFICAR OS USUÁRIOS DO SISTEMA

SELECT * FROM DBA_USERS
WHERE USERNAME LIKE ‘USER%‘;

ALTERA A SENHA

ALTER USER USER IDENTIFIED BY ‘SENHA‘;

VERIFICAR OS USUÁRIOS DO SISTEMA

SELECT * FROM DBA_USERS
WHERE USERNAME LIKE ‘USER%‘;
SPOOL OFF



DBA Chuck Norris

Chuck Norris não faz DELETEs. Ele olha para os registros e eles correm de medo.


Chuck Norris não cria Primary Keys. Os registros simplesmente não atrevem-se a duplicar.

Chuck Norris não usa LOG. Ele lembra de todos registros que alterou.

Chuck Norris não cria Índices. Ele sabe que os registros retornarão o mais rápido que puderem.

MSSQL Server é muito mais rápido que Oracle. Basta que o DBA seja CHUCK NORRIS.

Uma vez adaptaram o Roundhouse Kick para o Oracle. Assim nasceu o TRUNCATE TABLE.

Chuck Norris não dá DROP TABLE. Ele dá ROUNDHOUSE KICK TABLE.

Uma vez Chuck Norris deu um Roundhouse Kick em um banco poderoso. Hoje ele é conhecido por Access.

Chuck Norris sabe todos os erros do Oracle de cor. Porque ele os criou.

SELECT SUM(FORÇA) FROM CHUCK_NORRIS; Internal error. Do not call the support.

SELECT CHUCK_NORRIS; Drop database sucessful.

SELECT ROUNDHOUSE_KICK FROM CHUC... Lost connection.

DELETE FROM CHUCK_NORRIS. Not Found. (Ele está atrás de você, a ponto de dar um Roundhouse Kick!!!)

Chuck Norris tem IGNORE CONTRAINTS automático. Ninguém restringe nada a Chuck Norris. Ninguém.

Chuck Norris não faz cursos de Oracle. A Oracle é que faz cursos de Chuck Norris.

Chuck Norris instala o Oracle sem ler o manual. (Quem você pensa que é para ter tentado isso?)

Chuck Norris instala o Oracle em um 486. Rodando Kurumim. Em 2 minutos.

Chuck Norris instala o MSSQL Server em um Pentium 100MHZ. Rodando Solaris. A partis dos fontes.

Chuck Norris instala o DB2 em um 486. Rodando Windows Vista. Sem HD.

Chuck Norris não tem Certificação. São as empresas que tentam tirar Certificação em Chuck Norris. Em vão.

Se disser ao DBA Chuck Norris que "o problema está no banco", é melhor que esteja se referindo ao Itaú.

Chuck Norris SABE qual o problema de performance do banco. Ele só está dando uma chance do banco de se arrepender. 5... 4... 3...

Chuck Norris não cria Stored Procedures. Todas suas Queries já se armazenam no banco, tentando se esconder. Mas é inútil.

TRIGGERS tem este nome porque Chuck Norris sempre ameaçava atirar no banco quando ele não fazia algo automático.

Chuck Noris não faz Modelo de Dados. Ele encara o banco até que ele faça o modelo sozinho.

Chuck Norris instala o Oracle sem a interface gráfica. E sem a interface texto. (Pergunte a ele você!)

Megabyte, Gigabyte, Terabyte, Petabyte, Exabyte, Chuckbite.

Oracle tem as versões Personal, Standard, Enterprise e ChuckNorris Edition. Mas nenhum computador é rápido o suficiente para rodar a último.
 

quinta-feira, 12 de janeiro de 2012

Oracle SQL (Oracle OCA)

A primeira prova OCA envolve SQL, vimos a alguns post's atrás uma introdução, agora vamos ver alguns detalhes do comando SQL. A melhor forma de aprender é exercitando, então aconselho que instalem o Oracle Free e treinem. Caso tenham dúvida sobre comando SQL, recomendo que procurem na internet, vou passar somente algumas particularidades

SELECT:  O  comando mais simples do SQL é selecionar dados de uma ou mais tabelas do banco
SELECT * |{[DISTINCT]} column expression [alias], … FROM table

Expressão aritmética (+,-,*,/): Regras de precedência:
- Multiplicação e divisão ocorrer antes de adição e subtração
- Operadores de mesma prioridade são avaliados da direita à esquerda
- Os parênteses são usados ​​para substituir a precedência padrão ou para esclarecer a declaração.


Nulo (NULL):
-
Não é o mesmo que zero ou espaço em branco, é inavaliável, desconhecido ou inaplicável
- Colunas ou qualquer tipo pode conter nulos, no entanto, alguns contém (não nula e PK).
- Por padrão, o
SQL Developer utiliza literal, (null), para identificar os valores, no entanto, pode-se configurá-lo para algo mais relevante para você.
- Se qualquer coluna em uma expressão aritmética é nula, então o resultado é nulo
- Se você tentar executar uma divisão por zero você receber um erro
- Se você dividir um número por nulo, o resultado é nulo ou desconhecido


Concatenação:  liga colunas , expressão aritmética ou valores constantes para criar uma expressão de caractere. No exemplo abaixo concatena-se campo nome e sobrenome.
select 'Nome: '||nome ||' Sobrenome: '||sobrenome from funcionario

Describe: Utilizado para descrever um objeto do Oracle (tabela, view, sinônimo, função package)

String e data:
- São case-sensitive e valores de data são sensíveis ao formato
- Devem sero colocados entre aspas simples ('')
- O formato padrão de exibição de data é DD-MON-RR, datas loja em formato numérico interno, representando o século, ano, mês, dia, horas, minutos e segundos. Válidas entre 01 de janeiro de 4712 aC e 31 de dezembro de 9999 dC

- Permite que você armazene datas do século 21 no século 20 especificando apenas os dois últimos dígitos do ano
- Permite que você armazene datas do século 20 no século 21, da mesma forma


Funções de data
- data + numero (data) = adiciona numero de dias a data

- data - número (data) = subtrai numero de dias a data
- data - data (número de dias)= subtrai uma data de outra 
- data - numero/24 (data) = adiciona horas a data
- MONTS_BETWEEN  (MONTS_BETWEEN(’01-SEP-95’,’11-JAN-94’)=19.6774194) Número demeses entre duas datas. O resultado pode ser negativo ou positivo
- ADD_MONTHS (ADD_MONTHS(’31-JAN-96’,1)=’29-FEB-96’) Adiciona meses a data
- NEXT_DAY (NEXT_DAY(’01-SEP-95’,’FRIDAY’)=’08-SEP-95’) Próximo dia de uma data
- LAST_DAY (LAST_DAY(’01-FEB-95’)=’28-FEB-95’) Último dia do mês
- ROUND (ROUND (’25-JUL-03’, ‘MONTH’)=’01-AUG-03’ ROUND (’25-JUL-03’, ‘YEAR’)=’01-JAN-04’)
Arredonda data. Se o formato for omitido, a data é truncar para o próximo dia
- TRUNC (TRUNC (’25-JUL-03’, ‘MONTH’)=’01-JUL-03’ TRUNC (’25-JUL-03’, ‘YEAR’)=’01-JAN-03’) Trunc e Round:
- Se o modelo de formato é mensal, as datas 15/01 resultar no primeiro dia do mês em curso.
- Se o modelo de formato é mensal, as datas 16-31 resultado no primeiro dia do mês seguinte
- Se o modelo de formato é ano, mês 1-6 resultar em 01 de janeiro do corrente ano.
- Se o modelo de formato é ano, mês 7-12 resultado em janeiro do ano que vem

 
Ordenação: a ordenação padrão é crescente- Valores numéricos são exibidos com os valores mais baixos primeiro (1-999)
- Valores de data são exibidos com os primeiros valores primeira (01-jan-92 antes de 01-jan-95)
- Valores de caracteres são exibidos com a ordem alfabética (A ... Z)
- Valores nulos são exibidos durar seqüência e ascendente para descendente primeira seqüência
- Pode-se classificar por uma coluna que não está na lista de seleção



Precedência:
- aritimético - concatenação
- comparação
- [not] null, like, in
- [not]between
- [not]equal
- not
- and
- or

Funções
LOWER: Converte um determinado valor para caixa baixa (ex select lower('Ab') from dual = ab)
UPPER:Converte um determinado valor para caixa alta  (ex select lower('Ab') from dual = AB)
INITICAP: Converte o primeiro caracter de um campo para caixa alta (ex select lower('jose da silva') from dual = Jose Da Silva)
SUBSTR: Retorna um caracter em posição especifica (ex: select substr('123456789',2,3) from dual = 234
LENGTH: Retorna o tamanho de um campo (select legth (nome) from usuario where codigo=1=37 (supondo que o nome do usuário 1 tenha 27 caracteres))
INSTR: Retorna posição para um caracter específico (ex: SHOW INSTR('Corporate Floor','or', 3, 2)

from dual = 14
REPLACE: substituí uma série de caracteres

Numéricas
ROUND: Arredonda (ROUND (45.926,2) = 45.93)
TRUNC: Corta para o número de casas estipulados (TRUNC (45.926,2) = 45.92), pode também ser utilizado para datas, cortando horas por exemplo (data= 21/12/2011 10:15:22 -> trunc(data_x) = 21/12/2011)
MODE: Retorna o resto da divisão (MOD (1600, 300 ) = 100)




Oracle - Gerenciamento de usuários e segurança

Dando continuidade a rotinas diárias de um DBA, um tópico resumido sobre administração de usuário e segurança.


Depois de uma conta de usuário é criado, pelo menos privilégios básicos devem ser concedidos à conta para permitir que o usuário se conectar ao banco de dados e visualizar e criar objetos de banco de dados, conhecidos como objetos de esquema. Uma conta de usuário define:

- Como o usuário deve ser autenticado

- senha (criptografada) para autenticação de banco de dados

- Tablespaces que o usuário pode acessar e quotas sobre eles

- Se a conta está bloqueada ou não

Determinadas contas de usuário são incluídos automaticamente quando você cria seu banco de dados. Todos bancos de dados criados pelo Assistente de Configuração do banco de dados incluem o SYS, SYSTEM, SYSMAN e contas de usuário DBSNMP, mas as outras contas estão incluídos, dependendo quais recursos ou opções que estão instalados.

SYS: Criado automaticamente ao criar um banco, concedido papel de DBA

SYSTEM: também criado automaticamente, usado para criar tabelas adicionais e pontos de vista que são apresentados informações administrativas e tabelas internas e pontos de vista diversos usados pela Oracle Opções de banco de dados e ferramentas. Nunca use o esquema SYSTEM para armazenar as tabelas de interesse para usuários não-administrativos.

Privilégios administrativos: Necessários a um administrador para executar operações b´sicas de banco de dados, tais como a criação do banco, inicialização e desligamento, são concedidos através de dois privilégios de sistema especiais, SYSDBA e SYSOPER. Você deve ter um desses privilégios concedidos, dependendo do nível de autorização que necessita. Os privilégios SYSDBA e SYSOPER também pode ser pensado como tipos de conexões que lhe permitem realizar operações de banco de dados de certos privilégios para os quais não podem ser concedida em qualquer outra forma. Por exemplo, se você tem o privilégio SYSDBA, você podem se conectar ao banco de dados especificando conectar como SYSDBA.

A Oracle fornece esquemas no qual podem ser praticadas diversas rotinas

- Recursos Humanos, útil para a introdução de tópicos básicos.

- Entrada de Pedidos, útil para lidar com questões de complexidade intermediária.

- Catálogo Online, uma coleção de objeto-relacional de banco de dados

- Produto de Mídia, dedicado a tipos de dados multimídia.

- Trocas de informações, conjunto de esquemas reunidos

- Histórico de Vendas, projetado para permitir demos com grandes quantidades de dados.

- Contas de gestão, deve ser utilizado apenas por pessoal autorizado familiarizado com senhas fornecidas, essas contas são inicialmente bloqueada com suas senhas expiradas.

O gerenciamento dessas tarefas no material oficial é apresentado como gerenciar no Enterprise Manager. Não vou colocar os passos, pois os mesmos podem ser consultados pela internet, se possível vou complementar esse post caso eu tenha os passos via comando.



quarta-feira, 11 de janeiro de 2012

Introdução a Certificação (Oracle OCA)

Uma introdução resumida do material oficial Oracle para primeira prova OCA .
Banco de dados

Gerenciamento: Automação da gestão, recursos diagnósticos de falhas, ajuste automático de SQL
Alta disponibilidade: Reduzir o risco do tempo de parada e perda de dados Segurança: Configuração única e segura configuração, criptografia de dados e de máscara, recursos de auditoria
Performance:OLTP, RAC, transação escalável
Integração: Muitos
recursos de informação de Integração para melhor integrar os dados


Instruções SQL (ANSI) (recomendações Oracle)
- Não são case sensitive
- Pode ser inserido em uma ou muitas linhas, menos palavras chaves
- Cláusula são geralmente colocados em linhas separadas para facilitar a leitura e facilidade de edição
- Recuos deve ser usado para tornar o código mais legível (identação)
- Palavras-chave normalmente são inseridos em letras maiúsculas;
- Palavras como todos os nomes de tabela e nomes de colunas são inseridos em letras minúsculas


SQL Developer x SQL Plus
Developer:  

- Alinhamento a esquerda
- Definição maiíuscula
Plus: 

- Títulos de colunas de caracteres e data são alinhados à esquerda
- Número de títulos de coluna são alinhados à direita
- Exibição padrão título em maiúsculas


Manipulação de linguagem de dados
DML (Data Manipulation Language ):  

- SELECT
- INSERT

- UPDATE
- DELETE
- MERGER
DDL (Data Definition Language ):  
- CREATE
- ALTER
- DROP
- RENAME
- TRUNCATE
- COMMIT
DCL (Data Control Language ):  
- GRANT
- REVOKE
TC (Transaction Control):  
- COMMIT
- ROLBACK
- SAVERPOINT

Continua em um próximo post







Instância (Oracle OCA)

Dando continuidade sobre rotinas de DBA Oracle, será abordado algo sobre instância, tópicos como SGA, e PGA, processos de segundo plano etc... pretendo escrever mais adiante, quando abordado sobre a arquitetura do Banco de dados Oracle 11g

Metadados: conjunto de arquivos do sistema operacional que contém os dados inseridos pelos usuários ou aplicações e informações estruturais sobre o próprio banco de dados, gravando informações de formas persistente.

Processos de segundo plano: permitem exibir ou atualizar os dados contidos no banco, alocando memória a ser utilizada durante a operação do banco.

Instância: processos de segundo plano e memória alocada. Refere-se aos componentes físicos e lógicos de um determinado banco de dados, e seu funcionamento. Consiste na estrutura de memória compartilhada e segundo processos de segundo plano que são executados no banco de dados. Você pode ter uma instância sem banco de dados (por exemplo, quando você ainda não tiver criado um banco de dados), e se um banco de dados existe, ele pode ser aberto ou não. Quando o banco de dados não está disponível, seus dados estão seguros no banco de dados, porem não podem ser acessados por qualquer usuário ou aplicação. Uma instância Oracle:

Estrutura da instância de memória: O tamanho destas estruturas afetam o desempenho do servidor de banco de dados Oracle e é controlado por parâmetros de inicialização (que podem ser categorizados como parâmetros de memória) , automaticamente definidos quando o banco é criado por DBCA para valores ideais com base em sua especificação da carga de trabalho de banco de dados. No entanto, como o uso de banco de dados se expande, pode ser necessário alterar as configurações do parâmetros de memória.

A Oracle fornece alertas e consultores para identificar problemas de dimensionamento de memória e para ajudar a determinar os valores apropriados para os parâmetros de memória.

Acessando o banco de dados: a instância pode ser acessada somente por quem tenha tipo especial de privilégio de conexão com a instância (SYSDBA (administradores de banco de dados plenos poderes) e SYSOPER (para os usuários que operar o banco de dados, mas não tem privilégios para acessar objetos de usuário) , SYS).

Depois que a instância do banco de dados foi iniciado, ele geralmente é aberto para acesso por usuários normais para os quais contas de usuário do banco de dados foram criados.

Para iniciar uma instância, veremos mais adiante as opções de ativar o banco (startup)

Processo cliente/servidor: Além de processos em segundo plano, o Oracle cria os processos servidores que lidam com solicitações de processo do usuário conectado à instância essa conexão do usuário é composto de duas partes distintas:

- Um programa cliente agindo em nome do usuário, como o Oracle Enterprise Manager, SQL * Plus, ou um aplicativo

Em algumas situações, quando o cliente e Oracle operam na mesma máquina, é possível combinar o processo do usuário e do servidor correspondente em um único processo para reduzir a sobrecarga do sistema. No entanto, quando o cliente e Oracle operar em máquinas diferentes, um processo do usuário sempre se comunica com o Oracle através de uma processo servidor separado. Processos do servidor podem ser dedicados ou compartilhados:

- No modo de servidor dedicado, cada processo cliente tem o seu processo no próprio servidor, bom para longa execução de consultas e tarefas administrativas, um processo ocioso ou muitos dedicados podem resultar em um uso ineficiente de recursos.

- O modo de servidor compartilhado elimina a necessidade de um processo de servidor dedicado para cada conexão. Direcionando múltiplas solicitações de sessão de entrada de rede para um pool de processos de servidor compartilhado. Um processo de servidor inativo compartilhado a partir de um conjunto compartilhado de servidor processos pega um pedido de uma fila comum, o que significa que um pequeno número de servidores compartilhados pode executar a mesma quantidade de processamento como muitos servidores dedicados.

Também, porque a quantidade de memória necessária para cada usuário é relativamente pequeno, menos memória e gerenciamento de processos são necessários, e mais usuários podem ser suportados.É mais eficiente a apoiar vários usuários e clientes que fazem freqüentes curto execução de consultas.

terça-feira, 10 de janeiro de 2012

Instalação (Oracle OCA)

Seguindo a linha da rotina de um DBA Oracle, extraída do material oficial da Oracle, hoje vamos falar um pouco sobre instalação, para qual é utilizado o OUI (Oracle Universal Instaler). Caneta e papel na mão (não é necessário, é só um jargão obsoleto).

A ideia, nesse e nos demais artigos, não é passar passo a passo da instalação, pois para isso existem muitos materiais pela internet com figuras, e descrevendo sobre cada uma das opções, a idéia tanto nesse, quanto nos demais artigos, mas somente passar informações de forma clara e resumida para fornecer um norte

A instalação básica é avaliada apenas para Windows. As opções disponíveis são Enterprise, Standard, Personal ou Custom. A Oracle recomenda instalar um banco de dados pré-configurados, personalizando-o posteriormente.

As envolvem opções como:

- Instalar ou não esquemas simples (utilizada para testes e exercícios dos materiais oficiais Oracle)

- Tipo de mecanismo de armazenamento utilizado (Sistema de arquivos, Gerenciador Automático de Gerencimanento (ASM), Dispositivos básicos)

- Entre outras como nome do banco, caractere, Controle de Grade para gerenciar mais que um banco, opções de backup e recuperação

Muitas dessas opções merecem especial atenção e muitas linhas para descreve-las como é o caso por exemplo da poderosa ferramenta ASM

Muitos problemas podem aparecer ao se instalar o Oracle no Linux, o site http://tahiti.oracle.com/ poderá ser de grande auxílio, ele contém inúmeros documentos, separados para cada versão do Linux.
    

Configurando ambiente de rede (Oracle OCA)

Dando continuidade sobre a rotina de um DBA Oracle, vamos ver um pouco sobre configuração de rede.
Cliente: Qualquer aplicação que precisa se conectar a um banco de dados Oracle para enviar ou recuperar dados. Uma aplicação cliente Oracle pode residir em qualquer máquina desde que tenha Software cliente Oracle instalado


Oracle Net / Listener (Ouvinte): Componente que reside no cliente e servidor de banco de dados Oracle, estabelece e mantém conexão e troca de mensagem entre eles através de protocolos padrões.

Configuração Oracle Net Listener: Processo que atende a pedidos de conexão do cliente, configurado em no arquivo listener.ora, com um endereço de protocolo que identifica o banco de dados. este endereço de define o protocolo que o ouvinte está escutando e qualquer outro protocolo específico da informação

(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=my-server) (PORT=1521)))

Esse exemplo mostra endereço especifico TCP/IP e porta da máquina host do listener

Quando cliente é configurado com endereço de protocolo, transmite solicitação para conexão e o ouvinte encaminha para o banco. O cliente utiliza um descritor de conexão para especificar o banco de dados que quer se conectar. este descritor contém um endereço de protocolo e um nome de serviço de banco de dados. O banco de dados pode ter múltiplos serviços definidos, um específico deve ser especificado para o conexão, conforme exemplo.

(DESCRIPTION =
(ADDRESS = (PROTOCOL = tcp) (HOST = my-servidor) PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = mydb.us.acme.com)))

Os usuários iniciam uma solicitação de conexão, fornecendo uma sequencia de conexão (a qual inclui um nome de usuário e senha, juntamente com um identificador de conexão. esta ligação). O identificador descritor de conexão em si, ou um nome que resolve ligar para o descritor. Um dos identificadores mais comuns de conexão é um nome de serviço de rede. O exemplo a seguir mostra uma seqüência de conexão que usa o serviço net mydb nome como o identificador de conexão.
CONNECT scott / tiger @ mydb

O Oracle Net fornece suporte para os métodos de mapeamento a seguir:
- Nome local: configuração local (no cliente) chamado tnsnames.ora.
- Nome diretório: Compatível com LDAP servidor de diretório para acessar um serviço de banco de dados.
- Nome fácil conxão: permite que os clientes se conectar a um servidor de banco de dados Oracle usando uma seqüência de TCP / IP

CONNECT nome de usuário / senha @ host [: port] [service_name /]

- Nome externo: serviço de terceiros

O banco de dados pré-configurados usa nomeação local.

segunda-feira, 9 de janeiro de 2012

Oracle Performance Tuning

     Não me esqueci do post anterior, aos poucos vamos abrindo mais o leque sobre a rotina de um DBA, mas para não parecer novela, aguardando-se as cenas do próximo capítulo, hoje vou falar sobre o material oficial da Oracle B28051-03.
     Antes uma dica boa de site http://tahiti.oracle.com/ ele tem uma biblioteca imensa sobre vários assuntos que se deseje sobre Oracle. Dando continuidade.
     Passarei algumas dicas breves:
     - Remoção de gargalo pode não resolver pois pode aparecer outro gargalo com impacto maior;
     - Antes de estatísticas do banco ou S.O. obtenha feedback dos usuários;
     - O Monitor Automático de Diagnóstico Automático de Banco de Dados (ADDM) pode reduzir significativamente o tempo necessário para melhorar o desempenho de um sistema;
     - Certifique-se que todo Hardware está funcionando corretamente e se não existem recursos em demasia sendo executados;
     - Verifique se os parâmetros de inicialização estão como STATISTICS_LEVEL ou ALL;
     Mais para frente veremos mais detalhes sobe: performance, como: monitorar, resolver problemas, acompanhar os top's (sessão, SQL, perfil, objetos, arquivos, travas etc...), performance SQL, otimizando caminho de dados, etc...

quinta-feira, 5 de janeiro de 2012

Dia a dia de um DBA Oracle

     Esses dias estava vendo o material oficial da Oracle B10742-02 (Oracle 10g) .Ele oferece recomendações de boas práticas aos DBA's. Nele os tópicos principais do índice são mais ou menos:
- Instalar e contruir o banco
- Gerenciamento através do Enterprise Manager
- Configurar o ambiente de rede
- Gerenciar instâncias
- Gerenciar estrutura de armazenamento de dados
- Administração de usuários e segurança
- Gerenciamento de esquemas de objetos
- Backup e recuperação
- Monitoramento e ajuste do banco
     Bom, essa é só a ponta do Iceberg, existe muito para se falar sobre cada tópico desses, mas dá para se ter uma breve noção do que mínimo a se espera de um DBA
     Pretendo ao longo do tempo ir explanando mais sobre essas tarefas, tentando compartilhar informações da forma mais clara e objetiva possível.
 Dom Bulerson - Famoso DBA Oracle