En la configuración y gestión de SistemasOracle Database tenemos diversos elementos a tener en cuenta:
Database Control es parte del Oracle Eterprise Manager, es una consola gráfica que permite gestionar bases de datos Oracle independientes (que no funcionan de forma distribuida).
Normalmente Database Control está disponible en
|
https://localhost:1158/em |
Si no se ha arrancado, el comando de arranque es:
emctl start dbconsole
El comando para detener Database Control es:
emctl stop dbconsole
El comado para ver el estado de Database Control es:
emctl status dbconsole
Desde la línea de comandos, en el servidor, disponemos del comando sqlplus. Lo normal es conectar en modo anónimo:
|
# sqlplus /nolog |
Pero podemos conectar indicando usuario y contraseña. Posibilidades:
También es posible, tras conectar con Oracle, cambiar de usuario con el comando connect. Este comando tiene las mismas posibilidades:
SQL*Plus admite lanzar scripts, código SQL, al conectar. Ejemplo:
|
sqlplus hr/hr @inicio.sql |
Este comando conecta con el usuario hr (su contraseña también es hr) y lanza las instrucciones SQL contenidas en el archivo inicio.sql.
Si ya estamos dentro de SQL*Plus:
|
SQL>@inicio.sql |
Una base de datos Oracle puede estar en uno de estos cuatro estados:
En este estado podemos conectar (como administradores) y realizar tareas como:
Para iniciar la base de datos se usa el comando STARTUP seguido del nombre del estado deseado. Por ejemplo:
STARTUP MOUNT |
Sin indicar estado alguno (escribiendo STARTUP, a secas), se inicia Oracle en modo OPEN.
El comando ALTER DATABASE seguido del estado permite cambiar de estado (solo podremos cambiar hacia estados superiores). Ejemplo:
ALTER DATABASE OPEN; |
Es un modo especial de trabajo en el que 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. Uso:
STARTUP RESTRICTED |
Si la instancia ya estaba abierta es:
ALTER SYSTEM ENABLE RESTRICTED SESSION; |
Y si lo que queremos es desactivar el modo restringido para pasar a modo normal:
ALTER SYSTEM DISABLE RESTRICTED SESSION; |
Una instancia cuando es arrancada, hasta estar disponible atraviesa todos los estados anteriores.
El comando de apagado de la instancia es SHUTDOWN, su sintaxis:
SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABORT] |
Las opciones son:
Requiere de estos comandos
[1]Necesitamos cortar la instancia actual:
SHUTDOWN IMMEDIATE; |
[2]Iniciar la base de datos en modo MOUNT
STARTUP MOUNT EXCLUSIVE RESTRICT; |
[3]Borrar
DROP DATABASE; |
Borrar una base de datos requiere de muchísima prudencia, ya que no se puede deshacer y podemos hacer desparecer cantidades enormes de datos importantes.
Otra opción (más fácil) es usar el asistente dbca para eliminar la base de datos. Basta lanzarlO con el comando dbca y después elegir la base de datos a borrar y seguir los pasos.
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.
El archivo de parámetros puede ser:
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. Por lo que si cometimos un error en un parámetro y Oracle no arranca, no podremos modificar el parámetro directamente en el archivo.
En Oracle 11g el archivo de parámetros SPFile (que es el que se usa por defecto), está en:
En el caso de no disponer de SPFile, Oracle puede utilizar un archivo de texto PFILE para almacenar parámetros. Su ubicación sería:
/u01/app/oracle/11.2.1/db_1/dbs/initbbdd.ora
En los archivos de texto PFILE la información se almacena de esta forma:
nombreParámetro = valor |
Si es un parámetro que puede contener varios valores su sintaxis es:
nombreParámetro = (valor1 [,valor2 [,…]]) |
O bien podemos repetir el parámetro y asignar un valor en cada línea. Ejemplo:
control_files=’/u01/app/oracle/oradata/centora/control01.ctl’ control_files=’/u02/app/oracle/oradata/centora/control02.ctl’ control_files=’/aux/back/control03.ctl’ |
El código anterior asigna tres archivos de control a la base de datos.
En los archivo PFILE los comentarios se ponen con el símbolo #.
Los archivos de tipo PFILE permiten su modificación directa en el archivo. Pero hay que tener un extremo cuidado al hacerlo ya que un solo error podría provocar que dicho archivo quedara inutilizable como archivo de parámetros.
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. El contenido de los archivos se ejecuta al iniciar la base de datos, pero luego durante la ejecución se pueden modificar.
Como hemos comentado se usa normalmente un archivo binario SPFILE para contener los parámetros. Pero es lógico disponer de una copia en formato PFILE para el caso en el que el sistema no arranque y necesitemos modificar directamente el archivo de parámetros.
Por ello Oracle nos permite estas posibilidades con los archivos de parámetros:
Como se ha comentado Oracle Database arranca usando un archivo SPFILE. Pero si necesitamos arrancar usando un archivo de texto PFILE, podemos arrancar Oracle usando la sintaxis:
STARTUP PFILE=’ruta’ |
Por defecto Oracle busca los archivos de parámetros por defecto según el nombre y ruta explicados en el apartado anterior. Concretamente partiendo de la ruta habitual para los archivos de parámetros (ORACLE_HOME/dbs o ORACLE_HOME/database) el orden de carga es;
[1]Archivo SPFILE de nombre spfileSID.ora
[2]Archivo SPFILE de nombre spfile.ora
[3]Archivo PFILE de nombre initSID.ora
[4]Archivo PFILE de nombre init.ora
Pero podemos forzar a que se cargue un archivo PFILE que nosotros indiquemos. Para ello basta arrancar con:
STARTUP PFILE=rutaArchivoPFILE
No podemos arrancar forzando a usar un archivo concreto SPFILE, siempre se usa el SPFILE de la ruta por efecto (si deseamos otro habrá que sustituirle).
Estos parámetros determinan como funcionará la instancia de base de datos y sus valores se usan durante el arranque de la base de datos. Hay dos tipos:
A la hora de modificar parámetros, tenemos dos posibilidades:
Los parámetros de sistema se modifican con:
ALTER SYSTEM SET parámetro=valor [COMMENTS = comentarios][DEFERRED] [SCOPE={SPFILE | MEMORY | BOTH }]; |
SCOPE controla cuando se produce el efecto del parámetro:
Ejemplo:
ALTER SYSTEM SET sessions=200 SPFILE; |
En este caso dejamos el límite de sesiones concurrentes a 200; pero tendrá vigor cuando reiniciemos la base de datos ya que hemos indicado que esta modificación se grabe en el archivo y no se aplique ahora mismo.
En el caso de modificar parámetros con ALTER SESSION, no posee las cláusulas MEMORY, BOTH, SPFILE ni DEFERRED, ya que no tienen sentido para modificar los parámetros de una sesión.
Tenemos las siguientes posibilidades:
|
opción |
uso |
|
SHOW PARAMETER nombre |
En SQL*Plus, nos muestra los parámetros referentes a la sesión actual |
|
SHOW SPPARAMETER nombre |
En SQL*Plus nos enseña los valores de los parámetros almacenados en el SPFILE |
|
SELECT * FROM V$PARAMETER WHERE |
Vista del diccionario de datos con los valores actuales de los parámetros |
|
SELECT * FROM V$SPPARAMETER WHERE |
Vista del diccionario de datos con los valores de los parámetros en el SPFILE |
|
SELECT * FROM |
Valores de los parámetros que afectan a la instancia actual de 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. La vista V$PARAMETER contiene los parámetros actuales de la sesión, V$SYSTEM_PARAMETER contiene los parámetros del sistema y V$SPFILE los del archivo SPFILE se usen o no.
|
parámetro |
valor |
|
DB_NAME |
Nombre de la base de datos. |
|
DB_DOMAIN |
Dominio al que pertenece la base de datos. |
|
DB_UNQ_NAME |
Nombre único de base de datos. Se usa para diferenciar instancias con el mismo nombre de base de datos en sistemas distribuidos. |
|
COMPATIBLE |
Versión de Oracle Database compatible con la instancia de base de datos |
|
CONTROL_FILES |
Ruta a los archivos de control (pueden ser varios valores) |
|
DIAGNOSTIC_DEST |
Ruta, por defecto, inicial a los archivos log y de traza. |
|
LOG_ARCHIVE_DEST_N |
Ruta en la que se almacenará el archivo histórico redo log nº n |
|
DB_RECOVERY_FILE_DEST |
Ruta al directorio de recuperación de la base de datos |
|
DB_RECOVERY_FILE_DEST_SIZE |
Tamaño del área Flash de recuperación |
|
DB_CREATE_FILE_DEST |
Ruta para los archivos de datos gestionados por Oracle. Por defecto vale NULL y la ruta será la habitual (según el modelo OFA). |
|
DB_FILES |
Máximo número de archivos de base de datos que pueden ser abiertos por Oracle |
|
DB_FLASH_CACHE_FILE |
Ruta al archivo del área Flash de recuperación |
|
DB_FLASH_CACHE_SIZE |
Tamaño del archivo anterior |
|
SESSIONS |
Máximo número de sesiones concurrentes permitidas |
|
PROCESSES |
Máximo número de procesos que puede lanzar la base de datos |
|
SHARED_SERVERS |
Número de procesos servidores a crear al iniciar la instancia. |
|
LOG_CHECKPOINT_INTERVAL |
Contiene el número de bloques máximos que se escriben en los redo log antes de que se produzca un checkpoint |
|
LOG_CHECKPOINT_TIMEOUT |
Intervalo en segundos máximo que se deja sin que se produzca un checkpoint. |
|
LOG_CHECKPOINT_TO_ALERT |
Indica si los checkpoints se graban en el archivo de alertas |
|
MAX_DUMP_FILE_SIZE |
Tamaño máximo en bloques del sistema operativo de los archivos de traza |
|
BACKGROUND_DUMP_DEST |
Destino del archivo de alertas (alert log) y de traza |
|
USER_DUMP_DEST |
Destino de los archivos de traza sobre los procesos de usuario |
|
LOG_ARCHIVE_TRACE. |
Permite grabar en archivos de trazado la actividad de los históricos redo log. |
|
SGA_MAX_SIZE |
Tamaño máximo de la SGA |
|
SGA_TARGET |
Con valor distinto de cero indica que el tamaño de la SGA se gestionará automáticamente si es cero la gestión es manual |
|
SHARED_POOL_SIZE |
Tamaño del área compartida de la SGA |
|
LARGE_POOL_SIZE |
Tamaño del Large Pool |
|
JAVA_POOL_SIZE |
tamaño del pool de Java |
|
DB_CACHE_SIZE |
Tamaño de la caché de búferes de datos |
|
LOG_BUFFER |
Tamaño del búfer Redo Log. |
|
DB_BLOCK_SIZE |
Tamaño del bloque de Oracle (de 2 a 32 K) |
|
DB_KEEP_CACHE_SIZE |
Tamaño del búfer de retención de bloques de datos del esquema en memoria |
|
DB_RECYCLE_CACHE_SIZE |
Tamaño de la papelera de Oracle |
|
STREAMS_POOL_SIZE |
Tamaño del búfer para Streams |
|
WORKAREA_SIZE_POLICY |
Puede vale manual o auto. Si elegimos manual podremos modificar los siguientes parámetros de uso de la PGA: SORT_AREA_SIZE HASH_AREA_SIZE BITMAP_MERGE_AREA_SIZE CREATE_BITMAP_AREA_SIZE |
|
OPEN_CURSORS |
Número máximo de cursores |
|
REMOTE_LOGIN_PASSWORDFILE |
Indica si Oracle busca un archivo de contraseñas. Puede ser: shared (compartido por varias bases de datos), exclusive (solo se usa en una) o none (no se usa archivo de contraseñas) |
|
NLS_LANGUAGE |
Lenguaje de la instancia de base de datos. Depende del Sistema Operativo (de la variable de sistema NLS_LANG). Solo se puede modificar para la sesión. |
|
NLS_DATE_FORMAT |
Formato de fecha |
|
NLS_NUMERIC_CHARACTERS |
Formato nacional de números |
|
NLS_CURRENCY |
Formato de moneda |
Más información en:
https://docs.oracle.com/cd/B28359_01/server.111/b28320/initparams.htm
En el caso de Oracle, no utiliza el esquema estándar INFORMATION_SCHEMA para consultar el diccionario de datos, en su lugar usa una serie de vistas que comienzan con estos términos:
Así USER_TABLES es la vista que muestra todas las tablas del usuario actual. Otras vistas son (disponibles con el prefijo USER_, DBA_ o ALL_):
|
Vistas estáticas a usar con el prefijo USER_ ALL_ o USER_ |
Uso |
|
TABLES |
Muestra todas las tablas accesibles desde nuestro usuario. |
|
COLUMNS |
Muestra las columnas de las tablas. |
|
CONSTRAINTS |
Restricciones |
|
COLS_CONSTRAINTS |
Restricciones indicando las columnas implicadas |
|
VIEWS |
Vistas |
|
TRIGGERS |
Lanzadores de código |
|
SEQUENCES |
Secuencias |
|
SYNONYMS |
Sinónimos |
|
TAB_COLUMNS |
Columnas de las tablas |
|
TYPES |
Tipos definidos en la base de datos |
|
VARRAYS |
Información sobre los datos de tipo VARRAY definidos en la base de datos |
|
OBJECTS |
Objetos de esquema |
|
CATALOG |
Lista tablas, vistas, sinónimos y secuencias |
|
DEPENDENCIES |
Lista las dependencias de los procedimientos, funciones y triggers |
|
TABLESPACES |
Tablespaces |
|
SEGMENTS |
Segmentos |
|
FREE_SPACE |
Información sobre las extensiones libres en cada tablespace |
|
EXTENTS |
Extensiones |
|
INDEXES |
Índices |
|
INDEXTYPES |
Tipos de índices |
|
SYS_PRIVS |
Lista de privilegios de usuario |
|
TAB_PRIVS |
Privilegios de los objetos |
|
ROLES_SYS_PRIVS |
Lista de roles y privilegios |
|
AUDIT_SESSIONS |
Auditoría de sesiones |
|
FLASHBACK_ARCHIVE |
Archivos del repositorio Flashback |
|
FLASHBACK_ARCHIVE_TABLES |
Tablas marcadas para ser usadas en modo Flashback |
|
FLASHBACK_ARCHIVE_TS |
Tablespaces almacenados en modo Flashback |
|
UNUSED_COL_TABS |
Columnas que están sin uso en la base de datos |
|
USTATS |
Estadísticas de usuario sobre el uso de los objetos por parte de los usuarios |
Las siguientes vistas estáticas sólo están disponibles para los usuarios de tipo DBA:
|
Vista estática |
Uso |
|
DICTIONARY |
Lista de las vistas del diccionario de datos |
|
DBA_USERS |
Usuarios de la base de datos |
|
DBA_ROLES |
Roles de la base de datos |
|
DBA_PROFILES |
Perfiles de usuario |
|
DBA_TS_QUOTAS |
Cuotas de los usuarios |
|
DBA_DIRECTORIES |
Objetos de directorio |
|
DBA_DATAFILES |
Archivos de datos y pertenencia a los Tablespaces |
|
DBA_TEMP_FILES |
Archivos de los tablespaces temporales |
|
DBA_TABLESPACE_GROUPS |
Información sobre grupos de tablespaces |
|
DBA_TEMP_FREE_SPACE |
Total de espacio libre en los tablespaces temporales |
|
DBA_ROLLBACK_SEGS |
Información sobre los segmentos de tipo Rollback |
|
DBA_UNDO_EXTENTS |
Extensiones de los tablespaces de tipo deshacer |
|
DBA_HIST_UNDOSTAT |
Información histórica mediante instantáneas (snapshots) del uso del espacio de tipo deshacer |
|
DBA_PART_TABLES |
Información sobre las tablas particionadas |
|
DBA_RECYCLE_BIN |
Información sobre las papeleras del sistema |
|
DBA_THRESHOLD |
Umbrales de alerta definidos |
|
DBA_OUTSTANDING_ALERTS |
Listado de alertas excepcionales en la base de datos |
|
DBA_ALERT_HISTORY |
Historial de alertas ya borradas |
|
DBA_BLOCKERS |
Sesiones que están bloqueando objetos por cuyo uso otras sesiones están en estado de espera |
|
DBA_WAITERS |
Sesiones en estado de espera por un objeto bloqueado |
|
DBA_DDL_LOCKS |
Bloqueos DDL |
|
DBA_DML_LOCKS |
Bloqueos DML |
|
DBA_LOCKS |
Todos los bloqueos |
|
DBA_ERRORS |
Errores almacenados en la base de datos |
|
DBA_AUDIT_POLICIES |
Políticas de auditoría |
|
DBA_OBJ_AUDIT_OPT |
Opciones de auditoria de objetos |
|
DBA_IND_COLUMNS |
Columnas de los índices |
|
DBA_IND_STATS |
Estadísticas sobre los índices en uso |
|
DBA_RULES |
Reglas de la base de datos |
|
DBA_SERVICES |
Servicios de la base de datos |
Hay otras vistas que se generan dinámicamente, es decir contienen información que va cambiando durante la ejecución de la base de datos. Se las distingue porque comienzan con el texto V$:
|
Vistas dinámicas |
Uso |
|
V$INSTANCE |
Muestra el estado de la instancia de la base de datos |
|
V$PARAMETER |
Lista de los parámetros y sus valores actualmente en funcionamiento |
|
V$system_parameter |
Parámetros del sistema |
|
V$SPPARAMETER |
Muestra el valor de los parámetros en el archivo SPFILE de parámetros actual |
|
V$DATABASE |
Información sobre la base de datos activa |
|
V$SESSION |
Sesiones activas |
|
V$PROCESS |
Procesos activos |
|
V$SESS_IO |
Contiene estadísticas de entrada/salida por cada usuario |
|
V$SESSION_LONGOPS |
Estado de las operaciones que tardan más de seis segundos en ejecutarse |
|
V$SYSSTAT |
Estadísticas de la sesión |
|
V$RESOURCE_LIMIT |
Información sobre el uso actual y máximo disponible de cada recurso |
|
V$SQLAREA |
Estadísticas sobre el área compartida de SQL (en el Shared Pool de la SGA) |
|
V$SGA |
Estadísticas sobre la SGA |
|
V$SGAINFO |
Tamaño de los componentes de la SGA |
|
V$SGASTAT |
Información sobre el uso de los componentes de la SGA |
|
V$PGASTAT |
Uso de la PGA |
|
V$SGA_DYNAMIC_COMPONENTS |
Tamaños de los componente de la SGA e información de la última operación realizada sobre ellos |
|
V$SGA_DYNAMIC_FREE_MEMORY |
Información sobre la cantidad de memoria disponible para la SGA |
|
V$SGA_TARGET_ADVICE |
Estadísticas y avisos sobre el uso de la SGA |
|
V$SQL_WORKAREA |
Información sobre el uso del área para instrucciones SQL de la PGA |
|
V$SQL_WORKAREA_ACTIVE |
Información sobre el uso del área para instrucciones SQL de la PGA activa actual |
|
V$CONTROLFILE |
Información sobre los archivos de control |
|
V$CONTROLFILE_RECORD_SECTION |
Información sobre las secciones del registro de archivo de control |
|
V$LOG |
Información sobre los archivo Redo Log |
|
V$LOGFILE |
Información sobre los grupos y miembros Redo Log |
|
V$ARCHIVED_LOG |
Información sobre los históricos (o archivados) redo log |
|
V$ARCHIVE_DEST |
Información sobre todos los destinos asignados al histórico de Redo Log |
|
V$ARCHIVE_PROCESSES |
Información sobre los procesos relacionados con el histórico de redo Log |
|
V$LOG_HISTORY |
Información histórica sobre los redo Log, secuencias, secuencias archivadas,… |
|
V$TABLESPACE |
Información sobre los Tablespaces |
|
V$ENCRYPTED _TABLESPACE |
Información sobre los Tablespaces encriptados |
|
V$DATAFILE |
Información sobre los archivos de datos |
|
V$DATAFILE_HEADER |
Cabecera de los archivos de datos |
|
V$TEMPFILE |
Información sobre los archivos temporales de datos |
|
V$TEMPSEG_USAGE |
Uso de los segmentos temporales por cada usuario |
|
V$UNDOSTAT |
Estadísticas sobre el uso de espacio para operaciones de deshacer |
|
V$ROLLSTAT |
Información sobre el comportamiento de los segmentos de tipo deshacer (undo) |
|
V$TRANSACTION |
Información sobre los segmentos de tipo deshacer |
|
V$DIAG_INFO |
Información sobre archivos de traza |
|
V$ALERT_TYPES |
Información sobre grupos y tipos de alertas |
|
V$METRICNAME |
Información sobre las métricas del sistema |
|
V$METRIC |
Valores del sistema actuales para las métricas |
|
V$METRIC_HISTORY |
Información histórica sobre las métricas definidas |
|
V$LOCK |
Información sobre bloqueos del sistema |
|
V$SESSION_WAIT |
Indica el último estado de espera de la sesión actual |
|
V$SESSION_WAIT_HISTORY |
Lista de los 10 últimos eventos de espera por cada sesión activa |
En Oracle cada proceso en segundo plano puede tener asociado un archivo de traza que irá monitorizando lo que le ocurre, y esto nos permitirá diagnosticar cada fallo.
Registra de forma cronológica los errores ocurridos en la base de datos. Entre los datos que registra, están:
Los siguientes parámetros nos permiten tomar decisiones sobre el funcionamiento de estos archivos o consultar su valor:
|
parámetro |
valor |
|
DIAGNOSTIC_DEST |
Contiene la ruta del repositorio de diagnóstico automático de Oracle que es donde, por defecto, se almacenan los archivos de traza y el log de alertas |
|
MAX_DUMP_FILE_SIZE |
Tamaño en bloques del sistema operativo máximo de los archivos log y de traza. Por defecto es unlimited (sin límite) |
|
BACKGROUND_DUMP_DEST |
Destino del log de alertas y de los archivos de trazado |
|
USER_DUMP_DEST |
Ruta a los archivos de traza que guardan información sobre los procesos de usuario |
|
vista |
contenido |
|
V$DIAG_INFO |
Información sobre los archivos de traza |
|
V$DIAG_CRITICAL_ERROR |
Lista de errores críticos designados por Oracle |
|
DBA_ALERT_HISTORY |
Historial de alertas |
|
DBA_OUTSTANDING_ALERTS |
Lista de alertas destacadas |
|
V$ALERT_TYPES |
Grupos y tipos de alertas |
En especial la primera vista es la que nos permite saber los archivos de traza en uso y la ubicación en la que se guardan, luego simplemente bastará con examinarles para monitorizar el estado de la base de datos.
Las consultas más habituales son:
SELECT * FROM V$DIAG_INFO WHERE name LIKE ‘%Alert%’; |
SELECT * FROM V$DIAG_INFO WHERE name= ‘Diag Trace’; |