oracle.oci.oci_golden_gate_deployment_actions – Perform actions on a Deployment resource in Oracle Cloud Infrastructure¶
Note
This plugin is part of the oracle.oci collection (version 5.2.0).
You might already have this collection installed if you are using the ansible
package.
It is not included in ansible-core
.
To check whether it is installed, run ansible-galaxy collection list
.
To install it, use: ansible-galaxy collection install oracle.oci
.
To use it in a playbook, specify: oracle.oci.oci_golden_gate_deployment_actions
.
New in version 2.9.0: of oracle.oci
Synopsis¶
Perform actions on a Deployment resource in Oracle Cloud Infrastructure
For action=change_compartment, moves the Deployment into a different compartment within the same tenancy. When provided, If-Match is checked against ETag values of the resource. For information about moving resources between compartments, see Moving Resources Between Compartments.
For action=collect_deployment_diagnostic, collects the diagnostic of a Deployment. When provided, If-Match is checked against ETag values of the resource.
For action=deployment_wallet_exists, checks if a wallet is already present in the deployment. When provided, If-Match is checked against ETag values of the resource.
For action=export_deployment_wallet, export the OGG wallet from the deployment to OCI vault. When provided, If-Match is checked against ETag values of the resource.
For action=import_deployment_wallet, imports an OGG wallet from the OCI Vault to the Deployment. When provided, If-Match is checked against ETag values of the resource.
For action=start, starts a Deployment. When provided, If-Match is checked against ETag values of the resource.
For action=stop, stops a Deployment. When provided, If-Match is checked against ETag values of the resource.
For action=upgrade, upgrade a Deployment. When provided, If-Match is checked against ETag values of the resource.
Requirements¶
The below requirements are needed on the host that executes this module.
python >= 3.6
Python SDK for Oracle Cloud Infrastructure https://oracle-cloud-infrastructure-python-sdk.readthedocs.io
Parameters¶
Parameter | Choices/Defaults | Comments |
---|---|---|
action
string
/ required
|
|
The action to perform on the Deployment.
|
api_user
string
|
The OCID of the user, on whose behalf, OCI APIs are invoked. If not set, then the value of the OCI_USER_ID environment variable, if any, is used. This option is required if the user is not specified through a configuration file (See
config_file_location ). To get the user's OCID, please refer https://docs.us-phoenix-1.oraclecloud.com/Content/API/Concepts/apisigningkey.htm. |
|
api_user_fingerprint
string
|
Fingerprint for the key pair being used. If not set, then the value of the OCI_USER_FINGERPRINT environment variable, if any, is used. This option is required if the key fingerprint is not specified through a configuration file (See
config_file_location ). To get the key pair's fingerprint value please refer https://docs.us-phoenix-1.oraclecloud.com/Content/API/Concepts/apisigningkey.htm. |
|
api_user_key_file
string
|
Full path and filename of the private key (in PEM format). If not set, then the value of the OCI_USER_KEY_FILE variable, if any, is used. This option is required if the private key is not specified through a configuration file (See
config_file_location ). If the key is encrypted with a pass-phrase, the api_user_key_pass_phrase option must also be provided. |
|
api_user_key_pass_phrase
string
|
Passphrase used by the key referenced in
api_user_key_file , if it is encrypted. If not set, then the value of the OCI_USER_KEY_PASS_PHRASE variable, if any, is used. This option is required if the key passphrase is not specified through a configuration file (See config_file_location ). |
|
auth_purpose
string
|
|
The auth purpose which can be used in conjunction with 'auth_type=instance_principal'. The default auth_purpose for instance_principal is None.
|
auth_type
string
|
|
The type of authentication to use for making API requests. By default
auth_type="api_key" based authentication is performed and the API key (see api_user_key_file) in your config file will be used. If this 'auth_type' module option is not specified, the value of the OCI_ANSIBLE_AUTH_TYPE, if any, is used. Use auth_type="instance_principal" to use instance principal based authentication when running ansible playbooks within an OCI compute instance. |
bucket_name
string
|
Name of the bucket where the object is to be uploaded in the object storage
Required for action=collect_deployment_diagnostic.
|
|
cert_bundle
string
|
The full path to a CA certificate bundle to be used for SSL verification. This will override the default CA certificate bundle. If not set, then the value of the OCI_ANSIBLE_CERT_BUNDLE variable, if any, is used.
|
|
compartment_id
string
|
The OCID of the compartment being referenced.
Required for action=change_compartment.
|
|
config_file_location
string
|
Path to configuration file. If not set then the value of the OCI_CONFIG_FILE environment variable, if any, is used. Otherwise, defaults to ~/.oci/config.
|
|
config_profile_name
string
|
The profile to load from the config file referenced by
config_file_location . If not set, then the value of the OCI_CONFIG_PROFILE environment variable, if any, is used. Otherwise, defaults to the "DEFAULT" profile in config_file_location . |
|
deployment_id
string
/ required
|
A unique Deployment identifier.
aliases: id |
|
description
string
|
Metadata about this specific object.
Applicable only for action=export_deployment_walletaction=import_deployment_wallet.
|
|
diagnostic_name_prefix
string
|
Prefix of the diagnostic collected and uploaded to object storage
Required for action=collect_deployment_diagnostic.
|
|
master_encryption_key_id
string
|
Refers to the customer's master key OCID. If provided, it references a key to manage secrets. Customers must add policies to permit GoldenGate to use this key.
Required for action=export_deployment_wallet.
|
|
namespace_name
string
|
Name of namespace that serves as a container for all of your buckets
Required for action=collect_deployment_diagnostic.
|
|
new_wallet_secret_id
string
|
The OCID of the customer's GoldenGate Service Secret. If provided, it references a key that customers will be required to ensure the policies are established to permit GoldenGate to use this Secret.
Required for action=import_deployment_wallet.
|
|
ogg_version
string
|
Version of OGG
Applicable only for action=upgrade.
Required when type is 'SPECIFIC_RELEASE'
|
|
realm_specific_endpoint_template_enabled
boolean
|
|
Enable/Disable realm specific endpoint template for service client. By Default, realm specific endpoint template is disabled. If not set, then the value of the OCI_REALM_SPECIFIC_SERVICE_ENDPOINT_TEMPLATE_ENABLED variable, if any, is used.
|
region
string
|
The Oracle Cloud Infrastructure region to use for all OCI API requests. If not set, then the value of the OCI_REGION variable, if any, is used. This option is required if the region is not specified through a configuration file (See
config_file_location ). Please refer to https://docs.us-phoenix-1.oraclecloud.com/Content/General/Concepts/regions.htm for more information on OCI regions. |
|
secret_name
string
|
Name of the secret with which secret is shown in vault
Required for action=export_deployment_wallet.
|
|
tenancy
string
|
OCID of your tenancy. If not set, then the value of the OCI_TENANCY variable, if any, is used. This option is required if the tenancy OCID is not specified through a configuration file (See
config_file_location ). To get the tenancy OCID, please refer https://docs.us-phoenix-1.oraclecloud.com/Content/API/Concepts/apisigningkey.htm |
|
time_diagnostic_end
string
|
The time until which the diagnostic collection should collect the logs. The format is defined by RFC3339, such as `2016-08-25T21:10:29.600Z`.
Applicable only for action=collect_deployment_diagnostic.
|
|
time_diagnostic_start
string
|
The time from which the diagnostic collection should collect the logs. The format is defined by RFC3339, such as `2016-08-25T21:10:29.600Z`.
Applicable only for action=collect_deployment_diagnostic.
|
|
type
string
|
|
The type of a deployment for wallet
Required for action=deployment_wallet_exists, action=start, action=stop, action=upgrade.
|
vault_id
string
|
Refers to the customer's vault OCID. If provided, it references a vault where GoldenGate can manage secrets. Customers must add policies to permit GoldenGate to manage secrets contained within this vault.
Required for action=export_deployment_wallet, action=import_deployment_wallet.
|
|
wait
boolean
|
|
Whether to wait for create or delete operation to complete.
|
wait_timeout
integer
|
Time, in seconds, to wait when wait=yes. Defaults to 1200 for most of the services but some services might have a longer wait timeout.
|
|
wallet_backup_secret_name
string
|
Name of the secret with which secret is shown in vault
Applicable only for action=import_deployment_wallet.
|
Notes¶
Note
For OCI python sdk configuration, please refer to https://oracle-cloud-infrastructure-python-sdk.readthedocs.io/en/latest/configuration.html
Examples¶
- name: Perform action change_compartment on deployment
oci_golden_gate_deployment_actions:
# required
compartment_id: "ocid1.compartment.oc1..xxxxxxEXAMPLExxxxxx"
deployment_id: "ocid1.deployment.oc1..xxxxxxEXAMPLExxxxxx"
action: change_compartment
- name: Perform action collect_deployment_diagnostic on deployment
oci_golden_gate_deployment_actions:
# required
namespace_name: namespace_name_example
bucket_name: bucket_name_example
diagnostic_name_prefix: diagnostic_name_prefix_example
deployment_id: "ocid1.deployment.oc1..xxxxxxEXAMPLExxxxxx"
action: collect_deployment_diagnostic
# optional
time_diagnostic_start: time_diagnostic_start_example
time_diagnostic_end: time_diagnostic_end_example
- name: Perform action deployment_wallet_exists on deployment with type = DEFAULT
oci_golden_gate_deployment_actions:
# required
type: DEFAULT
- name: Perform action deployment_wallet_exists on deployment with type = SPECIFIC_RELEASE
oci_golden_gate_deployment_actions:
# required
type: SPECIFIC_RELEASE
- name: Perform action deployment_wallet_exists on deployment with type = CURRENT_RELEASE
oci_golden_gate_deployment_actions:
# required
type: CURRENT_RELEASE
- name: Perform action export_deployment_wallet on deployment
oci_golden_gate_deployment_actions:
# required
secret_name: secret_name_example
vault_id: "ocid1.vault.oc1..xxxxxxEXAMPLExxxxxx"
master_encryption_key_id: "ocid1.masterencryptionkey.oc1..xxxxxxEXAMPLExxxxxx"
deployment_id: "ocid1.deployment.oc1..xxxxxxEXAMPLExxxxxx"
action: export_deployment_wallet
# optional
description: description_example
- name: Perform action import_deployment_wallet on deployment
oci_golden_gate_deployment_actions:
# required
vault_id: "ocid1.vault.oc1..xxxxxxEXAMPLExxxxxx"
new_wallet_secret_id: "ocid1.newwalletsecret.oc1..xxxxxxEXAMPLExxxxxx"
deployment_id: "ocid1.deployment.oc1..xxxxxxEXAMPLExxxxxx"
action: import_deployment_wallet
# optional
wallet_backup_secret_name: wallet_backup_secret_name_example
master_encryption_key_id: "ocid1.masterencryptionkey.oc1..xxxxxxEXAMPLExxxxxx"
description: description_example
- name: Perform action start on deployment with type = DEFAULT
oci_golden_gate_deployment_actions:
# required
type: DEFAULT
- name: Perform action start on deployment with type = SPECIFIC_RELEASE
oci_golden_gate_deployment_actions:
# required
type: SPECIFIC_RELEASE
- name: Perform action start on deployment with type = CURRENT_RELEASE
oci_golden_gate_deployment_actions:
# required
type: CURRENT_RELEASE
- name: Perform action stop on deployment with type = DEFAULT
oci_golden_gate_deployment_actions:
# required
type: DEFAULT
- name: Perform action stop on deployment with type = SPECIFIC_RELEASE
oci_golden_gate_deployment_actions:
# required
type: SPECIFIC_RELEASE
- name: Perform action stop on deployment with type = CURRENT_RELEASE
oci_golden_gate_deployment_actions:
# required
type: CURRENT_RELEASE
- name: Perform action upgrade on deployment with type = DEFAULT
oci_golden_gate_deployment_actions:
# required
type: DEFAULT
- name: Perform action upgrade on deployment with type = SPECIFIC_RELEASE
oci_golden_gate_deployment_actions:
# required
ogg_version: ogg_version_example
type: SPECIFIC_RELEASE
- name: Perform action upgrade on deployment with type = CURRENT_RELEASE
oci_golden_gate_deployment_actions:
# required
type: CURRENT_RELEASE
Return Values¶
Common return values are documented here, the following are the fields unique to this module:
Key | Returned | Description | ||
---|---|---|---|---|
deployment
complex
|
on success |
Details of the Deployment resource acted upon by the current operation
Sample:
{'compartment_id': 'ocid1.compartment.oc1..xxxxxxEXAMPLExxxxxx', 'cpu_core_count': 56, 'defined_tags': {'Operations': {'CostCenter': 'US'}}, 'deployment_backup_id': 'ocid1.deploymentbackup.oc1..xxxxxxEXAMPLExxxxxx', 'deployment_diagnostic_data': {'bucket_name': 'bucket_name_example', 'diagnostic_state': 'IN_PROGRESS', 'namespace_name': 'namespace_name_example', 'object_name': 'object_name_example', 'time_diagnostic_end': '2013-10-20T19:20:30+01:00', 'time_diagnostic_start': '2013-10-20T19:20:30+01:00'}, 'deployment_type': 'OGG', 'deployment_url': 'deployment_url_example', 'description': 'description_example', 'display_name': 'display_name_example', 'fqdn': 'fqdn_example', 'freeform_tags': {'Department': 'Finance'}, 'id': 'ocid1.resource.oc1..xxxxxxEXAMPLExxxxxx', 'is_auto_scaling_enabled': True, 'is_healthy': True, 'is_latest_version': True, 'is_public': True, 'is_storage_utilization_limit_exceeded': True, 'license_model': 'LICENSE_INCLUDED', 'lifecycle_details': 'lifecycle_details_example', 'lifecycle_state': 'CREATING', 'lifecycle_sub_state': 'RECOVERING', 'maintenance_configuration': {'bundle_release_upgrade_period_in_days': 56, 'interim_release_upgrade_period_in_days': 56, 'is_interim_release_auto_upgrade_enabled': True, 'major_release_upgrade_period_in_days': 56, 'security_patch_upgrade_period_in_days': 56}, 'maintenance_window': {'day': 'MONDAY', 'start_hour': 56}, 'next_maintenance_action_type': 'UPGRADE', 'next_maintenance_description': 'next_maintenance_description_example', 'nsg_ids': [], 'ogg_data': {'admin_username': 'admin_username_example', 'certificate': '-----BEGIN CERTIFICATE----MIIBIjANBgkqhkiG9w0BA..-----END PUBLIC KEY-----', 'credential_store': 'GOLDENGATE', 'deployment_name': 'deployment_name_example', 'identity_domain_id': 'ocid1.identitydomain.oc1..xxxxxxEXAMPLExxxxxx', 'ogg_version': 'ogg_version_example', 'password_secret_id': 'ocid1.passwordsecret.oc1..xxxxxxEXAMPLExxxxxx'}, 'private_ip_address': 'private_ip_address_example', 'public_ip_address': 'public_ip_address_example', 'storage_utilization_in_bytes': 56, 'subnet_id': 'ocid1.subnet.oc1..xxxxxxEXAMPLExxxxxx', 'system_tags': {}, 'time_created': '2013-10-20T19:20:30+01:00', 'time_of_next_maintenance': '2013-10-20T19:20:30+01:00', 'time_ogg_version_supported_until': '2013-10-20T19:20:30+01:00', 'time_updated': '2013-10-20T19:20:30+01:00', 'time_upgrade_required': '2013-10-20T19:20:30+01:00'}
|
||
compartment_id
string
|
on success |
The OCID of the compartment being referenced.
Sample:
ocid1.compartment.oc1..xxxxxxEXAMPLExxxxxx
|
||
cpu_core_count
integer
|
on success |
The Minimum number of OCPUs to be made available for this Deployment.
Sample:
56
|
||
defined_tags
dictionary
|
on success |
Tags defined for this resource. Each key is predefined and scoped to a namespace.
Example: `{"foo-namespace": {"bar-key": "value"}}`
Sample:
{'Operations': {'CostCenter': 'US'}}
|
||
deployment_backup_id
string
|
on success |
The OCID of the backup being referenced.
Sample:
ocid1.deploymentbackup.oc1..xxxxxxEXAMPLExxxxxx
|
||
deployment_diagnostic_data
complex
|
on success |
|
||
bucket_name
string
|
on success |
Name of the bucket where the object is to be uploaded in the object storage
Sample:
bucket_name_example
|
||
diagnostic_state
string
|
on success |
The state of the deployment diagnostic collection.
Sample:
IN_PROGRESS
|
||
namespace_name
string
|
on success |
Name of namespace that serves as a container for all of your buckets
Sample:
namespace_name_example
|
||
object_name
string
|
on success |
Name of the diagnostic collected and uploaded to object storage
Sample:
object_name_example
|
||
time_diagnostic_end
string
|
on success |
The time until which the diagnostic collection should collect the logs. The format is defined by RFC3339, such as `2016-08-25T21:10:29.600Z`.
Sample:
2013-10-20T19:20:30+01:00
|
||
time_diagnostic_start
string
|
on success |
The time from which the diagnostic collection should collect the logs. The format is defined by RFC3339, such as `2016-08-25T21:10:29.600Z`.
Sample:
2013-10-20T19:20:30+01:00
|
||
deployment_type
string
|
on success |
The type of deployment, which can be any one of the Allowed values. NOTE: Use of the value 'OGG' is maintained for backward compatibility purposes. Its use is discouraged in favor of 'DATABASE_ORACLE'.
Sample:
OGG
|
||
deployment_url
string
|
on success |
The URL of a resource.
Sample:
deployment_url_example
|
||
description
string
|
on success |
Metadata about this specific object.
Sample:
description_example
|
||
display_name
string
|
on success |
An object's Display Name.
Sample:
display_name_example
|
||
fqdn
string
|
on success |
A three-label Fully Qualified Domain Name (FQDN) for a resource.
Sample:
fqdn_example
|
||
freeform_tags
dictionary
|
on success |
A simple key-value pair that is applied without any predefined name, type, or scope. Exists for cross-compatibility only.
Example: `{"bar-key": "value"}`
Sample:
{'Department': 'Finance'}
|
||
id
string
|
on success |
The OCID of the deployment being referenced.
Sample:
ocid1.resource.oc1..xxxxxxEXAMPLExxxxxx
|
||
is_auto_scaling_enabled
boolean
|
on success |
Indicates if auto scaling is enabled for the Deployment's CPU core count.
Sample:
True
|
||
is_healthy
boolean
|
on success |
True if all of the aggregate resources are working correctly.
Sample:
True
|
||
is_latest_version
boolean
|
on success |
Indicates if the resource is the the latest available version.
Sample:
True
|
||
is_public
boolean
|
on success |
True if this object is publicly available.
Sample:
True
|
||
is_storage_utilization_limit_exceeded
boolean
|
on success |
Indicator will be true if the amount of storage being utilized exceeds the allowable storage utilization limit. Exceeding the limit may be an indication of a misconfiguration of the deployment's GoldenGate service.
Sample:
True
|
||
license_model
string
|
on success |
The Oracle license model that applies to a Deployment.
Sample:
LICENSE_INCLUDED
|
||
lifecycle_details
string
|
on success |
Describes the object's current state in detail. For example, it can be used to provide actionable information for a resource in a Failed state.
Sample:
lifecycle_details_example
|
||
lifecycle_state
string
|
on success |
Possible lifecycle states.
Sample:
CREATING
|
||
lifecycle_sub_state
string
|
on success |
Possible GGS lifecycle sub-states.
Sample:
RECOVERING
|
||
maintenance_configuration
complex
|
on success |
|
||
bundle_release_upgrade_period_in_days
integer
|
on success |
Defines auto upgrade period for bundle releases. Manually configured period cannot be longer than service defined period for bundle releases. This period must be shorter or equal to major release upgrade period. Not passing this field during create will equate to using the service default.
Sample:
56
|
||
interim_release_upgrade_period_in_days
integer
|
on success |
Defines auto upgrade period for interim releases. This period must be shorter or equal to bundle release upgrade period.
Sample:
56
|
||
is_interim_release_auto_upgrade_enabled
boolean
|
on success |
By default auto upgrade for interim releases are not enabled. If auto-upgrade is enabled for interim release, you have to specify interimReleaseUpgradePeriodInDays too.
Sample:
True
|
||
major_release_upgrade_period_in_days
integer
|
on success |
Defines auto upgrade period for major releases. Manually configured period cannot be longer than service defined period for major releases. Not passing this field during create will equate to using the service default.
Sample:
56
|
||
security_patch_upgrade_period_in_days
integer
|
on success |
Defines auto upgrade period for releases with security fix. Manually configured period cannot be longer than service defined period for security releases. Not passing this field during create will equate to using the service default.
Sample:
56
|
||
maintenance_window
complex
|
on success |
|
||
day
string
|
on success |
Days of the week.
Sample:
MONDAY
|
||
start_hour
integer
|
on success |
Start hour for maintenance period. Hour is in UTC.
Sample:
56
|
||
next_maintenance_action_type
string
|
on success |
Type of the next maintenance.
Sample:
UPGRADE
|
||
next_maintenance_description
string
|
on success |
Description of the next maintenance.
Sample:
next_maintenance_description_example
|
||
nsg_ids
list
/ elements=string
|
on success |
An array of Network Security Group OCIDs used to define network access for either Deployments or Connections.
|
||
ogg_data
complex
|
on success |
|
||
admin_username
string
|
on success |
The GoldenGate deployment console username.
Sample:
admin_username_example
|
||
certificate
string
|
on success |
A PEM-encoded SSL certificate.
Sample:
-----BEGIN CERTIFICATE----MIIBIjANBgkqhkiG9w0BA..-----END PUBLIC KEY-----
|
||
credential_store
string
|
on success |
The type of credential store for OGG.
Sample:
GOLDENGATE
|
||
deployment_name
string
|
on success |
The name given to the GoldenGate service deployment. The name must be 1 to 32 characters long, must contain only alphanumeric characters and must start with a letter.
Sample:
deployment_name_example
|
||
identity_domain_id
string
|
on success |
The OCID of the Identity Domain when IAM credential store is used.
Sample:
ocid1.identitydomain.oc1..xxxxxxEXAMPLExxxxxx
|
||
ogg_version
string
|
on success |
Version of OGG
Sample:
ogg_version_example
|
||
password_secret_id
string
|
on success |
The OCID of the Secret where the deployment password is stored.
Sample:
ocid1.passwordsecret.oc1..xxxxxxEXAMPLExxxxxx
|
||
private_ip_address
string
|
on success |
The private IP address in the customer's VCN representing the access point for the associated endpoint service in the GoldenGate service VCN.
Sample:
private_ip_address_example
|
||
public_ip_address
string
|
on success |
The public IP address representing the access point for the Deployment.
Sample:
public_ip_address_example
|
||
storage_utilization_in_bytes
integer
|
on success |
The amount of storage being utilized (in bytes)
Sample:
56
|
||
subnet_id
string
|
on success |
The OCID of the subnet being referenced.
Sample:
ocid1.subnet.oc1..xxxxxxEXAMPLExxxxxx
|
||
system_tags
dictionary
|
on success |
The system tags associated with this resource, if any. The system tags are set by Oracle Cloud Infrastructure services. Each key is predefined and scoped to namespaces. For more information, see Resource Tags.
Example: `{orcl-cloud: {free-tier-retain: true}}`
|
||
time_created
string
|
on success |
The time the resource was created. The format is defined by RFC3339, such as `2016-08-25T21:10:29.600Z`.
Sample:
2013-10-20T19:20:30+01:00
|
||
time_of_next_maintenance
string
|
on success |
The time of next maintenance schedule. The format is defined by RFC3339, such as `2016-08-25T21:10:29.600Z`.
Sample:
2013-10-20T19:20:30+01:00
|
||
time_ogg_version_supported_until
string
|
on success |
The time until OGG version is supported. After this date has passed OGG version will not be available anymore. The format is defined by RFC3339, such as `2016-08-25T21:10:29.600Z`.
Sample:
2013-10-20T19:20:30+01:00
|
||
time_updated
string
|
on success |
The time the resource was last updated. The format is defined by RFC3339, such as `2016-08-25T21:10:29.600Z`.
Sample:
2013-10-20T19:20:30+01:00
|
||
time_upgrade_required
string
|
on success |
Note: Deprecated: Use timeOfNextMaintenance instead, or related upgrade records to check, when deployment will be forced to upgrade to a newer version. Old description: The date the existing version in use will no longer be considered as usable and an upgrade will be required. This date is typically 6 months after the version was released for use by GGS. The format is defined by RFC3339, such as `2016-08-25T21:10:29.600Z`.
Sample:
2013-10-20T19:20:30+01:00
|
||
deployment_wallet_exists_response_details
complex
|
on success |
Details of the Deployment resource acted upon by the current operation
Sample:
{'is_ogg_wallet_exists': True}
|
||
is_ogg_wallet_exists
boolean
|
on success |
Indicates if the wallet is present in the deployment container
Sample:
True
|
Authors¶
Oracle (@oracle)