- This topic has 6 replies, 2 voices, and was last updated 6 years, 2 months ago by Leandro Pinto.
-
AuthorPosts
-
22 de agosto de 2018 at 11:54 pm #109374Leandro PintoParticipant
Tenho um servidor Oracle Linux 6.7 com ASM e OFM configurado.
Configurei o parametro db_create_file_dest:
sql>ALTER SYSTEM SET DB_CREATE_FILE_DEST=’/u01/app/oracle/oradata’ SCOPE=BOTH;A partir dai quando criei uma nova tablespace não precisei mais colocar nome de datafile tamanho etc… blz aparentemente o OMF esta funcionando.
Após isso criei uma tabela e inseri dados nela:
SQL> create table DGOMEZ6(id number primary key, value varchar2(20));Quando dou um select:
SQL> select b.file_id, b.file_name from dba_segments a, dba_data_files b where a.header_file=b.file_id and segment_name=’DGOMEZ’;ele traz a seguinte informação:
FILE ID FILE_NAME
———– —————————————
11 /u01/app/oracle/oradata/ORCL/datafile/o1_mf_teste5_fqot4c86_.dbfSó que vi alguns arigos na net que o resultado do select aparece da seguinte forma:
FILE_ID FILE_NAME
———- ————————————–
4 +DATA/orcl/datafile/users.263.850528663
A minha dúvida é quanto ao final do arquivo, porque um aparece “o1_mf_teste5_fqot4c86_.dbf” e o utro “users.263.850528663”23 de agosto de 2018 at 4:34 pm #109376José Laurindo ChiappaModeratorBlz ? Bom, ao que entendi a tua dúvida é sobre o Formato dos aqruivos criados/gerados/controlados automaticamente pelo OMF, certo ? O manual mesmo (online em https://docs.oracle.com/cd/B28359_01/server.111/b28310/omf003.htm#ADMIN11492) nos diz diretamente :
“The filenames of Oracle-managed files comply with the Optimal Flexible Architecture (OFA) standard for file naming. The assigned names are intended to meet the following requirements:
Database files are easily distinguishable from all other files.
Files of one database type are easily distinguishable from other database types.
Files are clearly associated with important attributes specific to the file type. For example, a datafile name may include the tablespace name to allow for easy association of datafile to tablespace, or an archived log name may include the thread, sequence, and creation date.
No two Oracle-managed files are given the same name. The name that is used for creation of an Oracle-managed file is constructed from three sources:
The default creation location
A file name template that is chosen based on the type of the file. The template also depends on the operating system platform and whether or not automatic storage management is used.
A unique string created by Oracle Database or the operating system. This ensures that file creation does not damage an existing file and that the file cannot be mistaken for some other file.
As a specific example, filenames for Oracle-managed files have the following format on a Solaris file system:
/o1_mf_%t_%u_.dbf
where:
is //
where:
is the location specified in DB_CREATE_FILE_DEST
is the globally unique name (DB_UNIQUE_NAME initialization parameter) of the target database. If there is no DB_UNIQUE_NAME parameter, then the DB_NAME initialization parameter value is used.
%t is the tablespace name.
%u is an eight-character string that guarantees uniqueness
For example, assume the following parameter settings:
DB_CREATE_FILE_DEST = /u01/app/oracle/oradata
DB_UNIQUE_NAME = PAYROLLThen an example datafile name would be:
/u01/app/oracle/oradata/PAYROLL/datafile/o1_mf_tbs1_2ixh90q_.dbf
”===>> OU SEJA : no frigir dos ovos, é um algoritmo interno que entre outras coisas pega o NOME do database, leva em conta o SISTEMA OPERACIONAL, o nome da tablespace e o TIPO DO ARQUIVO a ser criado : assim, o teu arquivo “/u01/app/oracle/oradata/ORCL/datafile/o1_mf_teste5_fqot4c86_.dbf” tá nos dizendo que a tua Versão é 11g ou superior E o SO é algum unix-like – em outras versões anteriores não existia esse formato , consulte a doc das versões anteriores e vc vai ver isso… Okdoc ??
Isso porém é a PRIMEIRA parte da resposta – como tá bem claramente especificado na doc acima, isso vale PARA ARQUIVOS CRIADOS EM UM FILESYSTEM, cheque no manual do ASM com OMF (online achei https://docs.oracle.com/database/121/OSTMG/GUID-21305D87-1D0C-442C-97AE-DE8ACA979F91.htm#OSTMG94200, não é pra sua versão mas imho não deve ter mudança) que a regra para OMF ** em ASM ** é outra :“Fully Qualified File Name Form
You can use a fully qualified form for referencing existing Oracle ASM files in Oracle ASM operations, except for disk group creation. This form is the Oracle ASM file name that Oracle ASM automatically generates when an Oracle ASM file is created.
A fully qualified file name has the following form:
+diskgroup/dbname/filetype/filetypetag.file.incarnation”
===>> OU SEJA : a sua resposta é simplesmente que os artigos que vc viu na net muito CERTAMENTE estavam usando OMF no ASM (ie, o parâmetro de DB_CREATE_FILE_DEST deles estava apontando para um diskgroup do ASM, ao contrário do SEU, que aponta pra um filesystem))….
Sendo assim, esse arquivo ‘+DATA/orcl/datafile/users.263.850528663’ que vc viu tá indicando que esse arquivo com file id 263 é um arquivo de tablespace de USUÁRIO/criado por usuário sob demanda (daí o users como filetypetag), pertencente a um banco com a encarnação 850528663 E pertencente a um banco chamado orcl, sim sim ?? Dúvida NENHUMA cabível, vc está vendo OMF criado em discos diferentes, com bancos diferentes e por gerenciadores de arquivo diferentes, daí a diferença, yes ???[]s
Chiappa
OBS : não tem a ver com a sua pergunta, mas Por Que vc se deu ao trabalho de instalar e configurar teus discos em ASM e não tá mandando o OMF criar teus arquivos no ASM ?? Vc tá pondo no ASM só alguns arquivos escolhidos , é isso ? Eu questiono porque Normalmente os disk volumes do ASM são os maiores, mais performáticos e mais seguros de um ambiente (pois discos ASM normalmente residem num STORAGE) : no filesystem a gente bota arquivinhos pequenos e não tão importantes, via de regra….
23 de agosto de 2018 at 8:03 pm #109378Leandro PintoParticipantOk, já me esclareceu bastante.
Realmente foi um erro meu, eu configurei o parametro db_create_file_dest desta maneira:
sql>ALTER SYSTEM SET DB_CREATE_FILE_DEST=’/u01/app/oracle/oradata’ SCOPE= BOTH;Vou altera-lo para:
sql>ALTER SYSTEM SET DB_CREATE_FILE_DEST=’+data/oracle/oradata’ SCOPE= BOTH;
A minha estrutura dentro do ASMCMD esta assim:
ASMCMD>DATA>ORACLE>ORADATA (O COMANDO ACIMA ESTA CERTO?)para fazer essa modificação eu devo setar o . oraenv “+ASM” ou “orcl” sqlplus / as sysdba ou sqlplus / as sysasm?
23 de agosto de 2018 at 8:59 pm #109379José Laurindo ChiappaModeratorAtenção, ** não se confunda ** : usar ou não o OMF é uma opção de CADA DATABASE ORACLE, ** não é do ASM em si!!! Assim sendo, é em CADA INSTÂNCIA ORACLE nas quais vc quiser usar OMF que vc deve setar DB_CREATE_FILE_DEST… E como o seu exemplo mesmo já indicou, o OMF é ** completamente independente ** do ASM, vc pode sim ter OMF numa instância que usa filesystems E/OU também ter OMF numa instância Oracle que use ASM…
A sintaxe em si está correta : é +nomedoDG/pathquejáexistenoDG , SEM a barra final, sim… Sobre a outra pergunta, seguinte : quando vc especifica SCOPE=BOTH num ALTER SYSTEM, , vc está indicando que quer que o RDBMS modifique o parâmetro Não Só no spfile/pfile (o que só entra em ação depois do próximo reboot/restart do banco) QUANTO também alter o sistema imediatamente, ie, altere a Instância que está ativa – alguns parâmetros de banco só podem ser modificados no spfile/pfile (e portanto só entram em ação depois de um reboot/restart) E alguns podem ser modificados de uma pancada só no spfile E no sistema…
NO caso, se vc olhar a documentação do 11g (https://docs.oracle.com/cd/B28359_01/server.111/b28320/initparams050.htm#REFRN10034) vc VAI ver que esse parâmetro está SIM marcado como MODIFIABLE com ALTER SYSTEM, portanto deve SIM aceitar o BOTH e com isso já modificar o sistema E o spfile/pfile numa tacada só…Tá respondido então : se vc vai alterar por sqlplus, *** CONFIGURE-O *** PARA ACESSAR A INSTÂNCIA DO DATABASE ORACLE e não a do ASM (pode ser por oraenv, pode ser setando as variáveis de ambiente manualmente, pode ser por um shell script seu, não importa), e uma vez conectado na instância do BANCO vc pode fazer um ALTER SYSTEM SET param=valordesejado SCOPE=BOTH; …. ok…
[]s
Chiappa
23 de agosto de 2018 at 11:00 pm #109380Leandro PintoParticipantOk
Executei os seguintes comandos:
. oraenv
orcl(nome da minha instância do banco)
sqlplus / as sysdba
sql>ALTER SYSTEM SET DB_CREATE_FILE_DEST=’+data/oracle/oradata’ SCOPE= BOTH;aparece esses erros:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-01261: Parameter db_create_file_dest destination string cannot be translatedmas quando dou esse comando a baixo ele aceita:
sql>ALTER SYSTEM SET DB_CREATE_FILE_DEST=’+data’ SCOPE= BOTH;23 de agosto de 2018 at 11:21 pm #109381José Laurindo ChiappaModeratorBlz ? Então, não estou neste exato momento com um banco que acesse ASM pra testar, mas pelo que me lembro (escrevo de cabeça aqui) deveria sim ser aceito um path dentro de um diskgroup : o fato de o seu banco não aceitar um path e aceitar só o nome do diskgroup pode indicar BUG ou na documentação ou no seu release/edition – confira no Suporte …
[]s
Chiappa
26 de agosto de 2018 at 11:32 pm #109382Leandro PintoParticipantok, obrigado
-
AuthorPosts
- You must be logged in to reply to this topic.