Wm enable 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 disable versioning · Wm create workspace

Wm enable versioning active le versionnement Workspace Manager sur une table, via DBMS_WM.EnableVersioning. C'est le préalable indispensable avant de pouvoir manipuler des données versionnées dans des workspaces (voir Wm workspace pour la vue d'ensemble du cycle de vie).

Contraintes à connaître avant d'exécuter ce script :

  • la table doit posséder une clé primaire définie ;
  • le nom de la table ne doit pas dépasser 25 caractères ;
  • seul le propriétaire de la table peut activer le versionnement dessus ;
  • une table appartenant à SYS ne peut pas être versionnée ;
  • une exception est levée si la table est déjà version-enabled.

Le script affiche le workspace courant et la liste des tables déjà versionnées avant et après l'opération, pour vérification immédiate.

Script

-- Active 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.enableversioning('&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