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
- Procura cópia da instrução SQL no Shared Pool.
- Valida a Instrução SQL (Sintaxe).
- Efetua pesquisas no dicionário de dados para validar tabelas e campos.
- Verifica os privilégios do usuário.
- 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:
- Texto da instrução SQL
- Árvore de análise: Versão compilada do comando.
- 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)
-
- Procura cópia da instrução SQL no Shared Pool.
- Valida a Instrução SQL (Sintaxe).
- Efetua pesquisas no dicionário de dados para validar tabelas e campos.
- Verifica os privilégios do usuário.
- Determina o plano de execução ideal para a instrução (índices).
- Executando a Instrução DML
Para executar uma instrução DML:
-
- 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.
- Processo de servidor bloqueia as linhas que serão modificadas.
- 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.
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)
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:
- O processo de servidor registra um commit, junto com o SNC (timestamp) no REDO LOG BUFFER.
- 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.
- O usuário é informado que o COMMIT ocorreu.
- 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
Í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: empull.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
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: empull.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: