Para melhor visualização, recomendo resolução de no mínimo 1280 x 800 e navegador Mozilla Firefox


quarta-feira, 7 de janeiro de 2009

Arquivos de dados sem nome?

Por Eduardo Legatti

Olá,


Recentemente, realizei alguns testes no que se refere à criação de arquivos de dados (datafiles) de banco de dados, e verifiquei que é possível criar um arquivo de dados sem nome. As plataformas Unix/Linux parecem ser bem menos restritivas do que o Windows/DOS em relação a isso. Caso alguém esqueça de nomear o arquivo de dados, o mesmo será criado e talvez isso passe despercebido pelo DBA. No mais, aconselho mais atenção durante a criação de tablespaces e arquivos de dados no Oracle em ambientes Unix/Linux ...

-- Realizando o teste na plataforma Linux
SQL> select platform_name from v$database;

PLATFORM_NAME
-------------------------------
Linux IA (32-bit)

-- Criando arquivo de dados "sem nome"
SQL> alter tablespace users
2 add datafile '/u01/oradata/BD01/ '
3 size 1m;

Tablespace altered.

-- Consultando a view DBA_DATA_FILES
SQL> select file_name from
2 dba_data_files
3 where tablespace_name='USERS';

FILE_NAME
------------------------------
/u01/oradata/BD01/users01.dbf
/u01/oradata/BD01/

Podemos verificar acima através da view DBA_DATA_FILES, que realmente foi criado um arquivo de dados "sem nome" pertencente ao tablespace USERS.

-- Verificando o arquivo de O/S
oracle@linux:/u01/oradata/BD01> ls -l
total 31760
-rw-r----- 1 oracle oinstall 1056768 2009-01-07 08:14
-rw-r----- 1 oracle oinstall 31465472 2009-01-07 08:11 users01.dbf

Podemos perceber pelo resultado acima que realmente existe um arquivo de sistema operacional "sem nome" com tamanho de 1056768 bytes. No mais, se alguém possui um banco de dados Oracle que contenha um arquivo de banco de dados nessa situação, acho prudente que o arquivo seja renomeado o quanto antes:

SQL> alter tablespace users offline;

Tablespace altered.

oracle@linux:/u01/oradata/BD01> cp -a ' ' users02.dbf

SQL> alter tablespace users
2 rename datafile
3 '/u01/oradata/BD01/ '
4 to
5 '/u01/oradata/BD01/users02.dbf';

Tablespace altered.

SQL> alter tablespace users online;

Tablespace altered.

oracle@linux:/u01/oradata/BD01> rm ' '

SQL> select file_name from
2 dba_data_files
3 where tablespace_name='USERS';

FILE_NAME
------------------------------
/u01/oradata/BD01/users01.dbf
/u01/oradata/BD01/users02.dbf

Em relação ao ambiente Windows, podemos perceber pela demonstração abaixo, que também é possível criarmos um arquivo de dados "sem nome", mas com certeza essa tarefa só será possível se realmente quisermos de forma explícita criar um arquivo de dados "sem nome" ...

SQL> select platform_name from v$database;

PLATFORM_NAME
-------------------------------
Microsoft Windows IA (32-bit)


SQL> alter tablespace users
2 add datafile 'C:\ORACLEXE\ORADATA\XE\ '
3 size 1m;

alter tablespace users add datafile 'C:\ORACLEXE\ORADATA\XE\ ' size 1m
*
ERRO na linha 1:
ORA-01119: erro ao criar o arquivo 'C:\ORACLEXE\ORADATA\XE\ ' de banco de dados
ORA-27038: arquivo criado já existe
OSD-04010: opção especificada, arquivo existente


SQL> alter tablespace users
2 add datafile 'C:\ORACLEXE\ORADATA\XE\'' '''
3 size 1m;

Tablespace alterado.

SQL> select file_name from
2 dba_data_files
3 where tablespace_name='USERS';

FILE_NAME
------------------------------------------------
C:\ORACLEXE\ORADATA\XE\USERS.DBF
C:\ORACLEXE\ORADATA\XE\' '


C:\oraclexe\oradata\XE>dir
O volume na unidade C não tem nome.
O número de série do volume é 803D-9B80

Pasta de C:\oraclexe\oradata\XE

07/01/2009 08:33 dir .
07/01/2009 08:33 dir ..
07/01/2009 08:40 104.865.792 USERS.DBF
07/01/2009 09:32 1.056.768 ' '



Nenhum comentário:

Postagens populares