Criar uma Loja Virtual Grátis
 Pedro Marques Software

PSQUISA DO SITE
O QUE VOCÊ ACHOU DO SITE DE SUA OPINÃO
SEMPRE MELHORA
AJUDAR AS PESSOAS
APERDER COM AS CRITICAS
FELIZ COM OS ELOGIOS
SEMPRE QUERIDO AJUDAR
CADA DIA SER MAIS ATIVO
DICA PARA ESTUDOS
JESUS E TUDO QUE TENHO
Ver Resultados

Rating: 2.6/5 (185 votos)




ONLINE
4





ADMINISTRAÇÃODE BANCO DE DADOS

                ADMINISTRAÇÃO DE BANCO DE DADOS

 

 

Tarefas do Administrador de Banco de Dados.

 

 

  • Planejar e criar bancos de dados.
  • Gerenciar a disponibilidade e desempenho do banco de dados.
  • Criação de Usuários.
  • Definição dos Perfis e controles de acesso.
  • Gerenciar armazenamento e espaços de acordo co especificações de estrutura.
  • Gerenciar segurança e Integridade.
  • Backup e recuperação.

 

 

 

Tarefas do Administrador de Dados.

 

 

  • Define a Política de Dados na Empresa.
  • Define Padrões na criação dos objetos.
  • Cria e Mantêm o Modelo Conceitual de Dados.
  • Auxiliar os usuários, evitando redundâncias.
  • Define, junto aos usuários, a política de acesso aos dados.
  • Auditoria nos Dados.
  • Manter a ferramenta CASE.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

QUADRO RESUMO DA ESTRUTURA DE BANCO DE DADOS ORACLE

 

COMPOSTA DE DUAS PARTES:

 

         ESTRUTURA FÍSICA

                  - Sempre esta no ar.

                   - Arquivos do Oracle

 

         ESTRUTURA LÓGICA – Instância.

                   - Somente quando o Oracle esta no ar.

 

1 – ESTRUTURA FÍSICA

         1.1 – Data Files – Dados, Índices, Objetos

         1.2 – Control Files – Arquivos de controle para integridade.

         1.3 – Redo Log Files – Transações realizadas para recuperação.

         1.4 – Parameter Files – Localização e Controle das estruturas físicas.

         1.5 – Password Files – Senha do Administrador

          1.6 – Archived Log Files – opcional, transações realizadas no BD.

 

2 – ESTRUTURA LÓGICA – INSTÂNCIA

 

         Instância Oracle (cria uma System Global Área – SGA)

 

2.1 – Instância – Composta de Estruturas de Memória e Processos do

                               Segundo Plano.

 

    2.1.1 – System Global Área(SGA) – Conjunto de Estrutura de Memória.

         2.1.1.1 – Shared Pool – Armazena comandos SQL, PLSQL e dados do

                                                  Dic. Dados utilizados.

              2.1.1.1.1 – Library cachê – Armazena informações de SQL, PLSQL.

                  2.1.1.1.1.1 – Shared SQL – Armazena comandos SQL.

                  2.1.1.1.1.2 – Shared PLSQL – Armazena cdomandos PLSQL.

              2.1.1.1.2 – Data Dictionary Cachê – Definições tabela, Índices, View

         2.1.1.2 – Database Buffer Cachê – Armazena dados processados pelas

                                                                    consultas.

2.1.1.3       - Redo Log Buffer – Armazena dados alterados.

2.1.1.4       – Java Pool – Rotinas e Comandos Java.

2.1.1.5       – Large Pool – Implementar servidores compartilhados.

 

 

 

 

 

 

    2.1.2 – Processos do Segundo Plano (Background)

         2.1.2.1 – Data Base Writer (DBWO)  - Grava informações do DB-Buffer

                                                                           para os Data Files.

         2.1.2.2 – Log Writer (LGWR)  - Transfere do Redo Log Buffer para os

                                                               Log Files.

         2.1.2.3 – System Monitor (SMON)  - Recupera o BD em caso de falhas.

         2.1.2.4 – Process Monitor(PMON)  - Limpeza dos processos que

                                                                       Falharam.

         2.1.2.5 – Checkpoint (CKPT)           - Sinaliza o DBWO.

         2.1.2.6 – Archiver (ARCN)               - Transfere do Redo Log files para os

                                                                       Archived Log Files.

 

2.2 – Program Global Área - PGA

    2.2.1 – Private SQL Área – Contém informações específicas de cada sessão

                                                  usuária.

          2.2.1.1 – Área de Persistência – Contém dados de Parâmetro Bind

          2.2.1-2 – Área de Runtime – Comandos aplicados ao BD.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Administração de Banco de Dados Oracle

 

Tarefas do Administrador de Banco de Dados.

 

  • Gerenciar a disponibilidade do banco de dados.
  • Planejar e criar bancos de dados.
  • Gerenciar armazenamento de acordo co especificações de estrutura.
  • Gerenciar segurança.
  • Backup e recuperação.

 

 

VISÃO GERAL

 

 

 

         O Servidor Oracle é um RDBMS (Sistema de gerenciamento de banco de dados relacionais de objetos) que oferece uma abordagem aberta, abrangente e integrada ao gerenciamento de informações. 

 

Componentes principais

 

         Há vários processos, estruturas de memória e arquivos em um servidor Oracle. No entanto, nem todos esses itens são usados durante o processamento de uma instrução SQL. Alguns são utilizados para melhorar o desempenho do banco de dados, garantir que o mesmo possa ser recuperado caso ocorra um erro de software ou hardware, ou executar outras tarefas necessárias para a manutenção do banco de dados. O servidor Oracle consiste em uma instância Oracle e em um banco de Dados Oracle.

 

Instância Oracle

 

         É a combinação dos processos de segundo plano e das estruturas de memória (SGA). A instância deve ser iniciada para acessar os dados do banco de dados. Toda vez que uma instância é iniciada, uma SGA (System Global Área – Área global do sistema) é alocada e os processos de segundo plano do Oracle são iniciados.

SGA é uma área de memória usada para armazenar informações de bancos de dados que sejam compartilhadas pelos processos do banco de dados. Ela contém dados e controla informações para o servidor Oracle. Ela está alocada na memória virtual do computador pelo qual o servidor Oracle reside. A SGA consiste em diversas estruturas de memória:

  • Pool compartilhado (Shared Pool) é usado para armazenar instruções SQL mais executadas recentemente e os dados do dicionário de dados mais usados. Essas instruções SQL podem ser submetidas por um processo de usuário, ou, no caso de procedimentos armazenados, lidas do dicionário de dados.
  • Cache de buffer de banco de dados (Data buffer cache) é usado para armazenar os dados mais usados recentemente. Os dados são lidos e gravados nos arquivos de dados.
  • Buffer de redo log (Redo log buffer) é usado para controlar as alterações efetuadas no banco de dados pelo servidor e pelos processos de segundo plano.

 

Processos de segundo plano

 

Esses processos em uma instância executam funções comuns que são necessárias para as solicitações de serviço de usuários simultâneos, sem comprometer a integridade e o desempenho do sistema.  Eles consolidam funções que, de outro forma, seriam tratadas por diversos programas Oracle executados para cada usuário. Os processos de segundo plano executam tarefas de E/S e monitoram outros processos Oracle, para oferecer maior paralelismo, o que aumenta o desempenho e confiabilidade.

Dependendo da configuração, uma instância Oracle pode incluir vários processos de segundo plano, no entanto cada instância inclui estes cinco processos de segundo plano fundamentais:

 

  • O Database Writer (DBW0) é responsável por gravar dados alterados do cache de banco de dados nos arquivos de dados.
  • O Log Writer (LGWR) grava as alterações registradas no buffer de redo log (redo log buffer) nos arquivos de redo log.
  • O Monitor de sistemas (SMON, System Monitor) verifica a consistência no banco de dados e, se necessário, inicia a recuperação do banco de dados quando ele é aberto.
  • O Monitor de Processos (PMON, Process Monitor) disponibiliza recursos se um dos processos Oracle falhar.
  • O Checkpoint Process (CKPT) é responsável pela atualização das informações de status do banco de dados nos arquivos de controle e nos arquivos de dados, sempre que as alterações efetuadas no cachê de buffer ficam registradas no banco de dados de forma permanente.

 

 

  • Os processos de segundo plano executam funções referentes ao processo de chamada. Eles consolidam funções que, de outra forma, seriam tratadas por diversos programas Oracle executados para cada usuário. Os processos de segundo plano executam tarefas de E/S e monitoram outros processos Oracle, para oferecer maior paralelismo, o que aumenta o desempenho e a confiabilidade.

 

ARQUIVOS DE BANCO DE DADOS ORACLE

 

        

 

 

Um banco de dados Oracle consiste em três tipos de arquivos que formam sua estrutura física.

 

  • Arquivos de dados (Data files): São os arquivos que guardam as informações que são cadastradas pelo usuário, assim como o dicionário de dados com a estrutura do banco. Um banco de dados contém pelo menos um arquivo de dados, com as seguintes características.

- É associado a apenas um banco de dados.

- Podem ser configurados para ter crescimento automático quando o banco ficar sem espaço.

- Um ou mais arquivo de dados, formam uma tablespace (Estrutura lógica que será vista posteriormente).

 

  • Arquivos de Redo (Redo log files): São arquivos que contêm registro das alterações efetuadas no bando de dados, para ativar a recuperação dos dados se houver falhas. Um banco de dados requer pelo menos dois arquivos de redo log.

 

  • Os arquivos de controle (Control Files): Arquivos que contêm as informações necessárias para manter e verificar a integridade do banco de dados. Ele é usado para identificar os arquivos de dados e de redo log.

 

OUTROS ARQUIVOS IMPORTANTES

 

 

 

         O Servidor Oracle utiliza outros arquivos que não fazem parte do banco de dados:

 

  • Arquivo de parâmetro (Parameter file): define uma característica de uma instância Oracle como, por exemplo, parâmetros que dimensionam algumas estruturas de memória na SGA.

 

  • Arquivo de senhas (Password file): autentica os usuários que tem permissão para inicializar e desativar uma instância Oracle.

 

  • Arquivo de redo log arquivados: São cópias off-line dos arquivos de redo log que podem ser necessários para a recuperação depois de falhas de mídia.

 

 

 

Estabelecendo uma conexão dom um Banco de Dados

 

 

 

 

 

 

 

 

Três tipos de conexões distintas:

  • O usuário estabelece logon no sistema operacional e inicia uma aplicação ou ferramenta que acesse o banco de dados neste sistema.
  • O usuário inicia aplicação ou ferramenta em computador local e conecta-se através de uma rede a uma instancia de banco de dados. Esta é a configuração denominada Client/Server.
  • Conexão de três camadas, o computador do usuário se comunica pela rede com uma aplicação ou servidor de rede. Ex: O usuário executa um browser (Internet Explorer) para usar uma aplicação que reside em um servidor NT que recupera dados de um banco de dados Oracle com host Unix em execução.

 

 

Processando uma Consulta

 

         As consultas são distintas das outras consultas, pois retornam resultados (uma ou mais linhas), enquanto outras consultas SQL retornam apenas se houve êxito ou não. Em uma consulta existem três estágios principais:

  • Analisando uma instrução SQL
    1. Procura cópia da instrução SQL no Shared Pool.
    2. Valida a Instrução SQL (Sintaxe).
    3. Efetua pesquisas no dicionário de dados para validar tabelas e campos.
    4. Verifica os privilégios do usuário.
    5. Determina o plano de execução ideal para a instrução (índices).

 

Na fase de análise apenas são feitos verificações de erros que possam ocorrer antes da execução. Erros de conversão de dados ou informação duplicada de chave primária são tratadas na fase de execução.

 

  • Executando a Instrução SQL

Neste ponto, o servidor Oracle possui os recursos necessários para a execução dos comandos, no caso de instrução SELECT, é preparado o processo de recuperação de dados. Identifica as linhas para extração.

 

  • Extraindo as linhas de uma Consulta

Neste estágio as linhas são selecionadas e ordenadas se necessário e passadas pelo servidor ao usuário. Dependendo do número de linhas podem ser necessários um ou mais processo de extração.

 

 

 

 

 

 

 

Componentes do Shared Pool

         Na fase de análise, o processo de servidor usa a área na SGA (Pool Compartilhado) para compilar a instrução. No Shared Pool existem dois componentes:

  • Library Cache (Cache de biblioteca) -> Armazena informações sobre as instruções SQL mais utilizadas recentemente em uma estrutura de memória, denominada SQL, contendo alguns itens:
    1. Texto da instrução SQL
    2. Árvore de análise: Versão compilada do comando.
    3. Plano de execução.  É usado o Otimizador (Função do servidor Oracle que determina o plano de execução ideal).

Se uma instrução SQL for executada novamente, e a área de memória SQL compartilhada já tiver esta instrução, o processo de servidor não irá analisar a instrução, melhorando o desempenho. Caso a instrução SQL não seja reutilizada, em algum momento ela sairá do Libary Cache.

  • Data Dictionary Cache (Cache do dicionário de dados) -> É um conjunto de definições mais usadas recentemente no banco de dados. Inclui informações sobre arquivos de banco de dados, tabelas, índices, colunas, usuários, privilégios e outros objetos de banco de dados.

Na fase de análise, o processo de servidor analisa os nomes de objetos de dados identificados na instrução SQL e valida os privilégios de acesso.

 

         O Shared Pool tem o tamanho especificado pelo parâmetro SHARED_POOL_SIZE no arquivo de inicialização (init.ora).

 

 

 

 

         O Data Buffer Cache é formado por alguns blocos do banco Oracle que armazenam as consultas processadas recentemente. Quando a consulta é processada, o processo de servidor procura no Data Buffer Cache pelos blocos necessários. Caso o bloco não seja encontrado, será buscado no DATA FILE e gravado uma cópia no Buffer de Cache. O servidor oracle usa algoritmos para verificar os blocos menos utilizados recentemente e retirá-los, a fim de criar espaço para novos blocos no Data Buffer Cache.

         O Data Buffer Cache tem o tamanho de cada buffer, é igual ao tamanho do bloco de banco, especificado pelo parâmetro DB_BLOCK_SIZE (o tamanho varia de 2 a 64 K). O número de buffers é igual ao valor do parâmetro DB_BLOCK_BUFFERS.

         Ex:

         db_block_size     ->      2

                                               X

         db_block_buffers          ->      10

                                               =

db_buffer_cache           ->     20

 

Área Global do Processo (PGA)

         A PGA (Process Global Area) é uma região de memória que contém dados e controla informações para um único processo de servidor ou um único processo de segundo plano.

         A PGA do servidor inclui alguns componentes:

  • Área de classificação: Usada para qualquer classificação necessária para processar a instrução SQL (Order by).
  • Informações de sessão: Inclui privilégios de usuários.
  • Estado do cursor: Indica o estágio do processamento que estão na sessão no momento. (Open, Closed).

 

         A PGA é alocada quando um processo é criado e desalocada quanto o processo é encerrado.

 

        

Processando uma Consulta DML

 

         Uma instrução DML requer apenas duas fases de processamento:

 

  • Analisando uma instrução DML (Igual ao processo consulta SQL)
  •  
    1. Procura cópia da instrução SQL no Shared Pool.
    2. Valida a Instrução SQL (Sintaxe).
    3. Efetua pesquisas no dicionário de dados para validar tabelas e campos.
    4. Verifica os privilégios do usuário.
    5. Determina o plano de execução ideal para a instrução (índices).

 

 

  • Executando a Instrução DML

Para executar uma instrução DML:

 

  •  
    1. Se não houver blocos de rollback e dados no Data Buffer Cache, o processo de servidor fará sua leitura dos Data Files para o Cache de Buffer.
    2. Processo de servidor bloqueia as linhas que serão modificadas.
    3. No Redo Log Buffer, são registradas as alterações a serem feitas no rollback e dados.

- As alterações de bloco de rollback registram os valores dos dados antes de serem modificados, armazenam de forma que as instruções DML possam ser submetidas a rollback se necessário.

- As alterações dos blocos de dados registram os novos valores de dados.

4.  O Processo de servidor registra a imagem original do bloco de rollback e atualiza o bloco de dados. Essas duas alterações são efetuadas no cache de buffer do banco de dados. Qualquer bloco alterado no cache de buffer será marcado como buffer sujo, ou seja, os buffers que não são iguais aos blocos correspondentes no disco.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Buffer de Redo Log

 

 

         O Servidor registra a maioria das alterações efetuadas nos blocos de arquivos de dados no Redo log buffer.

 

         Características:

·         Seu tamanho em bytes é definido pelo parâmetro LOG_BUFFER.

·         Registra o bloco alterado, e o novo valor em uma entrada de Redo. Registra apenas quais bytes são alterados em quais blocos.

·         É usado seqüencialmente: as ações podem ser intercaladas de criadas por transações distintas.

·         É um buffer circular que será reutilizado apenas quando entradas de Redo antigas forem registradas nos arquivos de redo log.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Arquitetura de Banco de Dados

 

A arquitetura de banco Oracle inclui estruturas lógicas e físicas que compõem o Banco de Dados.

  • A estrutura física inclui os arquivos de controle, os arquivos de redo log on-line e os arquivos de dados que compõem o Banco de Dados.
  • A estrutura lógica inclui tablespaces, segmentos, extensões e blocos de dados.

 

O Servidor Oracle permite controle de maior especificidade do uso de espaço em disco através de estruturas de armazenamento lógico e tablespaces.

 

 

S.O blocos

 

 

 

 

TABLESPACES

 

SYSTEM: This Owner should have an identified separate Tablespaces to host its
Schema objects. This tablespace is called SYSAUX. If this tablespace is
tablesapce is not created the upgrade from Oracle 9i to 1og is not possible.


Multiple Temporary Tablespaces creation and management as said by Oracle


Using Tablespace Groups

A tablespace group enables a user to consume temporary space from multiple tablespaces.
A tablespace group has the following characteristics:

It contains at least one tablespace.

There is no explicit limit on the maximum number of tablespaces that are contained in a group.

It shares the namespace of tablespaces, so its name cannot be the same as any tablespace.

You can specify a tablespace group name wherever a tablespace name would appear when you assign a default temporary tablespace for the database or a temporary tablespace for a user.

You do not explicitly create a tablespace group. Rather, it is created implicitly when you assign the first temporary tablespace to the group. The group is deleted when the last temporary tablespace it contains is removed from it.

Using a tablespace group, rather than a single temporary tablespace, can alleviate problems caused where one tablespace is inadequate to hold the results of a sort, particularly on a table that has many partitions. A tablespace group enables parallel execution servers in a single parallel operation to use multiple temporary tablespaces.

The view DBA_TABLESPACE_GROUPS lists tablespace groups and their member tablespaces.

Creating a Tablespace Group

You create a tablespace group implicitly when you include the TABLESPACE GROUP clause in the CREATE TEMPORARY TABLESPACE or ALTER TABLESPACE statement and the specified tablespace group does not currently exist.

For example, if neither group1 nor group2 exists, then the following statements create those groups, each of which has only the specified tablespace as a member:

CREATE TEMPORARY TABLESPACE lmtemp2
TEMPFILE
'/u02/oracle/data/lmtemp201.dbf' SIZE 50M
TABLESPACE GROUP group1;

ALTER TABLESPACE lmtemp TABLESPACE GROUP group2;

Changing Members of a Tablespace Group

You can add a tablespace to an existing tablespace group by specifying the existing group name in the TABLESPACE GROUP clause of the CREATE TEMPORARY TABLESPACE or ALTER TABLESPACE statement.

The following statement adds a tablespace to an existing group. It creates and adds tablespacelmtemp3 to group1, so that group1 contains tablespaces lmtemp2 and lmtemp3.

CREATE TEMPORARY TABLESPACE lmtemp3
TEMPFILE '/u02/oracle/data/lmtemp301.dbf'
SIZE 25M
TABLESPACE GROUP group1;

The following statement also adds a tablespace to an existing group, but in this case because tablespace lmtemp2 already belongs to group1, it is in effect moved from group1 to group2:

ALTER TABLESPACE lmtemp2 TABLESPACE GROUP group2;

Now group2 contains both lmtemp and lmtemp2, while group1 consists of only tmtemp3.

You can remove a tablespace from a group as shown in the following statement:

ALTER TABLESPACE lmtemp3 TABLESPACE GROUP '';

Tablespace lmtemp3 no longer belongs to any group. Further, since there are no longer any members of group1, this results in the implicit deletion of group1.

Assigning a Tablespace Group as the Default Temporary Tablespace
Use the ALTER DATABASE ...DEFAULT TEMPORARY TABLESPACE statement to assign a tablespace group as the default temporary tablespace for the database. For example:

ALTER DATABASE sample DEFAULT TEMPORARY TABLESPACE group2;

Any user who has not explicitly been assigned a temporary tablespace will now use tablespaces lmtemp and lmtemp2.

If a tablespace group is specified as the default temporary tablespace, you cannot drop any of
its member tablespaces. You must first be remove from the tablespace from the tablespace group. Likewise, you cannot drop a single temporary as long as it is the default temporary tablespace.

Specifying Nonstandard Block Sizes for Tablespaces

You can create tablespaces with block sizes different from the standard database block size, which is specified by the DB_BLOCK_SIZE initialization parameter. This feature lets you transport tablespaces with unlike block sizes between databases.

Use the BLOCKSIZE clause of the CREATE TABLESPACE statement to create a tablespace with a block size different from the database standard block size. In order for the BLOCKSIZE clause to succeed, you must have already set the DB_CACHE_SIZE and at least one DB_nK_CACHE_SIZE initialization parameter. Further, and the integer you specify in the BLOCKSIZE clause must correspond with the setting of one DB_nK_CACHE_SIZE parameter setting. Although redundant, specifying a BLOCKSIZE equal to the standard block size, as specified by the DB_BLOCK_SIZE initialization parameter, is allowed.

 

 

 

The following statement creates tablespace lmtbsb, but specifies a block size that differs from the standard database block size (as specified by the DB_BLOCK_SIZE initialization parameter):

CREATE TABLESPACE lmtbsb DATAFILE
'/u02/oracle/data/lmtbsb01.dbf' SIZE 50M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K
BLOCKSIZE 8K;

Os dados em um banco de dados Oracle são armazenados em tablespaces.

  • Um banco de dados pode ser alocado em áreas lógicas menores, conhecidas como tablespaces.
  • Um tablespace pode pertencer a somente um banco de dados.
  • Cada tablespace consistem em um ou mais arquivos de dados - Datafiles.
  • Um tablespace pode consistir em um ou mais segmentos ( pedaços do tablespace).
  • Os tablespaces podem ser colocados on-line enquanto o banco de dados está em execução, e off-line para algumas atividades especiais.
  • Tablespaces pode ter o status read-write e read-only.
  • Existem tablespace de SYSTEM (dicionário  Dados) e NON-SYSTEM (dados e aplicações dos usuários) .
  • Data Files são a implementação física dos Tablespaces.

 

 

 

CRIANDO UMA TABLESPACE

 

SINTAXE:

 

CREATE TABLESPACE       <tablespace>data01

DATAFILE                       <clausulas datafile>,

                                      <clausulas datafile>

MINIMUM EXTENT           <tamanho [K|M]>

[LOGGING | NOLOGGING]

DEFAULT STORAGE          <clausulas>

[ONLINE | OFFLINE]

 

<tablespace> Nome da tablespace a ser criada.

 

<clausula datafile> Especifica um ou mais arquivos de dados para a tablespace.

 

MINIMUM EXTENT <tamanho [K|M]> Garante que todo tamanho de extensão usado no tablespace seja múltiplo de inteiro. (K ou M para especificar esse tamanho em quilobytes ou megabytes).

 

LOGGING Especifica que por default, todas alterações feitas em tabelas do tablespace serão gravadas no arquivo de REDO.

NOLOGGING Especifica que por default, todas alterações feitas em tabelas do tablespace não serão gravadas no arquivo de REDO.

 

DEFAULT Especifica parâmetros de armazenamento default de todos os objetos criados no tablespace.

 

ONLINE Torna o tablespace disponível para uso imediatamente após sua criação.

 

OFFLINE Não deixa o tablespace disponível após sua criação.

 

COMANDO:

 

CREATE TABLESPACE  data01

DATAFILE 'C:Oracleoradataoracle/app_data_01.dbf'  SIZE 5 M REUSE,

                  'C:Oracleoradataoracle/app data_ 02.dbf'  SIZE 5 M REUSE

  MINIMUM EXTENT 500K

  DEFAULT STORAGE (  INITIAL                       500K

                                      NEXT                           500K

                                      MAXEXTENTS             500

                                      PCTINCREASE              0 );

 

Criando tabela, definindo um tablespace e tamanhos para objetos.

 

Create table XXX

(cod_xxx number(5)

Tablespace DATA01 ( initial  2M

                            Next   2M

                            Pctincrease   3

                            Minextentes  3

                            Maxextents   10 )

EXEMPLO

 

CREATE TABLE customer

  (nome varchar2(25),

   endereço varchar2(40))

TABLESPACE data01

   Storage (initial 2M

                Next 2M

                Minextents 2

                Maxextents 256

                Pctincrase 0);

 

Alterando definições de Armazenamento

 

ALTER TABLESPACE DATA01

MINIMUM EXTENT  2M;

 

ALTER TABLESPACE DATA01

DEFAULT STORAGE ( INITIAL  2M

                               NEXT     2M

                               MAXEXTENTS 999);

 

TABLESPACE SYSTEM  E NÃO-SYSTEM

 

SYSTEM

  • Criada junto com o Banco de Dados.
  • Necessário para todos os bancos.
  • Não devem conter dados de usuários, embora seja permitido.
  • Contém dicionário de dados.

 

NÃO-SYSTEM

  • Podem separar segmentos (índices, rollback e dados).
  • Controla espaço alocado para objetos dos usuários.
  • Separa dados por necessidade de backup.

 

OBS: Quando é criado um usuário passando apenas LOGIN e SENHA, ele é alocado para a tablespace SYSTEM, suas tabelas conseqüentemente também.

 

ALTER USER USUÁRIO1

IDENTIFIED BY SENHA;

 

ALTER USER USUÁRIO2

IDENTIFIED BY SENHA

DEFAULT TABLESPACE DATA01;

 

 

Obtendo Tablespaces OFF-LINE ou ON-LINE

 

ALTER TABLESPACE DATA01 OFFLINE;

ALTER TABLESPACE DATA01 ONLINE;

 

 

 

 

 

OFFLINE     -> Torna parte do Banco não disponível, ao mesmo tempo acesso normal ao restante do banco.

                   -> Executa backup do tablespace OFF-LINE, embora seja possível fazer com ela ON-LINE.

                   -> Move arquivo de dados da tablespace com o Banco aberto.

                           

Obs.: Quando o tablespace está OFF-LINE, não é permitida instrução SQL a objetos contidos neste tablespace.

         Quando está OFF-LINE e volta a ficar ON-LINE.  Este evento é gravado no dicionário de dados e no controlfile.

 

 

Tablespace somente para leitura

 

ALTER TABLESPACE DATA01 READ ONLY;

ALTER TABLESPACE DATA01 READ WRITE;

 

Obs.: Com o tablespace READ ONLY, não é permitida a gravação de dados (espera os commits ou rollbacks dos processos não finalizados.)

- Podem ser eliminados índices, tabelas, etc. Isto porque o comando DROP só atualiza o dicionário de dados, não mexe com os datafiles.

- Não deve existir nenhuma transação ativa. Deve-se fechar o banco e abrir novamente.

 

Eliminando um Tablespace

 

DROP TABLESPACE DATA01

INCLUDING CONTENTS

CASCADE CONSTRAINTS

 

INCLUDING -> Elimina os segmentos no tablespace que está sendo apagado (tabelas, índices).

CASCADE -> Elimina restrições (FK) de tabelas externas ao tablespace que se referem às chaves primárias das tabelas no tablespace eliminado.

 

 

Eliminando ou Inserindo datafile no tablespace

 

ALTER TABLESPACE DATA01

ADD DATAFILE ‘C:ORACLEORADATAapp_data_03.dbf’ SIZE 200M;

 

ALTER DATABASE DATAFILE ‘C:ORACLEORADATAapp_data_02.dbf’ RESIZE 200M’;

 

 

Atribuir quotas de tablespaces para usuários

 

Opção1 – Na criação do usuário

 

Create user book

Identified by ‘book’

Default tablespace tblsp1

Quota 10M on tblsp1

Quota 20M on tblsp2;

 

Opção2 – Usuário já existe

 

Alter user book

Quota unlimited on tblsp1

Quota 10M on tblsp2

Quota 20M on tblsp3;

 

Expandir automaticamente um tablespace

 

Opção1: 

 

            ALTER DATABASE TEST1

                DATAFILE  ‘C:ORACLEORADATAapp_data_02.dbf’

                AUTOEXTEND ON

                NEXT 10M

                MAXSIZE 30M;

 

Opção2: 

 

            CREATE TABLESPACE TBS01

                DATAFILE  ‘C:ORACLEORADATAapp_data_02.dbf’

                SIZE 10M

                AUTOEXTEND ON

                NEXT 20M

                MAXSIZE 30M;

 

 

 

 

 

 

 

 

Opção3: 

 

            ALTER TABLESPACE TBS01

                ADD DATAFILE  ‘C:ORACLEORADATAapp_data_02.dbf’

                SIZE 10M

                AUTOEXTEND ON

                NEXT 20M

                MAXSIZE 30M

 

 

 

Varificação de alocação de extents das tablespaces

 

Select bytes from dba_extents

Where tablespace_name = ‘data01’

 

Verificação dos espaços ocupados e livres das tablespaces

 

select tablespace_name,

sum_bytes_alloc "ALOCADO (MB)",

sum_bytes_livre "LIVRE (MB)",

decode(trunc((sum_bytes_livre/sum_bytes_alloc)*100),'','SEM ESPACO LIVRE',

trunc((sum_bytes_livre/sum_bytes_alloc)*100)) "PCT LIVRE"

from

(select tablespace_name ,

trunc(sum(bytes)/1024/1024) as sum_bytes_alloc

from dba_data_files

group by tablespace_name) XX,

(select tablespace_name Y ,

trunc(sum(bytes)/1024/1024) as sum_bytes_livre

from dba_free_space

group by tablespace_name) XY

where XX.tablespace_name = XY.Y (+);

 

Fundir o espaço disponível para crier uma tablespace

 

ALTER TABLESPACE DATA01

COALESCE

 

- Consultar os fragmentos das tablespaces  e seus tamanhos

   DBA_FREE_SPACE e DBA_DATA_FILES

 

 

 

 

 

Estrutura de Armazenamento

 

1.   Segmentos e Tablespaces

 

Como vimos anteriormente, cada tablespace é composto por segmentos, os quais, por sua vez, alocam as extensões. Cada um desses segmentos possui seus próprios parâmetros de armazenamento, que controlam a alocação das extensões que o compõem. Os parâmetros definidos para o tablespace são utilizados apenas por default, quando não são especificados explicitamente no segmento (com exceção de MINIMUM EXTENT e UNIFORM SIZE). Caso o tablespace também não especifique algum valor, será utilizado por default o especificado para o servidor Oracle. É importante notar ainda que alguns valores só podem ser especificados no nível do segmento.

 

Tipos de segmento

 

 

Tabelas

Tabelas simples, que não pertencem a um cluster e não são particionadas, ocupam sempre um único segmento de um tablespace.

Partição de tabela

Uma tabela pode ser subdividida em partições. Cada partição ocupará um segmento diferente, podendo estar em tablespaces diferentes.

Segmento de LOB

Uma coluna de uma tabela pode conter um LOB (Large OBject, objeto grande: documento de texto, imagem, vídeo etc.), que será armazenado em um segmento diferente daquele da tabela.

Índice de LOB

Para cada segmento de LOB é criado também um segmento de índice de LOB para pesquisa de seus valores.

Tabela Aninhada

Uma coluna de tabela pode conter também uma outra tabela interna, que também é armazenada num segmento diferente.

Índice

São utilizados para buscar linhas da tabela com base em um valor chave. Uma tabela pode ter vários índices, e cada um ocupa um segmento diferente.

Partição de Índice

Assim com as tabelas, as informações dos índices também podem ser distribuídas em segmentos diferentes pela criação de partições.

Tabela Organizada por Índice

Os dados desse tipo de tabela são armazenados nos índices e buscados na árvore de índice com base no valor chave especificado.

Cluster

Uma ou mais tabelas podem ser agrupadas num cluster, portanto todas ocupando um mesmo segmento de um tablespace.

Segmento Temporário

Utilizado para armazenamento de dados que não cabem na memória durante a criação de um índice ou a execução de um comando SELECT com opção DISTINCT ou a cláusula GROUP BY.

Segmento de Bootstrap

Ajuda na inicialização do cache de dicionário de dados. Não precisa de muita manutenção por parte do administrador.

Segmento de Rollback/Undo

Permite desfazer as alterações de uma transação.

 

 

 

 

 

 

 

 

 

 

 

 

 

Uma vez que cada tipo de segmento tem uma propensão diferente à fragmentação, é interessante separá-los em tablespaces distintos, de forma a minimizar o desperdício de espaço. A seguinte tabela apresenta a recomendação de distribuição de segmentos em tablespaces em função de suas propensões de fragmentação típicas:

 

Tablespace

Uso

Fragmentação

SYSTEM

Dicionário de dados

Zero

TOOLS

Aplicações

Muito Baixa

DATAn

Segmentos de dados

Baixa

INDEXn

Segmentos de índice

Baixa

RBSn

Segmentos de rollback

Alta

TEMPn

Segmentos temporários

Muito alta

 

Além disso, a separação em tablespaces também permite:

·         Controlar a alocação de espaço e atribuir limites de uso de espaço aos usuários.

·         Controlar a disponibilidade de dados colocando tablespaces individuais on-line ou off-line.

·         Distribuir o armazenamento de dados por dispositivos para melhorar o desempenho de E/S e reduzir a disputa em um único disco.

·         Executar operações de backup e recuperação parciais; manter grandes volumes de dados estáticos em dispositivos somente para leitura.

 

2.   Segmentos e Extensões

 

Quando os valores dos parâmetros de armazenamento de um segmento são alterados, só serão utilizados nas próximas extensões alocadas. Novas extensões são alocadas quando o segmento é criado, estendido ou alterado; são desalocadas quando o segmento é eliminado, alterado, truncado (apenas seus dados são excluídos) ou redimensionado automaticamente (somente segmentos de rollback).

Todo arquivo de dados de um tablespace é criado com um bloco de cabeçalho mais uma extensão livre. Novas extensões são alocadas quando um segmento é criado nesse tablespace. O espaço utilizado pelo segmento consiste nas extensões ocupadas e, quando são liberadas pelo segmento, passam a integrar um pool de extensões livres disponíveis. Alocações e desalocações sucessivas podem fragmentar o espaço de extensões no arquivo de dados.

 

 

 

 

 

 

 

 

3.   Blocos de Dados

 

O tamanho do bloco de dados, que é a menor unidade de armazenamento do Oracle, é definido na criação do banco de dados. Cada bloco é composto por um cabeçalho, no início, e pelos dados, que são armazenados do fim para o começo, deixando entre essas duas estruturas um espaço livre que permite o crescimento de qualquer uma delas. Esse espaço livre também pode ser fragmentado por exclusões e alterações nos dados, mas o espaço é unido pelo próprio servidor quando necessário.

 

Os principais parâmetros de um bloco são:

·         INITTRANS e MAXTRANS: Controlam a quantidade transações que podem alterar simultaneamente os dados do bloco.

·         PCTFREE: Indica a porcentagem de espaço livre que deve ser deixado no bloco para crescimento das suas linhas. Quando o espaço livre for menor que essa porcentagem, o bloco não pode mais receber inserções. Seu valor padrão é 20%.

·         PCTUSED: Indica a porcentagem mínima utilizada pelos dados no bloco, abaixo da qual o bloco já pode novamente receber inserções. Seu valor padrão é 40%. Essas duas porcentagens só podem ser especificadas no segmento, não no tablespace.

 


SEGMENTO DE ROLLBACK (UNDO)

 

 

Nova Imagem

 

 

         Antes de efetuar uma alteração o processo servidor guarda a informação original que pode ser usada para:

  • Desfazer a alteração caso seja submetida a rollback.
  • Fornecer consistência, garantindo alteração apenas quando ocorrer o commit.
  • Recuperar o banco de dados para um estado consistente em caso de falhas.

 

Segmentos de rollback são como tabelas e índices. Existem nos DATA FILES, e blocos de rollback são levados para o DATA BUFFER CACHE quando necessário.

 

Sintaxe:

 

Create Rollback Segment  <nome>

Tablespace  <nome tablespace>

Storage (

             INITIAL <inteiro  K|M>

             NEXT <inteiro  K|M>

             MINEXTENTS <inteiro>

             MAXEXTENTS <inteiro | unlimited>

             OPTIMAL <inteiro>

             )

 

             INITIAL -> tamanho inicial dos extents definidos na criação.

             NEXT -> tamanho do próximo extent que será criado automaticamente.

             MINEXTENTS -> quantidade mínima de extensões para o segmento de rollback (mínimo 2).

             MAXEXTENTS -> Número máximo de extensões para segmento de rollback.

             OPTIMAL -> Tamanho definido para ser usado no momento da redução do segmento de rollback.

 

Comando:

 

Create Rollback Segment  Rolbck1

Tablespace  Data01

Storage (

             INITIAL 100k

             NEXT 100k

             MINEXTENTS 20 

             MAXEXTENTS 100

             OPTIMAL 100k

             )

 

 

 

Quando o usuário não for criado para um tablespace específico, o Oracle escolhe o Segmento de Rollback com menor número de transações.

         A mesma tansação só pode ser feita no mesmo Segmento de Rollback.

         Cada transação pode gravar em uma ou mais extensões do anel. Quando grava em mais de uma extensão, o processo é chamado de “distribuição automática”.

 

 

 

 

 

 

 

 

 

 

 

Crescimento do Segmento de Rollback

 

         Quando a última extensão é preenchida, as transações podem usar a primeira extensão se ela estiver LIVRE ou INATIVA. A extensão está nesta situação se não existir nenhuma transação ativa, ou seja, todos os processos foram commitados.

         Caso não tenha extensão livre, será criada uma nova. Este processo é chamado de “ampliação”.

 

 

 

Redução do Segmento de Rollback

 

         A desalocação não é feita quando as transações são concluídas, somente quando o cabeçalho é movido para a próxima extensão.

         O processo de redução é feito quando o tamanho do segmento de rollback ultrapassar o valor do parâmetro OPTIMAL (Geralmente = Tamanho inicial)

 

 

 

 

 

 

 

 

 

 

 

Tornando um Segmento de Rollback ATIVO.

 

ALTER ROLLBACK SEGMENT ROLLBCK1 ONLINE;

ALTER ROLLBACK SEGMENT ROLLBCK1 OFFLINE;

 

         No estado OFFLINE, é esperado terminar todas as transações, depois ninguém mais acessa.

 

Parâmetro INIT.ORA

 

         ROLLBACK_SEGMENTS = (Rollbck1, Rollbck2)

        

         Inicia os dois segmentos de rollback quando o banco de dados é iniciado.

 

Alterando segmento de Rollback

 

ALTER ROLLBACK SEGMENT RBS01

STORAGE (MAXEXTENTS 200);

 

Eliminando um Segmento de Rollback

 

DROP ROLLBACK SEGMENT RBS01;

 

Verificando parâmetros no Dicionário de Dados

 

DBA_ROLLBACK_SEGS

V

V

 

Select SEGMENT_NAME  from DBA_ROLLBACK_SEGS;

 

Mensagens de erros com Segmento de Rollback

 

- Quando não há espaço suficiente no segmento de rollback (ORA-01562). Este problema pode ter um dos seguintes motivos.

- Quando o espaço no tablespace é insuficiente para a extensão do segmento de Rollback (ORA-01560).

- Quando o número de extensões atingiu o maxextents (ORA-01628).

 

 

 

 

 

 

Processamento de COMMIT

 

Quando o COMMIT é emitido, as seguintes etapas são executadas:

 

  1. O processo de servidor registra um commit, junto com o SNC (timestamp) no REDO LOG BUFFER.
  2. O LGWR grava tudo que está no REDO LOG BUFFER no REDO LOG FILE, garantindo que as informações não serão mais perdidas.
  3. O usuário é informado que o COMMIT ocorreu.
  4. O Processo servidor registra as informações que a transação foi concluída e diz que os processos podem ser liberados.

 

Controle de transação (COMMIT, ROLLBACK e SAVEPOINT)

 

 

INSERT

UPDATE                                         DML (Data Manipulation Language)

DELETE

CREATE

ALTER

DROP                                            DDL  (Data Definition Language)

RENAME

TRUNCATE

 

Instruções COMMIT e ROLLBACK

 

Ø  Iniciar uma transação com o primeiro comando DML para seguir uma instrução COMMIT ou ROLLBACK.

Ø  Usar instruções SQL como, por exemplo, COMMIT e ROLLBACK, para finalizar uma transação explicitamente.

 

Você deverá controlar a lógica das transações com as instruções COMMIT e ROLLBACK, tornando permanentes as alterações em alguns grupos de bancos de dados.

 

 

 

 

 

 

 

 

 

Transações de Banco de Dados

 

Ø    Começa quando for executada a primeira instrução SQL executável.

Ø    Termina com um dos seguintes eventos:

o   COMMIT ou ROLLBACK é emitida

o   Instrução DDL ou DCL é executada

(commit automático)

o   O usuário sai do SQL*Plus

o   O sistema cai

 

Instrução

Descrição

COMMIT

Finaliza a transação atual tornando permanentes todas as alterações de dados pendentes

SAVEPOINT nome

Marca um ponto de gravação dentro da transação atual

ROLLBACK [TO SAVEPOINT nome]

ROLLBACK finaliza a transação atual descartando todas as alterações de dados pendentes; ROLLBACK TO SAVEPOINT descarta a transação atual para o ponde de gravação específico, descartando assim o ponto de gravação e quaisquer alterações subseqüentes. Se você omitir essa cláusula, a instrução ROLLBACK descarta toda a transação.

 

 

Controlando Transações

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Estado dos dados antes de COMMIT ou ROLLBACK

Ø  O Estado anterior dos dados pode ser recuperado

Ø  O usuário atual pode revisar os resultados das operações DML usando a instrução SELECT.

Ø  Outros usuários não poderão ver resultados das instruções DML do usuário atual.

Ø  As linhas afetadas são bloqueadas, outros usuários não poderão alterar os dados dentro das linhas afetadas.

 

Estado dos dados após COMMIT

Ø  As alterações nos dados são feitas permanentemente no banco de dados.

Ø  O estado anterior dos dados é perdido permanentemente.

Ø  Todos os usuários podem ver os resultados.

Ø  As linhas afetadas são desbloqueadas, essas linhas estão disponíveis para serem manipuladas por outros usuários.

Ø  Todos os savepoints são apagados.

 

 

Submetendo dados a COMMIT

 

UPDATE       emp

SET             deptno = 10

WHERE                  empno = 7782;

 

COMMIT;

 

Commit complete.

 

Estado dos dados após o ROLLBACK

Ø  Descarte todas as alterações pendentes usando a instrução ROLLBACK.

Ø  As alterações nos dados são desfeitas.

Ø  O estado anterior dos dados é restaurado.

Ø  As linhas afetadas são desbloqueadas.

 

 

 

 

 

 

 

 

 

 

 

 

 

Exemplo

Ao tentar remover um registro da tabela TEST, você pode acidentalmente esvaziar a tabela. Você pode corrigir o erro, emitir novamente a instrução apropriada e tornar permanentes as alterações dos dados.

 

DELETE FROM test;

 

25.000 rows deleted.

 

ROLLBACK;

Rollback complete.

 

DELETE FROM test

WHERE        id = 100;

 

1 row deleted.

 

SELECT *

FROM           test

WHERE        id = 100;

 

No rows selected.

 

COMMIT;

Commit complete.

 

 

Fazendo ROLLBACK de alterações para um marcador

Ø   Crie um marcador um uma transação atual usando a instrução SAVEPOINT.

Ø   Faça um rollback do marcador usando a instrução ROLLBACK TO SAVEPOINT.

 

SQL> UPDATE....

SQL> SAVEPOINT update_done;

 Savepoint created.

SQL> INSERT....

SQL> ROLLBACK TO update_done;

Rollback complete.

 


ÍNDICES

 

Classificação

            Um índice é uma estrutura de árvore que permite acesso direto a uma linha de uma tabela. É possível classificar os índices com base no projeto lógico ou na implementação física. A classificação lógica agrupa índices de acordo com a perspectiva da aplicação, enquanto a classificação física deriva-se de como os índices são armazenados.

 

Índices de única coluna e concatenados

            Um índice de única coluna tem somente uma coluna na chave de índice(nr. funcionário).

            Um índice concatenado ou composto é criado em várias colunas de uma tabela. As colunas de um índice não precisam estar na mesma ordem que as colunas da tabela.

Também não precisam ser adjacentes. (Ex. depto. e cargo). O número máximo de colunas de um índice é de 32.

 

Índice exclusivo e não-exclusivos

            Um índice exclusivo garante que duas linhas de uma tabela não tenham valores duplicados na coluna que define o índice. Uma chave de índice em um índice exclusivo pode apontar somente para uma linha da tabela.

            Em um índice não exclusivo, várias linhas podem estar associadas a uma única chave.

 

Índice baseado em função

            Um índice baseado em função é criado quando são usadas funções ou expressões que envolvem uma ou mais colunas da tabela que está sendo indexada. Um índice baseado em função calcula previamente o valor da função ou expressão e armazena-o no índice.

            Os índices baseados em função são um mecanismo eficiente de avaliação de instruções que contêm funções nas cláusulas WHERE. É possível criar um índice baseado em função para materializar expressões com uso intenso do computador no índice, de forma que o servidor Oracle não precise calcular o valor da expressão ao processar as instruções SELECT e DELETE. Ao processar instruções INSERT e UPDATE, entretanto, o servidor Oracle ainda deve avaliar a função para processar a instrução.

 

Comando

CREATE INDEX sala309.saldo_idx

ON sala309.produto (qt_estoque – qt_vendida);

 

Consultas que usam este tipo de índice.

SELECT co_produto, no_produto

FROM produto

WHERE (qt_estoque – qt_vendida) > 100;

 

 

Índices particionados e não-particionados

            Os índices particionados são usados para que tabelas grandes armazenem entradas de índice correspondentes a um índice de vários segmentos. A partição permite que um índice seja propagado por vários tablespaces, reduzindo a disputa de pesquisa de índice e aumentando a capacidade de gerenciamento. Os índices particionados são usados freqüentemente com tabelas particionadas para aumentar a escalabilidade e a capacidade de gerenciamento.

           

 

Estrutura de um índice em árvore “B”

            Na parte superior do índice está a raiz, que contém entradas que apontam para o próximo nível do índice. No próximo nível estão os blocos de ramificação, que, por sua vez, apontam para blocos no próximo nível do índice. No nível mais baixo estão os nós folhas, que contêm as entradas de índice que apontam para linhas da tabela. Os blocos de folhas são vinculados duplamente para facilitar a varredura do índice em ordem crescente e decrescente de valores de chave.

 

Formato de entradas de folhas de índice

            Uma entrada de índice é composta pelos seguintes componentes:

  • Um cabeçalho de entrada, que armazena o número de colunas e as informações sobre bloqueio.
  • Os pares de valores de tamanho de colunas de chave, que definem o tamanho de uma coluna na chave seguido pelo valor da coluna. O número de pares é o máximo de colunas de um índice.
  • O ROWID de uma linha, que contém os valores de chave.

 

 

Comando:

 

CREATE INDEX sala309.estoque_idx

ON sala309.produto (qt_estoque)

 

 

 

 

 

 

 

CREATE INDEX [schema.]<name>

ON [schema.]<table> (column, column)

[TABLESPACE <nome>]

    [PCTFREE  inteiro]

    [LOGGING | NOLOGGING]

    [NOSORT]

 

PCTFREE - É o espaço reservado em cada bloco (em porcentagem do espaço total menos o cabeçalho do bloco) durante a criação para acomodar novas entradas de índice.

 

LOGGING – Especifica que a criação do índice e as operações posteriores nele executadas sejam registradas no arquivo de redo log (Essa é a opção default).

 

NOLOGGING – Especifica que a criação e alguns tipos de cargas de dados não sejam registrados no arquivo de redo log.

 

NOSORT – Especifica que as linhas sejam armazenadas no banco de dados em ordem crescente e, portanto, que o servidor Oracle não precisa classificar as linhas durante a criação do índice.

 

 

CREATE INDEX sala309.teste_idx

ON sala309.teste (co_teste)

    PCTFREE 30

    STORAGE ( INITIAL 200K NEXT 200K

     PCTINCREASE 0   MAXEXTENTS  50  )

     LOGGING

    NOSORT

 TABLESPACE  <nome>

 

 

Diretrizes de criação de índices

 

  • Os índices agilizam o desempenho de consultas e tornam as operações DML lentas. Minimize sempre o número de índices necessários em tabelas voláteis (muitas alterações).
  • Coloque índices em um tablespace separado, não em um tablespace com segmentos de rollback, segmentos temporários e tabelas.
  • Pode haver um ganho de desempenho significativo para índices grandes evitando a geração de redos. Considere a cláusula NOLOGGING para criar índices grandes.

 

Alterando parâmetros de armazenamento para índices

ALTER INDEX sala309.teste_idx

STORAGE ( NEXT 400K  MAXEXTENTS  100  );

 

 

 

Alocando e desalocando espaço em índice

 

Talvez seja necessário adicionar extensões a um índice antes de um período de grande atividade de inserção em uma tabela.

 

ALTER INDEX sala309.teste_idx

ALLOCATE EXTENT (SIZE 200K

DATAFILE ‘/TEMP/indx01.dbf’);

 

Para a desalocação manual, use a cláusula DEALLOCATE do comando ALTER INDEX para liberar o espaço ainda nunca utilizado pelo índice.

 

ALTER INDEX sala309.teste_idx

DEALLOCATE UNUSED;

 

 

Recriando indices

 

A recriação de índices tem as seguintes características:

 

  • É criado um novo índice usando um índice existente como a origem de dados.
  • Não são necessárias classificações quando um índice é criado através de um índice existente, resultando em um desempenho melhor.
  • O índice antigo é apagado depois que o novo índice é criado. Durante a recriação, é necessário espaço suficiente para acomodar o índice antigo e o novo nos respectivos tablespaces.
  • As consultas podem continuar a usar o índice existente enquanto o novo índice é criado.

 

Situações de recriação possíveis.

 

  • O índice existente precisa ser movido para um tablespace diferente. Essa ação pode ser necessária se o índice estiver no mesmo tablespace que a tabela ou se os objetos precisarem ser redistribuídos pelos discos.
  • Mudança de tipo de índices.
  • A Tabela do índice foi movida para outro tablespace usando o comando ALTER TABLE... MOVE TABLESPACE.

 

Recriação on-line de índices

 

            Criar ou recriar um índice pode ser uma tarefa demorada, especialmente se a tabela for muito grande. Antes do Oracle8i, criar e recriar índices exigia um bloqueio na tabela e impedia operações DML simultâneas.

 

ALTER INDEX sala309.teste_idx REBUILD ONLINE;

 

 

Eliminando índices

 

Quando os índices devem ser eliminados?

  • Quando as aplicações não precisarem mais de um índice.
  • Antes de uma execução de cargas em altos volumes. Ele deve ser recriado após a carga.
  • Quando ocorre falha de instância.
  • Quando o índice está danificado.

 

 

DROP INDEX sala309.teste_idx;

 

 

Obtendo informações de índices

 

As views de dicionário de dados DBA_INDEXES e DBA_IND_COLUMNS fornecem informações sobre os índices e as colunas indexadas.

 

DBA_INDEXES                  DBA_IND_COLUMNS

OWNER                                INDEX_OWNER

INDEX_NAME                    INDEX_NAME

INDEX_TYPE                      TABLE_OWNER

TABLE_OWNER                 TABLE_NAME

TABLE_NAME                    COLUMN_NAME

UNIQUENESS                     COLUMN_POSITION

TABLESPACE_NAME       COLUMN_LENGTH

LOGGING

STATUS

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

IDENTIFICAR ÍNDICES FRAGMENTADOS

 

            Índices das que são atualizadas com freqüência podem ser bons candidatos para reconstrução. Para determinar a fragmentação real de um índice, podemos utilizar o seguinte método:

 

·         Valide o índice usando o comando VALIDATE INDEX.

Esse processo preenche a tabela INDEX_STATS com informações valiosas.

 

SQL> VALIDATE INDEX <nome>

 

            Consulte a tabela INDEX_STATS para determinar a porcentagem de linhas não preenchidas no índice.

 

SQL> SELECT name, del_lf_rows, lf_rows, round((del_lf_rows / lf_rows +

2>       0.00000000001)) * 100) “Percentual Fragmentado” 

3>       FROM  index_stats;

 

Exemplo de saída

 

NAME                           DEL_LF_ROWS    LF_ROWS   Percentual Fragmentado

------------------------------ ---------------------    ---------------  --------------------------------

TESTE                                                3890              12782                                         30

 

            No exemplo acima, o índice TESTE, está fragmentado em 30%. Você pode usar o comando ALTER INDEX ...  REBUILD para reconstruir índice fragmentado.

 

Ex.:

SQL>   ALTER index TESTE REBUILD;

 


Export / Import

 

  • Criar backups lógicos completos ou parciais de um banco de dados do Oracle.
  • Recuperar objetos que variam de uma tabela até um banco de dados completo.
  • Salvar a estrutura lógica de um esquema ou de todo o banco de dados com ou sem salvar os dados que ela contém.
  • Mover os objetos ou dados entre máquinas e banco de dados.
  • Reduzir a fragmentação em um banco de dados Oracle.
  • Migrar um banco de dados de uma versão para outra; tal como migrar do Oracle 7 para o Oracle 8.

 

 

Utilitários IMPORT E EXPORT para versão 8i, geralmente encontrados em:

 oracleora81bin   

 

 

HELP   ->    EXP  HELP=Y

 

 

 

MODOS DE EXPORTACAO

 

  • Full Database
  • User
  • Table
  • Tablespace (recurso especial do Oracle 8i)

 

 

 

Exportação completa

O banco de dados completo pode ser exportado para um único arquivo binário simples usando a opção full=Y.  Geralmente feito pelo usuário SYSTEM.

 

Exemplo: 

exp system/manager  file=c: emp ull.dmp full=y

 

 

Modo de usuário

            Todos os objetos pertencentes a um usuário especificado do banco de dados são exportados para um arquivo binário. O principal parâmetro para ativar o modo user é OWNER = <nome do usuario>

 

Exemplo: 

exp Scott/tiger  file=Scott.dmp owner=Scott grants=y  rows=y  compress=y

 

 

Modo de Tabela

            A Exportacao no modo de tabela pode ser usada para exporter uma ou mais tabelas a partir do banco de dados. Você pode incluir ambas definições de tabela e dados especificando os parâmetros TABLE = <schema.tablename> e ROWS = Y,    ou se preferir exportar somente a estrutura da tabela, especificando os parâmetros TABLE = <schema.tablename> e ROWS = N.

 

Exemplo: 

exp system/manager  tables=(scott.emp, blake.dept)  rows=Y grants=y  indexes=y  file=c: emp ables.dmp

 

 

Modo Tablespace

            Esse modo tablespace é um modo especial que foi implementado no Oracle8i para suportar um recurso novo chamado TABLESPACES TRANSPORTAVEIS, o qual torna possível a movimentação dos tablespaces de um banco de dados do Oracle para outro banco de dados Oracle8i em um ambiente essencialmente similar (Versão e tipo de S.O.).

            Este modo envolve a cópia dos arquivos de dados (Datafile) de um banco de dados para outro.

            O processo é o seguinte:

1. Torna o tablespace somente leitura.

2. Copia os arquivos de dados desses tablespaces para o banco de dados novo.

3. Move informações do banco de dados armazenadas no dicionário de dados.

4. Coloca o tablespace no mode de leitura e gravação.

 

            Os seguintes parâmetros foram introduzidos para suportar o recurso do tablespace.

TRANSPORT_TABLESPACE

TABLESPACES

DATA FILES

 

MODOS DE IMPORTAÇÃO

 

 

  • Full Database
  • User
  • Table
  • Tablespace (recurso especial do Oracle 8i)

 

Modo Full Database

 

            Importa todo o banco de dados do arquivo export dump criado no mesmo mode. Apenas um usuário que tenha IMP_FULL_DATABASE pode executar esse tipo de importação.

 

 

 

 

 

Modo User

 

            Os objetos que pertencem ao usuário especificado no parâmetro FROMUSER=<nome do usuário> são importados para o esquema especificado pelo parâmetro TOUSER. Se nenhum parâmetro FROMUSER for especificado, então os objetos do esquema do usuário que emite a importação são importados.

 

Modo Table

 

            O modo table é para importar tabelas específicas para o esquema de um usuário a partir de um arquivo export dump. O parâmetro de palavra-chave nesse tipo de importação é TABLE=<schema.tablename>. Se o nome do esquema não for especificado, então o esquema do usuário que emite o comando de importação é importado.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

GERENCIANDO  UM  BANCO  DE  DADOS – AULA TEÓRICA

 

1 – Subir o banco de Dados (Startup)

 

Etapa1 – NOMOUNT

 

         - Ler o arquivo de parâmetros (init.org).

         - Alocar a SGA

         - Iniciar os processos Background

         - Abrir os arquivos de trace.

 

Etapa2 – MOUNT

 

         - Ler ocontrol File

 

Etapa3 – Open

        

         - Ler os datafiles / Redo e abrir o banco de dados para uso.

 

2 – Ativando a instância (Mount)

 

         Sintaxe: Vide apostila

 

         Exemplo:

 

         2.1 – Startup nomount

         2.2 – Alter database mount

         2.3 – Alter database open

 

3 – Montando a base (mount)

 

         Sintaxe: Vide apostila

        

         - Arquivos de  controle (control files) especificados no arquivo de

            parâmetros são encontrados e abertos.

         - Control filessão lidos para se obter o nome do BD e arquivos de redo

   log.

 

4 – Abrindo a Base de dados (Open)

 

         - Faz com que fique disponível para as operações normais.

 

 

 

5 – Desativando a Base de Dados

 

         Sintaxe:

 

         SHUTDOWN     Normal

                                 Transacional

                                 Immediate

                                    Abort

 

         - Fecha a Base de Dados e a instância.

         - Ficando indisponível para os usuários.

 

Opção1 – Normal

 

         - Default

         - Nenhuma conexão nova será permitida.

         - Oracle Server espera os usuários se desconectarem antes de

  completarem o shutdown.

         - Próximo startup não irá requerer um recovery.

 

Opção2 – Transacional

 

         - Nenhum cliente poderá iniciar uma nova transação nesta instância.

         - Cliente é disconectado quando terminar a transação em progresso.

         - Quando todas as transações tiverem terminado, um shutdown

             immediate ocorre.

         - Próximo startup não irá requerer um recovery.

 

Opção3 – Immediate

 

         - Declarações SQL sendo processadas não são completadas.

         - Oracle Server não espera pelos usuários conectados correntemente.

         - Oracle faz rollback das transações ativas e disconecta todos os

             usuários.

         - Oracle fecha e desmonta o Banco antes do shutdown da instância.

         - Próximo startup não irá requerer um recovery da instância.

 

 

 

 

 

 

 

 

Opção4 – Abort

 

         - Declarações SQL sendo processadas pelo Oracle são imediatamente

           terminadas.

         - Oracle Server não espera pelos usuários conectados.

         - Transações sem Commit não sofrem rollback.

         - Instância é terminada sem que os arquivos sejam fechados.

         - Próximo startup irá requerer um recovery da instância.

 

 

 

 

6 – HABILITANDO SESSÕES RESTRITAS

 

         - Disponibilizar o acesso a base de dados somente com privilégios de

  sistema (restricted session).

 

         SINTAXE:

                  

                   ALTER SYSTEM ENABLE RESTRICTED SESSION

 

         - Disponibiliza conexões futuras somente para usuários com privilégios

   restritos.

 

SINTAXE:

                  

                   ALTER SYSTEM DISABLE RESTRICTED SESSION

 

         - Disponibiliza conexões para todos os usuários.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7 – ARQUIVOS DE PARÂMETROS DE INICIALIZAÇÃO (PARAMETER FILES)

 

         DEFINIÇÃO:

 

                   - Arquivo texto usado no processo de startup do BD.

                   - Arquivo é acessado e a instância é montada de acordo com os

   valores contidos no mesmo.

                   - Existem dois arquivos: PFILE e SPFILE.

 

         CONTEUDO:

 

                   - Lista de parâmetros da instância.

                   - Nome do Database que a instância esta associada.

                   -  Valores para alocação da estrutura da SGA.

                   - Nomes e Locais dos arquivos de controle (control Files).

 

         PARÂMETROS DOS ARQUIVOS DE PARÂMETROS

 

                   - Vide apostila.

 

         VERIFICAR PARÂMETRO

 

                   - Show Parameter

 

 

8 – ARQUIVOS DE CONTROLES (Control  Files)

 

         DEFINIÇÃO:

 

                   - São arquivos que definem o estado atual do banco de dados,

                       bem como a definição de integridade do mesmo.

                   - São requisitados durante a etapa do Mount do Banco de Dados.

                   - Tamanho inicial é definido na criação do BD.

                   - Atualização dos control Files é feita de forma contínua.

        

         LOCALIZAÇÃO DOS CONTROL FILES

 

                   - Select name from v

                   - select value from V where name = ‘control.files’

 

 

 

 

 

         MULTIPLEXANDO (duplicando) CONTROL FILES

 

                   - Criar e gerenciar cópias de control files.

                   - Caso falhe uma acessa a outra cópia dos control files.

                   - BD não fica fora do ar.

 

INFORMAÇÕES DE UM CONTROL FILE

 

                  - Nome do BD e identificador.

                   - Data / Hora da criação do BD.

                   - Nomes dos Tablespaces existentes no BD.

                   - Nome e Localização dos Data Files e dos Online Redo Log Files.

                   - Informações de checkpoint.

                   - Informações do Redo Log Archive.

                   - Informações do Redo Log e Seqüências atuais.

 

OBTENDO INFORMAÇÕES DAS VISÕES DO BD PARA OS CONTROL FILES

 

                   - v

                            . Nome e Status dos Control Files associados a  instância.

 

                   - v

                            . Lista o status e local onde se encontram todos os

  parâmetros.

                  

                   - v

                            . Informações a respeito dos control files Record section.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9 – DICIONÁRIO DE DADOS

 

         DEFINIÇÃO:

 

                  - Fundamental para o funcionamento do BD.

                   - Encontramos todas as informações necessárias a respeito dos

  objetos do banco.

- Precisa estar sempre atualizado.

- Precisa estar sempre disponível.

- Qualquer comando do SQL precisa do dicionário para validação.

        

         ABRANGÊNCIA DO DICIONÁRIO DE DADOS

 

                   - Todas as definições dos objetos do BD.

                   - Informações de espaço para alocação de objetos.

                   - Valores defaults para as colunas.

                   - Validações de Constraints.

                   - Informações de usuários.

                   - Privilégios de criação e acesso a objetos.

                   - Informações de auditoria de acesso e atualização de objetos.

 

         TABELAS ALL_xxxx

 

                   - São visões que permitem ao usuário obter uma perspectiva de

  todos os schemas que o usuário possui.

 

- Exemplos:

         . all_all_tables

         . all_indexes

         . all_procedures

         . all_tables

         . all_triggers

         . all_users

 

 

 

 

 

 

 

 

 

 

 

TABELAS USER_xxxx

 

                  - Contém apenas objetos criador no schema do usuário.

 

- Exemplos:

         . user_all_tables

         . user_indexes

         . user_objects

         . user_sequences

         . user_tables

         . user_views

         . user_tablespaces

         . user_triggers

         . user_users

 

 

TABELAS DBA_xxxx

 

                   - São visões privativas do administrador do BD.

 

- Exemplos:

         . dba_all_tables

         . dba_constraints

         . dba_data_files

         . dba_extents

         . dba_free_space

         . dba_indexes

         . dba_objects

         . dba_procedures

         . dba_rollback_segs

         . dba_segments

         . dba_synonyms

         . dba_tables

         . dba_tablespaces

         . dba_triggers

         . dba_users

        

 

 

 

 

 

 

 

TABELAS DE PERFORMANCE DINÂMICAS

 

                  - Existem na memória  quando o BD esta no ar.

                   - Informações são acessadas diretamente da memória e dos

   control files.

- São usadas para monitorar e ajustar o BD.

- Começam com v$

- Estão presentes na visão V

 

- Exemplos:

         . v

         . v

         . v

         . v

         . v

         . v

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10 – SEGURANÇA DO BANCO DE DADOS

 

         10.1 - DEFINIÇÃO:

 

                  - Gerenciamento da segurança é feito pela criação de usuários e

   objetos associados a ele.

- Cada usuário deve ter sua própria conta no BD.

- Requerida para acesso ao BD.

- Definida na Base de Dados.

        

         10.2 - GERENCIANDO USUÁRIOS NO ORACLE 10G

 O Oracle 10g gerencia e controla a segurança dos objetos criados em cada conta de usuários. Isso inclui:

- Clusters

- Índices

- Tabelas

- Views

- Sequences

Cada banco de dados Oracle possui uma lista de usuários válidos, identificados por USERNAMES.

Todos os usuários são cadastrados no Dicionário de Dados do Banco em tabelas e views consultados pelo DBA. Quando o usuário do Banco de Dados é criado, um Schema correspondente com mesmo nome é criado para o usuário.

Um Schema é o conjunto de informações sobre o USERNAME. Isso inclui:

  • Username
  • Password
  • Privilégios permitidos
  • Tablespaces de seus objetos
  • Quotas nas Tablespace
  • Profile
  • Role

Agora que já entendemos o que vem a ser um usuário no Oracle, veremos como criar, alterar, excluir e monitorá-los.

 

 

 

 

CRIANDO UM NOVO USUÁRIO - SINTAXE:

SQL> CREATE USER [Usuário]

IDENTIFIED BY [Senha/Externally/Globally as]

DEFAULT TABLESPACE [Nome Default]

TEMPORARY TABLESPACE [Nome Temporária]

PROFILE [Nome Profile]

QUOTA [K/M/Unlimited]

ON [Tablespace]

PASSWORD EXPIRE

ACCOUNT [Lock/Unlock]

Onde:

  • Usuário - Nome do usuário a ser criado.
  • Senha - Especifica a senha do usuário.
  • Externally - Verifica o acesso do usuário através do sistema operacional.
  • Globally As - Especifica que o usuário será autenticado por um sistema externo de Gerenciamento de Segurança (Oracle Security Server) ou outro Sistema de Gerenciamento de autenticação.
  • Default Tablespace - Identifica a Tablespace onde serão criados os objetos dos usuários.
  • Temporary Tablespace - Identifica a Tablespace para segmentos temporários.
  • Profile - O nome do Profile associado ao usuário.
  • Quota - Especifica o valor da quota na Tablespace
  • Unlimited - Permite ao usuário alocar espaço dentro de uma Tablespace sem limites.
  • On - Especifica o nome da Tablespace cujo espaço será controlado peça Quota.
  • Password Expire - Torna a senha do usuário extinta, solicitando uma nova senha no próximo login.
  • Lock - Desabilita o login.
  • Unlock - Habilita o login.
 
 
Exemplo:

SQL> CREATE USER iMasters

IDENTIFIED BY Revista

DEFAULT TABLESPACE User_Data

TEMPORARY TABLESPACE User_Temp

PROFILE [Nome Profile]

QUOTA 15M ON User_Data

QUOTA 10M ON User_Temp

PASSWORD EXPIRE

ACCOUNT Unlock

PROFILE Default;

 

ALTERANDO UM USUÁRIO:

SQL> ALTER USER <Usuário>

<Opções a serem alteradas> <Novo Valor>

DEFAULT TABLESPACE [Nome Default]

Exemplo:

SQL> ALTER USER iMasters

QUOTA 5M ON User_Data;

 

 

 

 

 

 

 

 

 

 

 

EXCLUINDO UM USUÁRIO:

SQL> DROP USER <Usuário> [CASCADE]

<Opções a serem alteradas> <Novo Valor>

DEFAULT TABLESPACE [Nome Default]

Onde:

CASCADE Permite a exclusão de todos os objetos associados ao usuário.

Essa opção somente será usado em raras exceções. Quando o usuário é excluído com a opção CASCADE, o Username e seu Schema associado são removidos do Dicionário de Dados e todos objetos contidos no usuário são imediatamente excluídos.

Exemplo:

SQL> DROP USER Imasters;

MONITORANDO USUÁRIOS:

O Oracle armazena, no Dicionário de Dados, informações completas de todos os usuários do banco.

Views do Dicionário de Dados:

  • DBA_USERS - Descreve todos os usuários do Banco de Dados
  • ALL_USERS - Lista os usuários visíveis ao usuário atual, mas não os descreve
  • USER_USERS - Descreve somente o usuário atual
  • DBA_TS_QUOTAS - Descreve as quotas da Tablespace
  • USER_TS_QUOTAS - Descreve as quotas da Tablespace
  • USER_PASSWORD_LIMITS - Descreve os parâmetros do perfil da senha que são atribuídos ao usuário
  • USER_RESOURCE_LIMITS - Indica os limites do recurso para o usuário atual
  • DBA_PROFILES - Indica todos os perfis e seus limites
  • RESOURCE_COST - Lista o custo para cada recurso
  • VSESSION - Lista a informação da sessão para cada sessão atual, incluí o nome do usuário
  • VSESSTAT - Lista as estatísticas da sessão do usuário
  • PROXY_USERS - Descreve os usuários que podem assumir a identidade de outros usuários

 

Todas as consultas às tabelas ou visões do Dicionário de Dados só serão possíveis com privilégio adequado.

Exemplo:

Mostrando informações dos usuários, a partir do Dicionário de Dados:

SQL> SELECT USERNAME, PROFILE, ACCOUNT_STATUS

FROM DBA_USERS;

 

USERNAME               PROFILE      ACCOUNT_STATUS  
----------------       -------     ---------------------------- 
SYS                    DEFAULT         OPEN            
SYSTEM                 DEFAULT         OPEN            
IMASTER                DEFAULT         OPEN           

Mostrando informações sobre a quantidade de espaço que um usuário pode usar nas Tablespaces, a partir do Dicionário de Dados:

SQL> SELECT *

FROM DBA_TS_QUOTAS

WHERE USERNAME IMASTER;

TABLESPACE    USERNAME    BYTES     MAX_BYTES    BLOCKS    MAX_BLOCKS
-----------   ---------   -----     ---------    -------   ----------
USERS        IMASTER       0         512000        0          250

Para maiores detalhes e informações, você pode ler a Oracle Database Security Guide

(disponível para download no endereço https://www.oracle.com/pls/db102/homepage )

 

 

 

 

 

 

 

 

 

 

 

 

 

11 – CONTROLANDO PRIVILÉGIOS DA BASE DE DADOS – AULA TEÓRICA

 

         11.1 - DEFINIÇÃO:

 

                  

         O DBA deve gerenciar os privilégios dos usuários para acessar a

 Base de dados e objetos dentro do BD.

 

         11.2 – CONTROLE DOS PRIVILÉGIOS

 

- Permitir que o usuário faça uma operação.

- Habilitar e restringir o acesso e a alteração dos dados.

- Habilitar e restringir certas funções do sistema ou permissão

   para alterar estruturas do BD.

- Dar privilégios individuais ou em grupo.

        

         11.3 – TIPOS DE PRIVILÉGIOS

 

                  SYSTEM – Privilégio ou direito para uma determinada ação

        dentro do sistema.

                   OBJECT – Privilégio ou direito para uma ação em uma tabela

        específica, visão, seqüência, procedure, package,

        function, etc.

 

         11.4 – PRIVILÉGIOS EM GRUPOS (ROLES)

 

                  - Grupos nomeados para determinados privilégios.

                   - Reduz o trabalho de concessão de permissões.

                   - Gerenciamento dinâmico de privilégios.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

         11.5 – SYSTEM  PRIVILEGES

        

                  - Direito para executar uma operação ou classe de operação.

 

         11.6 – TIPOS DE SYSTEM PRIVILEGES

 

                  11.6.1 – No próprio schema

- Privilégio para criar tabelas no seu schema.

                            - Privilégio para criar sequences no seu schema.

                   11.6.2 – Objetos de um tipo específico

                            - Privilégio para criar tabelas em qualquer schema.

                            - Privilégio para atualizar linhas de qualquer tabela ou

   visão de qualquer schema.               

11.6.3 – Para um schema ou um usuário

                            - O privilégio para criar um usuário.

                            - O privilégio para criar uma sessão.     

 

11.7 - SINTAXE:

 

                  GRANT  system_priv     to    USER                 with Admin Option

                               Role                      ROLE               

                                                            PUBLIC

ONDE

 

                   System_priv = O privilégio a ser dado.

                   ROLE             = O nome da Role a ser concedida.

                   TO                  = Identifica a Role ou Usuário a receber o

       privilégio.

                   PUBLIC          = Fornece o privilégio para todos os usuários.

                   With Admin Option = Permite o receptor do privilégio, fornecer,

       Alterar  ou eliminar o privilégio.

 

         11.8 – EXEMPLOS

 

                   - GRANT CREATE SESSION, CREATE TABLE TO Scott;

                   - GRANT ALTER ANY TABLE TO scott;

                   - GRANT CREATE USER, ALTER USER, DROP USER TO scott

                      with admin option;

 

         11.9 – VISÕES sobre privilégios no catálogo.

 

                   - DBA_SYS_PRIVS

 

 

         11.10 – RETIRANDO PRIVILÉGIOS DE SISTEMAS

        

         - SINTAXE:

 

                   REVOKE  system_priv         from    USER                

                                 Role                              ROLE               

                                                                     PUBLIC

 

 

11.11 – PRIVILÉGIOS DOS OBJETOS

 

         Da direito de acesso aos objetos do banco de dados.

 

SINTAXE:    GRANT Função ON Tabela TO Usuário

 

Da direito a uma determinada função em uma tabela sua para um outro usuário.

 

SINTAXE:  GRANT ALL ON Tabela TO Usuário

 

Da todos os direitos sobre uma determinada tabela sua para um outro usuário.

 

SINTAXE:  GRANT ALL ON Tabela TO Usuário

                        WITH GRANT OPTION

 

O usuário que voce deu autorização pode repassar os privilégios recebidos  para outro usuários.

 

SINTAXE:  GRANT ALL ON tabela TO PUBLIC

 

O usuário pode também dar autorizações sobre suas tabelas para todos os usuários da instalação.

 

DECLARAÇÃO REVOKE

 

Retira um privilégio dado a alguém sobre um objeto.

 

SINTAXE:    REVOKE PRIVILÉGIO ON Tabela

                           FROM Usuário

 

 

 

 

 

 

11.12 - USO DO PREFIXO

 

Para acessar uma tabela de um outro usuário, deve-se usar o prefixo do usuário criador.

 

SINTAXE:

 

SELECT  * FROM USUARIO.TABELA;

 

INSERT INTO USUARIO.TABELA

    VALUES

 

UPDATE USUARIO.TABELA….

 

DELETE FROM USUARIO.TABELA;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12 - INDICES – AULA TEÓRICA

 

12.1 - DEFINIÇÃO:

 

-  Estrutura de árvore que permite acesso direto a uma linha de

             Uma tabela.

 

12.2 - CLASSIFICAÇÃO:

 

         - Índice de coluna única tem somente uma coluna.

         - Índice concatenado ou composto é criado em várias colnas.

         - Número máximo de colunas de um índice é 32.

 

12.3 - INDICE EXCLUSIVO:

 

         - Garante que duas linhas de uma tabela não tem valores duplicados.

 

12.4 - INDICE BASEADO EM FUNÇÃO

 

         - Criado quando são usadas funções ou expressões que envolvem uma

             ou mais colunas que esta sendo indexada.

         - Índice baseado em função calcula previamente o valor da função ou

             expressão e armazena-o no índice.

 

         - EX: Índice baseado em função

 

                   CREATE INDEX sala309.saldo.idx

ON sala309.produto (qtde_estoque – qtde_vendida)  

 

12.5 - CONSULTA USANDO O ÍNDICE

 

                  SELECT cód_produto, nro‑produto FROM produto

                               WHERE (qtde_estoque – qtde_vendida) > 100

 

 

 

 

 

 

 

 

 

 

 

12.6 - SINTAXE DA CRIAÇÃO DO ÍNDICE

 

CREATE INDEX [schema.]<name>

ON [schema.]<table> (column, column)

[TABLESPACE <nome>]

            [PCTFREE  inteiro]

            [LOGGING | NOLOGGING]

            [NOSORT]

 

 

PCTFREE - É o espaço reservado em cada bloco (em porcentagem do espaço total

         menos o cabeçalho do bloco) durante a criação para acomodar novas

         entradas de índice.

 

LOGGING – Especifica que a criação do índice e as operações posteriores nele

                      executadas sejam registradas no arquivo de redo log (Essa é a opção

                      default).

 

NOLOGGING – Especifica que a criação e alguns tipos de cargas de dados não

Sejam registrados no arquivo de redo log.

 

NOSORT – Especifica que as linhas sejam armazenadas no banco de dados em

         Ordem crescente e, portanto, que o servidor Oracle não precisa

         classificar as linhas durante a criação do índice.

 

12.7 - EXEMPLO DE CRIAÇÃO DE ÍNDICE

 

         CREATE INDEX sala309.teste_idx

ON sala309.teste (co_teste)

            PCTFREE 30

            STORAGE ( INITIAL 200K NEXT 200K

            PCTINCREASE 0   MAXEXTENTS  50  )

            LOGGING

            NOSORT

            TABLESPACE  <nome>

 

 

 

 

 

 

 

 

 

 

 

12.8 - CARACTERÍSTICAS

 

         - Índices agilizam o desempenho das  consultas.

         - Tornam as operações DML lentas.

         - Minimize o número de índices.

 

12.9 - ALTERANDO PARÂMETROS DE ARMAZENAMENTO DE ÍNDICES

 

                  

ALTER INDEX sala309.teste_idx

STORAGE ( NEXT 400K  MAXEXTENTS  100  );

 

12.10 - RECRIANDO ÍNDICES

 

A recriação de índices tem as seguintes características:

 

  • É criado um novo índice usando um índice existente como a origem de dados.
  • Não são necessárias classificações quando um índice é criado através de um índice existente, resultando em um desempenho melhor.
  • O índice antigo é apagado depois que o novo índice é criado. Durante a recriação, é necessário espaço suficiente para acomodar o índice antigo e o novo nos respectivos tablespaces.
  • As consultas podem continuar a usar o índice existente enquanto o novo índice é criado.

 

Situações de recriação possíveis.

 

  • O índice existente precisa ser movido para um tablespace diferente. Essa ação pode ser necessária se o índice estiver no mesmo tablespace que a tabela ou se os objetos precisarem ser redistribuídos pelos discos.
  • Mudança de tipo de índices.
  • A Tabela do índice foi movida para outro tablespace usando o comando ALTER TABLE... MOVE TABLESPACE.

 

                  

Recriação on-line de índices

 

            Criar ou recriar um índice pode ser uma tarefa demorada, especialmente se a tabela for muito grande. Antes do Oracle8i, criar e recriar índices exigia um bloqueio na tabela e impedia operações DML simultâneas.

 

ALTER INDEX sala309.teste_idx REBUILD ONLINE;

 

 

 

 

12.11 - ALOCANDO E DESALOCANDO ESPAÇO EM ÍNDICE

 

Talvez seja necessário adicionar extensões a um índice antes de um período de grande atividade de inserção em uma tabela.

 

ALTER INDEX sala309.teste_idx

ALLOCATE EXTENT (SIZE 200K

DATAFILE ‘/TEMP/indx01.dbf’);

 

Para a desalocação manual, use a cláusula DEALLOCATE do comando ALTER INDEX para liberar o espaço ainda nunca utilizado pelo índice.

 

ALTER INDEX sala309.teste_idx

DEALLOCATE UNUSED;

 

 

12.12 - ELIMINANDO ÍNDICES

 

Quando os índices devem ser eliminados?

  •  
    • Quando as aplicações não precisarem mais de um índice.
    • Antes de uma execução de cargas em altos volumes. Ele deve ser recriado após a carga.
    • Quando ocorre falha de instância.
    • Quando o índice está danificado.

 

 

DROP INDEX sala309.teste_idx;

 

12.13 - OBTENDO INFORMAÇÕES DOS ÍNDICES

 

 

As views de dicionário de dados DBA_INDEXES e DBA_IND_COLUMNS fornecem informações sobre os índices e as colunas indexadas.

 

DBA_INDEXES                  DBA_IND_COLUMNS

OWNER                                INDEX_OWNER

INDEX_NAME                    INDEX_NAME

INDEX_TYPE                      TABLE_OWNER

TABLE_OWNER                 TABLE_NAME

TABLE_NAME                    COLUMN_NAME

UNIQUENESS                     COLUMN_POSITION

TABLESPACE_NAME       COLUMN_LENGTH

LOGGING

STATUS

 

 

12.14 - IDENTIFICAR ÍNDICES FRAGMENTADOS

 

            Índices que são atualizadas com freqüência podem ser bons candidatos para reconstrução. Para determinar a fragmentação real de um índice, podemos utilizar o seguinte método:

 

·         Valide o índice usando o comando VALIDATE INDEX.

       Esse processo preenche a tabela INDEX_STATS com informações valiosas.

 

SQL> VALIDATE INDEX <nome>

 

            Consulte a tabela INDEX_STATS para determinar a porcentagem de linhas não preenchidas no índice.

 

SQL> SELECT name, del_lf_rows, lf_rows, round((del_lf_rows / lf_rows +

2>       0.00000000001)) * 100) “Percentual Fragmentado” 

3>       FROM  index_stats;

 

Exemplo de saída

 

NAME                           DEL_LF_ROWS    LF_ROWS   Percentual Fragmentado

------------------------------ ---------------------    ---------------  --------------------------------

TESTE                                                3890              12782                                         30

 

            No exemplo acima, o índice TESTE, está fragmentado em 30%. Você pode usar o comando ALTER INDEX ...  REBUILD para reconstruir índice fragmentado.

 

Ex.:    ALTER index TESTE REBUILD;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13 – BACKUP E RECOVER

 

13.1 – Causas comuns que necessitam de recuperação do Banco

 

         - Queda de energia.

         - Problemas de hardware ou falha de mídia.

         - Problemas de software.

         - Manuseio indevido do Banco de Dados. (atualizações).

         - Um dos processos do Oracle falhou.

 

13.2 – MÉTODOS DE BACKUP

        

         - Backup físico do Banco

                   . OFF-LINE.

                   . ON-LINE.

 

         - Backup Lógico

                   . Export / Import.

        

- Parcial

- Total

- Incremental

 

13.3 – BACKUP TOTAL DA BASE DE DADOS OFFLINE - ETAPAS

 

         13.3.1 - DEFINIÇÃO:

- Além de ser um backup essencial, também é o mais seguro.

- É necessário pelo menos um backup full offline, para que possa

   ser usada uma estratégia de backup.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

         13.3.2 - PASSOS

 

– Conectar como SYSDBA.

SVRMGR> CONNECT SYS/PASSWORD AS SYSDBA

 – Dar shutdown (nenhum usuário poderá se conectar mais).

SVRMGR> SHUTDOWN;

 – Copiar todos os arquivos do banco de dados

           (Data files,Redo Logs, Control file, Parameter file, Password file).

                 

               select file_name
               from dba_datA_files
               union
               select file_name
               from dba_temp_files
               union
               select name 
               from v
               union
               select member
               from v;

– Reiniciar o banco de dados.

SVRMGR> STARTUP;

– Está feito o backup!

13.3.3 - VANTAGENS

 

                  - Conceitualmente simples.

                   - Fácil de fazer.

                   - Requer pouca interação do operador.

                   - Confiável.

 

13.3.4 - DESVANTAGENS

 

                  - Requer que a BD fique indisponível durante o Backup.

 

 

 

 

13.4 – RECUPERAÇÃO DA BASE DE DADOS (SEM ARCHIVE)

 

 

13.4.1 - PASSOS

 

– Conectar como SYSDBA.

SVRMGR> CONNECT SYS/PASSWORD AS SYSDBA

 – Dar shutdown (nenhum usuário poderá se conectar mais).

SVRMGR> SHUTDOWN;

 – Recuperar  todos os arquivos do banco de dados

           (Data files,Redo Logs, Control file, Parameter file, Password file).

                       -  Reiniciar o banco de dados.

SVRMGR> STARTUP;

13.4.2 - VANTAGENS

 

                   - Simples de fazer.

                   - Pequena margem de erro.

                   - Tempo pequeno de recuperação.

                  

 

13.4.3 - DESVANTAGENS

 

                   - Dados perdidos devem ser reaplicados normalmente.

                   - A base de dados inteira é restaurada até o momento anterior

                       Ao backup, mesmo que só um arquivo foi danificado.

                   - O BD é restaurdado somente ao ponto do ultimo backup offline.

 

 

 

 

 

 

 

 

 

13.5 - RECUPERAÇÃO DA BASE DE DADOS (COM ARCHIVE)

 

         - Uma base de dados deve consistir de um conjunto de dados

    Sincronizados.

- Arquivos a serem sincronizados.

  . Data Files

  . Control Files

  . Redo Log Files

 

- Sincronização é baseada no número de seqüência do Redo Log Files.

- Um arquivo deve ser sincronizado para ser aberto com o resto do BD.

- O redo Log files é usado para recuperar transações confirmadas até o

   ponto de falha.

 

13.5.1 – PASSOS PARA A RECUPERAÇÃO.

 

                     - Restauração do ultimo backup.

                    – Entradas do log são aplicadas para os arquivos de dados

                       confirmando as transações que não foram confirmadas.

                    – Entradas do segmento de rollback são aplicadas para os

                       arquivos de dados desfazendo as transações que não foram

                       confirmadas.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13.6 – BACKUP PARCIAL DA  BASE  DE  DADOS  - ETAPAS

 

         13.6.1 - DEFINIÇÃO:

- Permite que  se faça um backup com a base de dados no ar.

- Faz backup dos arquivos necessários.

 

13.6.2 – PASSOS PARA O BACKUP PARCIAL.

 

                   - Assegure-se que a base de dados esta trabalhando em modo

    ARCHIVELOG

 

    SQL> ARCHIVE LOG LIST

 

                    – Determine quais arquivos deverão ser copiados antes de

    executar os comandos requeridos para o backup parcial.

       Data-files e Control Files

 

. Para Visualizar

             . DATA-Files =  DBA_DATA_FILES

             . CONTROL-FILES = parâmetro Control_Files no Init.ora

 

         . SINTAXE

                               
                                              select file_name
                       from dba_datA_files
                       union
                       select name 
                       from v

        

 – Informe o ORACLE que será feito  um backup dos datafiles do

    tablespace

 

    . ALTER TABLESPACE nome_tbs  BEGIN BACKUP

 

                – Faça o backup dos datafiles do tablespace, via sistema

                    operacional

 

 – Informe o ORACLE que O backup dos datafiles do

    tablespace terminou

 

    . ALTER TABLESPACE nome_tbs  END BACKUP

 

 

 

13.7 - ATIVANDO O BD NO MODO ARCHIVE LOG

 

Introdução

Por que ativar o modo de arquivamento?

Simples, o backup é uma cópia de dados. Esta copia pode incluir importantes partes do banco de dados tais como o controle de arquivos e seus dados. Um backup é um segurança contra inesperadas perdas de dados e erros de aplicação.

Caso você perda os dados originais, você poderá reconstruir seu banco utilizando o backup ;) Como eu faço?

O seguinte procedimento explica passo-a-passo quando habilitar o arquivamento no banco de dados e modificar o modo de NOARCHIVELOG para ARCHIVELOG. Estes comandos irão fornecer exemplos a cada estágio.

Por default o banco de dados Oracle está ajustado para o modo de NOARCHIVELOG (ou arquivamento desativado).

Para verificar se seu banco não está com o modo de Arquivamento ativado acesse:

SQL> connect sys/senha as sysdba

Connected.

 

SQL> archive log list

 

Modo log de banco de dados Modo Sem Arquivamento

Arquivamento automático Desativado

Destino de arquivamento /u01/ora9/dbs/arch

A seqüência de log on-line mais antiga 26

Seqüência de log atual 28

 

SQL> show parameter log_archive_start

 

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

log_archive_start boolean FALSE

Para habilitar o modo de arquivamento em seu banco de dados modifique-o desta maneira:

Pare o banco:

SQL> Shutdown immediate

Banco de dados fechado.

Banco de dados desmontado.

Instância ORACLE desativada.

 

SQL> startup mount

Instância ORACLE iniciada.

 

Total System Global Area 101781824 bytes

Fixed Size 450880 bytes

Variable Size 67108864 bytes

Database Buffers 33554432 bytes

Redo Buffers 667648 bytes

Banco de dados montado.

 

SQL> alter system set log_archive_start = true SCOPE = SPFILE;

 

Sistema alterado.

 

SQL> alter system set log_archive_dest = "c:oracleproduct.2.0oradataorcl"   SCOPE = SPFILE;

 

Sistema alterado.

 

No log_archive_dest você pode colocar o destino que você quiser.

 

SQL> alter database open;

 

Banco de dados alterado.

 

 

Agora verifique novamente os status do archive log:

SQL> shutdown immediate;

 

Banco de dados fechado.

Banco de dados desmontado.

Instância ORACLE desativada.

 

SQL> startup

Instância ORACLE iniciada.

 

Total System Global Area 101781824 bytes

Fixed Size 450880 bytes

Variable Size 67108864 bytes

Database Buffers 33554432 bytes

Redo Buffers 667648 bytes

Banco de dados montado.

Banco de dados aberto.

 

SQL> archive log list

Modo log de banco de dados Modo Sem Arquivamento

Arquivamento automático Ativado

Destino de arquivamento /u01/arius/arch

A seqüência de log on-line mais antiga 26

Seqüência de log atual 28

Agora o banco de dados está em modo de arquivamento, mas continua em modo NOARCHIVELOG.

SQL> show parameter log_archive_start

 

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

log_archive_start boolean TRUE

SQL>

 

 

Agora nós iremos colocar o banco de dados no modo ARCHIVELOG:

</pre> SQL> shutdown immediate;

Banco de dados fechado. Banco de dados desmontado. Instância ORACLE desativada.

SQL> startup mount exclusive; Instância ORACLE iniciada.

Total System Global Area 101781824 bytes Fixed Size 450880 bytes Variable Size 67108864 bytes Database Buffers 33554432 bytes Redo Buffers 667648 bytes Banco de dados montado.

SQL>alter database archivelog;


SVRMGR> alter database open;

Banco de dados montado. SQL> alter database archivelog;

Banco de dados alterado.

SQL> archive log list

Modo log de banco de dados Modo de Arquivamento Arquivamento automático Ativado Destino de arquivamento /u01/ora9/dbs A seqüência de log on-line mais antiga 26 Próxima seqüência de log a arquivar 28 Seqüência de log atual 28

SQL> show parameter log_archive_start

NAME TYPE VALUE


----------- ------------------------------

log_archive_start boolean TRUE </pre>

 

RECOVERY

 

         Passo1 – Shutdown

§  Passo2 – Startup mount

§  Passo3 – alter database recover

 

-      ERRO na linha 1:

-      ORA-00283: sessão de recuperação cancelada devido a erros

-      ORA-00264: nenhuma recuperação necessária

13.8 – BACKUP DOS CONTROL FILES

 

         13.8.1 - DEFINIÇÃO:

- Proteger cópias dos control files se faz necessário para uma maior

   segurança dos BD.

- Durante o backup Full copiar os control Files.

- Durante o backup parcial, através do comando ALTER DATABASE

 

13.8.2 – SINTAXE

 

    SQL> ALTER DATABASE BACKUP CONTROLFILE

                TO D:oracleadminuninovecreatebkp_ctr_file.dbf’

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13.9 – BACKUP LÓGICO – EXPORT / IMPORT

 

 

13.9.1 – OBJETIVOS

 

  • Salvar as definições de tabelas ou dados até um certo ponto.
  • Salvar as definições de tabelas (com ou sem dados) offline com a intenção de recarrega-las dentro do BD mais tarde.
  • Mover dados Oracle de um BD em uma CPU para um BD em outra CPU.
  • Mover dados ORACLE em duas versões do software ORACLE.
  • Reorganizar as tabelas, eliminando fragmentação.

 

13.9.2 - MODOS DE EXPORTACAO

 

  • Full Database
  • User
  • Table -
  • Tablespace (recurso especial do Oracle 8i)

 

13.9.3 – TIPOS DE EXPORTAÇÃO

 

- COMPLETA – Todas as tabelas e definições de dados.

- INCREMENTAL – Somente objetos que foram atualizados desde o ultimo export de

                                  qualquer tipo.

- CUMULATIVO – Todas as tabelas que sofreram mudanças desde o ultimo export

                                 cumulativo ou full.

 

13.9.4 - Exportação completa

 

O banco de dados completo pode ser exportado para um único arquivo binário simples usando a opção full=Y.  Geralmente feito pelo usuário SYSTEM.

 

Exemplo: 

 

EXP system/manager FILE=’c: emp ull.dmp’ FULL=y

 

 

 

 

 

 

 

 

 

 

 

13.9.5 - Modo de usuário

           

Todos os objetos pertencentes a um usuário especificado do banco de dados são exportados para um arquivo binário. O principal parâmetro para ativar o modo user é OWNER = <nome do usuario>

 

Exemplo: 

 

EXP scott/tiger  FILE=scott.dmp OWNER=Scott GRANTS=y  ROWS=y 

        COMPRESS=y

 

13.9.6 - Modo de Tabela

           

A Exportacao no modo de tabela pode ser usada para exportar uma ou mais tabelas a partir do banco de dados.

 Você pode incluir ambas definições de tabela e dados especificando os parâmetros TABLE = <schema.tablename> e ROWS = Y,  

 Se preferir exportar somente a estrutura da tabela, especificando os parâmetros TABLE = <schema.tablename> e ROWS = N.

 

Exemplo: 

 

EXP system/manager  TABLES=(scott.emp, blake.dept)  ROWS=y

        GRANTS=y INDEXES=y  FILE=’c: emp ables.dmp’

 

 

13.9.7 - Modo Tablespace

           

Esse modo tablespace é um modo especial que foi implementado no Oracle8i para suportar um recurso novo chamado TABLESPACES TRANSPORTAVEIS, o qual torna possível a movimentação dos tablespaces de um banco de dados do Oracle para outro banco de dados Oracle8i em um ambiente essencialmente similar (Versão e tipo de S.O.).

                  Este modo envolve a cópia dos arquivos de dados (Datafile) de um banco de

         Dados para outro.

                       

O processo é o seguinte:

 

1. Torna o tablespace somente leitura.

2. Copia os arquivos de dados desses tablespaces para o banco de dados novo.

3. Move informações do banco de dados armazenadas no dicionário de dados.

4. Coloca o tablespace no mode de leitura e gravação.

 

            Os seguintes parâmetros foram introduzidos para suportar o recurso do tablespace.

TRANSPORT_TABLESPACE

TABLESPACES

DATA FILES

13.9.8 - MODOS DE IMPORTAÇÃO

 

  • Full Database
  • User
  • Table
  • Tablespace (recurso especial do Oracle 8i)

 

13.9.9 - Modo Full Database

 

Importa todo o banco de dados do arquivo export dump criado no mesmo mode. Apenas um usuário que tenha IMP_FULL_DATABASE pode executar esse tipo de importação.

 

13.9.10 - Modo User

 

Os objetos que pertencem ao usuário especificado no parâmetro FROMUSER=<nome do usuário> são importados para o esquema especificado pelo parâmetro TOUSER. Se nenhum parâmetro FROMUSER for especificado, então os objetos do esquema do usuário que emite a importação são importados.

 

13.9.11 - Modo Table

 

O modo table é para importar tabelas específicas para o esquema de um usuário a partir de um arquivo export dump. O parâmetro de palavra-chave nesse tipo de importação é TABLE=<schema.tablename>. Se o nome do esquema não for especificado, então o esquema do usuário que emite o comando de importação é importado.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

EXERCÍCIOS   DE    LABORATÓRIO

                   TABLESPACES

 

1 – CRIAR UMA TABLESPACE PERMANENTE , CONFORME

      ESPECIFICAÇÕES:

 

         A – Nome da Tablespace: TABLESPC01

         B – Nome dos datafiles: ARQUIVO01.DBF

                                            ARQUIVO02.DBF

                                            ARQUIVO03.DBF

         C – Tamanho de  cada arquivo: 60M

         D – Localização: E:oracleadminuninovecreate

         E – Todas as alterações feitas no tablespace deverão ser gravadas no redo

       (LOGGING)

         F – Deverá estar disponível imediatamente, após sua criação. (ONLINE)

 

SINTAXE:

 

            Create tablespace tablespc01

DATAFILE 

‘C:oracleproduct.2.0oradatauninovearquivo001.dbf’ size 60M reuse,

‘C:oracleproduct.2.0oradatauninovearquivo002.dbf’ size 60M reuse,

‘C:oracleproduct.2.0oradatauninovearquivo003.dbf’ size 60M reuse          

Logging

Online;

 

 

          

 

2 – CRIAR UMA TABLESPACES TEMPORÁRIAS , CONFORME

      ESPECIFICAÇÕES:

 

         A – Nome da Tablespace: TABLESPC02

         B – Nome dos datafiles: ARQUIVO04.DBF

                                            ARQUIVO05.DBF

         C – Tamanho: 4M, cada Datafile

         D – Gerenciado localmente, com aumentos iguais a 2M

         E – Localização: E:oracleadminuninovecreate

           

SINTAXE:

 

 

 

 

         A – Nome da Tablespace: TABLESPC03

         B – Nome dos datafiles: ARQUIVO06.DBF

                                            ARQUIVO07.DBF

         C – Tamanho: 4M, cada Datafile

         D – Gerenciado localmente, com aumentos iguais a 2M

         E – Localização: E:oracleadminuninovecreate

 

 SINTAXE:

 

 

3 – ALOCAÇÃO DE TABLESPACE TEMPORÁRIA A UM GRUPO DE TABLESPACES:

 

SINTAXE:

 

 

 

 

4       ELIMINAR A TABLESPACE TABLESPC02 CRIADA ANTERIORMENTE,

           CRIANDO-A NOVAMENTE

 

-          Eliminando ainda todos os segmentos criados nela (tabelas, índices)

      (INCLUDING CONTENTS)

-          Eliminando também todas as restrições de tabelas criadas fora dela

      (CASCADE)

 

            SINTAXE:

 

 

 

 

 

 

 

           

5       ALTERANDO UMA TABLESPACE PARA O ESTADO OFF-LINE OU

           ON-LINE

 

            Exercício 4.1 - Alterar a Tablespace TABLESPC01 para ON-LINE.

       SINTAXE:

 

 

 

Exercício 4.2 - Alterar a Tablespace TABLESPC01 para OFF-LINE.

       SINTAXE:

 

 

 

6       ALTERANDO UMA TABLESPACE PARA LEITURA OU GRAVAÇÃO DE

           DADOS

 

            OBS: O mesmo deverá estar ONLINE.

 

            Exercício 5.1 - Alterar a Tablespace TABLESPC01 somente para LEITURA.

       SINTAXE:

 

 

 

Exercício 5.2 - Alterar a Tablespace TABLESPC01 para GRAVAÇÃO.

       SINTAXE:

 

 

7 – INSERINDO DATAFILE A UM TABLESPACE

 

          Opção 1 – Acrescentando um novo Datafile ao Tablespace

          Exercício 6.1 –  Inserir o DATAFILE ARQUIVO06.DBF ao tablespace 

                                 TABLESPC01

          SINTAXE:

 

 

 

             Opção 2 – Alterando o tamanho de um Datafile Existente

          Exercício 6.2 –  Alterar o DATAFILE ARQUIVO04 da tablespace

                                TABLESPC01 para 50M

OBS: Comando ALTER DATABASE

         SINTAXE:

 

 

 

8 – EXPANDINDO AUTOMATICAMENTE UM TABLESPACE

 

            Opção 1 – Usando a opção AUTOEXTEND ON

            Exercício 7.1 –  Alterar o DATAFILE arquivo04 do tablespace TABLESPC01

                                       para expandir automaticamente o espaço

             SINTAXE:

 

 

 

 

9 – VERIFICAÇÃO DOS DADOS DA TABLESPACE NO CATÁLOGO

 

                     

            Exercício 8.1 –  Verificar no catálogo o extent inicial, o extent a ser

                                          incrementado, o extent mínimo e a porcentagem de

                                           incremento para o tablespace TABLESPC01

 

SINTAXE:

 

10 – VERIFICAÇÃO DOS DATAFILES DAS TABLESPACES NO CATÁLOGO

 

SINTAXE:

 

 

 

11 – Criar um usuário USUTESTE, através do usuário SYSTEM, com as

         seguintes condições:

 

                   - Senha: S190385

                   - Tablespace default: tablespc01.

                   - Tablespace temporária: tablespc02

                  

                   SINTAXE:

 

 

 

Obs: Verificar se existem as tablespaces TABLESPC01 e TABLESPC02

 

12 – Ainda no usuário SYSTEM, visualizar as informações do usuário

         USUTESTE nas tabelas do catálogo:

 

                  DBA_users – USERNAME, USER_ID

                                          DEFAULT_TABLESPACE,

                                     TEMPORARY_TABLESPACE

                  

                   SINTAXE:

 

 

DBA_ts_quotas

 

SINTAXE:

 

 

13 – Ainda no usuário SYSTEM, altere a senha para usuário criado

         anteriormente

 

                   SINTAXE:

 

 

14 – Ainda no usuário SYSTEM elimine o usuário USUTESTE e crie

        novamente

        

                            SINTAXE:

 

15 – Ainda no usuário SYSTEM, dê autorização para o usuário USUTESTE

         para permitir conexão com o banco de Dados.

 

         SINTAXE:

 

16 – Conecte como USUTESTE e pesquise as visões   USER_SYS_PRIVS, e

         Também as tabelas USER_TABLES

 

         SINTAXE:             

 

 

 

 

17 – Conecte-se como SYSTEM e assinale a quota do tablespace

         TABLESPC01 do usuário USUTESTE para 20M, e crie a tabela

          VENDEDOR no usuário USUTESTE, inserindo duas linhas com os

           respectivos valores.

 

                            - Examine a visão USER_OBJECTS

        

                            SINTAXE:

 

                  

 

 

 

 

18 – Conecte-se no usuário SYSTEM, e

-          Crie um usuário USUTESTE01,  com as características abaixo, e

-          Dê autorização para o usuário USUTESTE01 se conectar ao banco, e

    -    De autorização para o usuário USUTESTE01 criar novos usuários,

         alterar e apagar usários, criar, alterar e apagar tabelas.

 

              CARACTERÍSTICAS DO USUÁRIO

                   - Senha: S220388

                   - Tablespace default: tablespc01.

                   - Tablespace temporária: tablespc02

                   - Espaço do tablespace01 a ser usado para este usuário 5M

Connect SYSTEM/MANAGER;

 

                   SINTAXE:

 

 

                                                       

                           

19 – Ainda no usuário SYSTEM, avalie os privilégios de USUTESTE01 na         tabela DBA_SYS_PRIVS

        

SINTAXE:

 

 

20 – Conecte-se no usuário USUTESTE e de autorização de SELECT para o

         usuário USUTESTE01  na tabela VENDEDOR

                  

SINTAXE:

 

        

 

21 – Conecte-se ao usuário USUTESTE01 e faça uma consulta na tabela

         VENDEDOR

 

SINTAXE:

 

 

 

22 – Conecte-se ao usuário SYSTEM e  crie um sinônimo chamado

        VENDEDOR_PROD para a tabela VENDEDOR do usuário USUTESTE

 

SINTAXE:

 

 

23 – Conecte-se ao usuário USUTESTE01 e faça uma consulta na tabela

         VENDEDOR_PROD

 

SINTAXE:

 

 

24 – Conecte-se no usuário USUTESTE e de autorização de INSERT para o

         usuário USUTESTE01  na tabela VENDEDOR

                  

                  SINTAXE:

 

 

 

25 – Conecte-se ao usuário USUTESTE01 e faça uma INSERÇÃO na tabela

         VENDEDOR, do usuário USUTESTE, consultando-a em seguida.

         - Ainda no usuário USUTESTE01, tente fazer uma alteração na tabela

            vendedor do usuário USUTESTE, o que acontece?

                  SINTAXE:

 

 

26 – Conecte-se ao usuário USUTESTE e consulte a tabela VENDEDOR,

         conferindo a inserção feita.

                  

SINTAXE:

 

 

27 – Ainda no usuário USUTESTE,  revogue as autorizações dadas ao usuário

 USUTESTE01

 

SINTAXE:

 

 

28 – Conecte-se ao usuário USUTESTE01 e tente consultar a tabela

 VENDEDOR do usuário USUTESTE

 

SINTAXE:

 

 

29 – Conecte-se ao usuário SYSTEM e revogue as autorizações do usuário

         USUTESTE e usuário USUTESTE01

        

SINTAXE:

 

 

30 – Conecte-se no usuário SYSTEM e drop e recrie os usuários USUTESTE e

        USUTESTE01, dando autorização nos mesmos para conectar no banco.

 

SINTAXE:

 DROP USER USUTESTE CASCADE;

         CREATE USER  USUTESTE

                   IDENTIFIED BY S190385

                   DEFAULT  TABLESPACE  TABLESPC01

                   TEMPORARY TABLESPACE TABLESPC02

                   QUOTA 30M ON TABLESPC01

                   PASSWORD  EXPIRE

                   ACCOUNT  UNLOCK;

        

GRANT  CONNECT  TO USUTESTE;

DROP  USER  USUTESTE01  CASCADE;

 

 

CREATE  USER USUTESTE01

         IDENTIFIED  BY S220388

         DEFAULT TABLESPACE TABLESPC01

         TEMPORARY TABLESPACE TABLESPC02

         QUOTA 30M ON  TABLESPC01

         PASSWORD  EXPIRE

         ACCOUNT  UNLOCK;

 

GRANT CONNECT  TO  USUTESTE01;

 

 

 

31 – Ainda no  usuário SYSTEM ,  crie uma ROLE chamada

         ROLE_COTAÇÃO, com a password  R110504. e em seguida set a

         mesma.

 

SINTAXE:

CREATE ROLE  ROLE_COTACAO

                        IDENTIFIED  BY  R110504;

 

                        SET  ROLE  ROLE_COTACAO

                        IDENTIFIED BY R110504;

 

 

32 – Ainda no usuário SYSTEM, verifique as informações da ROLE criada na

         tabela DBA_ROLE_PRIVS

 

SINTAXE:

SELECT  * FROM  USER_ROLE_PRIVS;

 

33 – Ainda no usuário SYSTEM, dê autorização na ROLE role_cotação para

         Criar tabelas no oracle

 

SINTAXE:

                   GRANT  CREATE  TABLE TO  ROLE_COTACAO;

 

 

 

34 – Ainda no usuário SYSTEM, dê autorização para o usuário USUTESTE e

         USUTESTE01  usar a ROLE role_cotação

 

SINTAXE:

 

GRANT  ROLE_COTACAO  TO  USUTESTE , USUTESTE01;

 

 

35 – Conectar-se ao usuário USUTESTE e criar a tabela COTAÇÃO, VENDEDORES e inserir linhas nas tabelas vendedores.

 

SINTAXE:

         CREATE  TABLE  COTACAO  ( VALOR NUMBER(11,2),CODIGO NUMBER(10),           PRIMARY KEY (CODIGO),DATA DATE)     TABLESPACE  TABLESPC01;

Create table vendedor (nome varchar (10), codigo number(10), primary key (codigo), endereco varchar (30), estado varchar(02), vendas number(11,2), comissoes number(11,2))  Tablespace    TABLESPC01;

 

 

 

 

36 – Conectar-se ao usuário USUTESTE, dê autorização na ROLE

         role_cotação para INSERIR e CONSULTAR  LINHAS na tabela COTAÇÃO

 

SINTAXE:

 

 

37 – Conectar-se ao usuário USUTESTE01 e inserir linha na tabela COTAÇÃO,

         e em seguida consulta-la.

 

SINTAXE:

 

 

 

38 – CRIAÇÃO DAS TABELAS NO TABLESPACE CRIADO

 

SINTAXE:

 

 

 

 

 

 

 

 

 

GERENCIANDO  BANCO  DE  DADOS

 

 

39  – Conectar o Banco de dados como SYSDBA

        

SINTAXE:

 

 

 

40 – Criar ou Confirmar as tablespaces TABLESPC01 e TABELSPC02

        

SINTAXE:

 

 

 

41 – Faça um shutdown da base na forma NORMAL

        

SINTAXE:

 

 

42 – Faça um startup da base na forma NOMOUNT

 

SINTAXE:

 

 

 

43 – Altere o estado da base para o estado MOUNT, e também somente uma

         instância podendo acessa-la.

 

SINTAXE:

 

 

 

44 – Examine a visão V e V. Tente examinar a tabela

         DBA_users. O que aparece?

 

SINTAXE:

 

 

 

45 – Mude o estado da base de dados para OPEN . tente acessar a tabela

         DBA_USERS novamente.

 

SINTAXE:

46 – Faça um shutdown da base de dados sem esperar que qualquer usuário

         se disconecte.

 

SINTAXE:

 

 

 

47 – Faça um startup da base restringindo acesso aos DBAS

 

SINTAXE:

 

 

 

48 -  Tente conectar-se como Scott/tiger. O que acontece?

 

SINTAXE:

 

 

 

49 – Altere a base de dados disponibilizando conexões para usuários não

        -DBAs

 

SINTAXE:

 

 

50 – Visualizar as tabelas do catálogo

 

SINTAXE:

 

 

51 – Visualizar as tabelas do catálogo

                           

me

USER_VIEWS = view_name

          USER_TABLESPACES = tablespace_name

          USER_TRIGGERS = trigger_name

          USER_USERS = username

 

SINTAXE:

 

 

 

 

 

52 – Visualizar as tabelas do catálogo

                           

          DBA_CONSTRAINTS = constraint_name, constraint_type

 DBA_DATA_FILES = file_name, file_id, tablespace_name

          DBA_EXTENTS = tablespace_name

          DBA_FREE_SPACES = tablespace_name

          DBA_INDEXES = index_name, table_name,

                                        tablespace_name

          DBA_OBJECTS = object_name

          DBA_ROLLBACK_SEGS = segment_name,

                                                      tablespace_name

          DBA_SEGMENTS = segment_name,tablespace_name

          DBA_SYNONYMS = synonym_name,table_name

          DBA_TABLES = table_name,tablespace_name

          DBA_TABLESPACES = tablespace_name

          DBA_TRIGGERS = trigger_name,table_name

          DBA_USERS = user_name,user_id

 

SINTAXE:

 

 

53 – Visualizar as tabelas do catálogo

                           

          V

          V

          V

          V

          V

          V

 

SINTAXE:

 

 

54 – Conectar-se ao usuário SYSTEM e  criar um índice na tabela VENDEDOR

         do usuário USUTESTE,  com as seguintes características:

 

         Nome do Índice: vendedor_idx

         Coluna do Índice: Estado do Vendedor

          Tablespace: TABLESPC01

         Deverá reservar 25% do espaço para expansão.

         Os índices criados não deverão ser gravados no Redo Log Files.

         O Oracle NÃO precisa classificar as linhas durante a criação.

         Tamanho Inicial do Extent 200k, Tamanho dos próximos 200k

          Número máximo de extents 50, Porcentagem de crescimento 0.

SINTAXE:

 

 

 

 

 

55 – Consultar os parâmetros do Índice nas tabelas

DBA_INDEXES                  DBA_IND_COLUMNS

 

SINTAXE:

 

 

 

 

56 – Alterar o Índice VENDEDOR_IDX para gravar no arquivo REDO Log suas

         inclusões

 

         SINTAXE:

 

 

57 – Apagar o Índice VENDEDOR_IDX e cria-lo novamente com as mesmas

         condições anteriores, porém incluindo a coluna ENDEREÇO, após a

         coluna ESTADO

 

SINTAXE:

 

 

 

58 – Reconstruir o índice criado anteriormente

 

SINTAXE:

 

 

59– Desalocar o espaço não usado no índice anterior;

        

SINTAXE:

 

 

 

 

 

 

 

 

 

60 – Avaliar o índice de fragmentação do índice anterior, reconstruindo-o em

        seguida;

 

        

SINTAXE:

 

 

 

61 – Criar um índice na tabela VENDEDOR do usuário USUTESTE,  com as

         seguintes características:

 

         Nome do Índice: lucro_venda_idx

         Coluna do Índice: (vendas – comissões) * 0.20

        Tablespace: TABLESPC01

         Os índices criados não deverão ser gravados no Redo Log Files.

         O Oracle NÃO precisa classificar as linhas durante a criação.

                  

 

SINTAXE:

 

 

 

 

62 – Selecionar o nome e  endereço do vendedor na tabela VENDEDOR do

         usuário USUTESTE,  de todos vendedores em que o lucro das vendas

         seja maior que 200,00

 

SINTAXE:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

63 - CRIAÇÃO DE UM CENÁRIO PARA AVALIAÇÃO DE FRAGMENTAÇÃO DE

ÍNDICES

 

 

             Passo 01 - Criação de um novo usuário

 

SINTAXE:

 

             Passo 02 – Autorizar o novo usuário a se conectar no Banco

 

SINTAXE:

 

             Passo 03 -  Autorizar o novo usuário a usar os recursos do Banco

 

SINTAXE:

 

 

             Passo 04 -  Criação das tabelas Cliente e Títulos

 

create table cliente

                                   (nome varchar2(15),

                                   endereço varchar2(30),

                                   estado varchar2(02),

                                   cep varchar2(08),

                                   vendas number(13,2),

                                   juros_vendas number(13,2),

                                   codigo number(07),

                                   primary key (codigo),

                                   data_nasc date,

                                   parcelas number(05),

                                   status varchar2(01),

valor_nota number(13,2),

                                   emissao_nota date);

 

CREATE TABLE titulo

(Codigo number(07) not null,

                                   foreign key (Codigo) references cliente (Codigo),

num_titulo number(05) not null,

primary key (num_titulo),

valor_titulo number(11,2) not null,

valor_juros number(11,2) not null,

valor_desconto number(11,2) not null,

valor_pago number(11,2) not null,

data_emissão date,

data_vencto date,

data_pagto date);

 

 

 

 

 

 

             PASSO 05 – Criando um índice na tabela Cliente por valores das

                                  vendas

 

SINTAXE:

 

 

            PASSO 06 -  Inserção de Dados nas tabelas Cliente e Titulos

 

INSERT INTO  cliente  

     VALUES('MARIA', 'Rua dos trilhos','SP','03040010', 7500.00,750.00,00020,'10-10-58' ,5,'A',2000.00,'29-09-05');

INSERT INTO  cliente  

     VALUES('ANTONIO',’Rua Matilde','SP','07050001',5000.00, 500.00,00010,'08-08-60',8,'A',3000.00,'01-10-05');

INSERT INTO  cliente

     VALUES('ITAMAR', 'Av. Emilio Ribas','SP','07050001', 6000.00,600.00,00030,'01-01-80',10,'I',1000.00,'01-04-05');

 

INSERT INTO TITULO

 VALUES(00010,100,200.00,20.00,0,220.00,'15/10/2009','30/10/2009','01/11/2009');

INSERT INTO TITULO

 VALUES(00010,200,300.00,30.00,0,330.00,'01/02/2009','10/02/2009','15/02/2009');

INSERT INTO TITULO

 VALUES(00010,300,400.00,0,0,400.00,'01/03/2009','10/03/2009','10/03/2009');

INSERT INTO TITULO

 VALUES(00020,400,1000.00,100.00,0,1100.00,'01/04/2009','10/04/2009','15/04/2009');

INSERT INTO TITULO

 VALUES(00020,500,2000.00,200.00,0,2200.00,'01/05/2009','10/05/2009','15/05/2009');

INSERT INTO TITULO

 VALUES(00030,600,3000.00,0,0,3000.00,'01/05/2009','10/05/2009','10/05/2009');

 

 

              PASSO 07 – Validando o Índice na tabela de Estatística

 

             

SINTAXE:

 

 

 

              PASSO 08 – Consultando o Índice de Fragmentação do Índice

 

SINTAXE:

 

            

 

             

 

              PASSO 09 – Criando um Sequence para a coluna do código do cliente

 

SINTAXE:

 

 

 

            PASSO 10 – Inserindo dados na Tabela Cliente para Avaliação da

                                 Fragmentação do Indice

 

declare

                        contador integer;

                        v_vendas number(13,2):=10.00;

                begin

                        contador := 1;

                        while contador <= 50000 loop

                               insert into cliente values ('oscar', 'rua a','SP',

                               '07050001',v_vendas,100.00,

                               sequencia_cliente.nextval,

                               sysdate,10,'A',1000.00,sysdate);

                               contador := contador + 1;

                               v_vendas:= v_vendas + 10.00;

                        end loop;

                        commit;

                end;

 

 

 

 

 

 

 

 

 

            PASSO 11 – Validando o Índice na tabela de Estatística

 

             

SINTAXE:

 

                

            PASSO 12 – Consultando o Índice de Fragmentação do Índice

 

SINTAXE:

 

 

 

            PASSO 13 – DELETANDO A TABELA

 

SINTAXE:

 

 

           PASSO 14 – Validando o Índice na tabela de Estatística

             

SINTAXE:

          

            PASSO 15 – Consultando o Índice de Fragmentação do Índice

 

SINTAXE:

 

 

               

           PASSO 16 – Reconstruindo o Índice

             

SINTAXE:

 

                

            PASSO 17 – Validando o Índice na tabela de Estatística novamente

             

SINTAXE:

 

                

            PASSO 18 – Consultando o Índice de Fragmentação do Índice

                                 novamente

 

SINTAXE:

 

 

 

OPÇÃO 2 - PARA RECONSTRUIR A FRAGMENTAÇÃO DA TABELA E INDEXES JUNTOS FAZEMOS OS PASSOS.

 

            PASSO 19 – Consultando a tabela do índice reconstruído para

                                              posterior retirada da fragmentação da tabela

                                              correspondente

             

SINTAXE:

 

 

 

  PASSO 20  – Eliminando a fragmentação da tabela e índices

                        juntos,  através da exportação e

                        importação da tabela

 

SINTAXE:

 

 

64 – Fazer um Backup Lógico Exp / Imp da tabela de Vendedores.

        

         64.1 - Entrar no bloco de comando do Windows no Drive C.

 

  64.2 -  Exportar a tabela de Vendedor.

                  

                   SINTAXE:

 

 

 

          64.3 -  Conectar no usuário USUTESTE e Dropar a tabela VENDEDOR

 

SINTAXE:

 

 

         64.4 – Importar a tabela Vendedor

                           

SINTAXE:

 

 

 

65 – Fazer um Backup Físico total do BD Oracle

         65.1 – Conectar como DBA

SINTAXE:

 

 

65.2– Identificar todos os arquivos do banco de dados a serem copiados.

            (Data files,Redo Logs, Control file, Parameter file, Password file).

SINTAXE:

 

  65.3 – Dar shutdown (nenhum usuário poderá se conectar mais).

SINTAXE:

 

  65.4 – Copiar os Arquivos selecionados, via SO

  65.5 – Reiniciar o banco de dados.

SINTAXE:

 

Criar uma Loja online Grátis  -  Criar um Site Grátis Fantástico  -  Criar uma Loja Virtual Grátis  -  Criar um Site Grátis Profissional