Hook operations allow you to execute an ordered list of custom operations at select hook points in linking, provisioning and virtual dataset management. For details on the types of operations that are available, see children of this page.

VDB and vFile Hooks

Hook
Description
Configure Clone

Operations performed after initial provision or after a refresh.

This hook will run after the virtual dataset has been started.
During a refresh, this hook will run before the Post-Refresh hook.

Pre-Refresh

Operations performed before a refresh.
This hook will run before the virtual dataset has been stopped.

These operations can cache data from the virtual dataset to be restored after the refresh completes.

Post-Refresh

Operations performed after a refresh.
This hook will run after the virtual dataset has been started and after the Configure Clone hook.
This hook will not run if the refresh or Pre-Refresh hook operations fail.

These operations can restore cached data after the refresh completes.

Pre-Rewind

Operations performed before a rewind.
This hook will run before the virtual dataset has been stopped. 

These operations can cache data from the virtual dataset to be restored after the rewind completes.

Post-Rewind

Operations performed after a rewind. This hook will not run if the rewind or Pre-Rewind hook operations fail.
This hook will run after the virtual dataset has been started.
This hook will not run if the rewind or Pre-Rewind hook operations fail.

These operations can restore cached data after the rewind completes.

Pre-Snapshot

Operations performed before a snapshot.

These operations can quiesce data to be captured during the snapshot, or stop processes that may interfere with the snapshot.

Post-Snapshot

Operations performed after a snapshot.
This hook will run regardless of the success of the snapshot or Pre-Snapshot hook operations.

These operations can undo any changes made by the Pre-Snapshot hook.

Pre-Start

Operations performed before startup of a VDB or vFile.

These operations can be used to initialize configuration files, or stop processes that might interfere with the virtual dataset.

Post-Start

Operations performed after startup of a VDB of vFile.

These operations can be used to clean up any temporary files, or restart processes that may have been stopped by a Pre-Start hook, or log notifications.

Pre-Stop

Operations performed before shutdown of a VDB or vFile.

These operations can quiesce data or processes prior to virtual dataset shutdown.

Post-Stop

Operations performed after shutdown of a VDB or vFile.

These operations can be used to log notifications, clean up any temporary files, or stop/restart related processes.

You can leverage hooks to run required scripts which address several different use cases. For example, you may want to prevent your monitoring systems from triggering during VDB startup and shutdown. As shown in the figure below, you can now leverage pre- and post-hooks to run required scripts for VDB start/stop operations.

hooks stop new.png

Hooks

Operation Failure

If a hook operation fails, it will fail the entire hook: no further operations within the failed hook will be run.

Setting Hook Operations

You can construct hook operation lists through the Delphix Admin application or the command line interface (CLI). You can either define the operation lists as part of the provisioning process or edit them on virtual datasets that already exist.

Setting Hook Operations through the Delphix Admin Application

The provisioning wizard still imports hook operations from templates.

To specify hook operations during linking or provisioning:

  1. In the Linking Wizard or Provision Wizard, click the Hooks tab.
  2. Select the hook to edit.
  3. Click the Plus icon to add a new operation.
  4. Select the type of operation or click Import to load a hook operation template.
  5. Click the text area and edit the contents of the operation.
  6. You can reorder operations either through drag-and-drop or by clicking the arrow icons.
  7. To remove an operation from the list, click the Trash icon on the operation.
  8. When you have set all hook operations, click Next to continue with the provisioning process.

To edit hook operations on a virtual dataset:

From the Datasets panel, you can create hook operations from a template. 
  1. In the Datasets panel, click the virtual dataset.
  2. Click the Configuration tab.
  3. Within the Configuration tab, click the Hooks tab.
  4. Select the hook to edit.
  5. The current operations at this hook will be displayed. To edit this list of operations, click the Pencil icon in the top right-hand corner of the tab.
  6. Click the Plus icon to add a new operation.
  7. Select the type of operation or click Import to load a hook operation template.
  8. Click the text area and edit the contents of the operation.
  9. You can reorder operations either through drag-and-drop or by clicking the arrow icons.
  10. To remove an operation from the list, click the Trash icon on the operation.
  11. When you have set all hook operations, click the check mark to save the changes.

Setting Hook Operations through the CLI

To specify hook operations during linking, edit the relevant hook's array of operations defined on the LinkingParameters > Source > Operations object.

To specify hook operations during provisioning, edit the relevant hook's array of operations defined on the ProvisionParameters > Source > Operations object.

To edit hook operations on a dSource that already exists, edit the relevant hook's array of operations defined on the Source > Operations object.

To edit hook operations on a virtual dataset that already exists, edit the relevant hook's array of operations defined on the Source > Operations object.

For more information about these CLI objects, see the following documentation in the Help menu of the Delphix Admin application:

  •  LinkedSourceOperations
  • VirtualSourceOperations
  • RunCommandOnSourceOperation
  • RunExpectOnSourceOperation API

Example of Editing Hook Operations through the CLI

  1. Navigate to the relevant source's  VirtualSourceOperations  object.
  2. Select a hook to edit.
    delphix> source
    delphix source> select "pomme"
    delphix source "pomme"> update
    delphix source "pomme" update *> edit operations
    delphix source "pomme" update operations *> edit postRefresh
  3. Add an operation at index 0.
    delphix source "pomme" update operations postRefresh *> add
    delphix source "pomme" update operations postRefresh 0 *> set type=RunCommandOnSourceOperation
    delphix source "pomme" update operations postRefresh 0 *> set command="echo Refresh completed."
    delphix source "pomme" update operations postRefresh 0 *> ls
    Properties
        type: RunCommandOnSourceOperation (*)
        command: echo Refresh completed. (*)
    delphix source "pomme" update operations postRefresh 0 *> commit
  4. Add another operation at index 1 and then delete it.
    delphix source "pomme" update operations postRefresh *> add
    delphix source "pomme" update operations postRefresh 1 *> set type=RunCommandOnSourceOperation
    delphix source "pomme" update operations postRefresh 1 *> set command="echo Refresh completed."
    delphix source "pomme" update operations postRefresh 1 *> back
    delphix source "pomme" update operations postRefresh *> unset 1
    delphix source "pomme" update operations postRefresh *> commit

Hook Operation Templates

You can use templates to store commonly used operations, which allows you to avoid repeated work when an operation is applicable to more than a single virtual dataset. You manage templates through the Delphix Admin application.

Hook Operations Templates Not Available via CLI

Hook operation templates cannot be fully utilized from the CLI. Manage and use hook operations through the Delphix Admin application.

Creating a Hook Operation Template

The provisioning wizard still imports hook operations from templates.
  1. Login to the Delphix Admin application using Delphix Admin credentials.
  2. Click Manage.
  3. Select Operation Templates.
  4. Click the Plus icon to add a new operation template.
  5. Enter a Name for the template.
  6. Select an operation Type.
  7. Enter a Description detailing what the operation does or how to use it.
  8. Enter operation Contents to implement the operation partially or fully.
  9. Click Create.

Importing a Hook Operation Template

To import a hook operation template:
  1. In the Datasets panel, select a dataset.
  2. Click the Configuration tab.
  3. Within the Configuration tab, click the Hooks tab.
  4. Select the hook to edit.
  5. Click the Plus icon to add a new operation.
  6. Click Import.
  7. Select the template to import.
  8. Click Import.
  9. When you have set all hook operations, click Check to save the changes.

Exporting a Hook Operation Template

Unable to render {include} The included page could not be found.

Considerations for Delphix Hook Operations on Oracle RAC VDBs

When performing data management operations like snapsync, refresh and so on with Delphix data sources such as VDB and dSources, Delphix offers "hooks" as an ability to perform tasks prior to and after these data management operations. For an introduction and more details about hooks refer to,  Oracle Hooks for data sources.

Mostly the above article discusses shell operations within the hooks. But sometimes you might need to run a SQL script within the hook to capture or alter the database state before or after a Delphix operation on that source. In a sample scenario, we might be connecting to the database and running some SQL script which does the operations and perhaps generates some files for later use. 

In such a case, there is no need to set the oracle environment in the script and in fact setting the ORACLE_SID value in the script can be a problem for RAC instances. From the article linked above, these are the details of hook operations as they relate to RAC VDBs:

Oracle RAC

When linking from, or provisioning to Oracle RAC environments, hook operations will not run once on each node in the cluster. Instead, the Delphix Engine picks a node in the cluster at random and guarantees all operation within any single hook will execute serially on this node.

The Delphix Engine does not guarantee the same node is chosen for the execution of every hook, but does guarantee that Pre-/Post- hook pairs (such as Pre-Sync and Post-Sync) will execute on the same node.

If the data source (or VDB) is a single instance Oracle, explicitly setting variable in script should not be a problem, since local listener will be aware of the SID in the connect string. But for a RAC, since we will not be sure which node the hook will run against beforehand, do not statically allocate the variables, the engine will determine the connect string based on the databases section of the environments page of the admin app GUI.

Troubleshooting

Hook operations do not work for Delphx RAC installations.

Resolution

Remove any oracle environment setting parameters in the script and consider that the hook will run arbitrarily against any of the RAC nodes. Validate that the connect string works for the Environment>Databases section for the dSource in question. 

Additional Information

For more information about validating and setting connection strings refer to,  Adding JDBC Connection String.