Ampliar File System

¿Cómo puedo ampliar el file system de mi Oracle 11, a través de un comando en sqlplus?
"File System Free space percentage too low for MAPA_DAT in database DBMAP"

2 respuestas

Respuesta
1
Si no es muy grande y tienes disco puedes probar a aumentarlo el datafile:
Por ejemplo:
sqlplus "/ as sysdba"
alter database datafile '/oradata/data/eps/datafile01.dbf' resize 5000M;
Hola,
Esta es la traza que me saca:
Free space percentage too low for SAI_DAT in database DBP99 (<=40.00%)
¿Tengo varias dudas..?
1: "/ ¿As sysdba" que hace este comando?
2: La ruta del datafile siempre tiene que ser esa o puede variar, ¿si es así como la puedo localizar?
3: Este cambio me ha tocado hacerlo en producción, en el peor de los casos si no se puede redimensionar, me indicara un error y no afectara a la base de datos,?
Saludos
De una pobre pogramadora metida administradora de Oracle por horas :P
Te contesto:
1: "/ ¿As sysdba" que hace este comando?
Te conecta a la B.D. como administrador, si has entrado con la cuenta oracle en el servidor unix/linux , con esto conseguirás entrar como administrador
2: La ruta del datafile siempre tiene que ser esa o puede variar, ¿si es así como la puedo localizar?
Depende d ela instalación tendrás la ruta
3: Este cambio me ha tocado hacerlo en producción, en el peor de los casos si no se puede redimensionar, me indicara un error y no afectara a la base de datos,?
No tiene porque afectar, asegurate que tienes espacio para aumentarle.
Respuesta
1
Si necesitas ampliar el tablespace debes hacer lo siguiente
alter database datafile '/nombre/de/datafile' resize 'tamaño';
Si quieres dejarlo con el tamaño que tenga pero que se autoextienda
alter database datafile '/nombre/de/datafile' autoextend on maxsize 'tamañomaximo';
Creo que el error que me estas preguntando es ese, si no es así por favor pégame el ORA que te este dando Oracle y te explicare mucho mejor .
Oracle Ora_Fault DBSPI-0206.1: Free space percentage (19.41) too low for MAPA_DAT in database DBPMAP (<=20.00%).
Solo necesito ampliarlo, lo haré a traves del SQLPLUS, con el siguiente comando:
sqlplus "/ as sysdba"
alter database datafile '/oradata/data/eps/MAPA_DAT.dbf' resize 5000M;
1.- ¿Duda Es correcto?,
2.- Duda, Desconozco la ruta donde se sitúa el datafile, por lo que he podido averiguar en google, ¿podría ser la ruta que indico arriba será correcta o puede ser otra?.
3.- Este cambio tengo que realizarlo en producción así que ando algo acojonada, entiendo que en el peor de los casos me indicara que nos es posible, ¿qué otras consecuencias puede tener dicha sentencia?.
4.- ¿Entiendo qué el MAPA_DAT es el datafile?
5.- ¿Cómo me sitúo en la base de datos para ejecutar el comando sobre ella?
Lo siento por mi nulidad con la administraccion de Oracle y los comandos del SQL Plus, vengo de host y estoy reciclandome, de todas formas muchas gracias!
MAPA_DAT es el nombre del tablespace...
Te explico, tiene que lanzar una query como esta que nos dice los datafiles del tablespace que te esta fallando:
select name from v$datafile where tablespace_name ='MAPA_DAT';
Como es el tablespace al que le falta espacio si tiene varios datafiles da igual que hagas más grande uno u otro(siempre es mejor que estén más o menos igual de espacio)
Una vez tengas el nombre del datafile haces la sentencia con el que te diga la query
alter database datafile '/nombre/de/datafile.dbf' resize 5g;
Tienes que fijarte en el espacio que tiene el datafile si tiene 3 g dale cinco por ejemplo... eso ya depende de lo que crezca tu base de datos.
Lo que afecte depende de la maquina donde lo hagas ya que depende de la velocidad que tenga al crear el fichero, aun así no tiene porque afectarte mucho si quieres puedes ir haciéndolo poco a poco, es decir si tiene 3g súbele a 4g y si ves que va bien ya le subes algo más.
Si por lo que sea te equivocas al poner el nombre del datafile te dirá que esta mal, ten cuidado de no poner un nombre que pertenezca a otro tablespace.
Si tienes más dudas pregúntamelo y no te preocupes que para estoy
Gracias por las aclaraciones!
Vale, te comento las dudas que me han surgido ahora:
1.- He probado lo que me indicas a través del Putty me he conectado a la maquina, te indico los comenados que he ejecutado:
Servidor1:~ # su - oracle
Arrancar el listener
oracle@Servidor1:~> lsnrctl start
Ejecutar sqlplus y arrancar instancia de oracle
oracle@Servidor1:~> sqlplus / as sysdba
SQL> select name from v$datafile where tablespace_name ='MAPA_DAT';
SQL> ERROR en linea 1
ORA-00904: "TABLESPACE_NAME": identificador no válido
¿Por qué me saca este error?
2.- Duda, lo que me devuelva dicha consulta se lo pego
alter database datafile ' Query 'resultado query'.dbf' resize 5g;
¿O cómo viene siendo?
3.- Por lo que indicas arriba, el tablesapce puede tener varios dataFile´s, si te he entendido bien, ¿tengo qué redimensionar todos los que me devuelva dicha consulta?
Muchas gracias otra vez. :)
Perdona te puse mal la query por eso te da ese error tienes que hacer esta query
select file_name from dba_data_files where tablespace_name ='MAPA_DAT';
Te devolvera algo como esto
SQL> select file_name from dba_data_files where tablespace_name ='MAPA_DAT';
FILE_NAME
--------------------------------------------------------------------------------
/nombre/de/datafile.dbf
Recuerda que antes tienes que ver cual es el tamaño del datafile, no vaya a ser que lo pongas más pequeño de lo que es, para ver el tamaño es así
select (user_bytes)/1024/1024/1024 from dba_data_files where FILE_NAME='/nombre/de/datafile.dbf';
Una vez comprobado esto redimensionamos el datafile dándole más espacio del que tenemos(recuerda que el directorio forma parte del nombre del datafile)
alter database datafile '/nombre/de/datafile.dbf' resize 5g;
(El nombre va entre comillas simples no se te olvide que sino falla)
Si no quieres ampliar demasiado(2,3,4gb) con que redimensiones uno ya es suficiente
Comentame que tal te funciona todo
1- Ejecute la primera consulta para obtener el data File del TableEspace:
SQL> select file_name from dba_data_files where tablespace_name ='MAPA_DAT';
FILE_NAME
--------------------------------------------------------------------------------
/home/oracle/app/oracle/oradata/SERVDEV/MAPA_DAT.dbf
2.- Tal y como me indicaste ejecute la consulta para obtener el tamaño alctual:
select (user_bytes)/1024/1024/1024 from dba_data_files where FILE_NAME='/home/oracle/app/oracle/SERVDEV/MAPA_DAT.dbf';
No ahí ninguna fila seleccionada
¿Cuál es el problema en la query?
1.- Duda: según lo que tenia entendido al hacer el resize sobre el tamaño actual incrementaba lo que yo indicara, si yo tengo un tamaño el que sea, si hago un resize 5g, sería el tamaño actual+5g. Pero según lo que me comentas si el tamaño total es de 1 g y yo hago un resize de 500 megas, ¿me cargo el dataFile no? Eso ya me preocupa... sobre todo en producción...
Gracias
Eso es porque no esta cogiendo bien la cadena que le pones, haz la query de esta forma:
select file_name,(user_bytes)/1024/1024/1024 from dba_data_files where FILE_NAME like '%MAPA_DAT.dbf';
Si tu haces un resize no incrementa sino que te deja el datafile del tamaño que lo pongas, si le pones menos no te lo cargas ya que si no se esta usando el espacio te lo pondría más pequeño y si se esta usando solo te daría un error.
Si tu datafile es de 1g y tu lo quieres poner a 2g no tienes que hacer un resize 1g, sino que tendrías que hacer un resize 2g; ¿Ok? Tienes que ponerle el tamaño que quieras no sumarle nada..
Si tienes cualquier duda cópiame cada salida de query y yo te digo que sentencias tienes que poner, me pones el tamaño que tiene, el nombre y cuanto tamaño quieres ponerle.
Ok, ahora si ha funcionado, me ha devuelto lo siguiente:
/home/oracle/app/oracle/oradata/SERVDEV/MAPA_DAT.dbf
, 999023438
No entiendo muy bien el resultado que es 0,999023438 bytes...
Vale por lo que me dices, y me quedo más tranquila, si yo le intento dar un tamaño menor del que tiene, Oracle me va lanzar un error, no me va dejar, si Oracle me permite ejecutar el resize siempre va ser, para darle un tamaño mayor nunca menor, ¿confírmame esto por favor?
En cuanto al tamaño, me gustaría asignarle el doble.
Gracias por el cable y la dedicación se gradece !
No es 0,999023438 bytes, lo correcto es 0,999023438 gigas, es decir tienes casi 1 gb de tamaño si quieres darle dos tienes que poner lo siguiente
alter database datafile '/home/oracle/app/oracle/oradata/SERVDEV/MAPA_DAT.dbf resize 2g;
Oracle si te deja ponerlo más pequeño pero no te deja si se esta usando, es decir imagina que tengo un datafile de 35gb y de este datafile solo se ha escrito 2gb(el resto esta libre) pues yo podría ponerlo a un tamaño de 2gb pero nunca a 1g porque se esta usando dos, no se si me explico
Comentame que tal te va
Me salte una comilla
alter database datafile '/home/oracle/app/oracle/oradata/SERVDEV/MAPA_DAT.dbf' resize 2g;
Vale te entiendo, tu puedes hacer más pequeño el DataFile, pero siempre y cuando no se este usando, vaya que no tenga datos, por lo que en el peor de los casos, reduces el tamaño.
Vale he realizado la prueba en TST y ok, mañana hago la prueba en PRO, si no te importa dejame el dialogo abierto por si las moscas.. Pero muchas gracias! Hoy he aprenddido una cosa nueva.
Hablamos
Así es lo has entendido bien.
¿Cuéntame qué tal te va y entonces cierras la pregunta ok?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas