Si alguna vez necesitan aumentar el tamaño original de un tablespace y asea porque el tamaño actual se esta agotando o por que se va a realizar una carga importante de datos, lo que se debe hacer es lo siguiente: se loguean por sqlplus a la base de datos y ejecutan el siguiente comando
ALTER DATABASE DATAFILE 'Ruta.DBF' RESIZE tamaño;
Ejemplo:
ALTER DATABASE DATAFILE 'C:\ORACLEXE\ORADATA\XE\SYSTEM.DBF' RESIZE 6000M;
Contiene información que en algún momento me fue útil en desarrollo de software conceptos Web, ORACLE, Qlikview, linux, Kettle,Extjs, java y bases de datos
Mostrando entradas con la etiqueta oracle. Mostrar todas las entradas
Mostrando entradas con la etiqueta oracle. Mostrar todas las entradas
miércoles, 20 de agosto de 2014
ORACLE: TNS no hay listener
En algunas ocasiones ante un reinicio de un servidor o una caída de la base de datos nos aparece un error "TNS no listener" cuando nos pase esto debemos levantar el listener de la base de datos de la siguiente manera:
Entramos a la maquina ya sea por vnc o por ssh y digitamos en una consola:
$ lsnrctl start
$ sqlplus /nolog
$ conn / as sysdba
$ startup
Volver a intentar conectarnos a la base de datos, con el listener arriba no deberíamos tener inconvenientes.
Entramos a la maquina ya sea por vnc o por ssh y digitamos en una consola:
$ lsnrctl start
$ sqlplus /nolog
$ conn / as sysdba
$ startup
Volver a intentar conectarnos a la base de datos, con el listener arriba no deberíamos tener inconvenientes.
ORACLE: DBA_SOURCE
Aveces necesitamos saber que funciones o paquetes están haciendo inserts, update sobre una tabla o necesitamos saber quien utiliza una función de la base de datos.
Para esto podemos hacer uso del siguiente comando:
select * from dba_source where text like '%mi_paquete%' ;
select * from dba_source where text like '%insert%tabla%';
hay que tener en cuenta que los signos % se utilizan como comodines que equivalen a uno o mas caracteres, y el signo _ equivale específicamente a un carácter.
ORACLE: optimización de consultas basico
Utilización de campos específicos en lugar del *
Cuando haces una consulta con un count(*) solo para ver cuantos registros tiene una consulta no debería utilizar el * ya que la base de datos va y busca las columnas definidas de la tabla(y esto por pequeño que sea toma tiempo) en estos casos puedes hacer algo así:
select count(1) from usuario ; --bien el 1 representa el primer campo de la tabla
ó
select count(campo) from usuario ; --bien
y no usar
select count(*) from usuario ; --mal
En conclusión el tiempo que se toma en ejecutar el segundo query es menor el que se toma si el query tiene el count(*).
En algunas ocasiones no especificamos en nuestro código que campos específicamente vamos a utilizar de una tabla y utilizamos el *,pues cuando utilizamos el * y vamos a utilizar la mitad de los campos lo que sucede es que ocupamos mas recursos de la base de datos e incluso ocupamos mas red para llevar los datos al sistema que ejecuto la consulta.
Select campo1, campo2,campo2 from tabla; --bien
select * from tabla ; -- mal
- Count(*)
Cuando haces una consulta con un count(*) solo para ver cuantos registros tiene una consulta no debería utilizar el * ya que la base de datos va y busca las columnas definidas de la tabla(y esto por pequeño que sea toma tiempo) en estos casos puedes hacer algo así:
select count(1) from usuario ; --bien el 1 representa el primer campo de la tabla
ó
select count(campo) from usuario ; --bien
y no usar
select count(*) from usuario ; --mal
En conclusión el tiempo que se toma en ejecutar el segundo query es menor el que se toma si el query tiene el count(*).
- Select *
En algunas ocasiones no especificamos en nuestro código que campos específicamente vamos a utilizar de una tabla y utilizamos el *,pues cuando utilizamos el * y vamos a utilizar la mitad de los campos lo que sucede es que ocupamos mas recursos de la base de datos e incluso ocupamos mas red para llevar los datos al sistema que ejecuto la consulta.
Select campo1, campo2,campo2 from tabla; --bien
select * from tabla ; -- mal
ORACLE: Uso de la utilidad Spool
Existe una utilidad de oracle llamada "spool" para guardar todo lo que digitamos y los resultados de las consultas cuando utilizamos la consola con sqlplus.
Es util cuando debes guardar el resultado de una consulta con muchos registros o cuando requieres guardar una seria de evidencias de ejecución. Pasos:
Caso practico A: guardamos una secuencia de lineas ejecutadas.
0.Nos ubicamos en la carpeta en la que tenemos los querys que vamos a ejecutar o la carpeta en la que vamos a almacenar la salida del archivo spool.
mvs$ cd mi_dir/
1.Para utilizar el comando, entramos en una consola y nos conectamos a la base de datos:
mvs$ sqlplus esquema_base_de_datos/clave_de_esquema@sid
2.Una vez entremos a la base de datos digitamos el nombre de la utilidad, se debe tener en cuenta que se guarda en el archivo a partir del momento en que se prenda el spool lo anterior no queda guardado
sql> select 1+1 from dual;
sql> spool nombre_archivo_salida.txt
sql> select 2+4 from dual;
sql> select 2+5 from dual;
sql>spool off;
sql>quit;
3.Una vez paramos la escritura del archivo spool con el comando spool off y cerramos la conexión validamos que en nuestro directorio este el archivo de salida
mvs$ ls
mvs$nombre_archivo_salida.txt
Caso practico B: guardamos el resultado de una consulta especifica.
0.Nos ubicamos en la carpeta en la que tenemos los querys que vamos a ejecutar.
mvs$ cd mi_dir/
1.Para utilizar el comando, entramos en una consola y nos conectamos a la base de datos:
mvs$ sqlplus esquema_base_de_datos/clave_de_esquema@sid
2.Preparamos la consola para que nos formatee la salida de la ejecución de una consulta que tenemos almacenado en un archivo, es decir le quitamos los espacio es vacíos al inicio y al final de cada linea de la salida, le quitamos la paginación , le ponemos un tamaño de linea bien grande para que no se nos corte a la siguiente linea una misma fila etc:
sql>SET SPACE 0;
sql>SET LINESIZE 32767;
sql>SET PAGESIZE 0;
sql>SET HEADING OFF;
sql>SET FEEDBACK OFF;
sql>SET TRIMSPOOL ON;
sql> spool nombre_archivo_salida.txt
3.Una vez hemos preparado el ambiente para la ejecucion del archivo ejecutamos el archivo con el siguiente comando
sql> @archivo_con_queys.txt
Una vez entremos a la base de datos digitamos el nombre de la utilidad, se debe tener en cuenta que se guarda en el archivo a partir del momento en que se prenda el spool lo anterior no queda guardado
4.Cuando finalice de ejecutar las sentencias que tenemos en el archivo cerramos el spool y la conexion a la base de datos
sql>spool off;
sql>quit;
5.Al finalizar podemos ver el resultado de la consulta nuestra computadora.
mvs$ ls
mvs$nombre_archivo_salida.txt
NOTAS:
En el archivo que llamo archivo_con_querys pueden haber varias sentencias delete, update, select, insert, se utiliza el carácter @ para ejecución de archivos.
Es util cuando debes guardar el resultado de una consulta con muchos registros o cuando requieres guardar una seria de evidencias de ejecución. Pasos:
Caso practico A: guardamos una secuencia de lineas ejecutadas.
0.Nos ubicamos en la carpeta en la que tenemos los querys que vamos a ejecutar o la carpeta en la que vamos a almacenar la salida del archivo spool.
mvs$ cd mi_dir/
1.Para utilizar el comando, entramos en una consola y nos conectamos a la base de datos:
mvs$ sqlplus esquema_base_de_datos/clave_de_esquema@sid
2.Una vez entremos a la base de datos digitamos el nombre de la utilidad, se debe tener en cuenta que se guarda en el archivo a partir del momento en que se prenda el spool lo anterior no queda guardado
sql> select 1+1 from dual;
sql> spool nombre_archivo_salida.txt
sql> select 2+4 from dual;
sql> select 2+5 from dual;
sql>spool off;
sql>quit;
3.Una vez paramos la escritura del archivo spool con el comando spool off y cerramos la conexión validamos que en nuestro directorio este el archivo de salida
mvs$ ls
mvs$nombre_archivo_salida.txt
Caso practico B: guardamos el resultado de una consulta especifica.
0.Nos ubicamos en la carpeta en la que tenemos los querys que vamos a ejecutar.
mvs$ cd mi_dir/
1.Para utilizar el comando, entramos en una consola y nos conectamos a la base de datos:
mvs$ sqlplus esquema_base_de_datos/clave_de_esquema@sid
2.Preparamos la consola para que nos formatee la salida de la ejecución de una consulta que tenemos almacenado en un archivo, es decir le quitamos los espacio es vacíos al inicio y al final de cada linea de la salida, le quitamos la paginación , le ponemos un tamaño de linea bien grande para que no se nos corte a la siguiente linea una misma fila etc:
sql>SET SPACE 0;
sql>SET LINESIZE 32767;
sql>SET PAGESIZE 0;
sql>SET HEADING OFF;
sql>SET FEEDBACK OFF;
sql>SET TRIMSPOOL ON;
sql> spool nombre_archivo_salida.txt
3.Una vez hemos preparado el ambiente para la ejecucion del archivo ejecutamos el archivo con el siguiente comando
sql> @archivo_con_queys.txt
Una vez entremos a la base de datos digitamos el nombre de la utilidad, se debe tener en cuenta que se guarda en el archivo a partir del momento en que se prenda el spool lo anterior no queda guardado
4.Cuando finalice de ejecutar las sentencias que tenemos en el archivo cerramos el spool y la conexion a la base de datos
sql>spool off;
sql>quit;
5.Al finalizar podemos ver el resultado de la consulta nuestra computadora.
mvs$ ls
mvs$nombre_archivo_salida.txt
NOTAS:
En el archivo que llamo archivo_con_querys pueden haber varias sentencias delete, update, select, insert, se utiliza el carácter @ para ejecución de archivos.
martes, 23 de agosto de 2011
ORACLE:Drop , delete and truncate
Hola a todos, hoy les comparto algunos trucos aplicables para Oracle que he aprendido.
Truncate o Delete
Cuando vas a borrar todos los registro de una tabla en la base de datos generalmente hacemos
Cuando hacemos un delete la base de datos borra uno a uno los registros de la tabla, los almacena por así decirlo en cache por si de pronto vamos a hacer rollback, esto ocupa mas tiempo y espacio en la db sin mencionar que la mantiene bloqueada durante el proceso.
El truco es utilizar truncate porque es mas rápido básicamente consiste en mover el índice del registro en el cual estaba el último registro de la bd al primer registro y no borramos uno a uno sino que como el registro queda en el inicio entonces es como si no hubiera nada.
Como utilizarlo?, es sencillo:
En conclusión , si estas seguro de que vas a borrar todos los datos y no te vas a arrepentir es mejor truncate.
Drop .. purge
Cuando borramos una tabla de la base de datos oracle, dependiendo de la forma en la que borremos la tabla va a ser eliminada completamente o solo aparentemente borrada, veamos el siguiente código
La tabla se borra pero realmente queda almacena como una papelera, la prueba esta en que el tamaño del tablespace no disminuye. La alternativa para que realmente quede eliminada la tabla y no nos ocupe espacio es agregar al final la palabra purge y quedaría así.
Este último truco me lo dio Diego M.
Truncate o Delete
Cuando vas a borrar todos los registro de una tabla en la base de datos generalmente hacemos
delete from usuario;
Cuando hacemos un delete la base de datos borra uno a uno los registros de la tabla, los almacena por así decirlo en cache por si de pronto vamos a hacer rollback, esto ocupa mas tiempo y espacio en la db sin mencionar que la mantiene bloqueada durante el proceso.
El truco es utilizar truncate porque es mas rápido básicamente consiste en mover el índice del registro en el cual estaba el último registro de la bd al primer registro y no borramos uno a uno sino que como el registro queda en el inicio entonces es como si no hubiera nada.
Como utilizarlo?, es sencillo:
truncate usuario;
En conclusión , si estas seguro de que vas a borrar todos los datos y no te vas a arrepentir es mejor truncate.
Drop .. purge
Cuando borramos una tabla de la base de datos oracle, dependiendo de la forma en la que borremos la tabla va a ser eliminada completamente o solo aparentemente borrada, veamos el siguiente código
drop table usuario;
La tabla se borra pero realmente queda almacena como una papelera, la prueba esta en que el tamaño del tablespace no disminuye. La alternativa para que realmente quede eliminada la tabla y no nos ocupe espacio es agregar al final la palabra purge y quedaría así.
drop table usuario purge;
Este último truco me lo dio Diego M.
Suscribirse a:
Entradas (Atom)