Monday, August 01, 2005
OMF - Oracle Managed Files
Inserido a partir da versão 9i, o Oracle-managed Files (OMF) elimina a necessidade do DBA ter que nomear datafiles, controlfiles e logfiles. O gerenciamento fica no nível do objeto dentro da base de dados, ou seja, quando for necessário eliminar uma tablespace, por exemplo, não é necessário ir no nível do sistema operacional e remover o arquivo, o OMF faz esse trabalho.
Para configurar o OMF e poder usufruir dessa facilidade, é preciso setar os seguintes parâmetros do spfile ou pfile:
DB_CREATE_FILE_DEST
DB_CREATE_ONLINE_LOG_DEST_n ( onde n vai de 1 a 5 )
O db_create_file_dest será o diretório onde serão criados os futuros datafiles, já o db_create_online_log_n server para apontar onde serão criados e/ou multiplexados os controlfiles e datafiles.
Se não houver valor em db_create_file_dest, a criação de uma tablespace necessita da cláusula explícita dos datafiles ou tempfiles.
Uma vez setado valor para a variável, basta criar a tablespace que os defaults serão assumidos, no caso de tablespace será criado um datafile com 100 Megabytes.
A criação do controlfile e redologfiles ocorre da mesma maneira, porém o único parâmetro mandatório para o OMF é o db_create_file_dest, porque no caso de ausência dos db_create_online_log_dest_n o OMF criará controlfile e logfile sobre db_create_file_dest.
Na versão 10g ainda temos organizado o diretório por SID e DATAFILE/CONTROLFILE/ONLINELOG - dependendo, obviamente, de qual o tipo de arquivo será criado. Abaixo, vamos setar o parametro db_create_file_dest e repetir o comando que falhou acima, iremos depois verificar o tamanho do datafile criado e onde.
Em negrito está o arquivo recém criado com o default de 100MB e chegamos a ele porque conhecemos o db_create_file_dest (C:\oracle\oradata\), o nome da instância (ora10gr1) e o tipo de arquivo (datafile). Somando tudo temos: C:\oracle\oradata\ora10gr1\datafile
Qual era meu erro até então? Eu sempre deixava o control_files com o valor inicial, então para multiplexar o controlfile, é preciso deixar o parâmetro control_files vazio. A seqüência foi:
Para configurar o OMF e poder usufruir dessa facilidade, é preciso setar os seguintes parâmetros do spfile ou pfile:
DB_CREATE_FILE_DEST
DB_CREATE_ONLINE_LOG_DEST_n ( onde n vai de 1 a 5 )
O db_create_file_dest será o diretório onde serão criados os futuros datafiles, já o db_create_online_log_n server para apontar onde serão criados e/ou multiplexados os controlfiles e datafiles.
Se não houver valor em db_create_file_dest, a criação de uma tablespace necessita da cláusula explícita dos datafiles ou tempfiles.
ops$marcio@ORA10GR1> show parameter db_create_file_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string
ops$marcio@ORA10GR1> create tablespace tbs;
create tablespace tbs
*
ERROR at line 1:
ORA-02199: missing DATAFILE/TEMPFILE clause
ops$marcio@ORA10GR1>
Uma vez setado valor para a variável, basta criar a tablespace que os defaults serão assumidos, no caso de tablespace será criado um datafile com 100 Megabytes.
A criação do controlfile e redologfiles ocorre da mesma maneira, porém o único parâmetro mandatório para o OMF é o db_create_file_dest, porque no caso de ausência dos db_create_online_log_dest_n o OMF criará controlfile e logfile sobre db_create_file_dest.
Na versão 10g ainda temos organizado o diretório por SID e DATAFILE/CONTROLFILE/ONLINELOG - dependendo, obviamente, de qual o tipo de arquivo será criado. Abaixo, vamos setar o parametro db_create_file_dest e repetir o comando que falhou acima, iremos depois verificar o tamanho do datafile criado e onde.
ops$marcio@ORA10GR1> alter system set db_create_file_dest="C:\oracle\oradata";
System altered.
ops$marcio@ORA10GR1> create tablespace tbs;
Tablespace created.
ops$marcio@ORA10GR1> host dir /od C:\oracle\oradata\ora10gr1\datafile
Volume in drive C has no label.
Volume Serial Number is 4064-FF3B
Directory of C:\oracle\oradata\ora10gr1\datafile
07/27/2005 10:03 PM 20,979,712 O1_MF_TEMP_1GCWBB7T_.TMP
07/31/2005 11:50 PM 104,865,792 O1_MF_PAY_TBSP_1GK8ZWPX_.DBF
07/31/2005 11:50 PM 5,251,072 O1_MF_USERS_1GCWDQ43_.DBF
07/31/2005 11:50 PM 125,837,312 O1_MF_SYSAUX_1GCW9XS2_.DBF
07/31/2005 11:50 PM 209,723,392 O1_MF_UNDOTBS1_1GCW99S4_.DBF
07/31/2005 11:50 PM 314,580,992 O1_MF_SYSTEM_1GCW7ODG_.DBF
08/01/2005 12:35 AM <DIR> ..
08/01/2005 12:35 AM <DIR> .
08/01/2005 12:35 AM 104,865,792 O1_MF_TBS_1GVQP840_.DBF
7 File(s) 886,104,064 bytes
2 Dir(s) 4,842,160,128 bytes free
ops$marcio@ORA10GR1>
Em negrito está o arquivo recém criado com o default de 100MB e chegamos a ele porque conhecemos o db_create_file_dest (C:\oracle\oradata\), o nome da instância (ora10gr1) e o tipo de arquivo (datafile). Somando tudo temos: C:\oracle\oradata\ora10gr1\datafile
-o-
Motivado por uma dúvida em um forum, tentei multiplexar meu controlfile depois do banco rodando, eu já tinha um controlfile "vivo" e queria multiplexar. Isso me tomou algum tempo para interpretar a documentação e mesmo realizar o processo. Eu não recomendaria multiplexar controlfile usando OMF eu continuaria usando o método tradicional mesmo, fecha o banco, copia o controlfile, muda o init.ora e abre o banco. Para testar a multiplexação de controlfile, cheguei até a submeter uma dúvida na asktom.Qual era meu erro até então? Eu sempre deixava o control_files com o valor inicial, então para multiplexar o controlfile, é preciso deixar o parâmetro control_files vazio. A seqüência foi:
- Preparei um init.ora com o control_files para vazio. E coloquei os caminhos dos diretórios desejados para multiplexar no db_create_online_log_dest_1 e 2.
- alter database backup controlfile to trace. Editei o trace livrando-me dos comentários e comandos extras não necessários.
- shutdown and startup nomount pfile=init.ora ( O init.ora do passo 1 )
- Rodei o script que criava o controlfile do trace. Depois rodei a query abaixo.
column ctl_files NEW_VALUE ctl_files;
select concat('control_files=''', concat(replace(value, ', ', ''','''), ''''))
ctl_files from v$parameter where name ='control_files';
host "echo &ctl_files >>/opt/oracle/admin/ora10gr1/scripts/init.ora";
- alter system archive log all;
- alter database open;
- create spfile from pfile;
- startup force;
Comments:
<< Home
Opa,
Então... para multiplexar os controlfiles na criação do banco é tranquilo. Sé colocar os log_dest que preciso e é gerado um para cada. A zica é criar os bixim na mãe, depois do banco criado... Vlw pela dica Marcio...
[]'s
Alex Fernando Kirsten
Então... para multiplexar os controlfiles na criação do banco é tranquilo. Sé colocar os log_dest que preciso e é gerado um para cada. A zica é criar os bixim na mãe, depois do banco criado... Vlw pela dica Marcio...
[]'s
Alex Fernando Kirsten
Ola Marcio!
Bom para Oracle 9i,
o parametro control_files deve ficar em branco para OMF ser usado.
Assim, o arquivo será criado no diretório DB_CREATE_FILE_DEST, se o Oracle não
encontrar vai para o DB_CREATE_ONLINE_LOG_DEST_n.
Nesse segundo,parece que é colocado um control file em cada diretorio (como no minimo é dois).
Multiplexao automatica?
abrs
William Shiguetaka
Post a Comment
Bom para Oracle 9i,
o parametro control_files deve ficar em branco para OMF ser usado.
Assim, o arquivo será criado no diretório DB_CREATE_FILE_DEST, se o Oracle não
encontrar vai para o DB_CREATE_ONLINE_LOG_DEST_n.
Nesse segundo,parece que é colocado um control file em cada diretorio (como no minimo é dois).
Multiplexao automatica?
abrs
William Shiguetaka
<< Home