.comment-link {margin-left:.6em;}

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.

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:



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";


Comments:
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
 
Aguarde, estou publicando o exemplo todo.
Abraço,
 
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
 
Willian, voce encontra o exemplo completo aqui.

abraços,
 
Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?