Scripts útiles para un DBA
febrero 26, 2010 21 comentarios
Durante algún tiempo, me debatí en la idea de publicar o no, los scripts que uso para consultar información útil o necesaria para analizar distintos aspectos de la base de datos. Ahora lo hago aquí en este post, esperando les sean de utilidad.
Acerca de los scripts
La idea original la tomé de Tanel Pöder, quien maneja muchos scripts para diversas tareas en el Performance Tuning. Sin embargo, yo no quería copiar como tal los scripts, así que fui creando los míos y aplicando unas mejoras pequeñas a lo que había hecho Tanel.
Una de las mejoras, es que a él no le gusta escribir mucho. Por eso, tiene scripts con nombres muy pequeños; por ejemplo, un script llamado u.sql para mostrar los usuarios de una base de datos. En mi caso, cuando creé mi propio script lo llamé user. Porque pienso que el tener una sola letra no necesariamente es tan representativo el nombre.
Otra mejora, es que documenté más los scripts para que tengan una ayuda en línea y se pueda saber cómo usarlos. Al final, ya no se tienen que hacer tantos queries para extraer la información; puesto que ya están integrados en los scripts.
¿Cómo se usan?
Desde una consola SQL Plus ya sea de Windows, MSDOS o Unix, se pueden ejecutar con @ o la palabra start o su abreviación star. Al tener extensión .sql, no se requiere ponerla al ejecutar el script.
Hay un par de scripts en particular: ConWin.sql e Info.sql; los cuales, sólo funcionarán en una ventana de MSDOS, al usar el SQL Plus en modo caracter.
El resto de scripts pueden ser usados en cualquier consola de SQL Plus.
Por ejemplo,
SQL> star ses % SQL> set echo off ------------------------------------------------------------------------------| Script: Ses | Muestra las sesiones con sus procesos. Uso: ses nombre_usuario|% Ejemplo: ses oolguin% ------------------------------------------------------------------------------| PID SPID SID SERIAL# USERNAME MACHINE LOGON_TIME ------ ------------ ------ ------- -------------------- ------------------------- ------------------- 15 2348 434 3 SYS ODESIAMEXICO\OOO-LAPTOP 25/02/2010 23:32:05 SQL>
¿Cómo se habilitan?
Si se está en un ambiente en Windows, se requiere añadir una entrada en la variable SQLPATH del regedit para la instalación de Oracle para el directorio donde se encuentran los scripts.
Para esto, vamos a entrar al regedit, en la opción Ejecutar del menú Inicio:
Una vez que nos aparece una ventana como la siguiente, tecleamos regedit seguido de Enter, o clic en Aceptar.
Al aparecer la ventana del Editor del Registro de Windows, hay que ir a la variable HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE y buscar el home para nuestra instalación. Del lado derecho, buscamos la entrada SQLPATH; cuando la hayamos encontrado, con doble-clic en la misma, aparecerá una ventana donde podremos editar su contenido.
En la ventana mencionada, se agrega el directorio donde están situados los scripts separado por un punto y coma de lo que ya tenga la variable:
Con esto, al ejecutar los scripts como se vio en un ejemplo anterior, no tendremos que capturar el directorio. Sólo capturamos el nombre del script. Por ejemplo:
SQL> @ dbsize SQL> set echo off ------------------------------------------------------------------------------| Script: DBSize | Muestra el tama±o en Mb y Gb de la base de datos. Uso: dbsize ------------------------------------------------------------------------------| TIPO TOTAL_MB TOTAL_GB ----------- ----------- -------------- SEGMENTS 511 0.50 TABLESPACES 3,824 3.73 SQL> SQL> star dbsize SQL> set echo off ------------------------------------------------------------------------------| Script: DBSize | Muestra el tama±o en Mb y Gb de la base de datos. Uso: dbsize ------------------------------------------------------------------------------| TIPO TOTAL_MB TOTAL_GB ----------- ----------- -------------- SEGMENTS 511 0.50 TABLESPACES 3,824 3.73 SQL>
Aplicando los scripts
Ahora, muestro un ejemplo de cómo se usan los scripts en un prompt de SQL Plus:
E:\oracle\product\10.2.0\BIN>sqlplus / as sysdba SQL*Plus: Release 10.2.0.4.0 - Production on Sßb Feb 27 21:33:00 2010 Copyright (c) 1982, 2007, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> SQL> SQL> star conwin prod ------------------------------------------------------------------------------| Script: ConWin | Formatos y columnas para comportamiento de la pantalla. Uso: conwin tipo_instancia Ejemplo: conwin prod ------------------------------------------------------------------------------| TYPE NAME CREATED ARCHIVE VERSION STARTUP PAR --------- ------------ -------- ------------ ----------------- -------- --- DB LAB 27/02/10 NOARCHIVELOG INSTANCIA LAB 10.2.0.4.0 27/02/10 NO SQL> star user % SQL> set echo off ------------------------------------------------------------------------------| Script: User | Muestra uno o mßs usuarios con sus datos bßsicos. Uso: user username|% Ejemplo: user oolguin% ------------------------------------------------------------------------------| Usuario(s) % ---------------------------------- USERNAME PASSWORD ACCOUNT_STATUS CREATED DEFAULT_TABLESPACE TEMPORARY_TABLESPACE -------------------- ---------------- ---------------- -------- ------------------------- ------------------------- DBSNMP E066D214D5421CCC EXPIRED & LOCKED 27/02/10 SYSAUX TEMP DIP CE4A36B8E06CA59C EXPIRED & LOCKED 27/02/10 SYSTEM TEMP ORACLE_OCM 6D17CF1EB1611F94 EXPIRED & LOCKED 27/02/10 SYSTEM TEMP OUTLN 4A3BA55E08595C81 OPEN 27/02/10 SYSTEM TEMP PRUEBA E552C348C0B39E0E OPEN 27/02/10 SYSTEM TEMP SYS D4C5016086B2DC6A OPEN 27/02/10 SYSTEM TEMP SYSTEM 9887149C9890214A OPEN 27/02/10 SYSTEM TEMP TSMSYS 3DF26A8B17D0F29F EXPIRED & LOCKED 27/02/10 SYSTEM TEMP 8 rows selected. SQL> star ses % SQL> set echo off ------------------------------------------------------------------------------| Script: Ses | Muestra las sesiones con sus procesos. Uso: ses nombre_usuario|% Ejemplo: ses oolguin% ------------------------------------------------------------------------------| PID SPID SID SERIAL# USERNAME MACHINE LOGON_TIME ------ ------------ ------ ------- -------------------- ------------------------- ------------------- 15 556 434 8 SYS ODESIAMEXICO\OOO-LAPTOP 27/02/2010 21:33:01 SQL> SQL> SQL> star tbs SQL> set echo off ------------------------------------------------------------------------------| Script: Tbs | Muestra los Tablespaces de la base de datos con tama±os. Uso: tbs Nota: Si sugerencia > 0, agregar espacio al TBS para estar al 85% al menos. ------------------------------------------------------------------------------| Tablespaces del sistema ---------------------------------- TBS TOTAL LIBRE USADO PORC_USADO SUGERENCIA ------------------------- ----------- ----------- ----------- ---------- ----------- DATOS 1,024 918 106 10 -900 INDICES 1,024 1,024 0 0 -1,024 SYSAUX 300 212 88 29 -196 SYSTEM 300 106 195 65 -71 TEMP 500 496 4 1 -495 UNDOTBS 500 370 130 26 -347 6 rows selected. SQL> SQL> SQL> star tbsdef datos SQL> set echo off ------------------------------------------------------------------------------| Script: TbsDef | Muestra los Data Files de uno o mßs Tablespaces. Uso: tbsdef nombre_tbs|% Ejemplo: tbsdef sys% ------------------------------------------------------------------------------| Data Files del sistema ---------------------------------- TABLESPACE_NAME FILE_NAME TOTAL_MB ------------------------- -------------------------------------------------- ----------- DATOS E:\ORACLE\PRODUCT\ADMIN\ORADATA\DATOS01.DBF 1,024 ************************* ----------- sum 1,024 SQL> SQL> SQL> star objdef emp SQL> set echo off ------------------------------------------------------------------------------| Script: ObjDef | Muestra datos de un objeto. Uso: objdef nombre_objeto|% Ejemplo: objdef dept% ------------------------------------------------------------------------------| OWNER OBJECT_NAME OBJECT_TYPE CREATED LAST_DDL STATUS --------------- ------------------------------ -------------------- -------- -------- ------- PRUEBA EMP TABLE 27/02/10 27/02/10 VALID SQL> SQL> SQL> star idxtab emp SQL> set echo off ------------------------------------------------------------------------------| Script: IdxTab | Muestra los Ýndices y sus columnas, de una tabla. Uso: idxtab nombre_tabla Ejemplo: idxtab emp ------------------------------------------------------------------------------| Indices de tabla: emp ---------------------------------- OWNER TBS STATUS INDEX_NAME DESC COLUMN_NAME --------------- ------------------------- ------- ------------------------------ ---- ------------------------------ PRUEBA DATOS VALID PK_EMP ASC EMPNO SQL>
Algo adicional, es que al usar el script ConWin.sql en MSDOS, el texto de la pantalla cambia de color: Verde para Producción y Azul para cuando es un ambiente distinto. Esto les ayudará a saber que cuando vean la pantalla con texto verde, tendrán que tener un cuidado especial al teclear sus comandos o instrucciones. Además de esto, en la barra del título de la ventana, podrán ver información útil como el sid, serial#. spid e instancia.
¿Y en Linux o Unix?
En ambientes de tipo Linux o Unix es muy fácil el “habilitar” los scripts, dentro del usuario oracle, hay que colocarse donde estén los scripts y se debe estar “ambientado” con lo necesario para la conexión a Oracle:
[root@localhost ~]# su - oracle [oracle@localhost ~]$ cd ooo_scripts/ [oracle@localhost ooo_scripts]$ [oracle@localhost ooo_scripts]$ . oraenv ORACLE_SID = [oracle] ? lab The Oracle base has been set to /u01/app/oracle
y ahí, ejecutar el SQL*Plus para entrar a dicha herramienta, una vez hecho esto, desde la línea de comando, se puede acceder a los scripts de similar manera que en Windows:
[oracle@localhost ooo_scripts]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Tue Dec 9 06:29:37 2014 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> SQL> star conunx ------------------------------------------------------------------------------| ConUnx | Configures the SQL Plus console in Unix/Linux. ------------------------------------------------------------------------------| Use: conunx Example: conunx ------------------------------------------------------------------------------| TYPE C_INSTANCE CREATED ARCHIVE VERSION STARTUP PAR FLASH PLATFORM_NAME ------------------ ---------------- ---------- ------------ ----------------- ---------- --- ----- ------------------------------ DB LAB 10/04/2014 NOARCHIVELOG NO Linux IA (32-bit) INST LAB 11.2.0.3.0 09/12/2014 NO SID SERIAL# SPID ------ ------- ---------- 1 7 3073 SQL> SQL> star tbs % ------------------------------------------------------------------------------| Tbs | Shows the tablespaces and its sizes. ------------------------------------------------------------------------------| Use: tbs tablespace_name|% Example: tbs system _ If suggest_mb > 0, add that quantity of MB to keep at least at 85%. ------------------------------------------------------------------------------| TABLESPACE_NAME BLOCK_SIZE LOGGING CRY STATUS TOTAL_MB FREE_MB USED_MB USED_PCT SUGGEST_MB ------------------------- ---------- --------- --- --------- ----------- ----------- ----------- -------- ----------- SYSTEM 16384 LOGGING NO ONLINE 300 63 237 79 -21 SYSAUX 16384 LOGGING NO ONLINE 512 205 307 60 -151 UNDOTBS 16384 LOGGING NO ONLINE 500 318 182 36 -286 TEMP 16384 NOLOGGING NO ONLINE 500 495 5 1 -494 4 rows selected.
En Linux o Unix, al estar dentro del SQL*Plus se pueden ejecutar comandos de sistema operativo con signo de admiración (!):
SQL> ! df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 18G 8.3G 8.4G 50% / tmpfs 1014M 613M 402M 61% /dev/shm orlando_olguin 100G 79G 22G 79% /media/sf_orlando_olguin
si se pone sólo dicho caracter entonces se sale temporalmente a una sesión de Linux, de la cual, se puede regresar con el comando exit:
SQL> ! [oracle@localhost ooo_scripts]$ [oracle@localhost ooo_scripts]$ ls *sql cnrcur.sql cnrqu.sql conwin.sql dict.sql ebspat.sql idxtab.sql lock.sql objdep.sql priv.sql reg.sql spdef.sql tabwix.sql trcon.sql vwdef.sql cnrdef.sql cnrtre.sql date.sql dir.sql eqtbs.sql insdef.sql loghis.sql objsiz.sql qrycur.sql rowcnt.sql syn.sql tbsdef.sql user.sql waidef.sql cnrgrl.sql coldef.sql dbsize.sql distr.sql getddl.sql kill.sql log.sql param.sql qrydef.sql seq.sql tabdef.sql tbs.sql usrobj.sql wait.sql cnrhr.sql conunx.sql diccol.sql dummy.sql idxcol.sql kilses.sql objdef.sql patlev.sql qry.sql ses.sql tabsiz.sql trcoff.sql usrsiz.sql xplan.sql [oracle@localhost ooo_scripts]$ exit exit SQL>
¿Cómo bajo los scripts?
En la siguiente liga, encontrarán los scripts. Le puse la extensión JPG al archivo porque en WordPress no puedo subir un ZIP. Así, bastará con que le den clic derecho del mouse y elegir Guardar destino como… y cambiar la extensión a ZIP.
Información adicional al 07/12/2014
Al día de hoy, he hecho algunos cambios a mis scripts, entre ellos están:
1. He cambiado al idioma inglés por tener un estándar y que sean útiles para cualquier persona no importa de qué país sea, y he estandarizado la información que viene al inicio de cada uno:
-- Script: Param | Shows parameters of the database. -- Author: Orlando Olguin Olvera | oranswer.wordpress.com | orlandoolguin.wordpress.com -- Dates: 06/10/2012 | Creation -- 20/11/2014 | New indentation standard and use of GV$ -- Params: instance_id parameter_name
2. Las líneas de texto iniciales ahora podrán ser consultadas con algún buscador en Windows o en Linux ó Unix con un simple grep, por ejemplo:
orlando_olguin@doomsday:~/ooo_scripts$ grep -h Script * -- Script: CnrDef | Shows the information of a Queue and a Concurrent Request. -- Script: ColDef | Shows information of a column. -- Script: ConUnx | Configures the SQL Plus console in Unix/Linux. -- Script: ConWin | Configures the SQL Plus console in Windows. -- Script: Date | Shows the date of the database server.
Así, se podrá saber fácilmente qué hace cada uno de mis scripts y
3. He actualizado aquí en mi blog el nuevo archivo, lo podrán bajar de la siguiente liga o también he actualizado la anterior:
Si la información de este post te ha sido de utilidad o quieres que agregue algo más, deja por favor un comentario, contestaré a la brevedad.
Muchas gracias por el aporte, los acabo de bajar los probaré y comentaré nuevamente a ver que tal me fué.
saludos.
Hola Pepe,
Ojalá que te sean de utilidad, la idea es que te bases en ellos y puedas seguir creciendo la cantidad de scripts de acuerdo a lo que requieras para tu trabajo.
Orlando.
Pingback: Cambiando la tabla AUD$ a otro tablespace | Orlando Olguín Olvera
Disculpa, no me permite bajarlos, los puedes subir de nuevo?
Hola Wendy.
Probé la liga y los pude bajar sin problema, le das clic derecho al mouse y eliges Salvar destino cómo… y el archivo que bajes le cambias la extensión a ZIP.
Orlando.
GRACIAS, PARECE QUE ME VAN A AHORRAR EL TRABAJO.
Hola RGonzález.
Espero te hayan sido de utilidad.
Orlando.
¿Cómo habilitarlos en Linux?
Hola Marcos.
Tienes razón, no había puesto algo para Linux/Unix, obvié la forma en cómo hacerlo, ya lo corregí y ya está en este mismo post lo que debes hacer para ejecutar mis scripts en un sistema operativo de ese tipo.
Gracias por la observación.
Orlando.
Desde Ahora soy fan… tuve el gusto de conocer personalmente al personaje responsable de éste blog. Un tipaso de persona!.
:D Manita Arriba!
Hola Eva.
Muchas gracias, igualmente, me dio gusto conocerte, esa sesión de luchas estuvo buena, jajaja.
Orlando.
Buen día, amigo estaba leyendo su post “Cambiando el SID de una base de datos” y me llevo a este hilo y me gustaría probar sus Scripts para entender mejor como realizó la configuración de todo. Pero, al intentar descargarlos llego a una página en blanco y no puedo descargarlo.
Disculpe por despertar un post antiguo pero me pareció muy importante y bien explicado. Si pudiera ayudarme sería de gran ayuda.
Gracias de antemano.
Hola David.
Lo probé y todo se encuentra bien, como puse en las intrucciones, tienes qué dar clic derecho de tu mouse encima del link y elegir la opción “Save Link As…”.
En el diálogo de guardar archivo, que te aparezca, se verá el archivo como un jpg, sólo tienes qué cambiar por zip y guardar en algún directorio de tu computadora.
Ya teniendo el zip, podrás descomprimirlo y ver mis scripts.
Orlando.
Pingback: Tips del Office y Windows | Orlando Olguín Olvera
Hola no puedo bajar los archivos me podrías ayudar porfis !!
ya pude jeje , muchas gracias por el aporte :)
Hola Gloria.
Acabo de probar y sí los pude bajar siguiendo las intrucciones que puse ahí mismo:
¿Cómo bajo los scripts?
En la siguiente liga, encontrarán los scripts. Le puse la extensión JPG al archivo porque en WordPress no puedo subir un ZIP. Así, bastará con que le den clic derecho del mouse y elegir Guardar destino como… y cambiar la extensión a ZIP.
Orlando.
Hola Gloria.
De hecho, es muy probable que el día de hoy, haga una actualización a los scripts para incluir nuevos. Ponte atenta a esta nueva actualización.
Orlando.
Orlando, genio gran trabajo.
Hola Ronald.
Qué bueno que te sirvan, seguiré actualizándolos aquí.
Orlando.
Pingback: Linux: Evitando confirmación de copia de archivos | Orlando Olguín Olvera