Movendo Um Datafile
-
Upload
jonas-veras-araujo -
Category
Documents
-
view
36 -
download
0
Transcript of Movendo Um Datafile
![Page 1: Movendo Um Datafile](https://reader030.fdocumentos.com/reader030/viewer/2022020116/557201e54979599169a29057/html5/thumbnails/1.jpg)
Movendo um datafile
É de extrema de importancia entender sobre os estágios envolvidos na abertura de um banco de dados Oracle, antes de efetuar a movimentação de um datafile.
Obs: Apenas para relembrar, uma instância Oracle consiste na estrutura de memória SGA (System Global Area) e nos processos de segundo plano como SMON, PMON, DBWn, LGWR, CKPT, entre outros usados para gerenciar o banco dados. A instância só pode abrir e usar um banco de dados por vez. Em resumo, um servidor Oracle consiste em uma instância Oracle (estruturas de memória e processos) e um banco de dados Oracle (arquivos físicos).
NOMOUNT
Este estágio inicializa a instância sem montar o banco de dados. Isso significa que todas as estruturas de memória e os processos de segundo plano estão posicionados, mas ainda sem ter um banco de dados associado a essa instância. É através deste estágio que é possível criar um banco de dados Oracle. Portanto, uma instância só deverá ser iniciada no estágio NOMOUNT durante a criação do banco de dados ou na recriação de arquivos de controle (control files). Em resumo, a inicialização de uma instância Oracle inclui as seguintes tarefas:
1.Leitura do arquivo de inicialização SPFILE_.ora ou SPFILE.ora ou init.ora exatamente nesta ordem porque, por padrão a partir do Oracle 9i, primeiro ele tenta abrir o spfile.ora, se o arquivo não for encontrado ele tentará abrir o spfile.ora, se o mesmo não for encontrado ele tentará ler o arquivo init.ora. Se o Oracle não encontrar nenhum arquivo de inicialização ou se o DBA não fornecer um valor explícito para PFILE, a inicialização falhará. A especificação do parâmetro PFILE com STARTUP sobrepõe o comportamento default.
2.Alocação da SGA
3.Inicialização dos processos de segundo plano
4.Abertura do arquivo de alerta (ALERT_.ora) e dos arquivos de rastreamento
![Page 2: Movendo Um Datafile](https://reader030.fdocumentos.com/reader030/viewer/2022020116/557201e54979599169a29057/html5/thumbnails/2.jpg)
Observe que nem os arquivos de controle nem os arquivos de dados e redo log on-line estão abertos neste estágio.
MOUNT
Após a instância já ter sido inicializada pelo estágio anterior, então é realizada a leitura do arquivo de controle de modo a “associar” o banco de dados à instância já inicializada anteriormente. A opção “startup mount” é muito útil em situações onde é necessário executar algumas operações específicas de manutenção como renomeação de arquivos de dados, ativação e desativação de opções de arquivamento de redo log (ARCHIVELOG) e operações de recuperação do banco de dados. É importante salientar que se a instância já estiver inicializada “startup nomount”, mas o banco não estiver montado, então será necessário utilizar o comando “alter database mount”. Resumindo, montar o banco de dados inclui as tarefas a seguir:
1.Associação do banco de dados a uma instância iniciada anteriormente
2.Localização e abertura dos arquivos de controle (control files) especificados no arquivo de inicialização
3.Leitura dos arquivos de controle para obtenção dos nomes e status dos arquivos de dados (data files) e arquivos de redo log on-line (log files)
É importante salientar que neste estágio não é verificada a existência dos arquivos de dados e arquivos de redo log on-line, mas se os arquivos de controle não forem localizados conforme a localização especificada no parâmetro CONTROL_FILES no arquivo de inicialização, então um erro será retornado, o banco de dados não será montado e a instância permanecerá no estado NOMOUNT. Se o DBA utilizar a opção “startup mount” para inicializar o Oracle e quiser abrir o banco de dados, então será necessário utilizar o comando “alter database open”.
OPEN
Neste terceiro e último estágio, o banco de dados é disponibilizado para acesso dos usuários. A operação normal de um banco de dados significa que uma instância é iniciada e o banco de dados é montado
![Page 3: Movendo Um Datafile](https://reader030.fdocumentos.com/reader030/viewer/2022020116/557201e54979599169a29057/html5/thumbnails/3.jpg)
e aberto. Portanto, qualquer usuário válido pode conectar ao banco de dados e executar operações comuns de acesso a dados. Durante esse estágio final, o servidor Oracle verifica se é possível abrir todos os arquivos de dados e arquivos de redo log on-line, além de verificar a consistência do banco de dados onde neste caso, o processo de segundo plano SMON (System Monitor) iniciará a recuperação da instância se
necessário. Resumindo, a abertura do banco de dados inclui as seguintes tarefas:
1.Abertura dos arquivos de dados (data files)
2.Abertura dos arquivos de redo log on-line (log files)
3.Chama o processo SMON se necessário para a recuperação da instância em caso de uma falha de instância ocorrida enquanto o banco de dados estava aberto e em operação anteriormente.
É importante salientar que se algum arquivo de dados ou arquivo de redo log on-line não estiver presente, então o banco de dados não abrirá permanecendo no estado MOUNT e o servidor Oracle retornará um erro.
Movendo um datafile
Exemplo prático para mover ou renomear datafiles.
Dica
A maneira ideal de mover um datafile é com o banco de dados em estado mount, porém é possível mover um datafile com o banco de dados no estado open e a tablespace que deseja mover o datafile no modo offline.
Mãos a obra
Suponhamos que o nosso datafile alvo está em:
![Page 4: Movendo Um Datafile](https://reader030.fdocumentos.com/reader030/viewer/2022020116/557201e54979599169a29057/html5/thumbnails/4.jpg)
/u01/oradata/datafiles/orcl/datafile01.dbf
Pretendemos movê-lo para:
/u01/oradata/datafiles/xe/datafile01.dbf
Procedimento
SQL> select name from v$dbfile;
/u01/oradata/datafiles/orcl/datafile01.dbf
SQL> shutdown immediate;
host mv /u01/oradata/datafiles/orcl/datafile01.dbf /u01/oradata/datafiles/xe/datafile01.dbf
SQL> startup mount
SQL> alter database rename file '/u01/oradata/datafiles/orcl/datafile01.dbf' to '/u01/oradata/datafiles/xe/datafile01.dbf';
SQL> select name from v$dbfile;
/u01/oradata/datafiles/xe/datafile01.dbf
SQL> alter database open;