Vous êtes sur la page 1sur 6

Manejando Datafiles en Oracle

Para ver todos los datafiles de una base de datos:


SQL> desc dba_data_files
Name
Null?
Type
----------------------------------- ------------------------------FILE_NAME
VARCHAR2(513)
FILE_ID
NUMBER
TABLESPACE_NAME
VARCHAR2(30)
BYTES
NUMBER
BLOCKS
NUMBER
STATUS
VARCHAR2(9)
RELATIVE_FNO
AUTOEXTENSIBLE
MAXBYTES
MAXBLOCKS
INCREMENT_BY
USER_BYTES
USER_BLOCKS
ONLINE_STATUS

NUMBER
VARCHAR2(3)
NUMBER
NUMBER
NUMBER
NUMBER
NUMBER
VARCHAR2(7)

Seteamos la pantalla de SQLPLUS


SQL> col file_name format a60
SQL> set linesize 120
SQL> select file_name, file_id, relative_fno from
dba_data_files;
FILE_NAME
FILE_ID RELATIVE_FNO
------------------------------------------ --------------------C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\SYSTEM01.DBF
1
1
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\UNDOTBS01.DBF
2
2
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\SYSAUX01.DBF
3
3
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\USERS01.DBF
4
4
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\TSEJEMPLOS1
5
5
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\PRUEBA1.DBF
6
6

C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\BIG.DBF
7
1024
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\DF16K.DBF
8
8
8 rows selected.
Todos los datafile de tipo Big tendran como nro relativo
1024
----------------------------------------------------------------Saber el nro maximo de datafile que puede tener su base de
datos
Parametro: DB_FILES
SQL> show parameter db_files
NAME
TYPE
------------------------------ -------------------------------db_files
integer

VALUE
200

Para modificar este parametro debemos parar la instancia,


modificarlo y volver a arrancar la instancia.
En el Control File tambien hay un parametro que es el MAX
DataFILE que tambien influye en la cantidad de datafiles
que puede tener la bd
Ubicar los datafiles
Tipos de Datafile
Datafile de Alta disponibilidad
Datafiles de Baja disponibilidad
Datafiles de Solo Lectura
Datafile del Sistema
Redo Log Files
Crear y Modificar Datafiles
Cuando creamos un tablespaces normal o temporal debemos
especificar aunque sea un datafile, se puede crear mas de 1
datafile:
Create tablespace....
Create temporary tablespace....
Cuando deseamos aadir un datafile a un tablespaces regular
y temporal usamos sta sentencia:
Se usa cuando queremos ampliar el espacio de un tablespace
y no podemos hacer crecer mas los datafiles existentes

Alter tablespace ... add datafile...


Alter tablespace .... add tempfile...
Cuando creamos la base de datos, se crean los datafiles
iniciales, sin el datafile del sistema no hay base de
datos:
Create Database....
Con esta sentencia se suelen crear datafiles que ya
existian pero se perdieron y no hay copias, se recrea el
datafile pero est vacio:
Alter Database .... create datafile....
Para crear un datafile hay que ver varias cosas:
Parametro: DB_CREATE_FILE_DEST
Si este parametro est vacio, siempre que creemos un
datafiles tendremos que colocar la ruta completa de
destino.
Lo mejor es siempre especificar su ruta y nombre al
datafile
Tema tamao del datafile, es decir su capacidad de
crecimiento
Cuando lo creamos usamos el parametro size que dir cual es
el tamao incial de ese datafile y se reservar en el disco
ese tamao. Cuando se llene el datafile, debemos
especificar si queremos que crezca l solo o que no admita
mas cambios.
Esto se consigue con la clausula AUTEXTEND ON NEXT, cuando
un datafile est lleno y quiera agregar una extension mas,
se extender tanto como le pusimos
en AUTEXTEND ON NEXT para que pueda ser agregada la
extension al datafile.
Tambien tenemos el MAXSIZE que sirve para dar limite al
tamao del datafile, por mas que le demos que crezca solo
siempre puede tener un limite,
podemos poner un valor y sino inlimited que indica que
puede crecer hasta que le de espacio el disco, osea su
limite ser la capacidad de disco
AADIR UN DATAFILES A UN TABLESPACES EXISTENTE:
PRIMERO:
Para ver qu datafiles tenemos y en qu tablespaces estn:
SQL> col tablespace_name format a20
SQL> select file_name, tablespace_name from dba_data_files;
FILE_NAME
TABLESPACE_NAME

----------------------------------------------------------------C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\SYSTEM01.DBF
SYSTEM
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\UNDOTBS01.DBF
UNDOTBS1
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\SYSAUX01.DBF
SYSAUX
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\USERS01.DBF
USERS
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\TSEJEMPLOS1
TSEJEMPLOS
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\PRUEBA1.DBF
TBPRUEBA
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\BIG.DBF
TBBIG
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\DF16K.DBF
TB16KB
8 rows selected.
* Crear un datafile en el tablespace tbprueba
SQL> alter tablespace tbprueba
2
add datafile
'C:\Oracle\product\10.2.0\oradata\db00pro\prueba2.dbf'
3
size 5m
4
autoextend on next 1m
5
maxsize 100m;
---------------------------------------------------------------* Una pregunta se plantea, como hacemos crecer manualmente
un datafile?
SQL> alter database datafile
'C:\Oracle\product\10.2.0\oradata\db00pro\prueba2.dbf'
resize 10m;
Database altered.
----------------------------------------------------------------* Modificar la disponibilidad de los datafiles.
Todo va a depender si nuestra base de datos esta trabajando
en Archive log o no.
Si esta en modo ArchiveLog, no habra drama se puede poner
offline:
SQL> alter database datafile ............. offline / online
Si esta en modo NoArchivelog no se puede poner offline a
menos que sea para eliminarlo, porque una vez puesto

offline no se podra poner online:


SQL> alter database datafile ............. offline for drop
Ejemplo:
Como nuestra base esta en modo archivelog:
SQL> alter database datafile
'C:\Oracle\product\10.2.0\oradata\db00pro\prueba2.dbf'
2 offline;
Database altered.
SQL> alter database datafile
'C:\Oracle\product\10.2.0\oradata\db00pro\prueba2.dbf'
2 online;
alter database datafile
'C:\Oracle\product\10.2.0\oradata\db00pro\prueba2.dbf'
*
ERROR at line 1:
ORA-01113: file 9 needs media recovery
ORA-01110: data file 9:
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\DB00PRO\PRUEBA2.DBF'
Como no esta sincronizado el datafile con el resto de los
datafile da error y pide que se haga recovery
Para sincronizar un datafile que se quedo offline se hace
el recover.
SQL> recover datafile
'C:\Oracle\product\10.2.0\oradata\db00pro\prueba2.dbf';
Media recovery complete.
Volvemos a poner el datafile online:
SQL> alter database datafile
'C:\Oracle\product\10.2.0\oradata\db00pro\prueba2.dbf'
2 online;
Database altered.
Para tareas admin es recomendable poner TODO el tablespace
offline y no solo por datafiles
-----------------------------------------------------------------RENOMBRAR Y REUBICAR DATAFILES
PASOS:
1) PONER EL TABLESPACE OFFLINE
Si quiero mover un datafile, tengo que saber a que
tablespace pertenece
Por ejemplo el datafile
'C:\Oracle\product\10.2.0\oradata\db00pro\prueba2.dbf'
pertenece al Tablespace tbprueba

SQL> alter tablespace tbprueba offline;


Tablespace altered.
2) RENOMBRAR O REUBICAR EL ARCHIVO EN EL S.O.
Por ej: muevo desde el explorador el archivo y lo coloco
dentro de la carpeta OtroDisco
3) alter tablespace .... rename datafile .... to .....
SQl> alter tablespace tbprueba rename datafile
'C:\Oracle\product\10.2.0\oradata\db00pro\prueba2.dbf' to
'C:\Oracle\product\10.2.0\oradata\db00pro\OtroDisco\prueba2
.dbf';
Tablespace altered.
Con esto informo al controlfile que este datafile esta en
la sig ubicacion
4) Poner el tablespace online y hacer un backup de la base
de datos
SQL> alter tablespace tbprueba online;
Tablespace altered.
NO OLVIDAR DE HACER UNA COPIA DEL CONTROLFILE!!!!!!!!!!!!!
------------------------------------------------------------ELIMINAR DATAFILE
alter tablespace .... drop datafile -----> borra los
archivos del SO
Alter tablespace ......... datafile .... drop including
datafiles -----> sino coloco including no borra lo del SO
Requisitos para borrar:
El datafile tiene que estar abierto, tiene que estar online
Si no est vaco, no se puede borrar, si tiene extensiones
no se puede borrar
No puede ser el unico datafile de un tablespace
No puede pertenecer a un tablespace en Read Only
no puede pertenecer al tablespace System ni Sysaux

Vous aimerez peut-être aussi