Pesquisar este blog

quinta-feira, 19 de fevereiro de 2015

Soft Parse e Hard Parse - Oracle

Parsing é um processo que está diretamente relacionado ao desempenho do banco de dados e ter seu entendimento é extremamente importante para realizar melhor as instruções SQL. Parse significa análise, e é exatamente isso que ocorre nessa fase.
A fase de parsing é um dos processos que ocorre na execução de instruções SQL. A Figura 1 exibe o fluxo do processo de parse. Quando um process user emite uma instrução SQL, essa instrução será interpretada e analisada nessa fase.
Figura 1 - Etapas do processamento de instruções SQL. (Fonte: Silva, P. H.)
A primeira análise realizada é a análise sintática onde, segundo Paulo Henrique Silva é verificado se existem erros estruturais na instrução ou se alguma regra de SQL foi quebrada, ou seja, se o comando é válido e interpretável. O Quadro 1 apresenta uma instrução com erro estrutural.

No primeiro exemplo ocorreu um erro de digitação, onde deveria constar a palavra reservada da SQL from, constava a palavra errada form.
A segunda análise realizada é a semântica, e para a mesma acontecer, o comando deve necessariamente ter sido analisado sintaticamente com sucesso. Paulo Henrique afirma que nessa etapa são verificadas questões como a existência dos objetos envolvidos na instrução, permissão de acesso a esses objetos, verificação de ambiguidade de campos no código, dentre outras. O Quadro 2 apresenta uma query com erro de ambigüidade de campo.

Um erro: ORA-00918: column ambiguously defined, será gerado devido ao campo id_departamento não possuir indicação de qual tabela pertence, uma vez que campos com esse nome ocorrem nas duas tabelas: DEPARAMENTOS e FUNCIONARIOS.
Seguindo o fluxo do processo de parse, caso o comando não apresente erros (sintáticos ou semânticos), sendo bem sucedido nas análises, o próximo passo é verificar se a instrução já foi executada anteriormente bem como se as informações ainda constam na memória (e podem ser utilizadas).
Ainda segundo estudos de Paulo Henrique, na etapa de busca na shared pool, mais especificamente na Shared SQL Area da Library Cache, a instrução está validada e pronta para ser executada pelo banco de dados. O Oracle gera um plano de execução para todas as instruções SQL que serão executadas. O plano de execução é uma estratégia que o otimizador do Oracle define para acessar os dados da “melhor forma”, baseado nas estatísticas (e outras informações) do banco de dados. Questões como ordem de execução e método de acesso aos objetos são levados em consideração durante a análise do plano de execução. Nesse momento, um código chamado de HASH_VALUE, representando uma instrução SQL, e outro código chamado PLAN_HASH_VALUE, representando o plano de execução já executado são armazenados na memória (library cache) conforme indicado na Figura 2. Esse trabalho é realizado pelo otimizador Oracle, que será abordado mais adiante.
Se o mesmo comando SQL for executado novamente e caso as informações de parse sobre ele ainda estejam na memória, pode-se reutilizar o plano de execução gerado anteriormente. Essa condição indica uma situação chamada de “soft parse”, sinalizando que já existe em memória um plano de execução válido, que poderá ser reutilizado. Além de realizar a comparação do HASH_VALUE para reutilizar um plano de execução, o Oracle também compara a instrução SQL inteira para ter certeza que se trata da mesma, sintaticamente e semanticamente. Para o caso de não existir um HASH_VALUE para uma instrução (o que indica que ela está sendo executada a primeira vez ou que ela foi executada há muito tempo e já saiu da library cache) não haverá informações para serem reaproveitadas, levando o Oracle a realizar o “hard parse” para atender à solicitação. Isso quer dizer que o banco executará algoritmos internos para gerar um plano de execução, alocá-lo em memória e enfim executá-lo (SILVA, 2012).
Figura 2 - Busca de HASH_VALUE na shared pool por uma instrução reincidente. (Fonte: Silva, P. H.)
Dando continuidade aos conceitos envolvidos na Figura 1 temos o otimizador. Segundo a própria Oracle, o otimizador é um mecanismo do banco de dados que determina a maneira mais eficiente de executar uma instrução SQL depois de considerar vários fatores relacionados com os objetos referenciados e as condições especificadas no comando. Esta determinação é um passo importante no processamento de qualquer instrução SQL e pode afetar muito o tempo de execução.
O otimizador é um dos primeiros mecanismos a ser executado quando ocorre um hard parse e é responsável por traçar o plano de execução das instruções SQL enviadas para processamento.
A saída do otimizador é um plano que descreve o método ótimo de execução da instrução SQL que será usado pelo gerador de plano de consulta.
De acordo com Paulo Henrique Silva, o gerador de plano de consulta (Row Source Generator) é responsável por utilizar o plano de execução ótimo gerado pelo otimizador Oracle e transformá-lo em um código executável pelo banco de dados (um programa binário).
Após essas etapas, tem-se uma versão executável do comando SQL do user process, que processará o objeto de saída do row source generator e buscar as informações solicitadas.
Soft parse e Hard parse

Como mencionado, o processo de parse possui uma interdependência entre suas etapas: a busca na library cache depende do sucesso na análise semântica, que depende do sucesso da análise sintática. Seguindo por essa linha, caso a busca do hash do comando SQL (e do hash do plano de execução) exista na shared pool, configura-se uma situação de soft parse (conhecido também por “library cache hit”) e o processo de parse tem seu curso desviado direto para a execução da instrução SQL. Caso o hash não seja encontrado na shared pool, existe uma situação de hard parse (conhecido também por “library cache miss”) e exigirá que o banco execute as etapas do otimizador e gerador do plano de query (etapas essas que consomem bastante da CPU do servidor).
A ocorrência de soft parse não reduz completamente o gasto de CPU do processo de parse, mas diminui significativamente o custo em relação ao hard parse. Paulo Henrique Silva afirma que existem situações em que é gasto mais tempo realizando a tarefa de parse de uma instrução SQL do que o tempo com a execução dela.
Uma situação que pode ser considerada como ideal é para o caso de todas as instruções SQL que o banco de dados for executar durante o seu funcionamento, já existisse compilada em memória (por exemplo, na inicialização do banco).  Dessa forma, a ocorrência de soft parse seria constante e não existiria uma configuração de hard parse, ganhando-se em processamento no servidor, e consequentemente em tempo de resposta às solicitações. É nítido como esse cenário é utópico, dessa forma admitisse uma boa prática, se possível, um único hard parse, referente à primeira vez da ocorrência de solicitação da instrução SQL, realizando apenas soft parses nas execuções seguintes.
Para facilitar o entendimento, abaixo são citadas situações relevantes para o tema em questão.
Um user process solicita a execução de uma query conforme Quadro 3.
Por ser a primeira vez que está sendo executada, a consulta passará por todas as etapas do parse, configurando-se assim uma situação de hard parse.
Pode-se verificar esse resultado através da view do esquema SYS, conforme Quadro 4.
Com o resultado dessa consulta, pode-se acompanhar como o banco de dados está se comportando diante de uma instrução SQL, verificando se está reutilizando ou não um comando executado anteriormente, ou seja, se o banco de dados está utilizando o soft parse ou hard parse para atender à solicitação. O resultado para a consulta na view está na Figura 3.

Figura 3 - Consulta na view V_$SQLAREA. (Fonte: autores do documento)
Ao se executar a mesma consulta novamente, tem-se uma configuração de reuso de query, podendo assim aproveitar do plano de execução já gerado na primeira ocorrência da instrução, o que implica em um soft parse. A Figura 4 indica que a instrução foi reutilizada.
Figura 4 - Consulta na view V_$SQLAREA indicando reuso de instrução. (Fonte: autores do documento)
Para melhorar o entendimento, a instrução sofreu uma alteração no valor de busca, conforme Quadro 5, e seu resultado pode ser observado na Figura 5.


Figura 5 - Consulta na view V_$SQLAREA após a alteração do parâmetro de busca. (Fonte: autores do documento)

Com isso, conclui-se que uma simples alteração na crítica de busca, pode configurar uma nova instrução no entendimento do banco de dados, porém isso depende de uma configuração.
Existe um parâmetro no banco de dados Oracle 11G que diz respeito a como deve ser seu comportamento em nível de execução quando receber um comando SQL, esse parâmetro é o CURSOR_SHARING, que admite três valores nessa versão do banco: EXACT, FORCE e SIMILAR.
O valor padrão desse parâmetro é EXACT de acordo com a Oracle, nessa configuração a etapa de “busca na shared pool” procura por uma instrução SQL exatamente idêntica a uma instrução que possa ter sido executada anteriormente. Somente em caso positivo, será executado um soft parse, para todas as outras situações, um hard parse será executado. Analisando o reuso das instruções SQL apresentadas no Quadro 6, tem-se o resultado observado na Figura 6.
Figura 6 - Interpretação do Oracle para reuso de instruções SQL. (Fonte: autores do documento)
É nítido que as quatro primeiras queries de exemplo relacionadas acima apresentam o mesmo resultado na projeção da informação, mas para o banco de dados são tratadas como instruções diferentes. Isso porque os comandos SQL não seguiram um padrão de escrita. Esse assunto será mais bem abordado na explicação sobre as técnicas para evitar o hard parse. O importante nesse momento é saber que pequenas alterações na escrita da instrução SQL podem fazer a diferença na execução de um soft parse ou hard parse.
Segundo documentação da Oracle, quando setado como FORCE, o banco interpreta variáveis literais como valores de variáveis de ligação (bind variables) em sua execução, fazendo com que a o reuso das consultas sejam mais constantes, ou seja, existam mais soft parse do que hard parse. O conceito e entendimento sobre bind variables deve ficar mais claro quando forem abordadas as técnicas para evitar o hard parse. Com o parâmetro setado para esse valor, o gerador do query plan substituirá os valores literais da instrução SQL por variáveis de ligação fazendo com que na próxima vez que for submetida a mesma instrução com uma crítica de busca diferente da anterior, o banco considere que a instrução já foi executada e reutilizará o mesmo plano de execução, realizando o soft parse.
No exemplo citado no Quadro 3, e com o parâmetro CURSOR_SHARING setado com o valor FORCE, aconteceria o que pode ser observado na Figura 7.
Figura 7 - Execução de query com CURSOR_SHARING=FORCE com valor de busca igual a "1". (Fonte: autores do documento)

A condição de busca da consulta: codigo = 1 foi substituído por codigo = “SYS_B_0”, que se trata de uma variável de ligação. O nome da variável é atribuído automaticamente pelo banco.
Quanto à crítica de busca na consulta sofre uma alteração (conforme exemplo do Quadro 5), a consulta seria reutilizada pois ocorreria a substituição do valor literal por uma bind variable, e na etapa de busca na shared pool, uma instrução idêntica seria encontrada levando à execução de um soft parse como pode ser observado na Figura 8.

Figura 8 - Execução de query com CURSOR_SHARING=FORCE, com valor de busca alterado para "2". (Fonte: autores do documento)

Ainda segundo a Oracle, para o caso do CURSOR_SHARING estar setado como SIMILAR, o banco assume um comportamento muito semelhante a quando o parâmetro está setado para FORCE, diferindo apenas na substituição dos literais. Isso permanecerá acontecendo, assim como no caso anterior (FORCE), a menos que a substituição dos literais afete o significado da declaração ou o grau em que o plano é otimizado, ou seja, caso o plano de execução venha a variar muito com a alteração do literal tem-se a geração de um novo plano, o que acarreta em todos os processos de parsing, o hard parse. Essa comparação entre os planos de execução é realizada através dos histogramas, que assim como as estatísticas auxiliam o otimizador Oracle a buscar a melhor forma de acessar os dados solicitados.
O reuso de instruções SQL deve sempre que possível existir para melhorar o desempenho do banco, mas é importante lembrar que isso varia muito a depender do ambiente em questão. Caso o banco opte por realizar um soft parse e o plano de execução para esse script não esteja otimizado, o tempo de resposta à solicitação pode crescer demasiadamente inviabilizando a utilização da técnica. A escolha de configuração desse parâmetro deve ser realizada com muita cautela e estudo.
Uma característica importante de saber é que no banco de dados Oracle 11G, o valor do CURSOR_SHARING setado para SIMILAR não é tão eficiente. Isso se deve a um recurso que essa versão do banco trás que é o CURSOR_SHARING ADAPTIVE (cursor compartilhado adaptativo), que realiza um tipo de análise se o plano de execução está otimizado antes de reutilizar um script. Essa situação é parecida com o parâmetro setado para SIMILAR (em versões anteriores), só que trás melhorias em desempenho.
Algumas técnicas para evitar o hard parse

Como já sabido, hard parses devem ser evitados, visto que “eliminá-los” tem um custo muito alto e é improvável que uma organização utilize uma política para que esse processo não ocorra, além do mais isso criaria uma limitação na manipulação das informações no banco de dados. Tentando mitigar esse problema, Paulo Henrique Silva elencou algumas técnicas para que a ocorrência de hard parses exista apenas em casos indispensáveis, por exemplo: a primeira vez do uso de uma instrução SQL.

Padronização dos códigos SQL

De acordo com estudos de Paulo Henrique Silva, a padronização dos scripts SQL tem um impacto muito grande e importante no desempenho do banco de dados. Para entender o motivo de se ter uma padronização na escrita dos códigos SQL e seu impacto na performance do servidor de banco de dados Oracle, basta imaginar uma equipe onde cada um dos técnicos tem forma diferente de criar scripts. O que pode acontecer num cenário como esse (e provavelmente acontecerá) são duas instruções, que tem como objetivo a projeção de um mesmo resultado, possuírem planos de execução diferentes, ou seja, realizando dois hard parses ao invés de reutilizar o plano já compilado. Isso é muito comum na maioria das empresas, tendo em vista que um simples espaço em branco na criação da consulta, ou se o script SQL foi escrito em caixa alta ou baixa, diferencia duas instruções.
Visando aumentar o reuso dos planos compilados, ou seja, aumentar o soft parse, criar na política da empresa um padrão para escritas dos scripts de banco torna-se algo muito útil para garantir um menor consumo de CPU e melhor alocação de memória do servidor Oracle, o que tornaria o banco de dados mais performático.
Variáveis de ligação (Bind Variables)

Mesmo fazendo uso de uma política de padronização de código SQL, não se garante que sua eficiência atinja o objetivo desejado: a redução de hard parse. Nesse momento é importante agregar um conceito que complemente o trabalho que a primeira técnica propõe: bind variables ou variáveis de ligação.
Para compreender o funcionamento das bind variables, o Quadro 7 apresenta dois exemplos já vistos anteriormente.

As escritas dos comandos estão em um mesmo padrão, porém a crítica de busca é diferente criaria dois planos de execução diferentes. Isso faria com que ocorressem dois hard parses ao invés de um. Uma solução para que isso não ocorra é o uso de bind variables, que terá seu conceito explicado através de exemplos a seguir.
A presença do uso de bind variables, pode ser vista nos chamados: “script compilados”, que são as instruções SQL residentes em functions, procedures e triggers. Nessas situações, independente dos argumentos ou parâmetros passados existirá uma substituição desses valores literais por bind variables, conforme indicado no Quadro 8.
Para efeito de confirmação, o Quadro 9 apresenta um script para verificar o valor do parâmetro CURSOR_SHARING.

Tem-se o resultado exibido na Figura 9.
Figura 9 - Checagem do valor do parâmetro CURSOR_SHARING. (Fonte: autores do documento)
Sabido que quando o CURSOR_SHARING está setado para o valor EXACT, onde não existe a substituição dos literais por bind variables, o comportamento para “scripts compilados” é diferenciado. O Quadro 10 apresenta chamadas à procedure com parâmetros distintos.

Verificando se ocorreu o reuso da consulta existente na procedure com a query exibida no Quadro 4, tem-se o resultado exibido na Figura 10.

Figura 10 - Análise de reuso de query da procedure de teste: PRC_QUERYCOMPILADA. (Fonte: autores do documento)
Dessa forma fica evidente que mesmo com o CURSOR_SHARING=EXACT tem-se a substituição dos literais por bind variables para o caso de scripts compilados em procedimentos (funções e triggers também seguem esse padrão).
Existe outra situação, onde dentro de um bloco lógico, seja ele uma procedure, function ou trigger, pode não ocorrer o reuso de um script SQL, como pode se observar no Quadro 11.

A instrução EXECUTE IMMEDIATE é uma forma de se construir scripts dinâmicos no Oracle, e basicamente sua função é submeter ao banco o comando passado como argumento.
Executando chamadas à nova procedure criada acima (Quadro 11), conforme Quadro 12.

Tem-se o resultado exibido na Figura 11.
Figura 11 - Análise de reuso de script da procedure de teste: PRC_INSERTDINAMICO1. (Fonte: autores do documento)


Pode-se concluir que não existiu reuso da instrução INSERT quando o parâmetro sofreu alteração de valor entre as duas chamadas à procedure. Dessa forma ocorreram dois hard parses ao invés de apenas um, pois se trata de uma mesma instrução com variação nos campos literais.

Para atender ao conceito de script dinâmico juntamente com o conceito de reuso de instruções, existe uma variação no comando EXECUTE IMMEDIATE, que atende aos dois requisitos, conforme exibido no Quadro 13.
Executando chamadas à procedure do Quadro 13, conforme script do Quadro 14.
Tem-se o resultado exibido na Figura 12.


Figura 12 - Análise de reuso de script da procedure de teste: PRC_INSERTDINAMICO2. (Fonte: autores do documento)


Nesse caso, diferente do que ocorreu na chamada à procedure PRC_INSERTDINAMICO1, existiu reuso da instrução INSERT mesmo com parâmetros de valores distintos, ocorrendo assim apenas um hard parse e um soft parse.


Post Escrito por:

quinta-feira, 12 de fevereiro de 2015

Monitorando o Oracle pelo ORATOP

O oratop é uma ferramenta disponível para download no metalink que nos trás varias informações do Banco tudo juntinho, top 5 wait events, transações por minuto, uso de disco, pga etc…
Muito interessante mesmo, para começar faça o download no metalink na nota 1500864.1
Segundo a Oracle só esta disponível para a versão 11.2 a 12.1 para plataforma 32 e 64 bits.
Com o oatop já no servidor de banco faça o seguinte:

Renomeie o arquivo :

1- mv oratop* oratop

conceda as permissões para o arquivo:

2- chmod 755 oratop

Variáveis de ambiente:
Como vamos rodar do servidor de banco espere-se que a maioria das variáveis de ambiente estejam configuradas, ORACLE_HOME, ORACLE_SID etc… Assim pelo menos no meu caso só precisei configurar a variável LD_LIBRARY_PATH

3- export LD_LIBRARY_PATH=$ORACLE_HOME/lib

Agora abrimos o oratop:


4- ./oratop -i 10 / as sysdba

Oratop




Em ambientes RAC , basta executar em um nó apenas.No começo pode ser um pouco confuso mas o help do oratop é muito util.Digite h com o oratop e execução:

Interactive Keys: [default]
        d : toggle between [Cumulative (C)] & Real-Time (RT) (section 3)
        k : toggle between [EVENT/LATCH] & object FILE#:BLOCK# (proc section 4)
        m : Toggle between [USERNAME/PROGRAM] & MODULE/ACTION (proc section 4)
        s : switch to SQL mode (section 4)
        f : toggle between [standard] & detailed format (long)
        p : switch to [process] mode (section 4)
        t : tablespace information
        a : ASM diskgroup information
        x : basic SQL plan table (requires sql_id input)
        i : refresh interval, requires value in seconds [5s]
        q : quit/ exit program (also, { Q | Esc | function keys })

Abbreviations:
        [N/B]: count(N)/ Byte(B) - (k)illo, (M)ega, (G)iga, (T)erra, [PEZY]
        [T]  : Time - (u)micro, (m)illi, (s)econd, (h)our, (d)ay, (y)ear
        [m/s]: stats interval size, (m) 1 minute, (s) 15s, else, Real Time
        [c]  : database service centric

Acronym Help Menu:
        Section 1 - DATABASE        .. [1]
        Section 2 - INSTANCE        .. [2]
        Section 3 - DB WAIT EVENTS  .. [3]
        Section 4 - SQL             .. [4]
        Quit Help                   .. (q|Q)

Enter selection Number:

Aqui podemos conferir as legendas e entender o que é o que:

ID        [c,N]: inst_id (instance id)
%CPU      [m,N]: host cpu busy %(busy/busy+idle). (red if > 90%)
LOAD      [m,N]: current os load. (red if > 2*#cpu & high cpu)
%DCU      [m,N]: db cpu usage as %host cpu. (red if > 99% & high AAS)
AAS       [s,N]: Average Active Sessions. (red if > #cpu)
ASC       [c,N]: active Sessions on CPU
ASI       [c,N]: active Sessions waiting on user I/O
ASW       [c,N]: active Sessions Waiting, non-ASI (red if > ASC+ASI)
AST       [c,N]: Active user Sessions Total (ASC+ASI+ASW)
IOPS      [m,N]: i/o requests per second
%FR       [s,N]: shared pool free %
PGA       [s,N]: total pga allocated
UTPS      [s,N]: user transactions per sec
UCPS    [c,m,N]: user calls per sec
SSRT    [c,m,T]: sql service response time (T/call)
%DBT      [s,N]: instance %Database Time (e.g. non-rac shows 100%)

terça-feira, 13 de janeiro de 2015

Consultas para o Oracle

****************************
* Consultando tamanho da tabela *
*****************************

- Exibir tamanho total de uma tabela em mega bytes



select  owner,  segment_name  table_name,   sum(bytes)/(1024*1024) MBytes
from  dba_extents
where owner ='USUARIO' and
segment_type='TABLE'      and  
segment_name = 'TABELA'
group by segment_name;




************************************************************
* Consultando privilégios de usuário - SYSDBA, SYSOPER, SYSASM  *
************************************************************

View Oracle Utilizada:  V$PWFILE_USERS

Essa view permite consultar quais usuários possuem privilégios das roles SYSDBA, SYSOPER, SYSASM;

SELECT * FROM V$PWFILE_USERS;

Ex:

Oracle Database 11g Release 11.2.0.3.0 - 64bit Production

SQL> SELECT * FROM V$PWFILE_USERS;

USERNAME                       SYSDBA SYSOPER SYSASM
------------------------------ ----- -----    -----
SYS                                 TRUE       TRUE     FALSE

SQL>


Ao conceder esses privilégios a algum usuário sua administração esta relacionadas ao arquivo orapwd de cada Banco de Dados Oracle.


Usage: orapwd file=<fname> entries=<users> force=<y/n> ignorecase=<y/n> nosysdba=<y/n>

  where
    file - name of password file (required),
    password - password for SYS will be prompted if not specified at command line,
    entries - maximum number of distinct DBA (optional),
    force - whether to overwrite existing file (optional),
    ignorecase - passwords are case-insensitive (optional),
    nosysdba - whether to shut out the SYSDBA logon (optional Database Vault only).
   
  There must be no spaces around the equal-to (=) character.



=======================================================================

****************************************
* Views Utilizadas para Administrar Instancia ASM    *
****************************************

Algumas views utilizadas para administrar Instancia ASM, permitem descrever a estrutura e componentes do ASM.


V$ASM_ALIAS - Esta view mostra todos alias definidos pelo sistema e usuário. Em bases de dados RDBMS está view não retorna linha.


V$ASM_ATTRIBUTE - Esta view do Oracle database 11g mostra uma linha para cada ASM atributo definido. Este atributo são listado quando ele são definidos na declaração do CREATE DISKGOUP ou ALTER DISKGROUP. DISK_REPAIR_TIMER é um exemplo desse atributo.

V$ASM_CLIENT - Esta view mostra uma linha para cada instance RDBMS que tem aberto um diskgroup ASM;

V$ASM_DISK - Esta view contem especificações sobre todos os discos descoberto pela instancia ASM, incluindo status montado, estado do disco e tamanho. Existe uma linha para cada disco descoberto pela instancia ASM;


V$ASM_DISK_IOSTAT - Está view mostra informação sobre estatística de I/O de disco para cada cliente ASM. Esse está view consultada pelo database somente uma linha é mostrada.

V$ASM_DISK_STAT -  Esta view contém conteúdo similiar com a V$ASM_DISK, exceto V$ASM_DISK_STAT lê informação do disco, do cache, sem consultar o disco, usada para acesso rápido sem overhead de disco.

V$ASM_DISKGROUP - Esta view mostra uma linha para cada diskgroup ASM descoberto pela  instancia ASM do nó(node)

V$ASM_DISKGROUP_STAT - Esta view contém conteúdo todas as view similares como a V$ASM_DISKGROUP, exceto V$ASM_DISKGROUP_STAT lê informação do disco, do cache, sem consultar o disco, usada para acesso rápido sem overhead de disco.

V$ASM_FILE - Esta view mostra informação sobre arquivos ASM. Existe uma linha para cada
  diskgroup montado pela instancia ASM. Em uma Instancia RDBMS não retorna linhas.


V$ASM_OPERATION - Esta view descreve o progresso de uma operação de rebalanceamento. Em uma instancia RDBMS, esta view não retorna linhas.

V$ASM_TEMPLATE - Esta view contém informação de templates definidos por usuário e sistema. Mostra uma linha para template presente em cada diskgroup montando sobre uma instancia ASM. Em uma instancia RDBMS mostra uma linha para cada template presente em cada diskgroup montado pela instancia ASM com que a instancia RDBMS esta em comunicação.




Instalação Básica Oracle Linux 6.6

Instalação Básica do Oracle Linux, utilizando o virtualbox.


Para acompanhar está instalação é necessário efetuar a instalação do Virtualbox, onde pode ser feita utilizando os passos do link abaixo.


Criando uma máquina virtual Linux para Instalação do Software Oracle Linux 6.6

Com o virtualbox aberto, clique em Novo ou Arquivo Novo, será direcionado para a tela de criação de máquina virtual, bastando seguir os passos conforme abaixo. O mesmo pode ser 32 ou 64 bits, observando a versão do Oracle Linux que foi baixado, no meu caso eu baixei o 64bits.



Como é uma instalação básica estou colocando 2G de memória podendo ser aumentada se desejar.
Clique em Próximo.


Escolhar criar um disco rígido virtual agora  
Clique em Próximo.


No tipo de arquivo tanto faz utilizar VDI padrão virtualbox ou VMDK padrão Virtual Machine o qual eu gosto muito de utilizar, onde o mesmo é compatível com o Virtual Machine, caso queira depois migrar para o Virtual Machine.
Clique em Próximo.

Como não quero utilizar um tamanho fixo, escolho Dinamicamente alocado, crescendo conforme a minha instalação, isso deixa a instalação um pouco lenta, mais não estarei ocupando um tamanho em disco de imediato me permitindo ter mais espaço no sistema operacional onde o virtualbox está instalado.
Clique em Próximo.


No tamanho de disco para essa máquina virtual escolho 30G, suficiente para um ambiente básico de estudo.
Clique em Criar - será criada a máquina virtual com configurações básica..


No virtualbox clique em configuações, ou clique em cima da máquina virtual criada com o botão direito e escolha configurações.

Vá em Armazenamento / Árvore de Armazenamento /  Controladora : IDE clique no sinal de + com um CD no fundo - a primeira imagem.

(Esse passo pressupõem que já tenha baixado a imagem de instalação ISO)



 
Escolha  - Escolher disco



No diretório onde você baixou a imagem do Oracle Linux escolha V52218-01.iso e selecione Abrir.



Logo após selecionar você verá a ISO abaixo da controladora como mostrado
Na guia ao lado selecione Rede e coloque seu Adaptador de Rede como Conectado a: Placa em modo Bridge, isso ira permitir você pingar na máquina através do host onde está instalado o software do Virtualbox e também acessado através de sua rede.

Clique em Ok.

Feito isso, clique em Iniciar, a seta verde Acima para inicializar a máquina virtual e efetuar o boot pela isso.


Acessando o site Oracle linux para baixar a ISO de Instalação:

É necessário que possua uma conta Oracle para autenticar.

Aconselho que se faça a instalação do Download Accelerator caso você não tenha uma boa internet ou até mesmo para baixar mais rápido.




Na opção Oracle Linux clique em Download.
 Clique em Sign in / Register


 Necessário que você tenha uma conta Oracle.





Marque as opções para concordar com o termo de uso do Oracle Linux e clique em Continue



Selecione o tipo de linux deseja baixar, no meu caso baixe o de 64bits, versão Oracle Linux 6 Update 6



Para efetuar a instalção a Iso V52218-01 já possibilita a instalação do Linux, eu gosto de baixar todos para deixar disponível em minha máquina, caso precise da instalação de alguma biblioteca (RPM)







Pronto agora vamos efetuar a instalação do Oracle Linux,  a ISO sendo linda pelo boot vai aparecer a tela da Instalação do Oracle Linux abaixo:

Selecione Install or upgrade an existing system e clique em enter para executar.



Clique na tecla TAB para selecionar SKIP e clique em Enter.



Clique em Next.

Selecione a linguagem usado no processo de instalação, escolha English(English) e clique em Next.

Selecione o Modelo de seu teclado o meu é compatível  ao idioma Americano por isso
escolhi U.S English, caso o seu seja ABNT ou ABNT2 escolha Portuguese e clique em Next.

Escolha Basic Storage Devices e clique em Next.

Vai aparecer a seguinte tela abaixo, selecione yes, discard any data. Clique em Next.

No Hostname coloque o nome da máquina, no meu caso estou colocando o nome como oraclelnx6, clicando no botão Configura Network, vai aparecer as opção de configuração da placa de rede eu deixe como está em Automatic DHCP, pegando um ip da minha rede. Confirme a sua configuração e clique em Next.

Selecione o time zone, selecione a cidade mais próxima São Paulo, America e clique em Next.

Coloque a senha do seu usuário root, eu coloque oracle depois confirme Use Anyway e clique em Next.

Como estamos fazendo uma configuração Básica selecione Use All Space, será usada um configuração do linux sem a nossa intervenção.  Clique em Next.

Obs: No modo Avançado é utilizado o Create Custom Layout, onde podemos configurar o tamanho de cada partição no Linux.


Vai aparecer a tela abaixo selecione Write chances to disk, depois clique em Next.

Selecione Desktop e clique em Next.

Será feita a instalação do Oracle Linux.

Clique em Reboot para reinicializar.

Ao reinicializar, será mostrada a seguinte tela para efetuar um pequena configuração do Oracle Linux. Clique em Forward.

Selecione yes, I agree totye License Agreement para concorda com o termo de licença do Oracle Linux e clique em Forward.

Selecione No, I prefer to register at a later time e clique em Forward.

Selecione No tanks, I'll connect later e clique Forward.

Clique em Forward.

Crie seu primeiro usuário no meu caso criei um com meu nome. Clique em Forward.

Clique em yes para confirmar a senha caso ela seja fraca e clique em Forward.


Selecione a data e horário e clique em Forward.

Clique em Finish.

Clique em yes e clique em Finish.


Pronto a instalação do Oracle Linux está feita divirta-se.