Wm disable versioning

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Script/commande SQL*Plus (Oracle Workspace Manager)
Voir aussi Wm workspace · Wm enable versioning · Wm remove workspace

Wm disable versioning désactive le versionnement Workspace Manager sur une table, via DBMS_WM.DisableVersioning. Ce script inverse l'effet de Wm enable versioning : il supprime les structures techniques créées par Workspace Manager pour gérer les versions de lignes, sans toucher aux données du workspace LIVE.

Points importants :

  • la hiérarchie de workspaces et les savepoints existants ne sont pas supprimés, mais toutes les lignes reviennent à un état unique identique au workspace LIVE ;
  • s'il existait plusieurs versions d'une même ligne dans LIVE, seule la version la plus récente est conservée — les autres versions sont perdues ;
  • seul le propriétaire de la table ou un utilisateur avec le rôle WM_ADMIN_ROLE peut désactiver le versionnement ;
  • une exception est levée si la table n'est pas version-enabled.

Le script affiche la liste des tables versionnées avant et après l'opération.

Script

-- Désactive le versionnement Workspace Manager sur une table (owner.table)
SET LINESIZE 180
SET PAGESIZE 50000
SET VERIFY OFF

COLUMN getworkspace FORMAT a50 HEADING 'Current Workspace'
COLUMN ver_tables    FORMAT a50 HEADING 'All Current Versioned Tables'

SELECT dbms_wm.getworkspace FROM dual;

SELECT
    owner || '.' || table_name AS ver_tables
FROM
    wmsys.wm$versioned_tables
UNION ALL
SELECT
    'No versioned tables found'
FROM
    dual
WHERE NOT EXISTS (SELECT owner, table_name FROM wmsys.wm$versioned_tables)
ORDER BY 1;

ACCEPT wm_ev_owner CHAR PROMPT 'Enter table owner : '
ACCEPT wm_ev_table CHAR PROMPT 'Enter table name  : '

DEFINE wm_ev_table_name = &wm_ev_owner..&wm_ev_table

BEGIN
    dbms_wm.disableversioning('&wm_ev_table_name');
END;
/

SELECT
    owner || '.' || table_name AS ver_tables
FROM
    wmsys.wm$versioned_tables
UNION ALL
SELECT
    'No versioned tables found'
FROM
    dual
WHERE NOT EXISTS (SELECT owner, table_name FROM wmsys.wm$versioned_tables)
ORDER BY 1;

Voir aussi