Sentencia ALTER DATABASE

La sentencia ALTER DATABASE añade nuevas vías de acceso de almacenamiento a la colección de vías de acceso que se utilizan para los espacios de tablas de almacenamiento automático, o elimina vías de acceso de almacenamiento existentes de dicha colección.

Un espacio de tablas de almacenamiento automático es un espacio de tablas que se ha creado utilizando almacenamiento automático; es decir, se ha especificado la cláusula MANAGED BY AUTOMATIC STORAGE en la sentencia CREATE TABLESPACE o no se ha especificado ninguna cláusula MANAGED BY. Si una base de datos está habilitada para el almacenamiento automático, las características de los contenedores y de gestión del espacio correspondientes a sus espacios de tablas pueden determinarse completamente a través del gestor de bases de datos. Si la base de datos no está habilitada actualmente para almacenamiento automático, el acto de añadir vías de acceso de almacenamiento la habilitará.

Importante: Esta sentencia está en desuso y podría eliminarse en un futuro release. En su lugar, utilice las sentencias CREATE STOGROUP o ALTER STOGROUP.

Invocación

La sentencia puede incorporarse en un programa de aplicación o emitirse interactivamente. Es una sentencia ejecutable que sólo se puede preparar de forma dinámica si el comportamiento de ejecución de DYNAMICRULES está en vigor para el paquete (SQLSTATE 42509).

Autorización

El ID de autorización de la sentencia debe tener autorización SYSADM o SYSCTRL.

Sintaxis

Read syntax diagramSkip visual syntax diagramALTER DATABASEdatabase-name 1ADD STORAGE ON,'storage-path'DROP STORAGE ON,'storage-path'
Notes:
  • 1 Each clause can be specified only once.

Descripción

nombre-base-datos
Un valor opcional que especifica el nombre de la base de datos que debe modificarse. Si se especifica, el valor debe coincidir con el nombre de la base de datos a la que está conectada actualmente la aplicación (no el alias que el cliente puede tener catalogado); de lo contrario, se devolverá un error (SQLSTATE 42961).
ADD STORAGE ON
Especifica que una o más vías de acceso de almacenamiento nuevas se añadirán a la colección de vías de acceso de almacenamiento que se utilizan para los espacios de tablas de almacenamiento automático.
'vía_acceso_almacenamiento'
Constante de tipo serie que especifica la ubicación donde se deben crear los contenedores para los espacios de tablas de almacenamiento automático. El formato de la serie depende del sistema operativo, como se muestra en la tabla siguiente:
Sistema operativo Formato de serie
Linux®
AIX®
Vía de acceso absoluta.
Windows Nombre de letra de una unidad.
DROP STORAGE ON
Especifica que una o más vías de acceso de almacenamiento se eliminarán de la colección de vías de acceso de almacenamiento que se utilizan para los espacios de tablas de almacenamiento automático. Si los espacios de tablas están utilizando de forma activa una vía de acceso de almacenamiento que se va a descartar, el estado de la vía de acceso de almacenamiento cambia de En uso a Descarte pendiente y se impedirá que se utilice en el futuro la vía de acceso de almacenamiento.
'vía_acceso_almacenamiento'
Constante de tipo serie que especifica la ubicación de la que se deben eliminar las vías de acceso de almacenamiento. El formato de la serie depende del sistema operativo, como se muestra en la tabla siguiente:
Sistema operativo Formato de serie
Linux
AIX
Vía de acceso absoluta.
Windows Nombre de letra de una unidad.

Reglas

  • Para una base de datos que se ejecuta en versión 10.1 o posterior, las operaciones de esta sentencia se aplican al grupo de almacenamiento predeterminado para la base de datos. Si no se define ningún grupo de almacenamiento para la base de datos, se utiliza el nombre IBMSTOGROUP.
  • La vía de acceso de almacenamiento que se está añadiendo debe ser válida según las normas de denominación y debe ser accesible (SQLSTATE 57019). De igual modo, en un entorno de base de datos particionada, la vía de acceso de almacenamiento debe existir y ser accesible en cada partición de base de datos (SQLSTATE 57019).
  • La vía de acceso de almacenamiento que se está descartando debe existir actualmente en la base de datos (SQLSTATE 57019) y no puede tener ya el estado Descarte pendiente (SQLSTATE 55073).
  • La base de datos habilitada para el almacenamiento automático debe tener una vía de acceso de almacenamiento como mínimo. No se pueden descartar todas las vías de acceso de almacenamiento de la base de datos (SQLSTATE 428HH).
  • No se puede ejecutar la sentencia ALTER DATABASE mientras se está añadiendo un servidor de particiones de base de datos (SQLSTATE 55071).
  • No se puede especificar DROP STORAGE ON en un Db2 pureScale® entorno (SQLSTATE 56038).

Notas

  • Cuando se añaden nuevas vías de acceso de almacenamiento:
    • Los espacios de tablas normales y grandes existentes que utilicen el almacenamiento automático no utilizarán estas nuevas vías de acceso inicialmente. El gestor de bases de datos puede elegir crear nuevos contenedores de espacio de tablas en estas vías de acceso únicamente si se produce una condición de falta de espacio.
    • Los espacios de tablas temporales existentes gestionados por almacenamiento automático no utilizan automáticamente las vías de acceso de almacenamiento nuevas. Se debe detener con normalidad la base de datos y reiniciarla para que los contenedores de estos espacios de tablas utilicen las nuevas vías de acceso de almacenamiento. Como alternativa, se pueden descartar y recrear los espacios de tablas temporales. Al crearlos, estos espacios de tablas utilizan automáticamente todas las vías de acceso de almacenamiento que disponen de espacio libre suficiente.
  • Añadir vías de acceso de almacenamiento a la base de datos para habilitar el almacenamiento automático no hará que la base de datos convierta espacios de tablas no habilitados para el almacenamiento automático para utilizarlo.
  • Aunque las operaciones ADD STORAGE y DROP STORAGE son operaciones anotadas cronológicamente, si se rehacen o no durante una operación de recuperación en avance dependerá de cómo se haya restaurado la base de datos. Si la operación de restauración no redefine las vías de acceso de almacenamiento que están asociadas con la base de datos, el registro de anotaciones cronológicas que contiene el cambio de vía de acceso de almacenamiento se rehace y las vías de acceso de almacenamiento que se describen en el registro de anotaciones se añaden o se eliminan durante la operación de recuperación en avance. No obstante, si las vías de acceso de almacenamiento se redefinen durante la operación de restauración, la operación de recuperación en avance no rehará los registros de anotaciones cronológicas ADD STORAGE o DROP STORAGE, porque se supone que ya se han configurado las vías de acceso de almacenamiento.
  • Cuando se calcula el espacio libre para una vía de acceso de almacenamiento en una partición de base de datos, el gestor de bases de datos comprueba la existencia de los siguientes directorios o puntos de montaje en la vía de acceso de almacenamiento, y utiliza la primera que se encuentre.
    <storage path>/<instance name>/NODE####/<database name>
    <storage path>/<instance name>/NODE####
    <storage path>/<instance name>
    <storage path>
    Donde:
    • <storage path> es una vía de acceso de almacenamiento asociada a la base de datos
    • <instance name> es la instancia bajo la que reside la base de datos
    • NODE#### corresponde al número de la partición de base de datos (por ejemplo, NODE0000 o NODE0001)
    • <database name> es el nombre de la base de datos

    Los sistemas de archivos se pueden montar en un punto bajo la vía de acceso de almacenamiento, y el gestor de bases de datos reconocerá que la cantidad real de espacio libre disponible para los contenedores del espacio de tablas puede no ser la misma que la asociada con el directorio de la vía de acceso de almacenamiento.

    Considere un ejemplo en el que existen dos particiones lógicas de base de datos en una máquina física y hay una única vía de acceso de almacenamiento (/dbdata). Cada partición de base de datos utilizará esta vía de acceso de almacenamiento, pero es posible que desee aislar los datos de cada partición dentro de su propio sistema de archivos. En este caso, se puede crear un sistema de archivos independiente para cada partición y se puede montar en /dbdata/<instance>/NODE####. Al crear contenedores en la vía de acceso de almacenamiento y determinar el espacio libre, el gestor de bases de datos no recuperará la información de espacio libre para /dbdata, sino que la recuperará para el directorio /dbdata/<instance>/NODE#### correspondiente.

  • En general, deben utilizarse las mismas vías de acceso de almacenamiento para cada partición en un entorno de base de datos particionada. Una excepción a esta regla se da en caso de que se utilicen expresiones de partición de base de datos en la vía de acceso de almacenamiento. Esto permite que el número de partición de base de datos quede reflejado en la vía de acceso de almacenamiento, de modo que el nombre de vía de acceso resultante es diferente para cada partición.
  • Al descartar una vía de acceso de almacenamiento que están utilizando uno o más espacios de tablas, el estado de la vía de acceso cambia de En uso a Descarte pendiente. La vía de acceso no crecerá más. Antes de que se pueda eliminar completamente la vía de acceso de la base de datos, es necesario reequilibrar todos los espacios de tablas afectados (con la cláusula REBALANCE o la sentencia ALTER TABLESPACE), para que los datos de sus contenedores se retiren de la vía de acceso. El reequilibrio sólo se puede aplicar a espacios de tablas de tamaño normal y grande. Los espacios de tablas temporales deben descartarse y volverse a crear para que se retiren sus contenedores de la vía de acceso descartada. Cuando ningún espacio de tablas esté utilizando ya la vía de acceso, se eliminará físicamente de la base de datos.

    Para las bases de datos particionadas, la vía de acceso se mantiene de forma independiente en cada partición. Cuando ya no se esté utilizando una vía de acceso en una partición de base de datos dada, se eliminará físicamente de dicha partición. Es posible que otras particiones muestren todavía la vía de acceso con estado Descarte pendiente.

    Se puede obtener la lista de los espacios de tablas de almacenamiento automático que utilizan vías de acceso de almacenamiento con estado de descarte pendiente emitiendo la sentencia de SQL siguiente:
    SELECT DISTINCT A.TBSP_NAME, A.TBSP_ID, A.TBSP_CONTENT_TYPE
      FROM TABLE(MON_GET_TABLESPACE(NULL,-2)) AS A
      WHERE A.TBSP_PATHS_DROPPED = 1
  • Al descartar una vía de acceso de almacenamiento que se especificó inicialmente mediante una expresión de partición de base de datos, se debe utilizar en el descarte la misma serie de vía de acceso de almacenamiento, incluida la expresión de partición de base de datos. Si se especificó una expresión de partición de base de datos, se puede encontrar esta serie de vía de acceso en el elemento Vía acceso con expresión partición bd (db_storage_path_with_dpe) de una instantánea de base de datos. Este elemento no se muestra si no se incluyó una expresión de partición de base de datos en la vía de acceso original especificada.
  • Se puede añadir varias veces una vía de acceso de almacenamiento dada a una base de datos. Al utilizar la cláusula DROP STORAGE ON, si se especifica esa vía de acceso concreta una vez se descartarán de la base de datos todas las instancias de la vía de acceso.

ejemplos

  1. Añadir dos vías de acceso bajo el directorio /db (/db/filesystem1 y /db/filesystem2) y una tercera vía de acceso denominada /filesystem3 al espacio para espacios de tablas de almacenamiento automático que se asocia con la base de datos conectada actualmente.
       ALTER DATABASE ADD STORAGE ON '/db/filesystem1', '/db/filesystem2',
         '/filesystem3'
  2. Añadir las unidades D y E al espacio para los espacios de tablas de almacenamiento automático que está asociado con la base de datos SAMPLE.
       ALTER DATABASE SAMPLE ADD STORAGE ON 'D:', 'E:\'
  3. Añadir el directorio F:\DBDATA y la unidad G al espacio para espacios de tablas de almacenamiento automático que se asocia con la base de datos conectada actualmente.
       ALTER DATABASE ADD STORAGE ON 'F:\DBDATA', 'G:'
  4. Añadir una vía de acceso de almacenamiento que utiliza una expresión de partición de base de datos para diferenciar las vías de acceso de almacenamiento en cada una de las particiones de base de datos.
       ALTER DATABASE ADD STORAGE ON '/dataForPartition $N'
    La vía de acceso de almacenamiento que se utilizaría en la partición 0 de la base de datos sería /dataForPartition0; en la partición 1 de la base de datos sería /dataForPartition1; y así sucesivamente.
  5. Añadir vías de acceso de almacenamiento a una base de datos que no es almacenamiento automático habilitado, con el fin de habilitar el almacenamiento automático para la base de datos.
       CREATE DATABASE MYDB AUTOMATIC STORAGE NO
       CONNECT TO MYDB
       ALTER DATABASE ADD STORAGE ON '/db/filesystem1', '/db/filesystem2' 
    La base de datos MYDB está ahora habilitada para el almacenamiento automático.
  6. Eliminar las vías de acceso /db/filesystem1 y /db/filesystem2 de la base de datos conectada actualmente.
       ALTER DATABASE DROP STORAGE ON '/db/filesystem1', '/db/filesystem2'
    Una vez descartado satisfactoriamente el almacenamiento, se utiliza la sentencia ALTER TABLESPACE con la cláusula REBALANCE para cada espacio de tablas que utilizaba estas vías de acceso de almacenamiento para reequilibrar el espacio de tablas.
  7. Una vía de acceso de almacenamiento con una expresión de partición de base de datos (/dataForPartition $N) se ha añadido anteriormente a la base de datos y ahora se debe eliminar.
       ALTER DATABASE DROP STORAGE ON '/dataForPartition $N'
    Una vez descartado satisfactoriamente el almacenamiento, se utiliza la sentencia ALTER TABLESPACE con la cláusula REBALANCE para cada espacio de tablas que utilizaba estas vías de acceso de almacenamiento para reequilibrar el espacio de tablas.