En esta unidad se estudia con detalle las herramientas tipo texto o línea de comando que acompañan a Interbase.
En la unidad 3 se estudiaron las herramientas gráficas tipo Windows, y en esta unidad el alumno aprenderá a realizar las mismas acciones desde las herramientas de línea de comandos.
Puesto que las herramientas tipo texto ofrecen algunas funcionalidades añadidas, al mismo tiempo que tienen las peculiaridades propias que se pueden esperar de éste tipo de herramientas, tras el estudio del presente capítulo y del capítulo 3, el alumno conocerá, con profundidad, todas las posibilidades que ofrece interbase para la administración, mantenimiento y seguridad de las bases de datos.
El capítulo se divide en cinco partes, cada una dedicada a una de las herramientas que se estudian en la unidad: Isql.exe, gsec.exe, gbak.exe, gfix.exe y gstat.exe.
La más amplia de ellas con diferencia y que ocupa más de la mitad del capítulo es la dedicada a isql.exe. No obstante, todas las herramientas se han detallado y explicado con rigor y de forma similar, y con abundancia de ejemplos e imágenes para ilustrar de la forma más adecuada posible el funcionamiento y el uso de las mismas.
Como ya se ha comentado en anteriores unidades, la herramienta tipo Texto que sustituye a Windows ISQL (WSQL) es isql. Isql es una herramienta que es capaz de procesar sentencias SQL de DDL (Data Definition Language) y DML (Data Manipulation Language) de forma interactiva o bien desde un fichero de texto.
Al igual que en WSQL, es posible crear y ver estructuras de datos, añadir y modificar datos, conceder permisos, probar consultas y realizar algunas tareas de administración de bases de datos.
El comando para iniciar isql es el siguiente: isql[opciones] [nombre de la base de datos] La forma en la que trabajará isql, es decir, de forma interactiva o no, depende de las opciones que se utilicen en el comando de inicio de la aplicación.
Tanto el apartado [opciones] como el apartado [nombre de la base de datos] son opcionales. Si en el comando de inicio de sesión no se indica nada en ninguno de los apartados opcionales, se inicia una sesión interactiva, tal y como se ve en la figura 1 (esta es la visión que se tiene desde una estación Windows).
Figura 1:
Como no se ha indicado ninguna base de datos, isql lanza un mensaje avisando que la primera acción a realizar debe ser conectar a una base de datos o crear una nueva.
Si en el comando de inicio se indica el nombre de una base de datos, isql inicia la sesión interactiva conectándose a la base de datos indicada.
Las tareas que isql realiza de forma no interactiva, son las correspondientes a las opciones input, -output, -a, -database y extract o x; el resto de opciones dan paso a una sesión interactiva.
Al iniciar una sesión interactiva con isql, el símbolo del sistema pasa a ser SQL>. En este momento, se puede comenzar a introducir comandos SQL válidos que irán siendo ejecutados por isql.
Es necesario finalizar cada comando SQL con el carácter de fin de comando, que por defecto es punto y coma ;, y en el caso de que algún comando se escriba sin el carácter terminador, el símbolo del sistema pasará a ser CON>. En realidad isql permite con ésta característica introducir comandos SQL en varias líneas, tal y como se ve en la figura 2.
Figura 2:
El argumento [options] del comando de inicio de la aplicación, contiene las opciones. Solamente el primer o los primeros caracteres de cada una de ellas son significativos. Además, se puede escribir todo el comando o sólo una parte del mismo, o incluso parte del mismo entre corchetes, es decir, todas estas opciones son similares: p[assword], -p[ass], -p, -passw.
Las opciones existentes se muestran en la tabla de la figura 3.
Figura 3:
Opciones para el comando de inicio de isql |
|
-a |
Extrae los DDL de una base de datos. |
-d[atabase] nombre |
Se usa con x. Cambia la sentencia CREATE DATABASE que se extrae. Si no se indica d, la sentencia CREATE DATABASE aparece comentada y se utiliza el nombre de la base de datos con la que se está trabajando. Si se indica d, la sentencia no aparece comentada y el nombre de la base de datos se sustituye por el de éste argumento. |
-e[cho] |
Muestra cada sentencia antes de ser ejecutada. |
-ex[tract] |
Es la misma opción que x |
-i[nput] archivo |
Lee comandos SQL del fichero indicado en archivo, que debe ser de texto. El archivo puede contener, a su vez, sentencias input que llamen a otros ficheros, con lo que la ejecución puede ser ramificada. |
-n[oauto] |
Al indicar ésta opción, las sentencias DDL, no terminan con commit de forma automática. Por defecto, todas las sentencias DDL terminan con commit de forma automática y en una transacción separada. |
-o[utput] archivo |
Los resultados se escriben en el fichero especificado en archivo. |
-p[assword] password |
Se usa con user. Especifica un password para conectar con el servidor. |
-pag[elength] numero |
Imprime las cabeceras de columna a intervalos de numero líneas. Por defecto es 20. |
-t[erminator] terminador |
Cambia el terminador de comandos de ; al carácter o secuencia de caracteres indicados en terminador. |
-u[ser] nombre |
Se usa con password. Especifica un nombre de usuario para conectar con el servidor. |
-x |
Extrae los DDL de una base de datos. Direcciona la salida de resultados a la pantalla a no ser que se especifique un nombre de fichero. |
-z |
Muestra la versión de isql |
Ejemplos:
Suponiendo que el fichero creabase.sql contiene las sentencias DDL que crean una base de datos, para ejecutar el fichero se escribirá:
Isql input creabase.sql
Para conectar con una base de datos que se encuentra en un servidor unix, se puede emplear la siguiente sentencia:
Isql user "SYSDBA" p "masterkey" medusa.hyago.com:/usr/local/interbase/datos/Gest2000.gdb
Para conectar con una base de datos que se encuentra en un servidor NT, se pueden emplear las siguientes sentencias:
Isql user "SYSDBA" p "masterkey" marina:d:/datos/Gest2000.gdb
Isql user "SYSDBA" p "masterkey" marina:d:\datos\Gest2000.gdb
En el siguiente ejemplo se realiza un inicio de sesión sin conectarse a ninguna base de datos, y donde se mostrarán todos los comandos introducidos y las cabeceras de columna se escribirán cada 30 líneas.
Isql e p 30
Para extraer la estructura de una base de datos a un fichero es necesario introducir un comando como el del siguiente ejemplo:
Isql x o c:\datos\gest2000.sql c:\datos\gest2000.gdb
¡Atención! | Para poder realizar la
extracción es necesario asignar las variables de entorno usuario y password con las
sentencias: |
No se extrae el código de las UDF ni de los filtros Blob, ya que no pertenecen al la base de datos, pero sí las declaraciones que se realizan en la base de datos. Tampoco se extraen las tablas, vistas y triggers del sistema.
Conectándose a una base de datos existente:
Una vez iniciada la sesión con Isql, si no se ha indicado en el comando de inicio de sesión la base de datos a la que Isql se debe conectar, es necesario conectar a una base de datos existente o crear una nueva.
Los comandos que admite Isql, deben ser escritos en SQL, por lo que para conectarse con una base de datos existente, basta con introducir la sentencia SQL correspondiente:
Connect <base de datos > user <nombre de usuario> password <contraseña> ;
En la figura 4 se pueden observar las respuestas de Isql ante los intentos de conectarse a una base de datos que no existe (produce un error) y a una base de datos existente (realiza la conexión).
Figura 4:
Cuando se inicia Isql, Interbase lanza una transacción. Esta transacción continúa hasta que el usuario hace commit o rollback, momento en el que acaba y se inicia otra transacción. Otra forma de iniciar una transacción es utilizando el comando START TRANSACTION.
Para los comandos SQL que pertenecen al DDL, Interbase emplea una transacción aparte por comando introducido.
Desconectándose correctamente de una base de datos:
Para salir de Isql y realizar rollback, introducir:
QUIT ;
Para salir de Isql y realizar commit, introducir:
EXIT ;
Una vez dentro de Isql, cuando aparece el símbolo de sistema SQL>, se pueden introducir comandos SQL, que dividimos en tres categorías:
Pertenecientes al DDL: Son los comandos de definición de datos, es decir: CREATE, ALTER, DROP, GRANT y REVOKE. Permiten crear, modificar y borrar estructuras y objetos de la base de datos, así como controlar el acceso de usuarios (por medio de privilegios).
Pertenecientes al DML: Son los comandos de manipulación de datos, es decir: SELECT, INSERT, UPDATE y DELETE. Permiten consultar la base de datos, y añadir, modificar y borrar registros de la misma.
Comandos específicos de ISQL: Son comandos que sólo se encuentran disponibles en Isql, como los comandos tipo SHOW, SET y otros. De éstos comandos nos ocupamos a lo largo de los siguientes apartados.
El comando SHOW sirve para mostrar información sobre la estructura de la base de datos.
Las diferentes opciones del comando SHOW son las siguientes:
- SHOW CHECK
- SHOW DATABASE
- SHOW DOMAINS
- SHOW EXCEPTIONS
- SHOW FILTERS
- SHOW FUNCTIONS
- SHOW GENERATORS
- SHOW GRANT
- SHOW INDEX
- SHOW INDICES
- SHOW PROCEDURES
- SHOW ROLES
- SHOW SYSTEM
- SHOW TABLES
- SHOW TRIGGERS
- SHOW VERSION
- SHOW VIEWS
Cada opción tiene su utilidad y sus características, por lo que vamos a detenernos brevemente en cada una de ellas.
Show check:
Muestra todos los checks de una tabla dada. Sintaxis: SHOW CHECK tabla ;
Ejemplo Figura 5:
Show database:
Muestra la siguiente información sobre la base de datos activa:
La forma abreviada del comando es SHOW DB. Sintaxis: SHOW [DATABASE | DB] ;
Ejemplo Figura 6:
Show Domains:
Lista todos los domains de una base de datos, u ofrece información acerca de un domain específico. Sintaxis: SHOW [DOMAINS | DOMAIN nombre_dominio] ;
Ejemplo Figura 7
Show Exceptions:
Lista todas las excepciones de una base de datos, u ofrece información acerca de una excepción específica. Sintaxis: SHOW [EXCEPTIONS | EXCEPTION nombre_excepción] ;
Ejemplo Figura 8:
Show filters:
Lista todos los filtros blob o muestra información acerca de uno en concreto. La información mostrada es el nombre del filtro, el subtipo de entrada y el de salida, la librería o módulo en el que se encuentra, y el nombre del punto de entrada (entry point). Sintaxis: SHOW [ FILTERS | FILTER nombre_filtro ]
Show functions:
Lista todas las UDFs declaradas en la base de datos o muestra información de una de ellas en concreto. Ésta información es el nombre de la función y de la librería en la que se encuentra, el nombre del punto de entrada, el tipo de dato que devuelve y los argumentos de entrada. Sintaxis: SHOW [ FUNCTIONS | FUNCTION nombre_función ] ;
Show generators:
Lista los generators de la base de datos, o información sobre uno en concreto. La información que muestra es el nombre del generator y el próximo valor que tomará. Sintaxis: SHOW [ GENERATORS | GENERATOR nombre_generator ] ;
Ejemplo Figura 9:
Show grant:
Muestra los privilegios de un objeto de la base de datos. Los privilegios pueden ser de inserción, borrado, ejecución (para los procedimientos almacenados), consulta, modificación o todos. Sintaxis: SHOW GRANT nombre_objeto ;
Show index:
Muestra información sobre un índice, sobre los índices de una tabla, o sobre todos los índices de la base de datos. La información que ofrece se refiere al nombre del índice, el tipo de índice y las columnas sobre las que está definido, amén de la tabla a la que pertenece. Sintaxis: SHOW [ INDICES | INDEX [ nombre_indice | nombre_tabla ] ;
Ejemplo Figura 10:
Show indices y Show index son sinónimos, al igual que Show ind, la forma abreviada del comando.
Show procedures:Lista todos los procedimientos almacenados de la base de datos o muestra el texto de uno en concreto. Al listar todos los procedimientos, también muestra los objetos de la base de datos que dependen de cada uno de ellos. Al mostrar el texto de un procedimiento, también muestra los parámetros del mismo. Sintaxis: SHOW [ PROCEDURES | PROCEDURE nombre_procedure ] ;
El listado de los procedimientos se realiza por orden alfabético. La forma abreviada del comando es SHOW PROC.
Ejemplo Figura 11:
Show roles:
Muestra el nombre de los roles existentes en la base de datos. Sintaxis: SHOW [ROLES | ROLE]
Show Roles lista sólo los nombres de los roles. Para saber los miembros de cada rol, se debe utilizar la sentencia SHOW GRANT nombre_rol ;
Show system:
Lista los nombres de las tablas y vistas del sistema para la base de datos activa. Sintaxis: SHOW SYSTEM [ TABLES ] ;
La forma abreviada del comando es SHOW SYS ;
Ejemplo Figura 12:
Show tables:
Lista todas las tablas y vistas de la base de datos o una tabla o vista en concreto. Sintaxis: SHOW [ TABLES | TABLE nombre_tabla ] ;
Las tablas se listan en orden alfabético, y la información que se muestra en el caso de una sola tabla se refiere al nombre, definición de campos y claves, así como checks y triggers.
Ejemplo Figura 13:
Ejemplo Figura 14:
Show triggers:
Lista todos los triggers de la base de datos o muestra información de uno en concreto. En la lista de todos los triggers de la base de datos, incluye el nombre del trigger y la tabla a la que pertenece. La información que muestra de un trigger en concreto es la cabecera y el cuerpo del trigger.Sintaxis: SHOW [TRIGGERS | TRIGGER nombre_trigger ] ; La forma abreviada del comando es SHOW TRIG.
Ejemplo Figura 15
Show version:
Muestra información sobre la versión del software instalado. La información comprende la versión de isql, del motor de interbase y del ODS (on-disk structure) de la base de datos activa. Sintaxis: SHOW VERSION ;
La forma abreviada del comando es SHOW VER
Ejemplo Figura 16:
Show views:
Lista todas las vistas de la base de datos o muestra información acerca de una en concreto. La información que ofrece de una vista es la definición de sus campos y el código SQL con el que se define. Sintaxis: SHOW [ WIEWS | VIEW nombre_vista ] ;
Ejemplo Figura 17:
El comando ISQL SET:
El comando SET se utiliza para ver y definir el entorno de trabajo de isql.
Las diferentes opciones para el comando SET son las siguientes:
SET Lista los valores actuales de los parámetros que se configuran con el comando SET. Es un comando de consulta, y para modificar los valores de los diferentes parámetros, se utilizan los comandos específicos SET para cada parámetro.
Algunos de los comandos SET, tienen sus correspondientes comandos "réplica" en SQL, que realizan tareas similares o idénticas. En éstos casos se suelen utilizar los comandos SET desde ficheros Script. Es decir, cambiar la configuración de los parámetros desde un script afecta a la sesión mientras está ejecutándose el script, cuando la ejecución termina, la configuración anterior al script se restaura de forma automática.
En la tabla de la figura 18 se muestran las opciones del comando SET, y el valor por defecto que tiene.
Figura 18:
OPCION |
VALOR POR DEFECTO |
SET AUTODDL | ON |
SET BLOBDISPLAY | OFF |
SET COUNT | OFF |
SET ECHO | OFF |
SET LIST | OFF |
SET NAMES | OFF |
SET PLAN | OFF |
SET STATS | OFF |
SET TERM | ; |
SET TIME | ON |
Las acciones que se realizan con SET, están disponibles en Windows isql por medio de los items del menú, y no por medio de comandos SQL. Sintaxis: SET ;
Ejemplo Figura 19:
Set autoddl:
Especifica si a los comandos DDL se les hará commit de forma automática en el momento de su ejecución o se esperará a que el usuario realice commit de forma explícita. Si se especifica la opción ON, (la opción por defecto) se realizará commit de forma automática; con la opción OFF, se realizará commit cuando el usuario lo indique de forma explícita.
Sintaxis: SET AUTODDL [ON | OFF ] ; La versión abreviada del comando es SET AUTO.
Las palabras ON y OFF son opcionales, ya que si se escribe el comando sin ellas, lo que se hace es conmutar entre un modo y otro.
Set blobdisplay:
Especifica un subtipo a la hora de mostrar el tipo de dato BLOB.
Por defecto el subtipo es el 1, es decir el subtipo texto. Sintaxis: SET BLOBDISPLAY [ numero | ALL | OFF ] ;
Es posible definir subtipos por el usuario, pero siempre se les asignará un número negativo. Los números positivos están reservados para interbase. En la figura 20 se muestran los 7 subtipos definidos en interbase y una pequeña descripción de cada uno de ellos.
Con la opción set blobdisplay off, se consigue que al hacer una consulta sobre un blob, sólo se muestre su identificativo (Blob ID). Si se introduce la sentencia set blobdisplay 1, entonces se verán los blobs de formato texto, el resto de blobs no se mostrarán. Si se introduce la sentencia set blob all, entonces se mostrarán los blobs de todos los subtipos. En cualquier caso no tiene mucho sentido escribir set blob 0, ya que al encontrarnos en un entorno de modo texto, los blob binarios no se representan adecuadamente.
Figura 20:
Tipo |
Descripción |
0 |
No estructurado. Generalmente se usa para datos en binario o tipos indeterminados. |
1 |
Texto. |
2 |
Lenguage interno de Interbase: Binary language representation (BLR) |
3 |
Lista de control de accesos. |
4 |
(Reservado para su uso en el futuro). |
5 |
Descripción codificada de las estructuras (metadatos) actuales de las tablas |
6 |
Descripción de transacciones multi-base de datos que hayan terminado de forma irregular |
Set count:
Especifica si se desea que aparezca un mensaje con el número de registros que se han procesado al final de cada sentencia SELECT.
Por defecto, no se especifica el número de registros procesados al finalizar una sentencia SELECT, por lo que es necesario utilizar este comando para poder verlo. Sintaxis: SET COUNT [ ON | OFF ] ;
Al igual que otros comandos, no es necesario especificar la cláusula ON u OFF, ya que sin argumentos el comando conmuta entre los dos modos.
Ejemplo Figura 21:
Set echo:
Especifica si se desea que se muestre el comando SQL antes de ser ejecutado. Al ejecutar scripts, por defecto sí se muestra el comando que se va a ejecutar en la salida de resultados, pero en isql por defecto no se muestra. Sintaxis: SET ECHO [ ON | OFF ] ;
Las cláusulas ON y OFF son opcionales; si no se especifican, el comando conmuta entre los dos modos.
Ejemplo Figura 22:
Set list:
Especifica si se desea que la salida de resultados sea en forma de tabla o de lista. Por defecto la salida se realiza en forma de tabla. Sintaxis: SET LIST [ ON | OFF ] ;
Las cláusulas ON y OFF son opcionales, si no se escriben, el comando conmuta entre los dos modos.
Set names:
Especifica el conjunto de caracteres activo que se utilizará en las transacciones de la base de datos. El conjunto por defecto es NONE. Sintaxis: SET NAMES [ conjunto_de_caracteres ] ;
En la figura 23 se pueden observar los conjuntos de caracteres soportados por interbase.
Figura 23:
CONJUNTOS DE CARACTERES SOPORTADOS POR INTERBASE | |||
ASCII | BIG_5 | CYRL | DOS437 |
DOS850 |
DOS852 | DOS857 | DOS860 |
DOS861 | DOS863 | DOS865 | EUCJ_0208 |
GB_2312 |
ISO8859_1 | KSC_5601 | NEXT |
NONE | OCTETS | SJIS_0208 | UNICODE_FSS |
WIN1250 | WIN1251 | WIN1252 | WIN1253 |
WIN1254 | - | - | - |
Los conjuntos de caracteres DOS### se corresponden con páginas de código MS-DOS, y suelen utilizarse con bases de datos que son accedidas desde Paradox y Dbase para MS-DOS. El número que aparece en cada uno de los nombres DOS### indica la página de código MS-DOS con la que se corresponde.
Set plan:
Especifica si se desea que se muestre el plan óptimo para cada consulta que se realice a la base de datos. Por defecto, isql no muestra el plan de acceso a los datos, por lo que si se quiere ver, es necesario utilizar esta opción.
Ejemplo Figura 24:
Sintaxis: SET PLAN [ON | OFF ] ;
Las cláusulas ON y OFF son opcionales, ya que si no se incluye ningún argumento en el comando, éste conmuta entre los dos estados.
Set stats:
Especifica si se desea que se muestren las estadísticas de la ejecución de los comandos, al finalizar la ejecución de cada uno de ellos.
Por defecto, isql no muestra las estadísticas de la ejecución. Sintaxis: SET STATS [ON | OFF ] ;
Las cláusulas ON y OFF son opcionales, ya que si se escribe el comando sin argumentos, éste conmuta entre las dos opciones.
Los datos que se muestran al especificar SET STATS ON son los siguientes:
Estas estadísticas, pueden ayudar a determinar si son necesarios cambios en los recursos del sistema, en los recursos de la base de datos, o en la optimización de las consultas a la base de datos.
Es importante no confundir éste comando con el comando SQL SET STATISTICS, que recalcula la optimización de los índices.
Ejemplo Figura 25:
Set term:
Especifica el carácter o conjunto de caracteres que servirán como terminadores de comando. El carácter por defecto es ;.
La utilización de éste comando es imprescindible cuando se pretende introducir en la base de datos comandos que están compuestos a su vez por bloques de líneas, como por ejemplo cuando se crean o modifican triggers o procedures. Sintaxis: SET TERM cadena ;
Este comando no se necesita cuando se introducen comandos desde Windows isql, ya que cada sentencia o grupo de sentencias que se introducen de una vez, son tratadas como un todo. Sólo es necesario utilizarlo desde un fichero script.
Set time:
Especifica si se desea que se muestren los campos de tipo DATE incluyendo la hora, o sólo con la fecha.
Los campos de tipo DATE, son internamente un número con una parte entera y una parte decimal, donde la parte entera representa la fecha, y la parte decimal representa la hora.
Por defecto se muestra la fecha en formato dia-mes-año, es decir TIME OFF, pero por medio de ésta opción se puede conseguir un formato de tipo:
dia-mes-año horas:minutos:segundos, es decir, TIME ON. Sintaxis: SET TIME [ ON | OFF ] ;
Las cláusulas ON y OFF son opcionales, ya que si se escribe el comando sin ningún argumento, éste conmuta entre las dos opciones.
En este apartado se detallan otros comandos que también se encuentran en isql, y que son:
Blobdump:
Coloca el contenido de un dato de tipo blob en un fichero externo para ser leída o editada. Sintaxis: BLOBDUMP identificador_blob nombre_fichero ;
El identificador_blob es el código que aparece al realizar select sobre la tabla que contiene al blob. Puede utilizarse para grabar a un fichero de texto el contenido de un blob o para grabar a un fichero del tipo que corresponda una imagen guardada en la base de datos, etc..
Edit:
Permite editar y volver a ejecutar comandos de isql. Sintaxis: EDIT [ nombre_fichero ] ;
El comando edita el fichero y al salir de la edición lo ejecuta. Si no se indica un nombre de fichero, se edita la sesión actual de trabajo, y luego se ejecutan los comandos que estén en el buffer de edición. El nombre del fichero puede delimitarse con comillas simples o dobles, y así poder ejecutar ficheros que contengan espacios en blanco en el nombre. En Windows 95/98 y Windows NT, el comando llama al editor especificado en la variable de entorno EDITOR. Si no está definida, utiliza el editor mep de Microsoft. En UNIX, se llama al editor de texto especificado en las variables de entorno VISUAL o EDITOR, por éste orden; si no están definidas ninguna de las dos, entonces se llama al editor vi.
Exit:
Realiza commit de la transacción en curso, desconecta de la base de datos, y termina la sesión, es decir, cierra isql. Sintaxis: EXIT ;
¡importante! | El comando EXIT hace commit sin mostrar previamente ningún cuadro de diálogo para confirmar, por lo que antes de utilizar este comando es importante estar seguro de lo que se está haciendo. |
Help:
Muestra una lista de los comandos isql y una pequeña descripción de los mismos.Sintaxis: HELP ;
Input:
Lee un fichero de texto y ejecuta los comandos que contenga. Sintaxis: INPUT nombre_fichero ;
Input lee los comandos del fichero y los ejecuta como un bloque. Por otro lado, el fichero puede contener tanto sentencias SQL como comandos isql. Además, el comando input permite anidar llamadas a otros ficheros, de forma que cuando termina con la ejecución del último fichero llamado, continua con la ejecución del fichero del nivel superior.
El comando input, está pensado para trabajar de forma no interactiva, por lo que el comando SET, no funciona en los ficheros de entrada.
A no ser que se redireccione la salida con el comando OUTPUT, los resultados del comando se mostrarán en pantalla. También se pueden indicar ficheros que contengan espacios en blanco en el nombre, delimitando el nombre del fichero con comillas simples o dobles.
Output:
Redirecciona la salida de resultados a un fichero de texto o a salida estándar. Sintaxis: OUTPUT [ nombre_fichero ] ;
El nombre del fichero indica el fichero al que se redireccionará la salida. Si no se indica ninguno, la salida se redirecciona la salida estándar.
¡Truco! | Para guardar la pantalla de ayuda en un fichero de
texto, escribir las siguientes sentencias: OUTPUT nombre_fichero; |
Quit:
Realiza rollback de la transacción en curso, desconecta de la base de datos y cierra la sesión de isql. Sintaxis: QUIT ;
Es interesante revisar las recomendaciones realizadas con el comando EXIT, ya que los peligros que encierra el uso de QUIT son similares a los de EXIT en importancia, aunque opuestos en sus consecuencias.
Gsec.exe: Mantenimiento de la seguridad del servidor:
Gsec.exe es la utilidad modo texto que ofrece interbase para gestionar la seguridad en el servidor. Esta utilidad trabaja a partir de la base de datos de seguridad, isc4.gdb, para especificar nombres de usuarios y passwords para acceder al servidor de Interbase.
Esta aplicación es una réplica de lo que se puede hacer a través del Server Mánager en cuanto a seguridad en el servidor.
La base de datos de seguridad, se encuentra en el directorio de instalación de Interbase, y cuando se solicita la conexión con una base de datos del servidor, el motor de interbase comprueba que el nombre de usuario y password se correspondan con alguno de los registros de la misma.
Es posible conectarse a la base de datos de seguridad a través del server manager como si fuera una base de datos normal, y el motor comprobará previamente que el nombre de usuario y password están en alguno de los registros, para luego conectarse.
Solamente los administradores pueden ejecutar Gsec:
Se puede utilizar Gsec de forma interactiva, introduciendo Gsec user sysdba pa masterkey. Entonces el prompt del sistema pasa a ser GSEC>, indicando que se encuentra en modo interactivo. Para salir al prompt del sistema, basta con escribir QUIT.
También se puede utilizar gsec en una máquina cliente para administrar la seguridad de un servidor remoto. Para ello es necesario utilizar la opción database, y así indicar que la base de datos isc4.gdb estará en un servidor remoto. Por ejemplo:
Gsec database marina:d:\aplicaciones\interbase corp\interbase\bin\isc4.gdb
Los comandos de la utilidad Gsec:
A continuación se muestra una lista con los comandos que incluye Gsec, de los cuales ya conocemos el comando QUIT, y una breve descripción de cada uno. A lo largo de éste apartado, se describirán con más detalle cada uno de ellos.
Figura 26:
Comandos de la utilidad gsec |
|
Di[splay] | Muestra todas las entradas de isc4.gdb. |
Di[splay] name | Muestra la información de un solo usuario. |
A[dd] nombre pw contraseña [otros argumentos] | Añade un usuario a isc4.gdb con su password. Cada opción y su correspondiente argumento conforman otras informaciones adicionales para cada usuario. |
Mo[dify] nombre [opciones] | Similar a add, sólo que el usuario ya debe existir, es decir, modifica pero no inserta. |
De[lete] nombre | Borra el usuario especificado de isc4.gdb. |
H[elp] o ? | Muestra una pantalla de ayuda con los comandos gsec y su sintaxis |
Q[uit] | Finaliza la sesión. |
Mostrando la base de datos de seguridad:
Para mostrar el contenido de la base de datos de seguridad, se debe introducir Display en el prompt de gsec. Lo que se visualizará es algo similar a lo que muestra la figura 27.
Figura 27
Como puede verse, el password de cada usuario no se muestra en ningún momento.
Añadiendo, modificando y borrando usuarios:
Para añadir usuarios, se debe utilizar el comando add, como ya se ha visto anteriormente. Los dos argumentos obligatorios para éste comando son el nombre de usuario y su password; el resto de argumentos del comando, que se muestran en la tabla de la figura 28, son opcionales y contienen información adicional de los usuarios que puede ser utilizada si se quiere, como el nombre completo del usuario y otras.
Figura 28:
Argumentos del comando add |
||
ARGUMENTO |
DESCRIPCION |
TIPO DE DATO |
-pw | Contraseña de usuario | String |
-u[id] | Número de identificación de usuario | Integer |
-g[id] | Número de identificación de grupo | Integer |
-f[name] | Nombre propio del usuario (first name) | String |
-mn[ame] | Primer apellido del usuario (middle name) | String |
-l[name] | Segundo apellido del usuario (last name) | String |
Por ejemplo, para añadir al usuario pepe, que se veía en la figura 27, se ha introducido el siguiente comando:
GSEC> add pepe pw pepe
Como puede verse, se asignan por defecto valores 0 a los campos uID y gID.
Si, por ejemplo, se desea añadir autorización para un usuario llamado Javier Sanz Sanmiguel, con nombre de usuario shermut y password ajui, se debe introducir la siguiente sentencia:
GSEC> Add shermut pw ajui f Javier mn Sanz .-l Sanmiguel
Para modificar los datos de los usuarios ya introducidos, se debe utilizar el comando modify. El único dato que no se puede modificar es el nombre del usuario. El comando modify tiene los mismos argumentos que el comando add, y su uso es idéntico. Si se deseara modificar el password del recién introducido usuario shermut, se podría realizar mediante la siguiente sentencia:
GSEC> Modify shermut pw javivi
Para borrar entradas de la base de datos de seguridad, y por tanto eliminar el acceso al servidor de algún usuario, se debe utilizar el comando delete.
El uso del comando es muy sencillo, basta poner el nombre de usuario a continuación. Para eliminar de la base de datos de seguridad al usuario shermut, bastaría con introducir:
GSEC> Delete shermut
Es interesante comentar que los nombres de los usuarios de la base de datos son guardados en mayúsculas, pero el resto de campos alfanuméricos se guardan igual que se introducen; es fácil comprobarlo si se observa la figura 29.
Figura 29:
Tratamiento de las líneas de comando:
Para introducir comandos gsec desde el prompt del sistema sin entrar en una sesión interactiva, se debe introducir después del comando de acceso a gsec el comando propio de gsec precedido por un guión. En la figura 30 se puede observar un ejemplo ilustrativo.
Figura 30:
A continuación se ofrece una lista con los mensajes de error de gsec y una pequeña explicación de las causas que pueden haberlos provocado, así como algunas sugerencias sobre lo que se puede hacer en cada caso:
Add record error: Se ha especificado un nombre de usuario en el comando add que ya existe en la base de datos, o hay un error de sintaxis en el comando, o no se tienen los privilegios necesarios para ejecutar gsec. Se debe cambiar el nombre de usuario a introducir, o utilizar el comando modify.
<string> already specified: Al ejecutar add o modify, se ha introducido más de una vez el dato de una columna o parámetro del comando. Volver a ejecutar el comando.
Ambiguous switch specified: El comando introducido no se corresponde con una única operación válida.
Delete record error: El comando delete no ha podido ejecutarse con éxito. Comprobar que se tienen los privilegios apropiados para utilizar gsec.
Error in switch specifications: Este mensaje suele ir acompañando a otros, e indica que han existido errores de sintaxis.
Find/delete record error: El comando delete no ha encontrado el registro a borrar, o no se tienen los privilegios necesarios para hacerlo.
Find/display record error: El comando display no ha encontrado el registro a mostrar, o no se tienen los privilegios necesarios para hacerlo.
Find/modify record error: El comando modify no ha encontrado el registro a modificar, o no se tienen los privilegios necesarios para hacerlo.
Incompatible switches specified: Corregir la sintaxis y volver a intentarlo.
Invalid parameter, no switc defined: Se ha especificado un valor al que no precede un parámetro.
Invalid switch specified: El parámetro especificado no existe, probablemente es un error de sintaxis.
Modify record error: Seguramente existe un error de sintaxis en el comando modify. También puede ser que no se tengan los privilegios necesarios para realizar la operación.
No user name specified: Se debe especificar un nombre de usuario después de add, modify o delete.
Record not found for user: <string>: No se ha encontrado el registro especificado. Se puede utilizar el comando display para ver todos los registros de la base de datos.
Unable to open database: Normalmente se produce este error cuando no se tienen los privilegios de acceso a la base de datos, pero puede ser también que la base de datos no exista o el sistema operativo no sea capaz de encontrarla.
No obstante con cada mensaje de error suele aparecer una pequeña explicación de las causas que lo han podido provocar, por lo que po es complicado detectar el error y corregirlo.
Gbak.exe Backup y restore de la base de datos:
La utilidad para realizar backups y restores de las bases de datos es gbak. Con gbak se puede realizar backup, restore y restore a múltiples ficheros. Las tres acciones tienen sintaxis parecidas pero ligeramente diferentes y que se muestran a continuación:
Para realizar backup: gback [-b] [opciones] base_de_datos fichero_destino
Para realizar restore: gbak {-c | -r} [opciones] fichero_origen base_de_datos
Para restaurar a múltiples ficheros: gbak {-c | -r} [opciones] fichero_origen primer_fichero numero segundo_fichero [numero2 tercer_fichero [numero3..] ]
Donde el argumento base_de_datos es la base de datos que se quiere restaurar o hacer backup, los argumentos fichero_origen y fichero_destino son los ficheros de origen del restore y destino del backup respectivamente, y los argumentos primer_fichero, segundo_fichero, tercer fichero, etc son los ficheros que formarán la base de datos multi_fichero. Los argumentos numero, numero2, numero3, etc, son los tamaños de los ficheros de la base de datos multifichero en páginas. Todos los ficheros deben llevar un tamaño excepto el último, y el tamaño mínimo es de 200 páginas.
Opciones de gbak para restore:
La posibilidad de programar backups en InterBase depende de las herramientas del sistema operativo en el que se hospeda el servidor. Normalmente, se usa Winat con Windows NT y temporizadores de tipo cron con Unix. En Novell, el proceso deberá realizarse desde un cliente Windows, por que se puede usar cualquier herramienta de temporización disponible para Windows. Este tipo de copias, también se puede extender a los demás tipos de servidores, si las copias se realizan desde una máquina cliente.
Si se desea realizar backup a multiples ficheros y no a uno solo, se debe utilizar gbak en combinación con la herramienta gsplit. De la misma forma, para realizar restore desde un backup de múltiples ficheros, también se debe utilizar gbak en combinación con gsplit.
Ya se ha explicado, que es posible dividir las bases de datos de interbase en multiples ficheros para no tener problemas con el tamaño máximo de fichero que permite el sistema operativo.
La utilidad gsplit resuelve el mismo problema para los ficheros backup, ya que también puede ocurrir que al intentar hacer backup de una base de datos muy grande en un único fichero, se sobrepase el tamaño máximo de fichero soportado por el sistema operativo.
Ésta no es la única razón por la que se puede necesitar realizar backups en ficheros que no sobrepasen un determinado tamaño, pero es una de las más importantes.
La sintaxis de gsplit para transformar la salida de un backup en varios ficheros es:
gsplit split fichero1 [ tamaño { k | m | g } [ fichero2 [ tamaño { k | m | g } ]... ] ]
Donde fichero1, fichero2, etc son los ficheros que compondrán el backup, y tamaño1, tamaño2, etc son los tamaños de cada uno de ellos. Caso de que se indique un tamaño máximo para el último de la lista, no es tenido en cuenta. Según el parámetro de tamaño utilizado (K,g o m), el tamaño se considerará en Kilobytes, Megabytes o Gigabytes.
La utilización de gsplit en combinación con gbak se realiza por medio de pipes; para ilustrarlo se muestra en el siguiente ejemplo la forma de realizar backup de una base de datos a 2 ficheros delimitando el primero de ellos a un tamaño máximo de 2 Mb:
gbak b gest2000.gdb stdout | gsplit split gest2000.gb1 20 m gest2000gb2
La sintaxis de gsplit para unir un backup repartido en varios ficheros y a partir de ahí poder redireccionarlo a un restore es:
gsplit join fichero1 [ fichero2...]
Para restaurar el backup del ejemplo anterior, se escribiría lo siguiente:
gsplit join gest2000.gb1 gest2000.gb2 | gbak restore stdin gest2000.gdb
Gfix.exe Mantenimiento y validación de bases de datos:
Esta herramienta se utiliza para realizar muchas de las tareas de mantenimiento, que, por otro lado, también están implementabas en el Server Manager para windows.
La sintaxis de este comando es : Gfix [options] Nombre_base_de_datos.
Las opciones se pueden describir de una manera más práctica por medio de las tareas que realizan.
-sh[ut]: En la instrucción principal para realizar el Shutdown (tirar abajo) de la base de datos.
- Debe de utilizarse en combinación con una de las opciones attach, -force o tran, para especificar el tipo de shutdown.
Deben de incluirse las opciones -USER nombre_usuario para indicar el nombre de usuario y -PA password para indicar la contraseña de usuario.
-at[tach] n: Impide que se ejecuten nuevas conexiones al servidor durante un periodo "n" de tiempo. Shutdown se cancela si hay usuarios conectados después de "n" segundos.
En la figura 31 se puede ver un ejemplo del uso de esta opción.
Figura 31:
-tr[ran] n: Impide que se ejecuten nuevas transacciones en el servidor durante un periodo de "n" segundos. El Shutdown se cancela si hay transacciones activas después de "n" segundos.
En la figura 32 se puede ver un ejemplo del uso de esta opción.
Figura 32:
-f[orce] n: Esta es una solución drástica que debería ser utilizada con precaución ya que fuerza a que la base de datos realice shutdown después de "n" segundos.
En la figura 33 se puede ver un ejemplo del uso de esta opción.
Figura 33:
Esta serie de opciones se utilizan para recuperar una transacción perdida. (en el limbo)
-l[list]: Se utiliza para mostrar los ID´s de cada transacción en el limbo e indica que debería ocurrir si se utiliza la opción t.
En la figura 34 se puede ver un ejemplo del uso de esta opción.
Figura 34:
-c[ommit] {identificador|all}: Hace un Commit a la transacción en limbo especificada por identificador o a todas (all).
En la figura 35 se puede ver un ejemplo del uso de esta opción.
Figura 35:
-t[wo_phase] {identificador|all}: Ejecuta la recuperación en dos fases a las transacciones limbo especificadas por identificador o a todas.
En la figura 36 se puede ver un ejemplo del uso de esta opción.
Figura 36:
Reparación de datos:
El proceso de reparación de datos es muy importante, ya que todas las bases de datos, sin una correcta administración, pueden estar propensas a caídas y daños. Interbase permite realizar ciertos procesos de reparación de datos.
-m[end]: Esta opción permite marcar los registros corruptos como no disponibles; es muy útil si se va a realizar antes de un proceso de backup.
En la figura 37 se puede ver un ejemplo del uso de esta opción
Figura 37:
-v[alidate]: Localiza y libera páginas que están localizadas pero no asignadas a cualquier estructura de datos. Es útil para encontrar estructuras corruptas.
En la figura 38 se puede ver un ejemplo del uso de esta opción.
Figura 38:
-n[o_update]: Utilizado con v para validar estructuras corruptas o no localizadas. Lo que se produce es que de dice donde hay una estructura de ese tipo pero no se marca ni se modifica, simplemente se deja como está.
En la figura 39 se puede ver un ejemplo del uso de esta opción.
Figura 39:
Realizar Sweep:
Para realizar un Sweep de la base de datos , se pueden utilizar las siguientes opciones:
-s[weep]: Fuerza un Sweep inmediato de la base de datos.
En la figura 40 se puede ver un ejemplo del uso de esta opción.
Figura 40:
Gstat.exe Estadísticas de la base de datos:
El programa Gstat es una herramienta de línea de comando para mostrar la misma salida que el Server manager para Windows respecto a las estadísticas de la base de datos.
Este programa puede correr solo contra bases de datos locales, en un sistema cliente/servidor debe de ejecutarse en el host servidor.
Las opciones que aporta son las siguientes:
-header: Detiene el listado de las estadísticas después de mostrar la información de la página de cabecera.
En la figura 41 se puede ver un ejemplo del uso de esta opción.
Figura 41:
-log: Detiene el listado de las estadísticas después de mostrar la información sobre la página log.
En la figura 42 se puede ver un ejemplo del uso de esta opción.
Figura 42:
-Index: Muestra las estadísticas de los índices en la base de datos.
En la figura 43 se puede ver un ejemplo de utilización de esta opción
Figura 43:
-Data: Muestra las estadísticas sobre las tablas de datos de la base de datos.
En la figura 44 se puede ver un ejemplo de utilización de esta opción
Figura 44:
-all: Es equivalente a poner index y data. Si ninguno de estos dos parámetros se escriben, se utilizará por defecto. all.
-system: Muestra las estadísticas sobre tablas del sistema e índices además de las estadísticas de las tablas de usuario.
En la figura 45 se puede ver un ejemplo de utilización de esta opción
Figura 45:
-z: Muestra la versión del producto.
En la figura 46 se puede ver un ejemplo de utilización de esta opción
Figura 46:
Localizar en los programas windows que acompañan a interbase todas las acciones que se pueden realizar con los programas estudiados en el presente capítulo, intentando encontrar alguna funcionalidad que sí está disponible en las herramientas estudiadas en éste capítulo, pero no lo están en las herramientas estudiadas en el capítulo 3. Después, realizar el ejercicio del capítulo 3 con las herramientas estudiadas en éste capítulo.
Respuestas a las preguntas de la unidad nº 3:
El manejo por parte de Interbase de los tipos de dato Blobs, se ve muy mejorado si todo el dato blob se encuentra en la misma página. Una base de datos con blobs mayores de 1 K debería tener un tamaño de página superior a 1024 bytes.
Interbase funciona mejor si una celda se encuentra en una sola página. Si una base de datos contiene celdas con tipos de datos muy grandes, es conveniente aumentar el tamaño de página.
Si una base de datos contiene índices grandes, al incrementar el tamaño de página se mejora el funcionamiento de los mismos. Si al mirar las estadísticas de la base de datos, algunos de los índices más usados muestran un valor Depth muy alto, se debería aumentar el tamaño de página.
La única operación que no es posible realizar si no se tiene acceso exclusivo a la base de datos es la validación de la misma.
Las ventajas se derivan fundamentalmente de que al realizar restore, la base de datos se crea de nuevo: se realiza un sweep implícito y se regeneran los índices, además de estabilizarse el sistema frente a cambios en la estructura, como cambiar el tipo de dato de un campo que contiene datos.
Objetivo:
Panorámica:
Isql.exe:
Funcionalidad de Isql.exe:
Arrancando Isql.exe:
Conectándose a una base de
datos existente:
Desconectándose
correctamente de una base de datos:
Comandos SQL de Isql.exe:
El comando ISQL SHOW:
El comando ISQL SET:
Otros comandos ISQL:
Gsec.exe:
Mantenimiento de la seguridad del servidor:
Los comandos de la utilidad Gsec:
Mostrando la base de datos de
seguridad:
Añadiendo, modificando y
borrando usuarios:
Tratamiento de las líneas de
comando:
Mensajes de error de gsec:
Gbak.exe
Backup y restore de la base de datos:
Opciones de gbak para backup:
Opciones de gbak para restore:
Backups programados:
La herramienta gsplit:
Gfix.exe
Mantenimiento y validación de bases de datos:
Hacer Shutdown:
Opciones:
Recuperar transacciones:
Reparación de datos:
Realizar Sweep:
Gstat.exe
Estadísticas de la base de datos:
Preguntas:
Ejercicio:
Respuestas a las preguntas
de la unidad nº 3:
Indice: