Script de mandatos del programa de utilidad de limpieza de base de datos

El programa de utilidad de limpieza de base de datos (dbclean) elimina objetos obsoletos o no utilizados de la base de datos.

Antes de empezar

Ejecute este programa de utilidad desde la Utility server Docker container. Para obtener más información, consulte Ejecución de programas de utilidad desde Utility server Docker container.

Diagrama de sintaxis para ejecutar el programa de utilidad dbclean

Valores de parámetros

object
Necesario. El nombre del objeto que se va a eliminar. Para obtener más información sobre los nombres de objeto, consulte Objetos del programa de utilidad de Limpieza de base de datos.
tipo
Necesario. El tipo de objeto que desea eliminar. Para obtener más información sobre el tipo que hay que especificar con un objeto, consulte Objetos del programa de utilidad de Limpieza de base de datos.
instancexml
Necesario. La vía de acceso absoluta al archivo de configuración de HCL Commerce.
db
Opcional: el nombre de la base de datos, codificada como URL de patrón de JDBC de tipo 4. Si deja este campo en blanco, el programa de utilidad lee la información de base de datos desde la instancia.
dbuser
Opcional: el ID de inicio de sesión del administrador que ha creado el esquema o el administrador de sitio de la base de datos. Si este parámetro no se especifica, se invoca el ID del usuario que invoca el programa de utilidad.
dbschema
Opcional: el nombre del esquema de base de datos. Este parámetro permite que un usuario ejecute el programa de utilidad dbschema con un ID de usuario que no sea el ID de usuario especificado para el parámetro dbuser.
dbpasswd
Opcional: la contraseña del ID de conexión especificada por el parámetro dbuser o dbschema. Si no se ha especificado, el sistema le solicita que escriba la contraseña.
dbtype
Opcional: el tipo de base de datos. El valor predeterminado es DB2. También puede especificar oracle.
check_object_only
Opcional: Si la opción check_object_only se establece en sí, se comprueba cada una de las tablas hijo para ver si la tabla se ve afectada en caso de eliminar la tabla padre. Si la tabla hijo se ve afectada, el programa de utilidad dbclean suprime restricciones, lo que significa que el padre no se puede eliminar.dbclean Si la tabla hijo no se ve afectada, la tabla padre se puede eliminar. Por ejemplo, si se va a eliminar OrderItem, puede afectar al propietario de OrderItem, que puede ser un usuario invitado con nada más excepto OrderItem. Por ejemplo, si se va a eliminar un artículo de pedido, puede afectar al propietario del mismo, que puede ser un usuario invitado que solo tenga ese artículo de pedido. El programa de utilidad no efectúa la comprobación si deja el parámetro establecido en no (el valor predeterminado).no Esta información puede encontrarse en el archivo de anotaciones cronológicas. El programa de utilidad no realiza una comprobación si deja el parámetro en no (el valor predeterminado). Esta información se puede encontrar en el archivo de registro.

No incluya este parámetro cuando ejecute el programa de utilidad en la modalidad fuera de línea.

commit
Opcional: el número de filas que se suprimen en cada compromiso. El valor predeterminado es 1000.
Si el parámetro offlinemode se establece en yes, el programa de utilidad utiliza dos recuentos de compromisos. Uno para la tabla raíz y el otro para todas las tablas hijo. El recuento de compromisos para la tabla raíz utiliza el valor especificado para el parámetro commit o el valor predeterminado si no se especifica ningún valor. El recuento de compromisos para las tablas hijo lo determina una fórmula.
child_commit_count = (commit * commit); while (childCommitCnt >= max) { childCommitCnt /= 2; } if(0 == childCommitCnt) { childCommitCnt = commit; } 
Esta fórmula utiliza los valores especificados para los parámetros commit y max. El valor del parámetro max establece el límite para el tamaño del conjunto de datos que se va a eliminar en la operación de limpieza. Este valor se utiliza en la fórmula para asegurarse de que la cuenta de compromisos es lo bastante grande para evitar el exceso de compromisos, que puede afectar al rendimiento de la base de datos. El valor del parámetro commit se utiliza para asegurarse de que el recuento de compromisos no es lo bastante grande en comparación con el valor de parámetro max. Al garantizar que el recuento de confirmaciones no sea demasiado grande, el programa de utilidad puede evitar cualquier consumo rápido de recursos, como el que realiza el archivo de registro de transacciones.
max
Opcional: el número máximo de objetos que se suprimirán para toda la ejecución viene determinado por el parámetro de compromiso con este valor de parámetro max. El valor predeterminado es 100000. El número máximo de filas se suprimen de acuerdo con un múltiplo del valor de compromiso que cumple o excede el valor de parámetro max.

Por ejemplo, si especifica el valor max a 35 y el valor comprometido a 20, las supresiones se comprometen cada 20 filas. El número máximo de filas que se suprimen es 40 porque 40 es el número más próximo múltiplo de la confirmación que sobrepasa el valor de parámetro max. Si especifica max20 y compromete35, el número máximo de filas que se suprime es 35.

registro
Opcional: la vía de acceso y el nombre del archivo de anotaciones cronológicas en el que el programa de utilidad registra sus actividades. El emisor de este programa de utilidad debe tener autorización de escritura a la vía de acceso especificada y la vía de acceso debe existir. Si este parámetro no se especifica, se crea un archivo de registro denominado DBClean.timestamp.log en el directorio siguiente: WC_eardir/xml/logs/DBClean/.
loglevel
Opcional: El nivel de anotación cronológica que se realizará durante la limpieza de la base de datos. Los niveles de registro disponibles son NONE, ERROR, WARNING, NORMAL, INFO/VERBOSE o DEBUG. El valor predeterminado es NONE.
days
Opcional: el número mínimo de días de antigüedad que debe tener un registro para que se pueda suprimir.
name
Opcional: el ID del objeto que se ha de suprimir. Este parámetro es necesario si se ha indicado member como valor para el parámetro organization y se ha indicado organization como el valor de tipo.
jdbcDriver
Opcional: el controlador JDBC que se va a utilizar. El valor predeterminado depende del tipo de base de datos. Por ejemplo, si utiliza DB2, el controlador JDBC podría ser com.ibm.db2.jcc.DB2Driver . Si utiliza Oracle, el controlador JDBC puede ser oracle.jdbc.OracleDriver.
jdbcUrlPrefix
Opcional: el prefijo de URL para el controlador JDBC especificado. El valor predeterminado depende del tipo de base de datos. Por ejemplo, si utiliza DB2, el prefijo URL de JDBC podría ser jdbc:db2://.
jdbcCustomizer
Opcional: especifica la ubicación del archivo de personalización que se debe utilizar con el programa de utilidad de limpieza de base de datos. Puede especificar valores para los parámetros jdbcDriver y jdbcUrlPrefix en el formato argumento=valor en cada línea dentro del archivo.

Este parámetro está en desuso. Considere la posibilidad de utilizar el parámetro de paramfile en su lugar.

El valor predeterminado es jdbcDriver=com.ibm.db2.jcc.DB2Driver jdbcUrlPrefix=jdbc:db2://. Otras combinaciones pueden funcionar pero no se han probado.

sqlmode
Opcional: puede establecer los siguientes valores para este parámetro:
1
Modalidad directa. La sentencia DELETE que se recupera de la tabla CLEANCONF se ejecuta directamente sin ninguna modificación del programa de utilidad. El conjunto de resultados del SQL se compromete con la base de datos hasta que se alcanza el valor del parámetro max. Cuando establece el valor para el parámetro sqlmode en 1, asegúrese de que también establece el parámetro commit en 1.
0
El valor predeterminado. El programa de utilidad predeterminado con todos los parámetros respetados incluido el contador de compromisos. El comportamiento del programa de utilidad dbclean predeterminado puede mejorar los SQL recuperados de la tabla CLEANCONF.

No incluya este parámetro cuando ejecute el programa de utilidad en la modalidad fuera de línea.

dbauser
Opcional: el nombre de usuario administrador de base de datos. Si el nombre de administrador de base de datos no se incluye como parámetro en la línea de mandatos, el nombre se recupera del archivo instance_name.xml. Si el nombre tampoco se incluye en este archivo, se le solicitará que especifique el valor al ejecutar el programa de utilidad.
dbapasswd
Opcional: la contraseña de administrador de base de datos. Si la contraseña de administrador de la base de datos no se incluye como parámetro en la línea de mandatos, la contraseña se recupera del archivo instance_name.xml. Si la contraseña tampoco se incluye en este archivo, se le solicitará que especifique el valor al ejecutar el programa de utilidad.
sqlParam%
Opcional: indica que el valor para este parámetro va a sustituir un marcador de parámetro en la sentencia SQL para el objeto que está almacenado en la tabla de base de datos CLEANCONF. El carácter % en el parámetro representa el índice del marcador de parámetro.% El índice debe empezar en 1. El índice debe comenzar en 1. El parámetro sqlParam% no se puede utilizar con los parámetros SQL days y name. Si se utilizan varios sqlParam% para los marcadores de parámetros, debe aumentar el índice secuencialmente para el parámetro sqlParam% en el comando del programa de utilidad.
Por ejemplo, puede incluir los siguientes parámetros sqlParam% en la línea de mandatos:
-sqlParam1 0 -sqlParam2 2 -sqlParam3 4
Estos parámetros pueden enlazarse con los correspondientes marcadores de parámetros, 1, 2 y 3 dentro de la siguiente sentencia SQL:
delete from member where member_id in (select users_id from users where (current_timestamp - lastupdatetimestamp)> ? and users_id > ? and not exists (select 1 from orders where orders_id=?))
Después de ejecutar el mandato de programa de utilidad, los marcadores de parámetros se sustituyen por los valores para el sqlParam% en el mandato. Por ejemplo,
delete from member where member_id in (select users_id from users where (current_timestamp - lastupdatetimestamp)> 0 and users_id > 2 and not exists (select 1 from orders where orders_id=4))
paramfile
Opcional: especifica la vía de acceso al archivo de parámetros que incluye argumentos de línea de mandatos y valores. Cada argumento y valor necesita estar en el formato argument=value con un solo argumento y valor en cada línea del archivo. Las contraseñas de este archivo de parámetros deben estar cifradas.
offlinemode
Opcional: Indica que el programa de utilidad de limpieza de la base de datos debe ejecutarse fuera de línea y utilizar la generación de hebras además de las supresiones explícitas para limpiar la base de datos. Si ejecuta el programa de utilidad fuera de línea, puede reducir el impacto en el rendimiento que produce la supresión de jerarquías de tablas profundamente o ampliamente anidadas de objetos de usuario. Para obtener más información sobre la ejecución del programa de utilidad fuera de línea, consulte Programa de utilidad de Limpieza de base de datos.
Puede establecer los siguientes valores para este parámetro:
El programa de utilidad de limpieza de base de datos se ejecuta en modalidad fuera de línea. El programa de utilidad no puede detectar si el entorno está fuera de línea. El programa de utilidad le solicita que confirme que el entorno está fuera de línea.
No
El programa de utilidad de limpieza de base de datos se ejecuta en modalidad en línea. Este valor es el valor predeterminado.
También puede configurar los parámetros opcionales prunelevel, threadCount y validatedel para limitar el ámbito de la operación de limpieza fuera de línea.
Antes de ejecutar el programa de utilidad en modalidad fuera de línea, revise las siguientes consideraciones y limitaciones:
  • Para ejecutar el programa de utilidad fuera de línea, primero debe poner el entorno de HCL Commerce fuera de línea.
  • Al ejecutar el programa de utilidad fuera de línea, el programa de utilidad inhabilita temporalmente las restricciones de claves foráneas para la base de datos. Las restricciones se inhabilitan para asegurarse de que el programa de utilidad puede eliminar los objetos identificados. Cuando las restricciones se inhabilitan, se pierde la conservación de la integridad de datos durante el proceso de limpieza hasta que las restricciones se vuelven a habilitar una vez que se ha completado el proceso. Para evitar la inhabilitación de restricciones, se le recomienda ejecutar el programa de utilidad en modalidad en línea predeterminada salvo que los objetos que desee eliminar estén en una jerarquía de tablas grande.
  • Antes de ejecutar el programa de utilidad fuera de línea, debe inhabilitar los servicios de réplica, como por ejemplo HADR, y sincronizar todas las tablas de base de datos replicadas. Si no inhabilita los servicios, los servicios pueden replicar la inhabilitación de las comprobaciones de integridad referencial y restricciones de claves foráneas en el entorno replicado, que no necesita que las comprobaciones o restricciones estén inhabilitadas. Una vez que el programa de utilidad ha terminado de ejecutarse fuera de línea, vuelva a habilitar los servicios de réplica. Para obtener más información sobre cómo inhabilitar estos servicios, revise la documentación que está disponible en el proveedor de base de datos.
prunelevel
Opcional: un entero que indica el número de niveles debajo de la tabla raíz dentro de una jerarquía de tablas que el programa de utilidad comprueba si hay registros de objeto que se deben suprimir. Si una tabla, y cualquier tabla hijo que se comprueba, no incluye objetos a eliminar, la tabla se elimina de la operación de limpieza. La eliminación de las tablas reduce el tamaño de la operación de limpieza, que puede mejorar la eficacia del proceso de limpieza. Puede utilizar este parámetro solamente cuando se ejecuta el programa de utilidad fuera de línea. Al aumentar el número de niveles de jerarquía que se deben comprobar, se incluyen más tablas y registros en el proceso de comprobación y el número de comprobaciones aumenta, lo que pueden afectar al rendimiento del programa de utilidad. El valor predeterminado es 2.

Para obtener más información sobre cómo el programa de utilidad comprueba y limpia las tablas cuando el programa de utilidad se ejecuta fuera de línea, consulte Programa de utilidad de Limpieza de base de datos.

threadCount
Opcional: indica el número máximo de hebras que el programa de utilidad puede ejecutar simultáneamente. Puede utilizar este parámetro solamente cuando se ejecuta el programa de utilidad fuera de línea.
validatedel
Opcional: indica si el programa de utilidad valida que los objetos se suprimen de la base de datos. Puede utilizar este parámetro solamente cuando se ejecuta el programa de utilidad fuera de línea. Puede establecer los siguientes valores para este parámetro:
Ejecute la comprobación de validación.
No
No ejecute la comprobación de validación. Este valor es el valor predeterminado.
Para supervisar el programa de utilidad de Limpieza de base de datos, consulte los siguientes archivos:
  • En lo referente al progreso de la limpieza, consulte el archivo de registro DBClean.timestamp.log, que se encuentra en el directorio WC_eardir/xml/logs/DBClean. El nivel de anotación cronológica puede ser NONE, ERROR, WARNING, NORMAL, INFO/VERBOSE o DEBUG. Por omisión, el nivel de las anotaciones está establecido en DEBUG.
  • Si se produce un error irrecuperable durante la limpieza, consulte el archivo de utilities_root/instances/instance_name/logs/DBClean/System.timestamp.Properties. El programa de utilidad de Limpieza de base de datos se detiene automáticamente y las propiedades de la JVM se almacenan en este archivo.
  • Si desea eliminar los archivos obsoletos que están asociados con elementos de datos, ejecute el siguiente script: utilities_root/instances/instance_name/logs/DBClean/clean.asset.object.type.timestamp.sh

Ejemplo: Supresión de objetos de usuario

Entorno de ejecución
En el siguiente mandato de ejemplo se ejecuta el programa de utilidad para eliminar objetos de usuario:
./dbclean.sh -object user -type registered -instancexml /opt/WebSphere/CommerceServer90/instances/demo/xml/demo.xml -db CD040302 -commit 500 -max 8000 -check_object_only yes

Ejemplo: Modo fuera de línea

Entorno de ejecución
El siguiente mandato de ejemplo ejecuta el programa de utilidad en la modalidad fuera de línea para eliminar la misma información que en el ejemplo anterior:
./dbclean.sh -object user -type registered -instancexml /opt/WebSphere/CommerceServer90/instances/demo/xml/demo.xml -db CD040302 -commit 500 -max 8000 -dbschema wcs -dbauser Tomsmith -dbauserpwd myadminpassword -dbuser johnsmith -dbpasswd mypasword -offlinemode yes -validatedel yes -prunelevel 2