Opciones de Inicio y Gestión de Bases de Datos Oracle con SQL*Plus
SQL*Plus es una herramienta esencial para la administración de bases de datos Oracle, permitiendo tanto la conexión como el control de la instancia y la base de datos. Desde la línea de comandos, en el servidor, disponemos del comando sqlplus.
Conexión y Autenticación en SQL*Plus
Para conectar a una base de datos Oracle, se pueden utilizar diferentes sintaxis:
- sqlplus usuario: Conecta con Oracle usando el nombre de usuario indicado.
- sqlplus usuario/contraseña: Conecta con Oracle especificando usuario y contraseña.
- sqlplus / as sysdba: Permite conectar con privilegios de administrador del sistema.
También es posible, tras conectar con Oracle, cambiar de usuario con el comando connect. Usuarios ordinarios no pueden iniciar y parar la base de datos, estos son los privilegios o capacidades especiales.
Por ejemplo, si la base de datos no está disponible, aparecerá el mensaje "ERROR: ORA-01034: ORACLE not available". En este caso, lo que se hace es iniciar SQL*Plus con el usuario internal y si pide la contraseña se coloca oracle. Desde la consola de MS-DOS se ejecuta sqlplus /nolog y posteriormente la instrucción connect internal, proporcionando la contraseña si es solicitada. Aparecerá el siguiente mensaje: "Connected to an idle instance", lo que quiere decir que Oracle está abajo o no disponible.
SQL*Plus admite lanzar scripts, código SQL, al conectar.
Estados de la Base de Datos para el Arranque
Una base de datos Oracle pasa por varios estados durante el arranque. Para iniciar la base de datos se usa el comando STARTUP seguido del nombre del estado deseado. Sin indicar estado alguno (escribiendo STARTUP, a secas), se inicia Oracle en modo OPEN.
Los estados son:
- NOMOUNT: La instancia de base de datos está latente en memoria, con los procesos comunes funcionando. En este estado, Oracle lee los parámetros de configuración. Los archivos solo se utilizan en modo NOMOUNT son el archivo de parámetros y la descripción del registro.
- MOUNT: Al estado anterior se añade la lectura de los archivos de control que permiten determinar cómo se ha de preparar la instancia. En este modo podemos llevar a cabo tareas de mantenimiento en Oracle. La base de datos está montada pero no abierta. Podemos renombrar data files, habilitar o deshabilitar el modo archive logging, renombrando, añadiendo o borrando redo log files o llevar a cabo una recuperación completa de la base de datos (full recovery).
- OPEN: La base de datos está completamente funcional. Para ello se abren los archivos de datos y los Redo Log y se comprueba la consistencia de los datos. Este es el modo normal en que se inicia Oracle, se monta y se abre la base de datos para trabajar normalmente. Oracle pone en línea o abre los data files y los ficheros redo log files para trabajar. En caso contrario, envía un mensaje de error y es entonces cuando hay que llevar a cabo un recover o una recuperación de nuestra base de datos.
Opciones Específicas de Arranque
- STARTUP NOMOUNT: Arranca la base pero sin montarla, normalmente se usará esta opción para crear una nueva base de datos o crear archivos de control.
- STARTUP MOUNT: Arranca la base de datos en estado montado.
- STARTUP OPEN o STARTUP: Arranca la base de datos directamente en el estado "open", permitiendo su uso normal.
- STARTUP FORCE: Usa esta opción si Oracle no puede ser dada de baja normalmente. En este caso, da de baja la base y la reinicia. Existe un modo especial cuando no podemos arrancar la base de datos y es forzar el arranque. Este comando puede ahorrar tiempo.
El comando ALTER DATABASE seguido del estado permite cambiar de estado (solo podremos cambiar hacia estados superiores). Para pasar la base de datos de un estado inferior a uno superior, utilizamos el comando alter database. El proceso que se monta y se abre la base lo lleva a cabo el proceso SMON.
Un modo especial de trabajo es cuando la base de datos está abierta, pero solo se permite el acceso a usuarios con permiso RESTRICTED (lo poseen los administradores) para hacer tareas especiales de administración.
ORACLE - Arranque y parada de la base de datos - IESTPFFAA (2020)
Tipos de Paradas de la Base de Datos (SHUTDOWN)
Es fundamental comprender que para detener una base de datos se debe utilizar el comando shutdown, y existen cuatro tipos de shutdown disponibles:
- NORMAL: Modo en el que no se admiten más conexiones a la base de datos, pero las actuales se mantienen. Cuando se cierre la última sesión, la base de datos pasará a estar cerrada (SHUTDOWN), pero, hasta entonces, seguirá abierta. Oracle no permite nuevas sesiones en la base de datos y espera a que todos los usuarios cierren su sesión voluntariamente. No es común usarlo, ya que si un usuario no sale de su sesión, la base de datos no se apagará.
- TRANSACTIONAL: Igual que la anterior, pero ahora se cortan todas las conexiones que no hayan empezado una transacción. No se cerrará la base de datos hasta que finalicen las transacciones iniciadas. Este permite que las transacciones en curso se completen antes de apagar la base de datos. Sesiones existentes que no están en transacción se terminan. Sesiones que están transaccionando se esperan a que terminen y luego se terminan.
- IMMEDIATE: No se aceptan nuevas conexiones y se cierran las actuales. Finaliza todas las transacciones en curso sin esperar a que terminen. Si una transacción está en progreso, la interrumpe y apaga la base de datos. Con el shutdown immediate, todas las transacciones incompletas serán revertidas [rollback] cuando la base de datos se reinicie.
- ABORT: Apagado brusco. Todas las conexiones se cortan de golpe, no se cierran los archivos ni se provoca un checkpoint. No se graba nada en disco. En lo que respecta a Oracle, esto es equivalente a un corte de energía. La instancia termina inmediatamente. Un shutdown abort no dañará la base de datos. Pero algunas operaciones no son recomendables después de un abort. Al reiniciar, es necesario un proceso de recuperación [recovery], que puede llevar tiempo.
Generalmente, el shutdown immediate es el más utilizado, ya que aunque implique un "rollback" al reiniciar, es más rápido que esperar a que los usuarios cierren sesión o apagar abruptamente la base de datos.
Parámetros de Configuración de Oracle
Oracle dispone de una serie (muy extensa) de parámetros que sirven para configurar la base de datos y la instancia de Oracle. Los parámetros se almacenan en archivos especiales que son leídos por la instancia de Oracle antes de iniciarse, para así hacerlo con la configuración que indica el archivo (o archivos) de parámetros.
Tipos de Archivos de Parámetros
- PFILE: Acrónimo de Parameters File. Es un archivo de texto plano. Los archivos de tipo PFILE permiten su modificación directa en el archivo. En el caso de no disponer de SPFile, Oracle puede utilizar un archivo de texto PFILE para almacenar parámetros.
- Linux/Unix: Está en ORACLE_HOME/dbs/initSID.ora.
- Windows: O bien podemos repetir el parámetro y asignar un valor en cada línea.
- SPFILE: Acrónimo de Server Parameter File. Por defecto Oracle utiliza un archivo binario al arrancar. Es la recomendación actual en Oracle Database desde la versión 11g. La razón es que se les considera más rápidos y la información que contienen es menos accesible. El problema es que los SPFILE no son editables de forma independiente a Oracle. spfileSID.ora es sin duda el archivo más conveniente utilizar como parámetro archivo. Normalmente, solo se utilizará spfile.ora en un entorno RAC, donde un archivo puede ser usado para ejecutar varias instancias. En todos los casos, SID se refiere al nombre de la instancia que el archivo de parámetros se de inicio.
Por defecto Oracle busca los archivos de parámetros según el nombre y ruta explicados. Pero podemos forzar a que se cargue un archivo PFILE que nosotros indiquemos.
Independientemente del tipo de archivo utilizado para almacenar los parámetros, los valores de los parámetros pueden ser distintos en el archivo respecto al valor que la base de datos utiliza en cada momento.
Creación y Conversión de Archivos de Parámetros
- CREATE PFILE FROM SPFILE: Crea un archivo PFILE a partir del archivo SPFILE actual.
- CREATE PFILE='ruta' FROM SPFILE
- CREATE PFILE='ruta' FROM SPFILE='ruta'
- CREATE SPFILE FROM PFILE: Crea un archivo SPFILE a partir del archivo PFILE actualmente en uso.
- CREATE SPFILE='ruta' FROM PFILE
- CREATE SPFILE='ruta' FROM PFILE='ruta'
- CREATE SPFILE FROM MEMORY
- CREATE SPFILE='ruta' FROM MEMORY
- CREATE PFILE FROM MEMORY
- CREATE PFILE='ruta' FROM MEMORY
Tipos de Parámetros y su Gestión
Los parámetros pueden clasificarse en:
- Derivados: Dependientes del Sistema Operativo. Parámetros cuyos valores dependen del Sistema Operativo en el que se instale el servidor de bases de datos.
- Básicos: Estos parámetros determinan cómo funcionará la instancia de base de datos y sus valores se usan durante el arranque de la base de datos.
- Avanzados: Son más de 300.
La modificación de parámetros depende de si son estáticos o dinámicos:
- Si el parámetro es estático, su valor se debe modificar en el fichero de parámetros (SPFILE o PFILE) y se aplicarán cuando la instancia se reinicie.
- Si es dinámico, su valor se puede cambiar en caliente (con la instancia en modo OPEN) y se aplican al instante. Estos parámetros son de dos tipos:
- A nivel de sesión: Afectan solo a la sesión del usuario. Se modifican con ALTER SESSION.
- A nivel de sistema: Afectan a toda la base de datos.
El comando SHOW PARAMETER muestra los parámetros que actúan en la sesión actual; SHOW SPPARAMETER muestra los del archivo SPFILE que sea el actual.
Ejemplos de Parámetros Importantes
Aquí hay una tabla con algunos parámetros clave:
| Parámetro | Descripción | Tipo | Ejemplo de Valor/Uso |
|---|---|---|---|
| DB_NAME | Nombre de la base de datos. | Básico | ORCL |
| DB_DOMAIN | Dominio al que pertenece la base de datos. | Básico | example.com |
| DB_UNIQUE_NAME | Nombre único de base de datos. | Básico | ORCL_PROD |
| DB_CREATE_FILE_DEST | Ruta para los archivos de datos gestionados por Oracle. | Básico | /u01/app/oracle/oradata |
| REMOTE_LOGIN_PASSWORDFILE | Indica si Oracle busca un archivo de contraseñas. | Básico | EXCLUSIVE o NONE |
| NLS_LANGUAGE | Lenguaje de la instancia de base de datos. Depende del Sistema Operativo (de la variable de sistema NLS_LANG). | Básico/Dependiente OS | SPANISH |
| CONTROL_FILES | Define la ubicación de los archivos de control. | Básico | ('/u01/app/oracle/oradata/control01.ctl', '/u01/app/oracle/oradata/control02.ctl') |
El código anterior asigna tres archivos de control a la base de datos.
Otras Herramientas de Gestión
Oracle Enterprise Manager Database Control
Database Control es parte del Oracle Enterprise Manager, es una consola gráfica que permite gestionar bases de datos Oracle independientes (que no funcionan de forma distribuida). La configuración del Database Control se realiza al momento de la instalación. En la configuración se incluyen dos puntos vitales: el nombre del host y el puerto por donde escucha. La configuración del Database Control se realiza al momento de la instalación.
Listener
El Listener es un proceso que controla un puerto para la conexión de solicitudes a base de datos. La utilidad Listener se encuentra en oracle_home/bin.
Vistas Dinámicas y Registro de Alerta
Hay vistas que se generan dinámicamente, es decir, contienen información que va cambiando durante la ejecución de la base de datos. Así USER_TABLES es la vista que muestra todas las tablas del usuario actual. Muestra todas las tablas accesibles desde nuestro usuario.
El registro de alerta (alert.log) registra de forma cronológica los errores ocurridos en la base de datos. El tamaño en bloques del sistema operativo máximo de los archivos log y de traza es un parámetro configurable. Los archivos solo se utilizan en modo nomount son el archivo de parámetros y el registro de alerta.
Otra opción (más fácil) es usar el asistente dbca para eliminar la base de datos.
