<gh_stars>1-10
# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from .. import _utilities

__all__ = ['DataGuardAssociationArgs', 'DataGuardAssociation']

@pulumi.input_type
class DataGuardAssociationArgs:
    def __init__(__self__, *,
                 creation_type: pulumi.Input[str],
                 database_admin_password: pulumi.Input[str],
                 database_id: pulumi.Input[str],
                 delete_standby_db_home_on_delete: pulumi.Input[str],
                 protection_mode: pulumi.Input[str],
                 transport_type: pulumi.Input[str],
                 availability_domain: Optional[pulumi.Input[str]] = None,
                 backup_network_nsg_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 create_async: Optional[pulumi.Input[bool]] = None,
                 database_software_image_id: Optional[pulumi.Input[str]] = None,
                 display_name: Optional[pulumi.Input[str]] = None,
                 hostname: Optional[pulumi.Input[str]] = None,
                 nsg_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 peer_db_home_id: Optional[pulumi.Input[str]] = None,
                 peer_db_system_id: Optional[pulumi.Input[str]] = None,
                 peer_vm_cluster_id: Optional[pulumi.Input[str]] = None,
                 shape: Optional[pulumi.Input[str]] = None,
                 subnet_id: Optional[pulumi.Input[str]] = None):
        """
        The set of arguments for constructing a DataGuardAssociation resource.
        :param pulumi.Input[str] creation_type: Specifies whether to create the peer database in an existing DB system or in a new DB system.
        :param pulumi.Input[str] database_admin_password: (Updatable) A strong password for the `SYS`, `SYSTEM`, and `PDB Admin` users to apply during standby creation.
        :param pulumi.Input[str] database_id: The database [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        :param pulumi.Input[str] protection_mode: (Updatable) The protection mode to set up between the primary and standby databases. For more information, see [Oracle Data Guard Protection Modes](http://docs.oracle.com/database/122/SBYDB/oracle-data-guard-protection-modes.htm#SBYDB02000) in the Oracle Data Guard documentation.
        :param pulumi.Input[str] transport_type: (Updatable) The redo transport type to use for this Data Guard association.  Valid values depend on the specified `protectionMode`:
               * MAXIMUM_AVAILABILITY - SYNC or FASTSYNC
               * MAXIMUM_PERFORMANCE - ASYNC
               * MAXIMUM_PROTECTION - SYNC
        :param pulumi.Input[str] availability_domain: The name of the availability domain that the standby database DB system will be located in. For example- "Uocm:PHX-AD-1".
        :param pulumi.Input[Sequence[pulumi.Input[str]]] backup_network_nsg_ids: A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that the backup network of this DB system belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). Applicable only to Exadata systems.
        :param pulumi.Input[str] database_software_image_id: The database software image [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). Applicable only when creationType=`ExistingDbSystem` and when the existing database has Exadata shape.
        :param pulumi.Input[str] display_name: The user-friendly name of the DB system that will contain the the standby database. The display name does not have to be unique.
        :param pulumi.Input[str] hostname: The hostname for the DB node.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] nsg_ids: A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that this resource belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). **NsgIds restrictions:**
               * Autonomous Databases with private access require at least 1 Network Security Group (NSG). The nsgIds array cannot be empty.
        :param pulumi.Input[str] peer_db_home_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB home in which to create the standby database. You must supply this value to create standby database with an existing DB home
        :param pulumi.Input[str] peer_db_system_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB system in which to create the standby database. You must supply this value if creationType is `ExistingDbSystem`.
        :param pulumi.Input[str] peer_vm_cluster_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VM Cluster in which to create the standby database. You must supply this value if creationType is `ExistingVmCluster`.
        :param pulumi.Input[str] shape: The virtual machine DB system shape to launch for the standby database in the Data Guard association. The shape determines the number of CPU cores and the amount of memory available for the DB system. Only virtual machine shapes are valid options. If you do not supply this parameter, the default shape is the shape of the primary DB system.
        :param pulumi.Input[str] subnet_id: The OCID of the subnet the DB system is associated with. **Subnet Restrictions:**
               * For 1- and 2-node RAC DB systems, do not use a subnet that overlaps with 192.168.16.16/28
        """
        pulumi.set(__self__, "creation_type", creation_type)
        pulumi.set(__self__, "database_admin_password", database_admin_password)
        pulumi.set(__self__, "database_id", database_id)
        pulumi.set(__self__, "delete_standby_db_home_on_delete", delete_standby_db_home_on_delete)
        pulumi.set(__self__, "protection_mode", protection_mode)
        pulumi.set(__self__, "transport_type", transport_type)
        if availability_domain is not None:
            pulumi.set(__self__, "availability_domain", availability_domain)
        if backup_network_nsg_ids is not None:
            pulumi.set(__self__, "backup_network_nsg_ids", backup_network_nsg_ids)
        if create_async is not None:
            pulumi.set(__self__, "create_async", create_async)
        if database_software_image_id is not None:
            pulumi.set(__self__, "database_software_image_id", database_software_image_id)
        if display_name is not None:
            pulumi.set(__self__, "display_name", display_name)
        if hostname is not None:
            pulumi.set(__self__, "hostname", hostname)
        if nsg_ids is not None:
            pulumi.set(__self__, "nsg_ids", nsg_ids)
        if peer_db_home_id is not None:
            pulumi.set(__self__, "peer_db_home_id", peer_db_home_id)
        if peer_db_system_id is not None:
            pulumi.set(__self__, "peer_db_system_id", peer_db_system_id)
        if peer_vm_cluster_id is not None:
            pulumi.set(__self__, "peer_vm_cluster_id", peer_vm_cluster_id)
        if shape is not None:
            pulumi.set(__self__, "shape", shape)
        if subnet_id is not None:
            pulumi.set(__self__, "subnet_id", subnet_id)

    @property
    @pulumi.getter(name="creationType")
    def creation_type(self) -> pulumi.Input[str]:
        """
        Specifies whether to create the peer database in an existing DB system or in a new DB system.
        """
        return pulumi.get(self, "creation_type")

    @creation_type.setter
    def creation_type(self, value: pulumi.Input[str]):
        pulumi.set(self, "creation_type", value)

    @property
    @pulumi.getter(name="databaseAdminPassword")
    def database_admin_password(self) -> pulumi.Input[str]:
        """
        (Updatable) A strong password for the `SYS`, `SYSTEM`, and `PDB Admin` users to apply during standby creation.
        """
        return pulumi.get(self, "database_admin_password")

    @database_admin_password.setter
    def database_admin_password(self, value: pulumi.Input[str]):
        pulumi.set(self, "database_admin_password", value)

    @property
    @pulumi.getter(name="databaseId")
    def database_id(self) -> pulumi.Input[str]:
        """
        The database [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        """
        return pulumi.get(self, "database_id")

    @database_id.setter
    def database_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "database_id", value)

    @property
    @pulumi.getter(name="deleteStandbyDbHomeOnDelete")
    def delete_standby_db_home_on_delete(self) -> pulumi.Input[str]:
        return pulumi.get(self, "delete_standby_db_home_on_delete")

    @delete_standby_db_home_on_delete.setter
    def delete_standby_db_home_on_delete(self, value: pulumi.Input[str]):
        pulumi.set(self, "delete_standby_db_home_on_delete", value)

    @property
    @pulumi.getter(name="protectionMode")
    def protection_mode(self) -> pulumi.Input[str]:
        """
        (Updatable) The protection mode to set up between the primary and standby databases. For more information, see [Oracle Data Guard Protection Modes](http://docs.oracle.com/database/122/SBYDB/oracle-data-guard-protection-modes.htm#SBYDB02000) in the Oracle Data Guard documentation.
        """
        return pulumi.get(self, "protection_mode")

    @protection_mode.setter
    def protection_mode(self, value: pulumi.Input[str]):
        pulumi.set(self, "protection_mode", value)

    @property
    @pulumi.getter(name="transportType")
    def transport_type(self) -> pulumi.Input[str]:
        """
        (Updatable) The redo transport type to use for this Data Guard association.  Valid values depend on the specified `protectionMode`:
        * MAXIMUM_AVAILABILITY - SYNC or FASTSYNC
        * MAXIMUM_PERFORMANCE - ASYNC
        * MAXIMUM_PROTECTION - SYNC
        """
        return pulumi.get(self, "transport_type")

    @transport_type.setter
    def transport_type(self, value: pulumi.Input[str]):
        pulumi.set(self, "transport_type", value)

    @property
    @pulumi.getter(name="availabilityDomain")
    def availability_domain(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the availability domain that the standby database DB system will be located in. For example- "Uocm:PHX-AD-1".
        """
        return pulumi.get(self, "availability_domain")

    @availability_domain.setter
    def availability_domain(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "availability_domain", value)

    @property
    @pulumi.getter(name="backupNetworkNsgIds")
    def backup_network_nsg_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that the backup network of this DB system belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). Applicable only to Exadata systems.
        """
        return pulumi.get(self, "backup_network_nsg_ids")

    @backup_network_nsg_ids.setter
    def backup_network_nsg_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "backup_network_nsg_ids", value)

    @property
    @pulumi.getter(name="createAsync")
    def create_async(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "create_async")

    @create_async.setter
    def create_async(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "create_async", value)

    @property
    @pulumi.getter(name="databaseSoftwareImageId")
    def database_software_image_id(self) -> Optional[pulumi.Input[str]]:
        """
        The database software image [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). Applicable only when creationType=`ExistingDbSystem` and when the existing database has Exadata shape.
        """
        return pulumi.get(self, "database_software_image_id")

    @database_software_image_id.setter
    def database_software_image_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "database_software_image_id", value)

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> Optional[pulumi.Input[str]]:
        """
        The user-friendly name of the DB system that will contain the the standby database. The display name does not have to be unique.
        """
        return pulumi.get(self, "display_name")

    @display_name.setter
    def display_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "display_name", value)

    @property
    @pulumi.getter
    def hostname(self) -> Optional[pulumi.Input[str]]:
        """
        The hostname for the DB node.
        """
        return pulumi.get(self, "hostname")

    @hostname.setter
    def hostname(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "hostname", value)

    @property
    @pulumi.getter(name="nsgIds")
    def nsg_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that this resource belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). **NsgIds restrictions:**
        * Autonomous Databases with private access require at least 1 Network Security Group (NSG). The nsgIds array cannot be empty.
        """
        return pulumi.get(self, "nsg_ids")

    @nsg_ids.setter
    def nsg_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "nsg_ids", value)

    @property
    @pulumi.getter(name="peerDbHomeId")
    def peer_db_home_id(self) -> Optional[pulumi.Input[str]]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB home in which to create the standby database. You must supply this value to create standby database with an existing DB home
        """
        return pulumi.get(self, "peer_db_home_id")

    @peer_db_home_id.setter
    def peer_db_home_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "peer_db_home_id", value)

    @property
    @pulumi.getter(name="peerDbSystemId")
    def peer_db_system_id(self) -> Optional[pulumi.Input[str]]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB system in which to create the standby database. You must supply this value if creationType is `ExistingDbSystem`.
        """
        return pulumi.get(self, "peer_db_system_id")

    @peer_db_system_id.setter
    def peer_db_system_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "peer_db_system_id", value)

    @property
    @pulumi.getter(name="peerVmClusterId")
    def peer_vm_cluster_id(self) -> Optional[pulumi.Input[str]]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VM Cluster in which to create the standby database. You must supply this value if creationType is `ExistingVmCluster`.
        """
        return pulumi.get(self, "peer_vm_cluster_id")

    @peer_vm_cluster_id.setter
    def peer_vm_cluster_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "peer_vm_cluster_id", value)

    @property
    @pulumi.getter
    def shape(self) -> Optional[pulumi.Input[str]]:
        """
        The virtual machine DB system shape to launch for the standby database in the Data Guard association. The shape determines the number of CPU cores and the amount of memory available for the DB system. Only virtual machine shapes are valid options. If you do not supply this parameter, the default shape is the shape of the primary DB system.
        """
        return pulumi.get(self, "shape")

    @shape.setter
    def shape(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "shape", value)

    @property
    @pulumi.getter(name="subnetId")
    def subnet_id(self) -> Optional[pulumi.Input[str]]:
        """
        The OCID of the subnet the DB system is associated with. **Subnet Restrictions:**
        * For 1- and 2-node RAC DB systems, do not use a subnet that overlaps with 192.168.16.16/28
        """
        return pulumi.get(self, "subnet_id")

    @subnet_id.setter
    def subnet_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "subnet_id", value)


@pulumi.input_type
class _DataGuardAssociationState:
    def __init__(__self__, *,
                 apply_lag: Optional[pulumi.Input[str]] = None,
                 apply_rate: Optional[pulumi.Input[str]] = None,
                 availability_domain: Optional[pulumi.Input[str]] = None,
                 backup_network_nsg_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 create_async: Optional[pulumi.Input[bool]] = None,
                 creation_type: Optional[pulumi.Input[str]] = None,
                 database_admin_password: Optional[pulumi.Input[str]] = None,
                 database_id: Optional[pulumi.Input[str]] = None,
                 database_software_image_id: Optional[pulumi.Input[str]] = None,
                 delete_standby_db_home_on_delete: Optional[pulumi.Input[str]] = None,
                 display_name: Optional[pulumi.Input[str]] = None,
                 hostname: Optional[pulumi.Input[str]] = None,
                 lifecycle_details: Optional[pulumi.Input[str]] = None,
                 nsg_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 peer_data_guard_association_id: Optional[pulumi.Input[str]] = None,
                 peer_database_id: Optional[pulumi.Input[str]] = None,
                 peer_db_home_id: Optional[pulumi.Input[str]] = None,
                 peer_db_system_id: Optional[pulumi.Input[str]] = None,
                 peer_role: Optional[pulumi.Input[str]] = None,
                 peer_vm_cluster_id: Optional[pulumi.Input[str]] = None,
                 protection_mode: Optional[pulumi.Input[str]] = None,
                 role: Optional[pulumi.Input[str]] = None,
                 shape: Optional[pulumi.Input[str]] = None,
                 state: Optional[pulumi.Input[str]] = None,
                 subnet_id: Optional[pulumi.Input[str]] = None,
                 time_created: Optional[pulumi.Input[str]] = None,
                 transport_type: Optional[pulumi.Input[str]] = None):
        """
        Input properties used for looking up and filtering DataGuardAssociation resources.
        :param pulumi.Input[str] apply_lag: The lag time between updates to the primary database and application of the redo data on the standby database, as computed by the reporting database.  Example: `9 seconds`
        :param pulumi.Input[str] apply_rate: The rate at which redo logs are synced between the associated databases.  Example: `180 Mb per second`
        :param pulumi.Input[str] availability_domain: The name of the availability domain that the standby database DB system will be located in. For example- "Uocm:PHX-AD-1".
        :param pulumi.Input[Sequence[pulumi.Input[str]]] backup_network_nsg_ids: A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that the backup network of this DB system belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). Applicable only to Exadata systems.
        :param pulumi.Input[str] creation_type: Specifies whether to create the peer database in an existing DB system or in a new DB system.
        :param pulumi.Input[str] database_admin_password: (Updatable) A strong password for the `SYS`, `SYSTEM`, and `PDB Admin` users to apply during standby creation.
        :param pulumi.Input[str] database_id: The database [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        :param pulumi.Input[str] database_software_image_id: The database software image [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). Applicable only when creationType=`ExistingDbSystem` and when the existing database has Exadata shape.
        :param pulumi.Input[str] display_name: The user-friendly name of the DB system that will contain the the standby database. The display name does not have to be unique.
        :param pulumi.Input[str] hostname: The hostname for the DB node.
        :param pulumi.Input[str] lifecycle_details: Additional information about the current lifecycleState, if available.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] nsg_ids: A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that this resource belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). **NsgIds restrictions:**
               * Autonomous Databases with private access require at least 1 Network Security Group (NSG). The nsgIds array cannot be empty.
        :param pulumi.Input[str] peer_data_guard_association_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the peer database's Data Guard association.
        :param pulumi.Input[str] peer_database_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the associated peer database.
        :param pulumi.Input[str] peer_db_home_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB home in which to create the standby database. You must supply this value to create standby database with an existing DB home
        :param pulumi.Input[str] peer_db_system_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB system in which to create the standby database. You must supply this value if creationType is `ExistingDbSystem`.
        :param pulumi.Input[str] peer_role: The role of the peer database in this Data Guard association.
        :param pulumi.Input[str] peer_vm_cluster_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VM Cluster in which to create the standby database. You must supply this value if creationType is `ExistingVmCluster`.
        :param pulumi.Input[str] protection_mode: (Updatable) The protection mode to set up between the primary and standby databases. For more information, see [Oracle Data Guard Protection Modes](http://docs.oracle.com/database/122/SBYDB/oracle-data-guard-protection-modes.htm#SBYDB02000) in the Oracle Data Guard documentation.
        :param pulumi.Input[str] role: The role of the reporting database in this Data Guard association.
        :param pulumi.Input[str] shape: The virtual machine DB system shape to launch for the standby database in the Data Guard association. The shape determines the number of CPU cores and the amount of memory available for the DB system. Only virtual machine shapes are valid options. If you do not supply this parameter, the default shape is the shape of the primary DB system.
        :param pulumi.Input[str] state: The current state of the Data Guard association.
        :param pulumi.Input[str] subnet_id: The OCID of the subnet the DB system is associated with. **Subnet Restrictions:**
               * For 1- and 2-node RAC DB systems, do not use a subnet that overlaps with 192.168.16.16/28
        :param pulumi.Input[str] time_created: The date and time the Data Guard association was created.
        :param pulumi.Input[str] transport_type: (Updatable) The redo transport type to use for this Data Guard association.  Valid values depend on the specified `protectionMode`:
               * MAXIMUM_AVAILABILITY - SYNC or FASTSYNC
               * MAXIMUM_PERFORMANCE - ASYNC
               * MAXIMUM_PROTECTION - SYNC
        """
        if apply_lag is not None:
            pulumi.set(__self__, "apply_lag", apply_lag)
        if apply_rate is not None:
            pulumi.set(__self__, "apply_rate", apply_rate)
        if availability_domain is not None:
            pulumi.set(__self__, "availability_domain", availability_domain)
        if backup_network_nsg_ids is not None:
            pulumi.set(__self__, "backup_network_nsg_ids", backup_network_nsg_ids)
        if create_async is not None:
            pulumi.set(__self__, "create_async", create_async)
        if creation_type is not None:
            pulumi.set(__self__, "creation_type", creation_type)
        if database_admin_password is not None:
            pulumi.set(__self__, "database_admin_password", database_admin_password)
        if database_id is not None:
            pulumi.set(__self__, "database_id", database_id)
        if database_software_image_id is not None:
            pulumi.set(__self__, "database_software_image_id", database_software_image_id)
        if delete_standby_db_home_on_delete is not None:
            pulumi.set(__self__, "delete_standby_db_home_on_delete", delete_standby_db_home_on_delete)
        if display_name is not None:
            pulumi.set(__self__, "display_name", display_name)
        if hostname is not None:
            pulumi.set(__self__, "hostname", hostname)
        if lifecycle_details is not None:
            pulumi.set(__self__, "lifecycle_details", lifecycle_details)
        if nsg_ids is not None:
            pulumi.set(__self__, "nsg_ids", nsg_ids)
        if peer_data_guard_association_id is not None:
            pulumi.set(__self__, "peer_data_guard_association_id", peer_data_guard_association_id)
        if peer_database_id is not None:
            pulumi.set(__self__, "peer_database_id", peer_database_id)
        if peer_db_home_id is not None:
            pulumi.set(__self__, "peer_db_home_id", peer_db_home_id)
        if peer_db_system_id is not None:
            pulumi.set(__self__, "peer_db_system_id", peer_db_system_id)
        if peer_role is not None:
            pulumi.set(__self__, "peer_role", peer_role)
        if peer_vm_cluster_id is not None:
            pulumi.set(__self__, "peer_vm_cluster_id", peer_vm_cluster_id)
        if protection_mode is not None:
            pulumi.set(__self__, "protection_mode", protection_mode)
        if role is not None:
            pulumi.set(__self__, "role", role)
        if shape is not None:
            pulumi.set(__self__, "shape", shape)
        if state is not None:
            pulumi.set(__self__, "state", state)
        if subnet_id is not None:
            pulumi.set(__self__, "subnet_id", subnet_id)
        if time_created is not None:
            pulumi.set(__self__, "time_created", time_created)
        if transport_type is not None:
            pulumi.set(__self__, "transport_type", transport_type)

    @property
    @pulumi.getter(name="applyLag")
    def apply_lag(self) -> Optional[pulumi.Input[str]]:
        """
        The lag time between updates to the primary database and application of the redo data on the standby database, as computed by the reporting database.  Example: `9 seconds`
        """
        return pulumi.get(self, "apply_lag")

    @apply_lag.setter
    def apply_lag(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "apply_lag", value)

    @property
    @pulumi.getter(name="applyRate")
    def apply_rate(self) -> Optional[pulumi.Input[str]]:
        """
        The rate at which redo logs are synced between the associated databases.  Example: `180 Mb per second`
        """
        return pulumi.get(self, "apply_rate")

    @apply_rate.setter
    def apply_rate(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "apply_rate", value)

    @property
    @pulumi.getter(name="availabilityDomain")
    def availability_domain(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the availability domain that the standby database DB system will be located in. For example- "Uocm:PHX-AD-1".
        """
        return pulumi.get(self, "availability_domain")

    @availability_domain.setter
    def availability_domain(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "availability_domain", value)

    @property
    @pulumi.getter(name="backupNetworkNsgIds")
    def backup_network_nsg_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that the backup network of this DB system belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). Applicable only to Exadata systems.
        """
        return pulumi.get(self, "backup_network_nsg_ids")

    @backup_network_nsg_ids.setter
    def backup_network_nsg_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "backup_network_nsg_ids", value)

    @property
    @pulumi.getter(name="createAsync")
    def create_async(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "create_async")

    @create_async.setter
    def create_async(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "create_async", value)

    @property
    @pulumi.getter(name="creationType")
    def creation_type(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies whether to create the peer database in an existing DB system or in a new DB system.
        """
        return pulumi.get(self, "creation_type")

    @creation_type.setter
    def creation_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "creation_type", value)

    @property
    @pulumi.getter(name="databaseAdminPassword")
    def database_admin_password(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) A strong password for the `SYS`, `SYSTEM`, and `PDB Admin` users to apply during standby creation.
        """
        return pulumi.get(self, "database_admin_password")

    @database_admin_password.setter
    def database_admin_password(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "database_admin_password", value)

    @property
    @pulumi.getter(name="databaseId")
    def database_id(self) -> Optional[pulumi.Input[str]]:
        """
        The database [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        """
        return pulumi.get(self, "database_id")

    @database_id.setter
    def database_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "database_id", value)

    @property
    @pulumi.getter(name="databaseSoftwareImageId")
    def database_software_image_id(self) -> Optional[pulumi.Input[str]]:
        """
        The database software image [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). Applicable only when creationType=`ExistingDbSystem` and when the existing database has Exadata shape.
        """
        return pulumi.get(self, "database_software_image_id")

    @database_software_image_id.setter
    def database_software_image_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "database_software_image_id", value)

    @property
    @pulumi.getter(name="deleteStandbyDbHomeOnDelete")
    def delete_standby_db_home_on_delete(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "delete_standby_db_home_on_delete")

    @delete_standby_db_home_on_delete.setter
    def delete_standby_db_home_on_delete(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "delete_standby_db_home_on_delete", value)

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> Optional[pulumi.Input[str]]:
        """
        The user-friendly name of the DB system that will contain the the standby database. The display name does not have to be unique.
        """
        return pulumi.get(self, "display_name")

    @display_name.setter
    def display_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "display_name", value)

    @property
    @pulumi.getter
    def hostname(self) -> Optional[pulumi.Input[str]]:
        """
        The hostname for the DB node.
        """
        return pulumi.get(self, "hostname")

    @hostname.setter
    def hostname(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "hostname", value)

    @property
    @pulumi.getter(name="lifecycleDetails")
    def lifecycle_details(self) -> Optional[pulumi.Input[str]]:
        """
        Additional information about the current lifecycleState, if available.
        """
        return pulumi.get(self, "lifecycle_details")

    @lifecycle_details.setter
    def lifecycle_details(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "lifecycle_details", value)

    @property
    @pulumi.getter(name="nsgIds")
    def nsg_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that this resource belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). **NsgIds restrictions:**
        * Autonomous Databases with private access require at least 1 Network Security Group (NSG). The nsgIds array cannot be empty.
        """
        return pulumi.get(self, "nsg_ids")

    @nsg_ids.setter
    def nsg_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "nsg_ids", value)

    @property
    @pulumi.getter(name="peerDataGuardAssociationId")
    def peer_data_guard_association_id(self) -> Optional[pulumi.Input[str]]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the peer database's Data Guard association.
        """
        return pulumi.get(self, "peer_data_guard_association_id")

    @peer_data_guard_association_id.setter
    def peer_data_guard_association_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "peer_data_guard_association_id", value)

    @property
    @pulumi.getter(name="peerDatabaseId")
    def peer_database_id(self) -> Optional[pulumi.Input[str]]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the associated peer database.
        """
        return pulumi.get(self, "peer_database_id")

    @peer_database_id.setter
    def peer_database_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "peer_database_id", value)

    @property
    @pulumi.getter(name="peerDbHomeId")
    def peer_db_home_id(self) -> Optional[pulumi.Input[str]]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB home in which to create the standby database. You must supply this value to create standby database with an existing DB home
        """
        return pulumi.get(self, "peer_db_home_id")

    @peer_db_home_id.setter
    def peer_db_home_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "peer_db_home_id", value)

    @property
    @pulumi.getter(name="peerDbSystemId")
    def peer_db_system_id(self) -> Optional[pulumi.Input[str]]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB system in which to create the standby database. You must supply this value if creationType is `ExistingDbSystem`.
        """
        return pulumi.get(self, "peer_db_system_id")

    @peer_db_system_id.setter
    def peer_db_system_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "peer_db_system_id", value)

    @property
    @pulumi.getter(name="peerRole")
    def peer_role(self) -> Optional[pulumi.Input[str]]:
        """
        The role of the peer database in this Data Guard association.
        """
        return pulumi.get(self, "peer_role")

    @peer_role.setter
    def peer_role(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "peer_role", value)

    @property
    @pulumi.getter(name="peerVmClusterId")
    def peer_vm_cluster_id(self) -> Optional[pulumi.Input[str]]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VM Cluster in which to create the standby database. You must supply this value if creationType is `ExistingVmCluster`.
        """
        return pulumi.get(self, "peer_vm_cluster_id")

    @peer_vm_cluster_id.setter
    def peer_vm_cluster_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "peer_vm_cluster_id", value)

    @property
    @pulumi.getter(name="protectionMode")
    def protection_mode(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) The protection mode to set up between the primary and standby databases. For more information, see [Oracle Data Guard Protection Modes](http://docs.oracle.com/database/122/SBYDB/oracle-data-guard-protection-modes.htm#SBYDB02000) in the Oracle Data Guard documentation.
        """
        return pulumi.get(self, "protection_mode")

    @protection_mode.setter
    def protection_mode(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "protection_mode", value)

    @property
    @pulumi.getter
    def role(self) -> Optional[pulumi.Input[str]]:
        """
        The role of the reporting database in this Data Guard association.
        """
        return pulumi.get(self, "role")

    @role.setter
    def role(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "role", value)

    @property
    @pulumi.getter
    def shape(self) -> Optional[pulumi.Input[str]]:
        """
        The virtual machine DB system shape to launch for the standby database in the Data Guard association. The shape determines the number of CPU cores and the amount of memory available for the DB system. Only virtual machine shapes are valid options. If you do not supply this parameter, the default shape is the shape of the primary DB system.
        """
        return pulumi.get(self, "shape")

    @shape.setter
    def shape(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "shape", value)

    @property
    @pulumi.getter
    def state(self) -> Optional[pulumi.Input[str]]:
        """
        The current state of the Data Guard association.
        """
        return pulumi.get(self, "state")

    @state.setter
    def state(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "state", value)

    @property
    @pulumi.getter(name="subnetId")
    def subnet_id(self) -> Optional[pulumi.Input[str]]:
        """
        The OCID of the subnet the DB system is associated with. **Subnet Restrictions:**
        * For 1- and 2-node RAC DB systems, do not use a subnet that overlaps with 192.168.16.16/28
        """
        return pulumi.get(self, "subnet_id")

    @subnet_id.setter
    def subnet_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "subnet_id", value)

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> Optional[pulumi.Input[str]]:
        """
        The date and time the Data Guard association was created.
        """
        return pulumi.get(self, "time_created")

    @time_created.setter
    def time_created(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "time_created", value)

    @property
    @pulumi.getter(name="transportType")
    def transport_type(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) The redo transport type to use for this Data Guard association.  Valid values depend on the specified `protectionMode`:
        * MAXIMUM_AVAILABILITY - SYNC or FASTSYNC
        * MAXIMUM_PERFORMANCE - ASYNC
        * MAXIMUM_PROTECTION - SYNC
        """
        return pulumi.get(self, "transport_type")

    @transport_type.setter
    def transport_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "transport_type", value)


class DataGuardAssociation(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 availability_domain: Optional[pulumi.Input[str]] = None,
                 backup_network_nsg_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 create_async: Optional[pulumi.Input[bool]] = None,
                 creation_type: Optional[pulumi.Input[str]] = None,
                 database_admin_password: Optional[pulumi.Input[str]] = None,
                 database_id: Optional[pulumi.Input[str]] = None,
                 database_software_image_id: Optional[pulumi.Input[str]] = None,
                 delete_standby_db_home_on_delete: Optional[pulumi.Input[str]] = None,
                 display_name: Optional[pulumi.Input[str]] = None,
                 hostname: Optional[pulumi.Input[str]] = None,
                 nsg_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 peer_db_home_id: Optional[pulumi.Input[str]] = None,
                 peer_db_system_id: Optional[pulumi.Input[str]] = None,
                 peer_vm_cluster_id: Optional[pulumi.Input[str]] = None,
                 protection_mode: Optional[pulumi.Input[str]] = None,
                 shape: Optional[pulumi.Input[str]] = None,
                 subnet_id: Optional[pulumi.Input[str]] = None,
                 transport_type: Optional[pulumi.Input[str]] = None,
                 __props__=None):
        """
        This resource provides the Data Guard Association resource in Oracle Cloud Infrastructure Database service.

        Creates a new Data Guard association.  A Data Guard association represents the replication relationship between the
        specified database and a peer database. For more information, see [Using Oracle Data Guard](https://docs.cloud.oracle.com/iaas/Content/Database/Tasks/usingdataguard.htm).

        All Oracle Cloud Infrastructure resources, including Data Guard associations, get an Oracle-assigned, unique ID
        called an Oracle Cloud Identifier (OCID). When you create a resource, you can find its OCID in the response.
        You can also retrieve a resource's OCID by using a List API operation on that resource type, or by viewing the
        resource in the Console. For more information, see
        [Resource Identifiers](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).

        ## Example Usage

        ```python
        import pulumi
        import pulumi_oci as oci

        test_data_guard_association = oci.database.DataGuardAssociation("testDataGuardAssociation",
            creation_type=var["data_guard_association_creation_type"],
            database_admin_password=var["data_guard_association_database_admin_password"],
            database_id=oci_database_database["test_database"]["id"],
            delete_standby_db_home_on_delete=var["data_guard_association_delete_standby_db_home_on_delete"],
            protection_mode=var["data_guard_association_protection_mode"],
            transport_type=var["data_guard_association_transport_type"],
            availability_domain=var["data_guard_association_availability_domain"],
            backup_network_nsg_ids=var["data_guard_association_backup_network_nsg_ids"],
            database_software_image_id=oci_database_database_software_image["test_database_software_image"]["id"],
            display_name=var["data_guard_association_display_name"],
            hostname=var["data_guard_association_hostname"],
            nsg_ids=var["data_guard_association_nsg_ids"],
            peer_db_home_id=oci_database_db_home["test_db_home"]["id"],
            peer_db_system_id=oci_database_db_system["test_db_system"]["id"],
            peer_vm_cluster_id=oci_database_vm_cluster["test_vm_cluster"]["id"],
            shape=var["data_guard_association_shape"],
            subnet_id=oci_core_subnet["test_subnet"]["id"])
        ```

        ## Import

        Import is not supported for this resource.

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[str] availability_domain: The name of the availability domain that the standby database DB system will be located in. For example- "Uocm:PHX-AD-1".
        :param pulumi.Input[Sequence[pulumi.Input[str]]] backup_network_nsg_ids: A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that the backup network of this DB system belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). Applicable only to Exadata systems.
        :param pulumi.Input[str] creation_type: Specifies whether to create the peer database in an existing DB system or in a new DB system.
        :param pulumi.Input[str] database_admin_password: (Updatable) A strong password for the `SYS`, `SYSTEM`, and `PDB Admin` users to apply during standby creation.
        :param pulumi.Input[str] database_id: The database [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        :param pulumi.Input[str] database_software_image_id: The database software image [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). Applicable only when creationType=`ExistingDbSystem` and when the existing database has Exadata shape.
        :param pulumi.Input[str] display_name: The user-friendly name of the DB system that will contain the the standby database. The display name does not have to be unique.
        :param pulumi.Input[str] hostname: The hostname for the DB node.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] nsg_ids: A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that this resource belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). **NsgIds restrictions:**
               * Autonomous Databases with private access require at least 1 Network Security Group (NSG). The nsgIds array cannot be empty.
        :param pulumi.Input[str] peer_db_home_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB home in which to create the standby database. You must supply this value to create standby database with an existing DB home
        :param pulumi.Input[str] peer_db_system_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB system in which to create the standby database. You must supply this value if creationType is `ExistingDbSystem`.
        :param pulumi.Input[str] peer_vm_cluster_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VM Cluster in which to create the standby database. You must supply this value if creationType is `ExistingVmCluster`.
        :param pulumi.Input[str] protection_mode: (Updatable) The protection mode to set up between the primary and standby databases. For more information, see [Oracle Data Guard Protection Modes](http://docs.oracle.com/database/122/SBYDB/oracle-data-guard-protection-modes.htm#SBYDB02000) in the Oracle Data Guard documentation.
        :param pulumi.Input[str] shape: The virtual machine DB system shape to launch for the standby database in the Data Guard association. The shape determines the number of CPU cores and the amount of memory available for the DB system. Only virtual machine shapes are valid options. If you do not supply this parameter, the default shape is the shape of the primary DB system.
        :param pulumi.Input[str] subnet_id: The OCID of the subnet the DB system is associated with. **Subnet Restrictions:**
               * For 1- and 2-node RAC DB systems, do not use a subnet that overlaps with 192.168.16.16/28
        :param pulumi.Input[str] transport_type: (Updatable) The redo transport type to use for this Data Guard association.  Valid values depend on the specified `protectionMode`:
               * MAXIMUM_AVAILABILITY - SYNC or FASTSYNC
               * MAXIMUM_PERFORMANCE - ASYNC
               * MAXIMUM_PROTECTION - SYNC
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: DataGuardAssociationArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        This resource provides the Data Guard Association resource in Oracle Cloud Infrastructure Database service.

        Creates a new Data Guard association.  A Data Guard association represents the replication relationship between the
        specified database and a peer database. For more information, see [Using Oracle Data Guard](https://docs.cloud.oracle.com/iaas/Content/Database/Tasks/usingdataguard.htm).

        All Oracle Cloud Infrastructure resources, including Data Guard associations, get an Oracle-assigned, unique ID
        called an Oracle Cloud Identifier (OCID). When you create a resource, you can find its OCID in the response.
        You can also retrieve a resource's OCID by using a List API operation on that resource type, or by viewing the
        resource in the Console. For more information, see
        [Resource Identifiers](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).

        ## Example Usage

        ```python
        import pulumi
        import pulumi_oci as oci

        test_data_guard_association = oci.database.DataGuardAssociation("testDataGuardAssociation",
            creation_type=var["data_guard_association_creation_type"],
            database_admin_password=var["data_guard_association_database_admin_password"],
            database_id=oci_database_database["test_database"]["id"],
            delete_standby_db_home_on_delete=var["data_guard_association_delete_standby_db_home_on_delete"],
            protection_mode=var["data_guard_association_protection_mode"],
            transport_type=var["data_guard_association_transport_type"],
            availability_domain=var["data_guard_association_availability_domain"],
            backup_network_nsg_ids=var["data_guard_association_backup_network_nsg_ids"],
            database_software_image_id=oci_database_database_software_image["test_database_software_image"]["id"],
            display_name=var["data_guard_association_display_name"],
            hostname=var["data_guard_association_hostname"],
            nsg_ids=var["data_guard_association_nsg_ids"],
            peer_db_home_id=oci_database_db_home["test_db_home"]["id"],
            peer_db_system_id=oci_database_db_system["test_db_system"]["id"],
            peer_vm_cluster_id=oci_database_vm_cluster["test_vm_cluster"]["id"],
            shape=var["data_guard_association_shape"],
            subnet_id=oci_core_subnet["test_subnet"]["id"])
        ```

        ## Import

        Import is not supported for this resource.

        :param str resource_name: The name of the resource.
        :param DataGuardAssociationArgs args: The arguments to use to populate this resource's properties.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        ...
    def __init__(__self__, resource_name: str, *args, **kwargs):
        resource_args, opts = _utilities.get_resource_args_opts(DataGuardAssociationArgs, pulumi.ResourceOptions, *args, **kwargs)
        if resource_args is not None:
            __self__._internal_init(resource_name, opts, **resource_args.__dict__)
        else:
            __self__._internal_init(resource_name, *args, **kwargs)

    def _internal_init(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 availability_domain: Optional[pulumi.Input[str]] = None,
                 backup_network_nsg_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 create_async: Optional[pulumi.Input[bool]] = None,
                 creation_type: Optional[pulumi.Input[str]] = None,
                 database_admin_password: Optional[pulumi.Input[str]] = None,
                 database_id: Optional[pulumi.Input[str]] = None,
                 database_software_image_id: Optional[pulumi.Input[str]] = None,
                 delete_standby_db_home_on_delete: Optional[pulumi.Input[str]] = None,
                 display_name: Optional[pulumi.Input[str]] = None,
                 hostname: Optional[pulumi.Input[str]] = None,
                 nsg_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 peer_db_home_id: Optional[pulumi.Input[str]] = None,
                 peer_db_system_id: Optional[pulumi.Input[str]] = None,
                 peer_vm_cluster_id: Optional[pulumi.Input[str]] = None,
                 protection_mode: Optional[pulumi.Input[str]] = None,
                 shape: Optional[pulumi.Input[str]] = None,
                 subnet_id: Optional[pulumi.Input[str]] = None,
                 transport_type: Optional[pulumi.Input[str]] = None,
                 __props__=None):
        if opts is None:
            opts = pulumi.ResourceOptions()
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.version is None:
            opts.version = _utilities.get_version()
        if opts.id is None:
            if __props__ is not None:
                raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
            __props__ = DataGuardAssociationArgs.__new__(DataGuardAssociationArgs)

            __props__.__dict__["availability_domain"] = availability_domain
            __props__.__dict__["backup_network_nsg_ids"] = backup_network_nsg_ids
            __props__.__dict__["create_async"] = create_async
            if creation_type is None and not opts.urn:
                raise TypeError("Missing required property 'creation_type'")
            __props__.__dict__["creation_type"] = creation_type
            if database_admin_password is None and not opts.urn:
                raise TypeError("Missing required property 'database_admin_password'")
            __props__.__dict__["database_admin_password"] = <PASSWORD>
            if database_id is None and not opts.urn:
                raise TypeError("Missing required property 'database_id'")
            __props__.__dict__["database_id"] = database_id
            __props__.__dict__["database_software_image_id"] = database_software_image_id
            if delete_standby_db_home_on_delete is None and not opts.urn:
                raise TypeError("Missing required property 'delete_standby_db_home_on_delete'")
            __props__.__dict__["delete_standby_db_home_on_delete"] = delete_standby_db_home_on_delete
            __props__.__dict__["display_name"] = display_name
            __props__.__dict__["hostname"] = hostname
            __props__.__dict__["nsg_ids"] = nsg_ids
            __props__.__dict__["peer_db_home_id"] = peer_db_home_id
            __props__.__dict__["peer_db_system_id"] = peer_db_system_id
            __props__.__dict__["peer_vm_cluster_id"] = peer_vm_cluster_id
            if protection_mode is None and not opts.urn:
                raise TypeError("Missing required property 'protection_mode'")
            __props__.__dict__["protection_mode"] = protection_mode
            __props__.__dict__["shape"] = shape
            __props__.__dict__["subnet_id"] = subnet_id
            if transport_type is None and not opts.urn:
                raise TypeError("Missing required property 'transport_type'")
            __props__.__dict__["transport_type"] = transport_type
            __props__.__dict__["apply_lag"] = None
            __props__.__dict__["apply_rate"] = None
            __props__.__dict__["lifecycle_details"] = None
            __props__.__dict__["peer_data_guard_association_id"] = None
            __props__.__dict__["peer_database_id"] = None
            __props__.__dict__["peer_role"] = None
            __props__.__dict__["role"] = None
            __props__.__dict__["state"] = None
            __props__.__dict__["time_created"] = None
        super(DataGuardAssociation, __self__).__init__(
            'oci:database/dataGuardAssociation:DataGuardAssociation',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            apply_lag: Optional[pulumi.Input[str]] = None,
            apply_rate: Optional[pulumi.Input[str]] = None,
            availability_domain: Optional[pulumi.Input[str]] = None,
            backup_network_nsg_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            create_async: Optional[pulumi.Input[bool]] = None,
            creation_type: Optional[pulumi.Input[str]] = None,
            database_admin_password: Optional[pulumi.Input[str]] = None,
            database_id: Optional[pulumi.Input[str]] = None,
            database_software_image_id: Optional[pulumi.Input[str]] = None,
            delete_standby_db_home_on_delete: Optional[pulumi.Input[str]] = None,
            display_name: Optional[pulumi.Input[str]] = None,
            hostname: Optional[pulumi.Input[str]] = None,
            lifecycle_details: Optional[pulumi.Input[str]] = None,
            nsg_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            peer_data_guard_association_id: Optional[pulumi.Input[str]] = None,
            peer_database_id: Optional[pulumi.Input[str]] = None,
            peer_db_home_id: Optional[pulumi.Input[str]] = None,
            peer_db_system_id: Optional[pulumi.Input[str]] = None,
            peer_role: Optional[pulumi.Input[str]] = None,
            peer_vm_cluster_id: Optional[pulumi.Input[str]] = None,
            protection_mode: Optional[pulumi.Input[str]] = None,
            role: Optional[pulumi.Input[str]] = None,
            shape: Optional[pulumi.Input[str]] = None,
            state: Optional[pulumi.Input[str]] = None,
            subnet_id: Optional[pulumi.Input[str]] = None,
            time_created: Optional[pulumi.Input[str]] = None,
            transport_type: Optional[pulumi.Input[str]] = None) -> 'DataGuardAssociation':
        """
        Get an existing DataGuardAssociation resource's state with the given name, id, and optional extra
        properties used to qualify the lookup.

        :param str resource_name: The unique name of the resulting resource.
        :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[str] apply_lag: The lag time between updates to the primary database and application of the redo data on the standby database, as computed by the reporting database.  Example: `9 seconds`
        :param pulumi.Input[str] apply_rate: The rate at which redo logs are synced between the associated databases.  Example: `180 Mb per second`
        :param pulumi.Input[str] availability_domain: The name of the availability domain that the standby database DB system will be located in. For example- "Uocm:PHX-AD-1".
        :param pulumi.Input[Sequence[pulumi.Input[str]]] backup_network_nsg_ids: A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that the backup network of this DB system belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). Applicable only to Exadata systems.
        :param pulumi.Input[str] creation_type: Specifies whether to create the peer database in an existing DB system or in a new DB system.
        :param pulumi.Input[str] database_admin_password: (Updatable) A strong password for the `SYS`, `SYSTEM`, and `PDB Admin` users to apply during standby creation.
        :param pulumi.Input[str] database_id: The database [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        :param pulumi.Input[str] database_software_image_id: The database software image [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). Applicable only when creationType=`ExistingDbSystem` and when the existing database has Exadata shape.
        :param pulumi.Input[str] display_name: The user-friendly name of the DB system that will contain the the standby database. The display name does not have to be unique.
        :param pulumi.Input[str] hostname: The hostname for the DB node.
        :param pulumi.Input[str] lifecycle_details: Additional information about the current lifecycleState, if available.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] nsg_ids: A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that this resource belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). **NsgIds restrictions:**
               * Autonomous Databases with private access require at least 1 Network Security Group (NSG). The nsgIds array cannot be empty.
        :param pulumi.Input[str] peer_data_guard_association_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the peer database's Data Guard association.
        :param pulumi.Input[str] peer_database_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the associated peer database.
        :param pulumi.Input[str] peer_db_home_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB home in which to create the standby database. You must supply this value to create standby database with an existing DB home
        :param pulumi.Input[str] peer_db_system_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB system in which to create the standby database. You must supply this value if creationType is `ExistingDbSystem`.
        :param pulumi.Input[str] peer_role: The role of the peer database in this Data Guard association.
        :param pulumi.Input[str] peer_vm_cluster_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VM Cluster in which to create the standby database. You must supply this value if creationType is `ExistingVmCluster`.
        :param pulumi.Input[str] protection_mode: (Updatable) The protection mode to set up between the primary and standby databases. For more information, see [Oracle Data Guard Protection Modes](http://docs.oracle.com/database/122/SBYDB/oracle-data-guard-protection-modes.htm#SBYDB02000) in the Oracle Data Guard documentation.
        :param pulumi.Input[str] role: The role of the reporting database in this Data Guard association.
        :param pulumi.Input[str] shape: The virtual machine DB system shape to launch for the standby database in the Data Guard association. The shape determines the number of CPU cores and the amount of memory available for the DB system. Only virtual machine shapes are valid options. If you do not supply this parameter, the default shape is the shape of the primary DB system.
        :param pulumi.Input[str] state: The current state of the Data Guard association.
        :param pulumi.Input[str] subnet_id: The OCID of the subnet the DB system is associated with. **Subnet Restrictions:**
               * For 1- and 2-node RAC DB systems, do not use a subnet that overlaps with 192.168.16.16/28
        :param pulumi.Input[str] time_created: The date and time the Data Guard association was created.
        :param pulumi.Input[str] transport_type: (Updatable) The redo transport type to use for this Data Guard association.  Valid values depend on the specified `protectionMode`:
               * MAXIMUM_AVAILABILITY - SYNC or FASTSYNC
               * MAXIMUM_PERFORMANCE - ASYNC
               * MAXIMUM_PROTECTION - SYNC
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _DataGuardAssociationState.__new__(_DataGuardAssociationState)

        __props__.__dict__["apply_lag"] = apply_lag
        __props__.__dict__["apply_rate"] = apply_rate
        __props__.__dict__["availability_domain"] = availability_domain
        __props__.__dict__["backup_network_nsg_ids"] = backup_network_nsg_ids
        __props__.__dict__["create_async"] = create_async
        __props__.__dict__["creation_type"] = creation_type
        __props__.__dict__["database_admin_password"] = <PASSWORD>
        __props__.__dict__["database_id"] = database_id
        __props__.__dict__["database_software_image_id"] = database_software_image_id
        __props__.__dict__["delete_standby_db_home_on_delete"] = delete_standby_db_home_on_delete
        __props__.__dict__["display_name"] = display_name
        __props__.__dict__["hostname"] = hostname
        __props__.__dict__["lifecycle_details"] = lifecycle_details
        __props__.__dict__["nsg_ids"] = nsg_ids
        __props__.__dict__["peer_data_guard_association_id"] = peer_data_guard_association_id
        __props__.__dict__["peer_database_id"] = peer_database_id
        __props__.__dict__["peer_db_home_id"] = peer_db_home_id
        __props__.__dict__["peer_db_system_id"] = peer_db_system_id
        __props__.__dict__["peer_role"] = peer_role
        __props__.__dict__["peer_vm_cluster_id"] = peer_vm_cluster_id
        __props__.__dict__["protection_mode"] = protection_mode
        __props__.__dict__["role"] = role
        __props__.__dict__["shape"] = shape
        __props__.__dict__["state"] = state
        __props__.__dict__["subnet_id"] = subnet_id
        __props__.__dict__["time_created"] = time_created
        __props__.__dict__["transport_type"] = transport_type
        return DataGuardAssociation(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter(name="applyLag")
    def apply_lag(self) -> pulumi.Output[str]:
        """
        The lag time between updates to the primary database and application of the redo data on the standby database, as computed by the reporting database.  Example: `9 seconds`
        """
        return pulumi.get(self, "apply_lag")

    @property
    @pulumi.getter(name="applyRate")
    def apply_rate(self) -> pulumi.Output[str]:
        """
        The rate at which redo logs are synced between the associated databases.  Example: `180 Mb per second`
        """
        return pulumi.get(self, "apply_rate")

    @property
    @pulumi.getter(name="availabilityDomain")
    def availability_domain(self) -> pulumi.Output[str]:
        """
        The name of the availability domain that the standby database DB system will be located in. For example- "Uocm:PHX-AD-1".
        """
        return pulumi.get(self, "availability_domain")

    @property
    @pulumi.getter(name="backupNetworkNsgIds")
    def backup_network_nsg_ids(self) -> pulumi.Output[Optional[Sequence[str]]]:
        """
        A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that the backup network of this DB system belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). Applicable only to Exadata systems.
        """
        return pulumi.get(self, "backup_network_nsg_ids")

    @property
    @pulumi.getter(name="createAsync")
    def create_async(self) -> pulumi.Output[Optional[bool]]:
        return pulumi.get(self, "create_async")

    @property
    @pulumi.getter(name="creationType")
    def creation_type(self) -> pulumi.Output[str]:
        """
        Specifies whether to create the peer database in an existing DB system or in a new DB system.
        """
        return pulumi.get(self, "creation_type")

    @property
    @pulumi.getter(name="databaseAdminPassword")
    def database_admin_password(self) -> pulumi.Output[str]:
        """
        (Updatable) A strong password for the `SYS`, `SYSTEM`, and `<PASSWORD>` users to apply during standby creation.
        """
        return pulumi.get(self, "database_admin_password")

    @property
    @pulumi.getter(name="databaseId")
    def database_id(self) -> pulumi.Output[str]:
        """
        The database [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        """
        return pulumi.get(self, "database_id")

    @property
    @pulumi.getter(name="databaseSoftwareImageId")
    def database_software_image_id(self) -> pulumi.Output[Optional[str]]:
        """
        The database software image [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). Applicable only when creationType=`ExistingDbSystem` and when the existing database has Exadata shape.
        """
        return pulumi.get(self, "database_software_image_id")

    @property
    @pulumi.getter(name="deleteStandbyDbHomeOnDelete")
    def delete_standby_db_home_on_delete(self) -> pulumi.Output[str]:
        return pulumi.get(self, "delete_standby_db_home_on_delete")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> pulumi.Output[str]:
        """
        The user-friendly name of the DB system that will contain the the standby database. The display name does not have to be unique.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter
    def hostname(self) -> pulumi.Output[str]:
        """
        The hostname for the DB node.
        """
        return pulumi.get(self, "hostname")

    @property
    @pulumi.getter(name="lifecycleDetails")
    def lifecycle_details(self) -> pulumi.Output[str]:
        """
        Additional information about the current lifecycleState, if available.
        """
        return pulumi.get(self, "lifecycle_details")

    @property
    @pulumi.getter(name="nsgIds")
    def nsg_ids(self) -> pulumi.Output[Optional[Sequence[str]]]:
        """
        A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that this resource belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). **NsgIds restrictions:**
        * Autonomous Databases with private access require at least 1 Network Security Group (NSG). The nsgIds array cannot be empty.
        """
        return pulumi.get(self, "nsg_ids")

    @property
    @pulumi.getter(name="peerDataGuardAssociationId")
    def peer_data_guard_association_id(self) -> pulumi.Output[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the peer database's Data Guard association.
        """
        return pulumi.get(self, "peer_data_guard_association_id")

    @property
    @pulumi.getter(name="peerDatabaseId")
    def peer_database_id(self) -> pulumi.Output[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the associated peer database.
        """
        return pulumi.get(self, "peer_database_id")

    @property
    @pulumi.getter(name="peerDbHomeId")
    def peer_db_home_id(self) -> pulumi.Output[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB home in which to create the standby database. You must supply this value to create standby database with an existing DB home
        """
        return pulumi.get(self, "peer_db_home_id")

    @property
    @pulumi.getter(name="peerDbSystemId")
    def peer_db_system_id(self) -> pulumi.Output[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB system in which to create the standby database. You must supply this value if creationType is `ExistingDbSystem`.
        """
        return pulumi.get(self, "peer_db_system_id")

    @property
    @pulumi.getter(name="peerRole")
    def peer_role(self) -> pulumi.Output[str]:
        """
        The role of the peer database in this Data Guard association.
        """
        return pulumi.get(self, "peer_role")

    @property
    @pulumi.getter(name="peerVmClusterId")
    def peer_vm_cluster_id(self) -> pulumi.Output[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VM Cluster in which to create the standby database. You must supply this value if creationType is `ExistingVmCluster`.
        """
        return pulumi.get(self, "peer_vm_cluster_id")

    @property
    @pulumi.getter(name="protectionMode")
    def protection_mode(self) -> pulumi.Output[str]:
        """
        (Updatable) The protection mode to set up between the primary and standby databases. For more information, see [Oracle Data Guard Protection Modes](http://docs.oracle.com/database/122/SBYDB/oracle-data-guard-protection-modes.htm#SBYDB02000) in the Oracle Data Guard documentation.
        """
        return pulumi.get(self, "protection_mode")

    @property
    @pulumi.getter
    def role(self) -> pulumi.Output[str]:
        """
        The role of the reporting database in this Data Guard association.
        """
        return pulumi.get(self, "role")

    @property
    @pulumi.getter
    def shape(self) -> pulumi.Output[str]:
        """
        The virtual machine DB system shape to launch for the standby database in the Data Guard association. The shape determines the number of CPU cores and the amount of memory available for the DB system. Only virtual machine shapes are valid options. If you do not supply this parameter, the default shape is the shape of the primary DB system.
        """
        return pulumi.get(self, "shape")

    @property
    @pulumi.getter
    def state(self) -> pulumi.Output[str]:
        """
        The current state of the Data Guard association.
        """
        return pulumi.get(self, "state")

    @property
    @pulumi.getter(name="subnetId")
    def subnet_id(self) -> pulumi.Output[str]:
        """
        The OCID of the subnet the DB system is associated with. **Subnet Restrictions:**
        * For 1- and 2-node RAC DB systems, do not use a subnet that overlaps with 192.168.16.16/28
        """
        return pulumi.get(self, "subnet_id")

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> pulumi.Output[str]:
        """
        The date and time the Data Guard association was created.
        """
        return pulumi.get(self, "time_created")

    @property
    @pulumi.getter(name="transportType")
    def transport_type(self) -> pulumi.Output[str]:
        """
        (Updatable) The redo transport type to use for this Data Guard association.  Valid values depend on the specified `protectionMode`:
        * MAXIMUM_AVAILABILITY - SYNC or FASTSYNC
        * MAXIMUM_PERFORMANCE - ASYNC
        * MAXIMUM_PROTECTION - SYNC
        """
        return pulumi.get(self, "transport_type")


# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from .. import _utilities

__all__ = ['DataGuardAssociationArgs', 'DataGuardAssociation']

@pulumi.input_type
class DataGuardAssociationArgs:
    def __init__(__self__, *,
                 creation_type: pulumi.Input[str],
                 database_admin_password: pulumi.Input[str],
                 database_id: pulumi.Input[str],
                 delete_standby_db_home_on_delete: pulumi.Input[str],
                 protection_mode: pulumi.Input[str],
                 transport_type: pulumi.Input[str],
                 availability_domain: Optional[pulumi.Input[str]] = None,
                 backup_network_nsg_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 create_async: Optional[pulumi.Input[bool]] = None,
                 database_software_image_id: Optional[pulumi.Input[str]] = None,
                 display_name: Optional[pulumi.Input[str]] = None,
                 hostname: Optional[pulumi.Input[str]] = None,
                 nsg_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 peer_db_home_id: Optional[pulumi.Input[str]] = None,
                 peer_db_system_id: Optional[pulumi.Input[str]] = None,
                 peer_vm_cluster_id: Optional[pulumi.Input[str]] = None,
                 shape: Optional[pulumi.Input[str]] = None,
                 subnet_id: Optional[pulumi.Input[str]] = None):
        """
        The set of arguments for constructing a DataGuardAssociation resource.
        :param pulumi.Input[str] creation_type: Specifies whether to create the peer database in an existing DB system or in a new DB system.
        :param pulumi.Input[str] database_admin_password: (Updatable) A strong password for the `SYS`, `SYSTEM`, and `PDB Admin` users to apply during standby creation.
        :param pulumi.Input[str] database_id: The database [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        :param pulumi.Input[str] protection_mode: (Updatable) The protection mode to set up between the primary and standby databases. For more information, see [Oracle Data Guard Protection Modes](http://docs.oracle.com/database/122/SBYDB/oracle-data-guard-protection-modes.htm#SBYDB02000) in the Oracle Data Guard documentation.
        :param pulumi.Input[str] transport_type: (Updatable) The redo transport type to use for this Data Guard association.  Valid values depend on the specified `protectionMode`:
               * MAXIMUM_AVAILABILITY - SYNC or FASTSYNC
               * MAXIMUM_PERFORMANCE - ASYNC
               * MAXIMUM_PROTECTION - SYNC
        :param pulumi.Input[str] availability_domain: The name of the availability domain that the standby database DB system will be located in. For example- "Uocm:PHX-AD-1".
        :param pulumi.Input[Sequence[pulumi.Input[str]]] backup_network_nsg_ids: A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that the backup network of this DB system belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). Applicable only to Exadata systems.
        :param pulumi.Input[str] database_software_image_id: The database software image [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). Applicable only when creationType=`ExistingDbSystem` and when the existing database has Exadata shape.
        :param pulumi.Input[str] display_name: The user-friendly name of the DB system that will contain the the standby database. The display name does not have to be unique.
        :param pulumi.Input[str] hostname: The hostname for the DB node.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] nsg_ids: A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that this resource belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). **NsgIds restrictions:**
               * Autonomous Databases with private access require at least 1 Network Security Group (NSG). The nsgIds array cannot be empty.
        :param pulumi.Input[str] peer_db_home_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB home in which to create the standby database. You must supply this value to create standby database with an existing DB home
        :param pulumi.Input[str] peer_db_system_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB system in which to create the standby database. You must supply this value if creationType is `ExistingDbSystem`.
        :param pulumi.Input[str] peer_vm_cluster_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VM Cluster in which to create the standby database. You must supply this value if creationType is `ExistingVmCluster`.
        :param pulumi.Input[str] shape: The virtual machine DB system shape to launch for the standby database in the Data Guard association. The shape determines the number of CPU cores and the amount of memory available for the DB system. Only virtual machine shapes are valid options. If you do not supply this parameter, the default shape is the shape of the primary DB system.
        :param pulumi.Input[str] subnet_id: The OCID of the subnet the DB system is associated with. **Subnet Restrictions:**
               * For 1- and 2-node RAC DB systems, do not use a subnet that overlaps with 192.168.16.16/28
        """
        pulumi.set(__self__, "creation_type", creation_type)
        pulumi.set(__self__, "database_admin_password", database_admin_password)
        pulumi.set(__self__, "database_id", database_id)
        pulumi.set(__self__, "delete_standby_db_home_on_delete", delete_standby_db_home_on_delete)
        pulumi.set(__self__, "protection_mode", protection_mode)
        pulumi.set(__self__, "transport_type", transport_type)
        if availability_domain is not None:
            pulumi.set(__self__, "availability_domain", availability_domain)
        if backup_network_nsg_ids is not None:
            pulumi.set(__self__, "backup_network_nsg_ids", backup_network_nsg_ids)
        if create_async is not None:
            pulumi.set(__self__, "create_async", create_async)
        if database_software_image_id is not None:
            pulumi.set(__self__, "database_software_image_id", database_software_image_id)
        if display_name is not None:
            pulumi.set(__self__, "display_name", display_name)
        if hostname is not None:
            pulumi.set(__self__, "hostname", hostname)
        if nsg_ids is not None:
            pulumi.set(__self__, "nsg_ids", nsg_ids)
        if peer_db_home_id is not None:
            pulumi.set(__self__, "peer_db_home_id", peer_db_home_id)
        if peer_db_system_id is not None:
            pulumi.set(__self__, "peer_db_system_id", peer_db_system_id)
        if peer_vm_cluster_id is not None:
            pulumi.set(__self__, "peer_vm_cluster_id", peer_vm_cluster_id)
        if shape is not None:
            pulumi.set(__self__, "shape", shape)
        if subnet_id is not None:
            pulumi.set(__self__, "subnet_id", subnet_id)

    @property
    @pulumi.getter(name="creationType")
    def creation_type(self) -> pulumi.Input[str]:
        """
        Specifies whether to create the peer database in an existing DB system or in a new DB system.
        """
        return pulumi.get(self, "creation_type")

    @creation_type.setter
    def creation_type(self, value: pulumi.Input[str]):
        pulumi.set(self, "creation_type", value)

    @property
    @pulumi.getter(name="databaseAdminPassword")
    def database_admin_password(self) -> pulumi.Input[str]:
        """
        (Updatable) A strong password for the `SYS`, `SYSTEM`, and `PDB Admin` users to apply during standby creation.
        """
        return pulumi.get(self, "database_admin_password")

    @database_admin_password.setter
    def database_admin_password(self, value: pulumi.Input[str]):
        pulumi.set(self, "database_admin_password", value)

    @property
    @pulumi.getter(name="databaseId")
    def database_id(self) -> pulumi.Input[str]:
        """
        The database [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        """
        return pulumi.get(self, "database_id")

    @database_id.setter
    def database_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "database_id", value)

    @property
    @pulumi.getter(name="deleteStandbyDbHomeOnDelete")
    def delete_standby_db_home_on_delete(self) -> pulumi.Input[str]:
        return pulumi.get(self, "delete_standby_db_home_on_delete")

    @delete_standby_db_home_on_delete.setter
    def delete_standby_db_home_on_delete(self, value: pulumi.Input[str]):
        pulumi.set(self, "delete_standby_db_home_on_delete", value)

    @property
    @pulumi.getter(name="protectionMode")
    def protection_mode(self) -> pulumi.Input[str]:
        """
        (Updatable) The protection mode to set up between the primary and standby databases. For more information, see [Oracle Data Guard Protection Modes](http://docs.oracle.com/database/122/SBYDB/oracle-data-guard-protection-modes.htm#SBYDB02000) in the Oracle Data Guard documentation.
        """
        return pulumi.get(self, "protection_mode")

    @protection_mode.setter
    def protection_mode(self, value: pulumi.Input[str]):
        pulumi.set(self, "protection_mode", value)

    @property
    @pulumi.getter(name="transportType")
    def transport_type(self) -> pulumi.Input[str]:
        """
        (Updatable) The redo transport type to use for this Data Guard association.  Valid values depend on the specified `protectionMode`:
        * MAXIMUM_AVAILABILITY - SYNC or FASTSYNC
        * MAXIMUM_PERFORMANCE - ASYNC
        * MAXIMUM_PROTECTION - SYNC
        """
        return pulumi.get(self, "transport_type")

    @transport_type.setter
    def transport_type(self, value: pulumi.Input[str]):
        pulumi.set(self, "transport_type", value)

    @property
    @pulumi.getter(name="availabilityDomain")
    def availability_domain(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the availability domain that the standby database DB system will be located in. For example- "Uocm:PHX-AD-1".
        """
        return pulumi.get(self, "availability_domain")

    @availability_domain.setter
    def availability_domain(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "availability_domain", value)

    @property
    @pulumi.getter(name="backupNetworkNsgIds")
    def backup_network_nsg_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that the backup network of this DB system belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). Applicable only to Exadata systems.
        """
        return pulumi.get(self, "backup_network_nsg_ids")

    @backup_network_nsg_ids.setter
    def backup_network_nsg_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "backup_network_nsg_ids", value)

    @property
    @pulumi.getter(name="createAsync")
    def create_async(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "create_async")

    @create_async.setter
    def create_async(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "create_async", value)

    @property
    @pulumi.getter(name="databaseSoftwareImageId")
    def database_software_image_id(self) -> Optional[pulumi.Input[str]]:
        """
        The database software image [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). Applicable only when creationType=`ExistingDbSystem` and when the existing database has Exadata shape.
        """
        return pulumi.get(self, "database_software_image_id")

    @database_software_image_id.setter
    def database_software_image_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "database_software_image_id", value)

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> Optional[pulumi.Input[str]]:
        """
        The user-friendly name of the DB system that will contain the the standby database. The display name does not have to be unique.
        """
        return pulumi.get(self, "display_name")

    @display_name.setter
    def display_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "display_name", value)

    @property
    @pulumi.getter
    def hostname(self) -> Optional[pulumi.Input[str]]:
        """
        The hostname for the DB node.
        """
        return pulumi.get(self, "hostname")

    @hostname.setter
    def hostname(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "hostname", value)

    @property
    @pulumi.getter(name="nsgIds")
    def nsg_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that this resource belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). **NsgIds restrictions:**
        * Autonomous Databases with private access require at least 1 Network Security Group (NSG). The nsgIds array cannot be empty.
        """
        return pulumi.get(self, "nsg_ids")

    @nsg_ids.setter
    def nsg_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "nsg_ids", value)

    @property
    @pulumi.getter(name="peerDbHomeId")
    def peer_db_home_id(self) -> Optional[pulumi.Input[str]]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB home in which to create the standby database. You must supply this value to create standby database with an existing DB home
        """
        return pulumi.get(self, "peer_db_home_id")

    @peer_db_home_id.setter
    def peer_db_home_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "peer_db_home_id", value)

    @property
    @pulumi.getter(name="peerDbSystemId")
    def peer_db_system_id(self) -> Optional[pulumi.Input[str]]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB system in which to create the standby database. You must supply this value if creationType is `ExistingDbSystem`.
        """
        return pulumi.get(self, "peer_db_system_id")

    @peer_db_system_id.setter
    def peer_db_system_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "peer_db_system_id", value)

    @property
    @pulumi.getter(name="peerVmClusterId")
    def peer_vm_cluster_id(self) -> Optional[pulumi.Input[str]]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VM Cluster in which to create the standby database. You must supply this value if creationType is `ExistingVmCluster`.
        """
        return pulumi.get(self, "peer_vm_cluster_id")

    @peer_vm_cluster_id.setter
    def peer_vm_cluster_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "peer_vm_cluster_id", value)

    @property
    @pulumi.getter
    def shape(self) -> Optional[pulumi.Input[str]]:
        """
        The virtual machine DB system shape to launch for the standby database in the Data Guard association. The shape determines the number of CPU cores and the amount of memory available for the DB system. Only virtual machine shapes are valid options. If you do not supply this parameter, the default shape is the shape of the primary DB system.
        """
        return pulumi.get(self, "shape")

    @shape.setter
    def shape(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "shape", value)

    @property
    @pulumi.getter(name="subnetId")
    def subnet_id(self) -> Optional[pulumi.Input[str]]:
        """
        The OCID of the subnet the DB system is associated with. **Subnet Restrictions:**
        * For 1- and 2-node RAC DB systems, do not use a subnet that overlaps with 192.168.16.16/28
        """
        return pulumi.get(self, "subnet_id")

    @subnet_id.setter
    def subnet_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "subnet_id", value)


@pulumi.input_type
class _DataGuardAssociationState:
    def __init__(__self__, *,
                 apply_lag: Optional[pulumi.Input[str]] = None,
                 apply_rate: Optional[pulumi.Input[str]] = None,
                 availability_domain: Optional[pulumi.Input[str]] = None,
                 backup_network_nsg_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 create_async: Optional[pulumi.Input[bool]] = None,
                 creation_type: Optional[pulumi.Input[str]] = None,
                 database_admin_password: Optional[pulumi.Input[str]] = None,
                 database_id: Optional[pulumi.Input[str]] = None,
                 database_software_image_id: Optional[pulumi.Input[str]] = None,
                 delete_standby_db_home_on_delete: Optional[pulumi.Input[str]] = None,
                 display_name: Optional[pulumi.Input[str]] = None,
                 hostname: Optional[pulumi.Input[str]] = None,
                 lifecycle_details: Optional[pulumi.Input[str]] = None,
                 nsg_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 peer_data_guard_association_id: Optional[pulumi.Input[str]] = None,
                 peer_database_id: Optional[pulumi.Input[str]] = None,
                 peer_db_home_id: Optional[pulumi.Input[str]] = None,
                 peer_db_system_id: Optional[pulumi.Input[str]] = None,
                 peer_role: Optional[pulumi.Input[str]] = None,
                 peer_vm_cluster_id: Optional[pulumi.Input[str]] = None,
                 protection_mode: Optional[pulumi.Input[str]] = None,
                 role: Optional[pulumi.Input[str]] = None,
                 shape: Optional[pulumi.Input[str]] = None,
                 state: Optional[pulumi.Input[str]] = None,
                 subnet_id: Optional[pulumi.Input[str]] = None,
                 time_created: Optional[pulumi.Input[str]] = None,
                 transport_type: Optional[pulumi.Input[str]] = None):
        """
        Input properties used for looking up and filtering DataGuardAssociation resources.
        :param pulumi.Input[str] apply_lag: The lag time between updates to the primary database and application of the redo data on the standby database, as computed by the reporting database.  Example: `9 seconds`
        :param pulumi.Input[str] apply_rate: The rate at which redo logs are synced between the associated databases.  Example: `180 Mb per second`
        :param pulumi.Input[str] availability_domain: The name of the availability domain that the standby database DB system will be located in. For example- "Uocm:PHX-AD-1".
        :param pulumi.Input[Sequence[pulumi.Input[str]]] backup_network_nsg_ids: A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that the backup network of this DB system belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). Applicable only to Exadata systems.
        :param pulumi.Input[str] creation_type: Specifies whether to create the peer database in an existing DB system or in a new DB system.
        :param pulumi.Input[str] database_admin_password: (Updatable) A strong password for the `SYS`, `SYSTEM`, and `PDB Admin` users to apply during standby creation.
        :param pulumi.Input[str] database_id: The database [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        :param pulumi.Input[str] database_software_image_id: The database software image [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). Applicable only when creationType=`ExistingDbSystem` and when the existing database has Exadata shape.
        :param pulumi.Input[str] display_name: The user-friendly name of the DB system that will contain the the standby database. The display name does not have to be unique.
        :param pulumi.Input[str] hostname: The hostname for the DB node.
        :param pulumi.Input[str] lifecycle_details: Additional information about the current lifecycleState, if available.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] nsg_ids: A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that this resource belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). **NsgIds restrictions:**
               * Autonomous Databases with private access require at least 1 Network Security Group (NSG). The nsgIds array cannot be empty.
        :param pulumi.Input[str] peer_data_guard_association_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the peer database's Data Guard association.
        :param pulumi.Input[str] peer_database_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the associated peer database.
        :param pulumi.Input[str] peer_db_home_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB home in which to create the standby database. You must supply this value to create standby database with an existing DB home
        :param pulumi.Input[str] peer_db_system_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB system in which to create the standby database. You must supply this value if creationType is `ExistingDbSystem`.
        :param pulumi.Input[str] peer_role: The role of the peer database in this Data Guard association.
        :param pulumi.Input[str] peer_vm_cluster_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VM Cluster in which to create the standby database. You must supply this value if creationType is `ExistingVmCluster`.
        :param pulumi.Input[str] protection_mode: (Updatable) The protection mode to set up between the primary and standby databases. For more information, see [Oracle Data Guard Protection Modes](http://docs.oracle.com/database/122/SBYDB/oracle-data-guard-protection-modes.htm#SBYDB02000) in the Oracle Data Guard documentation.
        :param pulumi.Input[str] role: The role of the reporting database in this Data Guard association.
        :param pulumi.Input[str] shape: The virtual machine DB system shape to launch for the standby database in the Data Guard association. The shape determines the number of CPU cores and the amount of memory available for the DB system. Only virtual machine shapes are valid options. If you do not supply this parameter, the default shape is the shape of the primary DB system.
        :param pulumi.Input[str] state: The current state of the Data Guard association.
        :param pulumi.Input[str] subnet_id: The OCID of the subnet the DB system is associated with. **Subnet Restrictions:**
               * For 1- and 2-node RAC DB systems, do not use a subnet that overlaps with 192.168.16.16/28
        :param pulumi.Input[str] time_created: The date and time the Data Guard association was created.
        :param pulumi.Input[str] transport_type: (Updatable) The redo transport type to use for this Data Guard association.  Valid values depend on the specified `protectionMode`:
               * MAXIMUM_AVAILABILITY - SYNC or FASTSYNC
               * MAXIMUM_PERFORMANCE - ASYNC
               * MAXIMUM_PROTECTION - SYNC
        """
        if apply_lag is not None:
            pulumi.set(__self__, "apply_lag", apply_lag)
        if apply_rate is not None:
            pulumi.set(__self__, "apply_rate", apply_rate)
        if availability_domain is not None:
            pulumi.set(__self__, "availability_domain", availability_domain)
        if backup_network_nsg_ids is not None:
            pulumi.set(__self__, "backup_network_nsg_ids", backup_network_nsg_ids)
        if create_async is not None:
            pulumi.set(__self__, "create_async", create_async)
        if creation_type is not None:
            pulumi.set(__self__, "creation_type", creation_type)
        if database_admin_password is not None:
            pulumi.set(__self__, "database_admin_password", database_admin_password)
        if database_id is not None:
            pulumi.set(__self__, "database_id", database_id)
        if database_software_image_id is not None:
            pulumi.set(__self__, "database_software_image_id", database_software_image_id)
        if delete_standby_db_home_on_delete is not None:
            pulumi.set(__self__, "delete_standby_db_home_on_delete", delete_standby_db_home_on_delete)
        if display_name is not None:
            pulumi.set(__self__, "display_name", display_name)
        if hostname is not None:
            pulumi.set(__self__, "hostname", hostname)
        if lifecycle_details is not None:
            pulumi.set(__self__, "lifecycle_details", lifecycle_details)
        if nsg_ids is not None:
            pulumi.set(__self__, "nsg_ids", nsg_ids)
        if peer_data_guard_association_id is not None:
            pulumi.set(__self__, "peer_data_guard_association_id", peer_data_guard_association_id)
        if peer_database_id is not None:
            pulumi.set(__self__, "peer_database_id", peer_database_id)
        if peer_db_home_id is not None:
            pulumi.set(__self__, "peer_db_home_id", peer_db_home_id)
        if peer_db_system_id is not None:
            pulumi.set(__self__, "peer_db_system_id", peer_db_system_id)
        if peer_role is not None:
            pulumi.set(__self__, "peer_role", peer_role)
        if peer_vm_cluster_id is not None:
            pulumi.set(__self__, "peer_vm_cluster_id", peer_vm_cluster_id)
        if protection_mode is not None:
            pulumi.set(__self__, "protection_mode", protection_mode)
        if role is not None:
            pulumi.set(__self__, "role", role)
        if shape is not None:
            pulumi.set(__self__, "shape", shape)
        if state is not None:
            pulumi.set(__self__, "state", state)
        if subnet_id is not None:
            pulumi.set(__self__, "subnet_id", subnet_id)
        if time_created is not None:
            pulumi.set(__self__, "time_created", time_created)
        if transport_type is not None:
            pulumi.set(__self__, "transport_type", transport_type)

    @property
    @pulumi.getter(name="applyLag")
    def apply_lag(self) -> Optional[pulumi.Input[str]]:
        """
        The lag time between updates to the primary database and application of the redo data on the standby database, as computed by the reporting database.  Example: `9 seconds`
        """
        return pulumi.get(self, "apply_lag")

    @apply_lag.setter
    def apply_lag(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "apply_lag", value)

    @property
    @pulumi.getter(name="applyRate")
    def apply_rate(self) -> Optional[pulumi.Input[str]]:
        """
        The rate at which redo logs are synced between the associated databases.  Example: `180 Mb per second`
        """
        return pulumi.get(self, "apply_rate")

    @apply_rate.setter
    def apply_rate(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "apply_rate", value)

    @property
    @pulumi.getter(name="availabilityDomain")
    def availability_domain(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the availability domain that the standby database DB system will be located in. For example- "Uocm:PHX-AD-1".
        """
        return pulumi.get(self, "availability_domain")

    @availability_domain.setter
    def availability_domain(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "availability_domain", value)

    @property
    @pulumi.getter(name="backupNetworkNsgIds")
    def backup_network_nsg_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that the backup network of this DB system belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). Applicable only to Exadata systems.
        """
        return pulumi.get(self, "backup_network_nsg_ids")

    @backup_network_nsg_ids.setter
    def backup_network_nsg_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "backup_network_nsg_ids", value)

    @property
    @pulumi.getter(name="createAsync")
    def create_async(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "create_async")

    @create_async.setter
    def create_async(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "create_async", value)

    @property
    @pulumi.getter(name="creationType")
    def creation_type(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies whether to create the peer database in an existing DB system or in a new DB system.
        """
        return pulumi.get(self, "creation_type")

    @creation_type.setter
    def creation_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "creation_type", value)

    @property
    @pulumi.getter(name="databaseAdminPassword")
    def database_admin_password(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) A strong password for the `SYS`, `SYSTEM`, and `PDB Admin` users to apply during standby creation.
        """
        return pulumi.get(self, "database_admin_password")

    @database_admin_password.setter
    def database_admin_password(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "database_admin_password", value)

    @property
    @pulumi.getter(name="databaseId")
    def database_id(self) -> Optional[pulumi.Input[str]]:
        """
        The database [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        """
        return pulumi.get(self, "database_id")

    @database_id.setter
    def database_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "database_id", value)

    @property
    @pulumi.getter(name="databaseSoftwareImageId")
    def database_software_image_id(self) -> Optional[pulumi.Input[str]]:
        """
        The database software image [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). Applicable only when creationType=`ExistingDbSystem` and when the existing database has Exadata shape.
        """
        return pulumi.get(self, "database_software_image_id")

    @database_software_image_id.setter
    def database_software_image_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "database_software_image_id", value)

    @property
    @pulumi.getter(name="deleteStandbyDbHomeOnDelete")
    def delete_standby_db_home_on_delete(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "delete_standby_db_home_on_delete")

    @delete_standby_db_home_on_delete.setter
    def delete_standby_db_home_on_delete(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "delete_standby_db_home_on_delete", value)

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> Optional[pulumi.Input[str]]:
        """
        The user-friendly name of the DB system that will contain the the standby database. The display name does not have to be unique.
        """
        return pulumi.get(self, "display_name")

    @display_name.setter
    def display_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "display_name", value)

    @property
    @pulumi.getter
    def hostname(self) -> Optional[pulumi.Input[str]]:
        """
        The hostname for the DB node.
        """
        return pulumi.get(self, "hostname")

    @hostname.setter
    def hostname(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "hostname", value)

    @property
    @pulumi.getter(name="lifecycleDetails")
    def lifecycle_details(self) -> Optional[pulumi.Input[str]]:
        """
        Additional information about the current lifecycleState, if available.
        """
        return pulumi.get(self, "lifecycle_details")

    @lifecycle_details.setter
    def lifecycle_details(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "lifecycle_details", value)

    @property
    @pulumi.getter(name="nsgIds")
    def nsg_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that this resource belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). **NsgIds restrictions:**
        * Autonomous Databases with private access require at least 1 Network Security Group (NSG). The nsgIds array cannot be empty.
        """
        return pulumi.get(self, "nsg_ids")

    @nsg_ids.setter
    def nsg_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "nsg_ids", value)

    @property
    @pulumi.getter(name="peerDataGuardAssociationId")
    def peer_data_guard_association_id(self) -> Optional[pulumi.Input[str]]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the peer database's Data Guard association.
        """
        return pulumi.get(self, "peer_data_guard_association_id")

    @peer_data_guard_association_id.setter
    def peer_data_guard_association_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "peer_data_guard_association_id", value)

    @property
    @pulumi.getter(name="peerDatabaseId")
    def peer_database_id(self) -> Optional[pulumi.Input[str]]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the associated peer database.
        """
        return pulumi.get(self, "peer_database_id")

    @peer_database_id.setter
    def peer_database_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "peer_database_id", value)

    @property
    @pulumi.getter(name="peerDbHomeId")
    def peer_db_home_id(self) -> Optional[pulumi.Input[str]]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB home in which to create the standby database. You must supply this value to create standby database with an existing DB home
        """
        return pulumi.get(self, "peer_db_home_id")

    @peer_db_home_id.setter
    def peer_db_home_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "peer_db_home_id", value)

    @property
    @pulumi.getter(name="peerDbSystemId")
    def peer_db_system_id(self) -> Optional[pulumi.Input[str]]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB system in which to create the standby database. You must supply this value if creationType is `ExistingDbSystem`.
        """
        return pulumi.get(self, "peer_db_system_id")

    @peer_db_system_id.setter
    def peer_db_system_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "peer_db_system_id", value)

    @property
    @pulumi.getter(name="peerRole")
    def peer_role(self) -> Optional[pulumi.Input[str]]:
        """
        The role of the peer database in this Data Guard association.
        """
        return pulumi.get(self, "peer_role")

    @peer_role.setter
    def peer_role(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "peer_role", value)

    @property
    @pulumi.getter(name="peerVmClusterId")
    def peer_vm_cluster_id(self) -> Optional[pulumi.Input[str]]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VM Cluster in which to create the standby database. You must supply this value if creationType is `ExistingVmCluster`.
        """
        return pulumi.get(self, "peer_vm_cluster_id")

    @peer_vm_cluster_id.setter
    def peer_vm_cluster_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "peer_vm_cluster_id", value)

    @property
    @pulumi.getter(name="protectionMode")
    def protection_mode(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) The protection mode to set up between the primary and standby databases. For more information, see [Oracle Data Guard Protection Modes](http://docs.oracle.com/database/122/SBYDB/oracle-data-guard-protection-modes.htm#SBYDB02000) in the Oracle Data Guard documentation.
        """
        return pulumi.get(self, "protection_mode")

    @protection_mode.setter
    def protection_mode(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "protection_mode", value)

    @property
    @pulumi.getter
    def role(self) -> Optional[pulumi.Input[str]]:
        """
        The role of the reporting database in this Data Guard association.
        """
        return pulumi.get(self, "role")

    @role.setter
    def role(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "role", value)

    @property
    @pulumi.getter
    def shape(self) -> Optional[pulumi.Input[str]]:
        """
        The virtual machine DB system shape to launch for the standby database in the Data Guard association. The shape determines the number of CPU cores and the amount of memory available for the DB system. Only virtual machine shapes are valid options. If you do not supply this parameter, the default shape is the shape of the primary DB system.
        """
        return pulumi.get(self, "shape")

    @shape.setter
    def shape(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "shape", value)

    @property
    @pulumi.getter
    def state(self) -> Optional[pulumi.Input[str]]:
        """
        The current state of the Data Guard association.
        """
        return pulumi.get(self, "state")

    @state.setter
    def state(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "state", value)

    @property
    @pulumi.getter(name="subnetId")
    def subnet_id(self) -> Optional[pulumi.Input[str]]:
        """
        The OCID of the subnet the DB system is associated with. **Subnet Restrictions:**
        * For 1- and 2-node RAC DB systems, do not use a subnet that overlaps with 192.168.16.16/28
        """
        return pulumi.get(self, "subnet_id")

    @subnet_id.setter
    def subnet_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "subnet_id", value)

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> Optional[pulumi.Input[str]]:
        """
        The date and time the Data Guard association was created.
        """
        return pulumi.get(self, "time_created")

    @time_created.setter
    def time_created(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "time_created", value)

    @property
    @pulumi.getter(name="transportType")
    def transport_type(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) The redo transport type to use for this Data Guard association.  Valid values depend on the specified `protectionMode`:
        * MAXIMUM_AVAILABILITY - SYNC or FASTSYNC
        * MAXIMUM_PERFORMANCE - ASYNC
        * MAXIMUM_PROTECTION - SYNC
        """
        return pulumi.get(self, "transport_type")

    @transport_type.setter
    def transport_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "transport_type", value)


class DataGuardAssociation(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 availability_domain: Optional[pulumi.Input[str]] = None,
                 backup_network_nsg_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 create_async: Optional[pulumi.Input[bool]] = None,
                 creation_type: Optional[pulumi.Input[str]] = None,
                 database_admin_password: Optional[pulumi.Input[str]] = None,
                 database_id: Optional[pulumi.Input[str]] = None,
                 database_software_image_id: Optional[pulumi.Input[str]] = None,
                 delete_standby_db_home_on_delete: Optional[pulumi.Input[str]] = None,
                 display_name: Optional[pulumi.Input[str]] = None,
                 hostname: Optional[pulumi.Input[str]] = None,
                 nsg_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 peer_db_home_id: Optional[pulumi.Input[str]] = None,
                 peer_db_system_id: Optional[pulumi.Input[str]] = None,
                 peer_vm_cluster_id: Optional[pulumi.Input[str]] = None,
                 protection_mode: Optional[pulumi.Input[str]] = None,
                 shape: Optional[pulumi.Input[str]] = None,
                 subnet_id: Optional[pulumi.Input[str]] = None,
                 transport_type: Optional[pulumi.Input[str]] = None,
                 __props__=None):
        """
        This resource provides the Data Guard Association resource in Oracle Cloud Infrastructure Database service.

        Creates a new Data Guard association.  A Data Guard association represents the replication relationship between the
        specified database and a peer database. For more information, see [Using Oracle Data Guard](https://docs.cloud.oracle.com/iaas/Content/Database/Tasks/usingdataguard.htm).

        All Oracle Cloud Infrastructure resources, including Data Guard associations, get an Oracle-assigned, unique ID
        called an Oracle Cloud Identifier (OCID). When you create a resource, you can find its OCID in the response.
        You can also retrieve a resource's OCID by using a List API operation on that resource type, or by viewing the
        resource in the Console. For more information, see
        [Resource Identifiers](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).

        ## Example Usage

        ```python
        import pulumi
        import pulumi_oci as oci

        test_data_guard_association = oci.database.DataGuardAssociation("testDataGuardAssociation",
            creation_type=var["data_guard_association_creation_type"],
            database_admin_password=var["data_guard_association_database_admin_password"],
            database_id=oci_database_database["test_database"]["id"],
            delete_standby_db_home_on_delete=var["data_guard_association_delete_standby_db_home_on_delete"],
            protection_mode=var["data_guard_association_protection_mode"],
            transport_type=var["data_guard_association_transport_type"],
            availability_domain=var["data_guard_association_availability_domain"],
            backup_network_nsg_ids=var["data_guard_association_backup_network_nsg_ids"],
            database_software_image_id=oci_database_database_software_image["test_database_software_image"]["id"],
            display_name=var["data_guard_association_display_name"],
            hostname=var["data_guard_association_hostname"],
            nsg_ids=var["data_guard_association_nsg_ids"],
            peer_db_home_id=oci_database_db_home["test_db_home"]["id"],
            peer_db_system_id=oci_database_db_system["test_db_system"]["id"],
            peer_vm_cluster_id=oci_database_vm_cluster["test_vm_cluster"]["id"],
            shape=var["data_guard_association_shape"],
            subnet_id=oci_core_subnet["test_subnet"]["id"])
        ```

        ## Import

        Import is not supported for this resource.

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[str] availability_domain: The name of the availability domain that the standby database DB system will be located in. For example- "Uocm:PHX-AD-1".
        :param pulumi.Input[Sequence[pulumi.Input[str]]] backup_network_nsg_ids: A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that the backup network of this DB system belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). Applicable only to Exadata systems.
        :param pulumi.Input[str] creation_type: Specifies whether to create the peer database in an existing DB system or in a new DB system.
        :param pulumi.Input[str] database_admin_password: (Updatable) A strong password for the `SYS`, `SYSTEM`, and `PDB Admin` users to apply during standby creation.
        :param pulumi.Input[str] database_id: The database [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        :param pulumi.Input[str] database_software_image_id: The database software image [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). Applicable only when creationType=`ExistingDbSystem` and when the existing database has Exadata shape.
        :param pulumi.Input[str] display_name: The user-friendly name of the DB system that will contain the the standby database. The display name does not have to be unique.
        :param pulumi.Input[str] hostname: The hostname for the DB node.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] nsg_ids: A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that this resource belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). **NsgIds restrictions:**
               * Autonomous Databases with private access require at least 1 Network Security Group (NSG). The nsgIds array cannot be empty.
        :param pulumi.Input[str] peer_db_home_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB home in which to create the standby database. You must supply this value to create standby database with an existing DB home
        :param pulumi.Input[str] peer_db_system_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB system in which to create the standby database. You must supply this value if creationType is `ExistingDbSystem`.
        :param pulumi.Input[str] peer_vm_cluster_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VM Cluster in which to create the standby database. You must supply this value if creationType is `ExistingVmCluster`.
        :param pulumi.Input[str] protection_mode: (Updatable) The protection mode to set up between the primary and standby databases. For more information, see [Oracle Data Guard Protection Modes](http://docs.oracle.com/database/122/SBYDB/oracle-data-guard-protection-modes.htm#SBYDB02000) in the Oracle Data Guard documentation.
        :param pulumi.Input[str] shape: The virtual machine DB system shape to launch for the standby database in the Data Guard association. The shape determines the number of CPU cores and the amount of memory available for the DB system. Only virtual machine shapes are valid options. If you do not supply this parameter, the default shape is the shape of the primary DB system.
        :param pulumi.Input[str] subnet_id: The OCID of the subnet the DB system is associated with. **Subnet Restrictions:**
               * For 1- and 2-node RAC DB systems, do not use a subnet that overlaps with 192.168.16.16/28
        :param pulumi.Input[str] transport_type: (Updatable) The redo transport type to use for this Data Guard association.  Valid values depend on the specified `protectionMode`:
               * MAXIMUM_AVAILABILITY - SYNC or FASTSYNC
               * MAXIMUM_PERFORMANCE - ASYNC
               * MAXIMUM_PROTECTION - SYNC
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: DataGuardAssociationArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        This resource provides the Data Guard Association resource in Oracle Cloud Infrastructure Database service.

        Creates a new Data Guard association.  A Data Guard association represents the replication relationship between the
        specified database and a peer database. For more information, see [Using Oracle Data Guard](https://docs.cloud.oracle.com/iaas/Content/Database/Tasks/usingdataguard.htm).

        All Oracle Cloud Infrastructure resources, including Data Guard associations, get an Oracle-assigned, unique ID
        called an Oracle Cloud Identifier (OCID). When you create a resource, you can find its OCID in the response.
        You can also retrieve a resource's OCID by using a List API operation on that resource type, or by viewing the
        resource in the Console. For more information, see
        [Resource Identifiers](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).

        ## Example Usage

        ```python
        import pulumi
        import pulumi_oci as oci

        test_data_guard_association = oci.database.DataGuardAssociation("testDataGuardAssociation",
            creation_type=var["data_guard_association_creation_type"],
            database_admin_password=var["data_guard_association_database_admin_password"],
            database_id=oci_database_database["test_database"]["id"],
            delete_standby_db_home_on_delete=var["data_guard_association_delete_standby_db_home_on_delete"],
            protection_mode=var["data_guard_association_protection_mode"],
            transport_type=var["data_guard_association_transport_type"],
            availability_domain=var["data_guard_association_availability_domain"],
            backup_network_nsg_ids=var["data_guard_association_backup_network_nsg_ids"],
            database_software_image_id=oci_database_database_software_image["test_database_software_image"]["id"],
            display_name=var["data_guard_association_display_name"],
            hostname=var["data_guard_association_hostname"],
            nsg_ids=var["data_guard_association_nsg_ids"],
            peer_db_home_id=oci_database_db_home["test_db_home"]["id"],
            peer_db_system_id=oci_database_db_system["test_db_system"]["id"],
            peer_vm_cluster_id=oci_database_vm_cluster["test_vm_cluster"]["id"],
            shape=var["data_guard_association_shape"],
            subnet_id=oci_core_subnet["test_subnet"]["id"])
        ```

        ## Import

        Import is not supported for this resource.

        :param str resource_name: The name of the resource.
        :param DataGuardAssociationArgs args: The arguments to use to populate this resource's properties.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        ...
    def __init__(__self__, resource_name: str, *args, **kwargs):
        resource_args, opts = _utilities.get_resource_args_opts(DataGuardAssociationArgs, pulumi.ResourceOptions, *args, **kwargs)
        if resource_args is not None:
            __self__._internal_init(resource_name, opts, **resource_args.__dict__)
        else:
            __self__._internal_init(resource_name, *args, **kwargs)

    def _internal_init(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 availability_domain: Optional[pulumi.Input[str]] = None,
                 backup_network_nsg_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 create_async: Optional[pulumi.Input[bool]] = None,
                 creation_type: Optional[pulumi.Input[str]] = None,
                 database_admin_password: Optional[pulumi.Input[str]] = None,
                 database_id: Optional[pulumi.Input[str]] = None,
                 database_software_image_id: Optional[pulumi.Input[str]] = None,
                 delete_standby_db_home_on_delete: Optional[pulumi.Input[str]] = None,
                 display_name: Optional[pulumi.Input[str]] = None,
                 hostname: Optional[pulumi.Input[str]] = None,
                 nsg_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 peer_db_home_id: Optional[pulumi.Input[str]] = None,
                 peer_db_system_id: Optional[pulumi.Input[str]] = None,
                 peer_vm_cluster_id: Optional[pulumi.Input[str]] = None,
                 protection_mode: Optional[pulumi.Input[str]] = None,
                 shape: Optional[pulumi.Input[str]] = None,
                 subnet_id: Optional[pulumi.Input[str]] = None,
                 transport_type: Optional[pulumi.Input[str]] = None,
                 __props__=None):
        if opts is None:
            opts = pulumi.ResourceOptions()
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.version is None:
            opts.version = _utilities.get_version()
        if opts.id is None:
            if __props__ is not None:
                raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
            __props__ = DataGuardAssociationArgs.__new__(DataGuardAssociationArgs)

            __props__.__dict__["availability_domain"] = availability_domain
            __props__.__dict__["backup_network_nsg_ids"] = backup_network_nsg_ids
            __props__.__dict__["create_async"] = create_async
            if creation_type is None and not opts.urn:
                raise TypeError("Missing required property 'creation_type'")
            __props__.__dict__["creation_type"] = creation_type
            if database_admin_password is None and not opts.urn:
                raise TypeError("Missing required property 'database_admin_password'")
            __props__.__dict__["database_admin_password"] = <PASSWORD>
            if database_id is None and not opts.urn:
                raise TypeError("Missing required property 'database_id'")
            __props__.__dict__["database_id"] = database_id
            __props__.__dict__["database_software_image_id"] = database_software_image_id
            if delete_standby_db_home_on_delete is None and not opts.urn:
                raise TypeError("Missing required property 'delete_standby_db_home_on_delete'")
            __props__.__dict__["delete_standby_db_home_on_delete"] = delete_standby_db_home_on_delete
            __props__.__dict__["display_name"] = display_name
            __props__.__dict__["hostname"] = hostname
            __props__.__dict__["nsg_ids"] = nsg_ids
            __props__.__dict__["peer_db_home_id"] = peer_db_home_id
            __props__.__dict__["peer_db_system_id"] = peer_db_system_id
            __props__.__dict__["peer_vm_cluster_id"] = peer_vm_cluster_id
            if protection_mode is None and not opts.urn:
                raise TypeError("Missing required property 'protection_mode'")
            __props__.__dict__["protection_mode"] = protection_mode
            __props__.__dict__["shape"] = shape
            __props__.__dict__["subnet_id"] = subnet_id
            if transport_type is None and not opts.urn:
                raise TypeError("Missing required property 'transport_type'")
            __props__.__dict__["transport_type"] = transport_type
            __props__.__dict__["apply_lag"] = None
            __props__.__dict__["apply_rate"] = None
            __props__.__dict__["lifecycle_details"] = None
            __props__.__dict__["peer_data_guard_association_id"] = None
            __props__.__dict__["peer_database_id"] = None
            __props__.__dict__["peer_role"] = None
            __props__.__dict__["role"] = None
            __props__.__dict__["state"] = None
            __props__.__dict__["time_created"] = None
        super(DataGuardAssociation, __self__).__init__(
            'oci:database/dataGuardAssociation:DataGuardAssociation',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            apply_lag: Optional[pulumi.Input[str]] = None,
            apply_rate: Optional[pulumi.Input[str]] = None,
            availability_domain: Optional[pulumi.Input[str]] = None,
            backup_network_nsg_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            create_async: Optional[pulumi.Input[bool]] = None,
            creation_type: Optional[pulumi.Input[str]] = None,
            database_admin_password: Optional[pulumi.Input[str]] = None,
            database_id: Optional[pulumi.Input[str]] = None,
            database_software_image_id: Optional[pulumi.Input[str]] = None,
            delete_standby_db_home_on_delete: Optional[pulumi.Input[str]] = None,
            display_name: Optional[pulumi.Input[str]] = None,
            hostname: Optional[pulumi.Input[str]] = None,
            lifecycle_details: Optional[pulumi.Input[str]] = None,
            nsg_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            peer_data_guard_association_id: Optional[pulumi.Input[str]] = None,
            peer_database_id: Optional[pulumi.Input[str]] = None,
            peer_db_home_id: Optional[pulumi.Input[str]] = None,
            peer_db_system_id: Optional[pulumi.Input[str]] = None,
            peer_role: Optional[pulumi.Input[str]] = None,
            peer_vm_cluster_id: Optional[pulumi.Input[str]] = None,
            protection_mode: Optional[pulumi.Input[str]] = None,
            role: Optional[pulumi.Input[str]] = None,
            shape: Optional[pulumi.Input[str]] = None,
            state: Optional[pulumi.Input[str]] = None,
            subnet_id: Optional[pulumi.Input[str]] = None,
            time_created: Optional[pulumi.Input[str]] = None,
            transport_type: Optional[pulumi.Input[str]] = None) -> 'DataGuardAssociation':
        """
        Get an existing DataGuardAssociation resource's state with the given name, id, and optional extra
        properties used to qualify the lookup.

        :param str resource_name: The unique name of the resulting resource.
        :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[str] apply_lag: The lag time between updates to the primary database and application of the redo data on the standby database, as computed by the reporting database.  Example: `9 seconds`
        :param pulumi.Input[str] apply_rate: The rate at which redo logs are synced between the associated databases.  Example: `180 Mb per second`
        :param pulumi.Input[str] availability_domain: The name of the availability domain that the standby database DB system will be located in. For example- "Uocm:PHX-AD-1".
        :param pulumi.Input[Sequence[pulumi.Input[str]]] backup_network_nsg_ids: A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that the backup network of this DB system belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). Applicable only to Exadata systems.
        :param pulumi.Input[str] creation_type: Specifies whether to create the peer database in an existing DB system or in a new DB system.
        :param pulumi.Input[str] database_admin_password: (Updatable) A strong password for the `SYS`, `SYSTEM`, and `PDB Admin` users to apply during standby creation.
        :param pulumi.Input[str] database_id: The database [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        :param pulumi.Input[str] database_software_image_id: The database software image [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). Applicable only when creationType=`ExistingDbSystem` and when the existing database has Exadata shape.
        :param pulumi.Input[str] display_name: The user-friendly name of the DB system that will contain the the standby database. The display name does not have to be unique.
        :param pulumi.Input[str] hostname: The hostname for the DB node.
        :param pulumi.Input[str] lifecycle_details: Additional information about the current lifecycleState, if available.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] nsg_ids: A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that this resource belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). **NsgIds restrictions:**
               * Autonomous Databases with private access require at least 1 Network Security Group (NSG). The nsgIds array cannot be empty.
        :param pulumi.Input[str] peer_data_guard_association_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the peer database's Data Guard association.
        :param pulumi.Input[str] peer_database_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the associated peer database.
        :param pulumi.Input[str] peer_db_home_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB home in which to create the standby database. You must supply this value to create standby database with an existing DB home
        :param pulumi.Input[str] peer_db_system_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB system in which to create the standby database. You must supply this value if creationType is `ExistingDbSystem`.
        :param pulumi.Input[str] peer_role: The role of the peer database in this Data Guard association.
        :param pulumi.Input[str] peer_vm_cluster_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VM Cluster in which to create the standby database. You must supply this value if creationType is `ExistingVmCluster`.
        :param pulumi.Input[str] protection_mode: (Updatable) The protection mode to set up between the primary and standby databases. For more information, see [Oracle Data Guard Protection Modes](http://docs.oracle.com/database/122/SBYDB/oracle-data-guard-protection-modes.htm#SBYDB02000) in the Oracle Data Guard documentation.
        :param pulumi.Input[str] role: The role of the reporting database in this Data Guard association.
        :param pulumi.Input[str] shape: The virtual machine DB system shape to launch for the standby database in the Data Guard association. The shape determines the number of CPU cores and the amount of memory available for the DB system. Only virtual machine shapes are valid options. If you do not supply this parameter, the default shape is the shape of the primary DB system.
        :param pulumi.Input[str] state: The current state of the Data Guard association.
        :param pulumi.Input[str] subnet_id: The OCID of the subnet the DB system is associated with. **Subnet Restrictions:**
               * For 1- and 2-node RAC DB systems, do not use a subnet that overlaps with 192.168.16.16/28
        :param pulumi.Input[str] time_created: The date and time the Data Guard association was created.
        :param pulumi.Input[str] transport_type: (Updatable) The redo transport type to use for this Data Guard association.  Valid values depend on the specified `protectionMode`:
               * MAXIMUM_AVAILABILITY - SYNC or FASTSYNC
               * MAXIMUM_PERFORMANCE - ASYNC
               * MAXIMUM_PROTECTION - SYNC
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _DataGuardAssociationState.__new__(_DataGuardAssociationState)

        __props__.__dict__["apply_lag"] = apply_lag
        __props__.__dict__["apply_rate"] = apply_rate
        __props__.__dict__["availability_domain"] = availability_domain
        __props__.__dict__["backup_network_nsg_ids"] = backup_network_nsg_ids
        __props__.__dict__["create_async"] = create_async
        __props__.__dict__["creation_type"] = creation_type
        __props__.__dict__["database_admin_password"] = <PASSWORD>
        __props__.__dict__["database_id"] = database_id
        __props__.__dict__["database_software_image_id"] = database_software_image_id
        __props__.__dict__["delete_standby_db_home_on_delete"] = delete_standby_db_home_on_delete
        __props__.__dict__["display_name"] = display_name
        __props__.__dict__["hostname"] = hostname
        __props__.__dict__["lifecycle_details"] = lifecycle_details
        __props__.__dict__["nsg_ids"] = nsg_ids
        __props__.__dict__["peer_data_guard_association_id"] = peer_data_guard_association_id
        __props__.__dict__["peer_database_id"] = peer_database_id
        __props__.__dict__["peer_db_home_id"] = peer_db_home_id
        __props__.__dict__["peer_db_system_id"] = peer_db_system_id
        __props__.__dict__["peer_role"] = peer_role
        __props__.__dict__["peer_vm_cluster_id"] = peer_vm_cluster_id
        __props__.__dict__["protection_mode"] = protection_mode
        __props__.__dict__["role"] = role
        __props__.__dict__["shape"] = shape
        __props__.__dict__["state"] = state
        __props__.__dict__["subnet_id"] = subnet_id
        __props__.__dict__["time_created"] = time_created
        __props__.__dict__["transport_type"] = transport_type
        return DataGuardAssociation(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter(name="applyLag")
    def apply_lag(self) -> pulumi.Output[str]:
        """
        The lag time between updates to the primary database and application of the redo data on the standby database, as computed by the reporting database.  Example: `9 seconds`
        """
        return pulumi.get(self, "apply_lag")

    @property
    @pulumi.getter(name="applyRate")
    def apply_rate(self) -> pulumi.Output[str]:
        """
        The rate at which redo logs are synced between the associated databases.  Example: `180 Mb per second`
        """
        return pulumi.get(self, "apply_rate")

    @property
    @pulumi.getter(name="availabilityDomain")
    def availability_domain(self) -> pulumi.Output[str]:
        """
        The name of the availability domain that the standby database DB system will be located in. For example- "Uocm:PHX-AD-1".
        """
        return pulumi.get(self, "availability_domain")

    @property
    @pulumi.getter(name="backupNetworkNsgIds")
    def backup_network_nsg_ids(self) -> pulumi.Output[Optional[Sequence[str]]]:
        """
        A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that the backup network of this DB system belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). Applicable only to Exadata systems.
        """
        return pulumi.get(self, "backup_network_nsg_ids")

    @property
    @pulumi.getter(name="createAsync")
    def create_async(self) -> pulumi.Output[Optional[bool]]:
        return pulumi.get(self, "create_async")

    @property
    @pulumi.getter(name="creationType")
    def creation_type(self) -> pulumi.Output[str]:
        """
        Specifies whether to create the peer database in an existing DB system or in a new DB system.
        """
        return pulumi.get(self, "creation_type")

    @property
    @pulumi.getter(name="databaseAdminPassword")
    def database_admin_password(self) -> pulumi.Output[str]:
        """
        (Updatable) A strong password for the `SYS`, `SYSTEM`, and `<PASSWORD>` users to apply during standby creation.
        """
        return pulumi.get(self, "database_admin_password")

    @property
    @pulumi.getter(name="databaseId")
    def database_id(self) -> pulumi.Output[str]:
        """
        The database [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        """
        return pulumi.get(self, "database_id")

    @property
    @pulumi.getter(name="databaseSoftwareImageId")
    def database_software_image_id(self) -> pulumi.Output[Optional[str]]:
        """
        The database software image [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). Applicable only when creationType=`ExistingDbSystem` and when the existing database has Exadata shape.
        """
        return pulumi.get(self, "database_software_image_id")

    @property
    @pulumi.getter(name="deleteStandbyDbHomeOnDelete")
    def delete_standby_db_home_on_delete(self) -> pulumi.Output[str]:
        return pulumi.get(self, "delete_standby_db_home_on_delete")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> pulumi.Output[str]:
        """
        The user-friendly name of the DB system that will contain the the standby database. The display name does not have to be unique.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter
    def hostname(self) -> pulumi.Output[str]:
        """
        The hostname for the DB node.
        """
        return pulumi.get(self, "hostname")

    @property
    @pulumi.getter(name="lifecycleDetails")
    def lifecycle_details(self) -> pulumi.Output[str]:
        """
        Additional information about the current lifecycleState, if available.
        """
        return pulumi.get(self, "lifecycle_details")

    @property
    @pulumi.getter(name="nsgIds")
    def nsg_ids(self) -> pulumi.Output[Optional[Sequence[str]]]:
        """
        A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that this resource belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). **NsgIds restrictions:**
        * Autonomous Databases with private access require at least 1 Network Security Group (NSG). The nsgIds array cannot be empty.
        """
        return pulumi.get(self, "nsg_ids")

    @property
    @pulumi.getter(name="peerDataGuardAssociationId")
    def peer_data_guard_association_id(self) -> pulumi.Output[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the peer database's Data Guard association.
        """
        return pulumi.get(self, "peer_data_guard_association_id")

    @property
    @pulumi.getter(name="peerDatabaseId")
    def peer_database_id(self) -> pulumi.Output[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the associated peer database.
        """
        return pulumi.get(self, "peer_database_id")

    @property
    @pulumi.getter(name="peerDbHomeId")
    def peer_db_home_id(self) -> pulumi.Output[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB home in which to create the standby database. You must supply this value to create standby database with an existing DB home
        """
        return pulumi.get(self, "peer_db_home_id")

    @property
    @pulumi.getter(name="peerDbSystemId")
    def peer_db_system_id(self) -> pulumi.Output[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB system in which to create the standby database. You must supply this value if creationType is `ExistingDbSystem`.
        """
        return pulumi.get(self, "peer_db_system_id")

    @property
    @pulumi.getter(name="peerRole")
    def peer_role(self) -> pulumi.Output[str]:
        """
        The role of the peer database in this Data Guard association.
        """
        return pulumi.get(self, "peer_role")

    @property
    @pulumi.getter(name="peerVmClusterId")
    def peer_vm_cluster_id(self) -> pulumi.Output[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VM Cluster in which to create the standby database. You must supply this value if creationType is `ExistingVmCluster`.
        """
        return pulumi.get(self, "peer_vm_cluster_id")

    @property
    @pulumi.getter(name="protectionMode")
    def protection_mode(self) -> pulumi.Output[str]:
        """
        (Updatable) The protection mode to set up between the primary and standby databases. For more information, see [Oracle Data Guard Protection Modes](http://docs.oracle.com/database/122/SBYDB/oracle-data-guard-protection-modes.htm#SBYDB02000) in the Oracle Data Guard documentation.
        """
        return pulumi.get(self, "protection_mode")

    @property
    @pulumi.getter
    def role(self) -> pulumi.Output[str]:
        """
        The role of the reporting database in this Data Guard association.
        """
        return pulumi.get(self, "role")

    @property
    @pulumi.getter
    def shape(self) -> pulumi.Output[str]:
        """
        The virtual machine DB system shape to launch for the standby database in the Data Guard association. The shape determines the number of CPU cores and the amount of memory available for the DB system. Only virtual machine shapes are valid options. If you do not supply this parameter, the default shape is the shape of the primary DB system.
        """
        return pulumi.get(self, "shape")

    @property
    @pulumi.getter
    def state(self) -> pulumi.Output[str]:
        """
        The current state of the Data Guard association.
        """
        return pulumi.get(self, "state")

    @property
    @pulumi.getter(name="subnetId")
    def subnet_id(self) -> pulumi.Output[str]:
        """
        The OCID of the subnet the DB system is associated with. **Subnet Restrictions:**
        * For 1- and 2-node RAC DB systems, do not use a subnet that overlaps with 192.168.16.16/28
        """
        return pulumi.get(self, "subnet_id")

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> pulumi.Output[str]:
        """
        The date and time the Data Guard association was created.
        """
        return pulumi.get(self, "time_created")

    @property
    @pulumi.getter(name="transportType")
    def transport_type(self) -> pulumi.Output[str]:
        """
        (Updatable) The redo transport type to use for this Data Guard association.  Valid values depend on the specified `protectionMode`:
        * MAXIMUM_AVAILABILITY - SYNC or FASTSYNC
        * MAXIMUM_PERFORMANCE - ASYNC
        * MAXIMUM_PROTECTION - SYNC
        """
        return pulumi.get(self, "transport_type")
# coding=utf-8 # *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** # *** Do not edit by hand unless you're certain you know what you are doing! *** The set of arguments for constructing a DataGuardAssociation resource.         :param pulumi.Input[str] creation_type: Specifies whether to create the peer database in an existing DB system or in a new DB system.         :param pulumi.Input[str] database_admin_password: (Updatable) A strong password for the `SYS`, `SYSTEM`, and `PDB Admin` users to apply during standby creation.         :param pulumi.Input[str] database_id: The database [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).         :param pulumi.Input[str] protection_mode: (Updatable) The protection mode to set up between the primary and standby databases. For more information, see [Oracle Data Guard Protection Modes](http://docs.oracle.com/database/122/SBYDB/oracle-data-guard-protection-modes.htm#SBYDB02000) in the Oracle Data Guard documentation.         :param pulumi.Input[str] transport_type: (Updatable) The redo transport type to use for this Data Guard association.  Valid values depend on the specified `protectionMode`:                * MAXIMUM_AVAILABILITY - SYNC or FASTSYNC                * MAXIMUM_PERFORMANCE - ASYNC                * MAXIMUM_PROTECTION - SYNC         :param pulumi.Input[str] availability_domain: The name of the availability domain that the standby database DB system will be located in. For example- "Uocm:PHX-AD-1".         :param pulumi.Input[Sequence[pulumi.Input[str]]] backup_network_nsg_ids: A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that the backup network of this DB system belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). Applicable only to Exadata systems.         :param pulumi.Input[str] database_software_image_id: The database software image [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). Applicable only when creationType=`ExistingDbSystem` and when the existing database has Exadata shape.         :param pulumi.Input[str] display_name: The user-friendly name of the DB system that will contain the the standby database. The display name does not have to be unique.         :param pulumi.Input[str] hostname: The hostname for the DB node.         :param pulumi.Input[Sequence[pulumi.Input[str]]] nsg_ids: A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that this resource belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). **NsgIds restrictions:**                * Autonomous Databases with private access require at least 1 Network Security Group (NSG). The nsgIds array cannot be empty.         :param pulumi.Input[str] peer_db_home_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB home in which to create the standby database. You must supply this value to create standby database with an existing DB home         :param pulumi.Input[str] peer_db_system_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB system in which to create the standby database. You must supply this value if creationType is `ExistingDbSystem`.         :param pulumi.Input[str] peer_vm_cluster_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VM Cluster in which to create the standby database. You must supply this value if creationType is `ExistingVmCluster`.         :param pulumi.Input[str] shape: The virtual machine DB system shape to launch for the standby database in the Data Guard association. The shape determines the number of CPU cores and the amount of memory available for the DB system. Only virtual machine shapes are valid options. If you do not supply this parameter, the default shape is the shape of the primary DB system.         :param pulumi.Input[str] subnet_id: The OCID of the subnet the DB system is associated with. **Subnet Restrictions:**                * For 1- and 2-node RAC DB systems, do not use a subnet that overlaps with 192.168.16.16/28 Specifies whether to create the peer database in an existing DB system or in a new DB system. (Updatable) A strong password for the `SYS`, `SYSTEM`, and `PDB Admin` users to apply during standby creation. The database [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). (Updatable) The protection mode to set up between the primary and standby databases. For more information, see [Oracle Data Guard Protection Modes](http://docs.oracle.com/database/122/SBYDB/oracle-data-guard-protection-modes.htm#SBYDB02000) in the Oracle Data Guard documentation. (Updatable) The redo transport type to use for this Data Guard association.  Valid values depend on the specified `protectionMode`:         * MAXIMUM_AVAILABILITY - SYNC or FASTSYNC         * MAXIMUM_PERFORMANCE - ASYNC         * MAXIMUM_PROTECTION - SYNC The name of the availability domain that the standby database DB system will be located in. For example- "Uocm:PHX-AD-1". A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that the backup network of this DB system belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). Applicable only to Exadata systems. The database software image [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). Applicable only when creationType=`ExistingDbSystem` and when the existing database has Exadata shape. The user-friendly name of the DB system that will contain the the standby database. The display name does not have to be unique. The hostname for the DB node. A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that this resource belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). **NsgIds restrictions:**         * Autonomous Databases with private access require at least 1 Network Security Group (NSG). The nsgIds array cannot be empty. The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB home in which to create the standby database. You must supply this value to create standby database with an existing DB home The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB system in which to create the standby database. You must supply this value if creationType is `ExistingDbSystem`. The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VM Cluster in which to create the standby database. You must supply this value if creationType is `ExistingVmCluster`. The virtual machine DB system shape to launch for the standby database in the Data Guard association. The shape determines the number of CPU cores and the amount of memory available for the DB system. Only virtual machine shapes are valid options. If you do not supply this parameter, the default shape is the shape of the primary DB system. The OCID of the subnet the DB system is associated with. **Subnet Restrictions:**         * For 1- and 2-node RAC DB systems, do not use a subnet that overlaps with 192.168.16.16/28 Input properties used for looking up and filtering DataGuardAssociation resources.         :param pulumi.Input[str] apply_lag: The lag time between updates to the primary database and application of the redo data on the standby database, as computed by the reporting database.  Example: `9 seconds`         :param pulumi.Input[str] apply_rate: The rate at which redo logs are synced between the associated databases.  Example: `180 Mb per second`         :param pulumi.Input[str] availability_domain: The name of the availability domain that the standby database DB system will be located in. For example- "Uocm:PHX-AD-1".         :param pulumi.Input[Sequence[pulumi.Input[str]]] backup_network_nsg_ids: A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that the backup network of this DB system belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). Applicable only to Exadata systems.         :param pulumi.Input[str] creation_type: Specifies whether to create the peer database in an existing DB system or in a new DB system.         :param pulumi.Input[str] database_admin_password: (Updatable) A strong password for the `SYS`, `SYSTEM`, and `PDB Admin` users to apply during standby creation.         :param pulumi.Input[str] database_id: The database [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).         :param pulumi.Input[str] database_software_image_id: The database software image [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). Applicable only when creationType=`ExistingDbSystem` and when the existing database has Exadata shape.         :param pulumi.Input[str] display_name: The user-friendly name of the DB system that will contain the the standby database. The display name does not have to be unique.         :param pulumi.Input[str] hostname: The hostname for the DB node.         :param pulumi.Input[str] lifecycle_details: Additional information about the current lifecycleState, if available.         :param pulumi.Input[Sequence[pulumi.Input[str]]] nsg_ids: A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that this resource belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). **NsgIds restrictions:**                * Autonomous Databases with private access require at least 1 Network Security Group (NSG). The nsgIds array cannot be empty.         :param pulumi.Input[str] peer_data_guard_association_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the peer database's Data Guard association.         :param pulumi.Input[str] peer_database_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the associated peer database.         :param pulumi.Input[str] peer_db_home_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB home in which to create the standby database. You must supply this value to create standby database with an existing DB home         :param pulumi.Input[str] peer_db_system_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB system in which to create the standby database. You must supply this value if creationType is `ExistingDbSystem`.         :param pulumi.Input[str] peer_role: The role of the peer database in this Data Guard association.         :param pulumi.Input[str] peer_vm_cluster_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VM Cluster in which to create the standby database. You must supply this value if creationType is `ExistingVmCluster`.         :param pulumi.Input[str] protection_mode: (Updatable) The protection mode to set up between the primary and standby databases. For more information, see [Oracle Data Guard Protection Modes](http://docs.oracle.com/database/122/SBYDB/oracle-data-guard-protection-modes.htm#SBYDB02000) in the Oracle Data Guard documentation.         :param pulumi.Input[str] role: The role of the reporting database in this Data Guard association.         :param pulumi.Input[str] shape: The virtual machine DB system shape to launch for the standby database in the Data Guard association. The shape determines the number of CPU cores and the amount of memory available for the DB system. Only virtual machine shapes are valid options. If you do not supply this parameter, the default shape is the shape of the primary DB system.         :param pulumi.Input[str] state: The current state of the Data Guard association.         :param pulumi.Input[str] subnet_id: The OCID of the subnet the DB system is associated with. **Subnet Restrictions:**                * For 1- and 2-node RAC DB systems, do not use a subnet that overlaps with 192.168.16.16/28         :param pulumi.Input[str] time_created: The date and time the Data Guard association was created.         :param pulumi.Input[str] transport_type: (Updatable) The redo transport type to use for this Data Guard association.  Valid values depend on the specified `protectionMode`:                * MAXIMUM_AVAILABILITY - SYNC or FASTSYNC                * MAXIMUM_PERFORMANCE - ASYNC                * MAXIMUM_PROTECTION - SYNC The lag time between updates to the primary database and application of the redo data on the standby database, as computed by the reporting database.  Example: `9 seconds` The rate at which redo logs are synced between the associated databases.  Example: `180 Mb per second` The name of the availability domain that the standby database DB system will be located in. For example- "Uocm:PHX-AD-1". A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that the backup network of this DB system belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). Applicable only to Exadata systems. Specifies whether to create the peer database in an existing DB system or in a new DB system. (Updatable) A strong password for the `SYS`, `SYSTEM`, and `PDB Admin` users to apply during standby creation. The database [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). The database software image [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). Applicable only when creationType=`ExistingDbSystem` and when the existing database has Exadata shape. The user-friendly name of the DB system that will contain the the standby database. The display name does not have to be unique. The hostname for the DB node. Additional information about the current lifecycleState, if available. A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that this resource belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). **NsgIds restrictions:**         * Autonomous Databases with private access require at least 1 Network Security Group (NSG). The nsgIds array cannot be empty. The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the peer database's Data Guard association. The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the associated peer database. The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB home in which to create the standby database. You must supply this value to create standby database with an existing DB home The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB system in which to create the standby database. You must supply this value if creationType is `ExistingDbSystem`. The role of the peer database in this Data Guard association. The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VM Cluster in which to create the standby database. You must supply this value if creationType is `ExistingVmCluster`. (Updatable) The protection mode to set up between the primary and standby databases. For more information, see [Oracle Data Guard Protection Modes](http://docs.oracle.com/database/122/SBYDB/oracle-data-guard-protection-modes.htm#SBYDB02000) in the Oracle Data Guard documentation. The role of the reporting database in this Data Guard association. The virtual machine DB system shape to launch for the standby database in the Data Guard association. The shape determines the number of CPU cores and the amount of memory available for the DB system. Only virtual machine shapes are valid options. If you do not supply this parameter, the default shape is the shape of the primary DB system. The current state of the Data Guard association. The OCID of the subnet the DB system is associated with. **Subnet Restrictions:**         * For 1- and 2-node RAC DB systems, do not use a subnet that overlaps with 192.168.16.16/28 The date and time the Data Guard association was created. (Updatable) The redo transport type to use for this Data Guard association.  Valid values depend on the specified `protectionMode`:         * MAXIMUM_AVAILABILITY - SYNC or FASTSYNC         * MAXIMUM_PERFORMANCE - ASYNC         * MAXIMUM_PROTECTION - SYNC This resource provides the Data Guard Association resource in Oracle Cloud Infrastructure Database service.          Creates a new Data Guard association.  A Data Guard association represents the replication relationship between the         specified database and a peer database. For more information, see [Using Oracle Data Guard](https://docs.cloud.oracle.com/iaas/Content/Database/Tasks/usingdataguard.htm).          All Oracle Cloud Infrastructure resources, including Data Guard associations, get an Oracle-assigned, unique ID         called an Oracle Cloud Identifier (OCID). When you create a resource, you can find its OCID in the response.         You can also retrieve a resource's OCID by using a List API operation on that resource type, or by viewing the         resource in the Console. For more information, see         [Resource Identifiers](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).          ## Example Usage          ```python         import pulumi         import pulumi_oci as oci          test_data_guard_association = oci.database.DataGuardAssociation("testDataGuardAssociation",             creation_type=var["data_guard_association_creation_type"],             database_admin_password=var["data_guard_association_database_admin_password"],             database_id=oci_database_database["test_database"]["id"],             delete_standby_db_home_on_delete=var["data_guard_association_delete_standby_db_home_on_delete"],             protection_mode=var["data_guard_association_protection_mode"],             transport_type=var["data_guard_association_transport_type"],             availability_domain=var["data_guard_association_availability_domain"],             backup_network_nsg_ids=var["data_guard_association_backup_network_nsg_ids"],             database_software_image_id=oci_database_database_software_image["test_database_software_image"]["id"],             display_name=var["data_guard_association_display_name"],             hostname=var["data_guard_association_hostname"],             nsg_ids=var["data_guard_association_nsg_ids"],             peer_db_home_id=oci_database_db_home["test_db_home"]["id"],             peer_db_system_id=oci_database_db_system["test_db_system"]["id"],             peer_vm_cluster_id=oci_database_vm_cluster["test_vm_cluster"]["id"],             shape=var["data_guard_association_shape"],             subnet_id=oci_core_subnet["test_subnet"]["id"])         ```          ## Import          Import is not supported for this resource.          :param str resource_name: The name of the resource.         :param pulumi.ResourceOptions opts: Options for the resource.         :param pulumi.Input[str] availability_domain: The name of the availability domain that the standby database DB system will be located in. For example- "Uocm:PHX-AD-1".         :param pulumi.Input[Sequence[pulumi.Input[str]]] backup_network_nsg_ids: A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that the backup network of this DB system belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). Applicable only to Exadata systems.         :param pulumi.Input[str] creation_type: Specifies whether to create the peer database in an existing DB system or in a new DB system.         :param pulumi.Input[str] database_admin_password: (Updatable) A strong password for the `SYS`, `SYSTEM`, and `PDB Admin` users to apply during standby creation.         :param pulumi.Input[str] database_id: The database [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).         :param pulumi.Input[str] database_software_image_id: The database software image [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). Applicable only when creationType=`ExistingDbSystem` and when the existing database has Exadata shape.         :param pulumi.Input[str] display_name: The user-friendly name of the DB system that will contain the the standby database. The display name does not have to be unique.         :param pulumi.Input[str] hostname: The hostname for the DB node.         :param pulumi.Input[Sequence[pulumi.Input[str]]] nsg_ids: A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that this resource belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). **NsgIds restrictions:**                * Autonomous Databases with private access require at least 1 Network Security Group (NSG). The nsgIds array cannot be empty.         :param pulumi.Input[str] peer_db_home_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB home in which to create the standby database. You must supply this value to create standby database with an existing DB home         :param pulumi.Input[str] peer_db_system_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB system in which to create the standby database. You must supply this value if creationType is `ExistingDbSystem`.         :param pulumi.Input[str] peer_vm_cluster_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VM Cluster in which to create the standby database. You must supply this value if creationType is `ExistingVmCluster`.         :param pulumi.Input[str] protection_mode: (Updatable) The protection mode to set up between the primary and standby databases. For more information, see [Oracle Data Guard Protection Modes](http://docs.oracle.com/database/122/SBYDB/oracle-data-guard-protection-modes.htm#SBYDB02000) in the Oracle Data Guard documentation.         :param pulumi.Input[str] shape: The virtual machine DB system shape to launch for the standby database in the Data Guard association. The shape determines the number of CPU cores and the amount of memory available for the DB system. Only virtual machine shapes are valid options. If you do not supply this parameter, the default shape is the shape of the primary DB system.         :param pulumi.Input[str] subnet_id: The OCID of the subnet the DB system is associated with. **Subnet Restrictions:**                * For 1- and 2-node RAC DB systems, do not use a subnet that overlaps with 192.168.16.16/28         :param pulumi.Input[str] transport_type: (Updatable) The redo transport type to use for this Data Guard association.  Valid values depend on the specified `protectionMode`:                * MAXIMUM_AVAILABILITY - SYNC or FASTSYNC                * MAXIMUM_PERFORMANCE - ASYNC                * MAXIMUM_PROTECTION - SYNC This resource provides the Data Guard Association resource in Oracle Cloud Infrastructure Database service.          Creates a new Data Guard association.  A Data Guard association represents the replication relationship between the         specified database and a peer database. For more information, see [Using Oracle Data Guard](https://docs.cloud.oracle.com/iaas/Content/Database/Tasks/usingdataguard.htm).          All Oracle Cloud Infrastructure resources, including Data Guard associations, get an Oracle-assigned, unique ID         called an Oracle Cloud Identifier (OCID). When you create a resource, you can find its OCID in the response.         You can also retrieve a resource's OCID by using a List API operation on that resource type, or by viewing the         resource in the Console. For more information, see         [Resource Identifiers](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).          ## Example Usage          ```python         import pulumi         import pulumi_oci as oci          test_data_guard_association = oci.database.DataGuardAssociation("testDataGuardAssociation",             creation_type=var["data_guard_association_creation_type"],             database_admin_password=var["data_guard_association_database_admin_password"],             database_id=oci_database_database["test_database"]["id"],             delete_standby_db_home_on_delete=var["data_guard_association_delete_standby_db_home_on_delete"],             protection_mode=var["data_guard_association_protection_mode"],             transport_type=var["data_guard_association_transport_type"],             availability_domain=var["data_guard_association_availability_domain"],             backup_network_nsg_ids=var["data_guard_association_backup_network_nsg_ids"],             database_software_image_id=oci_database_database_software_image["test_database_software_image"]["id"],             display_name=var["data_guard_association_display_name"],             hostname=var["data_guard_association_hostname"],             nsg_ids=var["data_guard_association_nsg_ids"],             peer_db_home_id=oci_database_db_home["test_db_home"]["id"],             peer_db_system_id=oci_database_db_system["test_db_system"]["id"],             peer_vm_cluster_id=oci_database_vm_cluster["test_vm_cluster"]["id"],             shape=var["data_guard_association_shape"],             subnet_id=oci_core_subnet["test_subnet"]["id"])         ```          ## Import          Import is not supported for this resource.          :param str resource_name: The name of the resource.         :param DataGuardAssociationArgs args: The arguments to use to populate this resource's properties.         :param pulumi.ResourceOptions opts: Options for the resource. Get an existing DataGuardAssociation resource's state with the given name, id, and optional extra         properties used to qualify the lookup.          :param str resource_name: The unique name of the resulting resource.         :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.         :param pulumi.ResourceOptions opts: Options for the resource.         :param pulumi.Input[str] apply_lag: The lag time between updates to the primary database and application of the redo data on the standby database, as computed by the reporting database.  Example: `9 seconds`         :param pulumi.Input[str] apply_rate: The rate at which redo logs are synced between the associated databases.  Example: `180 Mb per second`         :param pulumi.Input[str] availability_domain: The name of the availability domain that the standby database DB system will be located in. For example- "Uocm:PHX-AD-1".         :param pulumi.Input[Sequence[pulumi.Input[str]]] backup_network_nsg_ids: A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that the backup network of this DB system belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). Applicable only to Exadata systems.         :param pulumi.Input[str] creation_type: Specifies whether to create the peer database in an existing DB system or in a new DB system.         :param pulumi.Input[str] database_admin_password: (Updatable) A strong password for the `SYS`, `SYSTEM`, and `PDB Admin` users to apply during standby creation.         :param pulumi.Input[str] database_id: The database [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).         :param pulumi.Input[str] database_software_image_id: The database software image [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). Applicable only when creationType=`ExistingDbSystem` and when the existing database has Exadata shape.         :param pulumi.Input[str] display_name: The user-friendly name of the DB system that will contain the the standby database. The display name does not have to be unique.         :param pulumi.Input[str] hostname: The hostname for the DB node.         :param pulumi.Input[str] lifecycle_details: Additional information about the current lifecycleState, if available.         :param pulumi.Input[Sequence[pulumi.Input[str]]] nsg_ids: A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that this resource belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). **NsgIds restrictions:**                * Autonomous Databases with private access require at least 1 Network Security Group (NSG). The nsgIds array cannot be empty.         :param pulumi.Input[str] peer_data_guard_association_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the peer database's Data Guard association.         :param pulumi.Input[str] peer_database_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the associated peer database.         :param pulumi.Input[str] peer_db_home_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB home in which to create the standby database. You must supply this value to create standby database with an existing DB home         :param pulumi.Input[str] peer_db_system_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB system in which to create the standby database. You must supply this value if creationType is `ExistingDbSystem`.         :param pulumi.Input[str] peer_role: The role of the peer database in this Data Guard association.         :param pulumi.Input[str] peer_vm_cluster_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VM Cluster in which to create the standby database. You must supply this value if creationType is `ExistingVmCluster`.         :param pulumi.Input[str] protection_mode: (Updatable) The protection mode to set up between the primary and standby databases. For more information, see [Oracle Data Guard Protection Modes](http://docs.oracle.com/database/122/SBYDB/oracle-data-guard-protection-modes.htm#SBYDB02000) in the Oracle Data Guard documentation.         :param pulumi.Input[str] role: The role of the reporting database in this Data Guard association.         :param pulumi.Input[str] shape: The virtual machine DB system shape to launch for the standby database in the Data Guard association. The shape determines the number of CPU cores and the amount of memory available for the DB system. Only virtual machine shapes are valid options. If you do not supply this parameter, the default shape is the shape of the primary DB system.         :param pulumi.Input[str] state: The current state of the Data Guard association.         :param pulumi.Input[str] subnet_id: The OCID of the subnet the DB system is associated with. **Subnet Restrictions:**                * For 1- and 2-node RAC DB systems, do not use a subnet that overlaps with 192.168.16.16/28         :param pulumi.Input[str] time_created: The date and time the Data Guard association was created.         :param pulumi.Input[str] transport_type: (Updatable) The redo transport type to use for this Data Guard association.  Valid values depend on the specified `protectionMode`:                * MAXIMUM_AVAILABILITY - SYNC or FASTSYNC                * MAXIMUM_PERFORMANCE - ASYNC                * MAXIMUM_PROTECTION - SYNC The lag time between updates to the primary database and application of the redo data on the standby database, as computed by the reporting database.  Example: `9 seconds` The rate at which redo logs are synced between the associated databases.  Example: `180 Mb per second` The name of the availability domain that the standby database DB system will be located in. For example- "Uocm:PHX-AD-1". A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that the backup network of this DB system belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). Applicable only to Exadata systems. Specifies whether to create the peer database in an existing DB system or in a new DB system. (Updatable) A strong password for the `SYS`, `SYSTEM`, and `<PASSWORD>` users to apply during standby creation. The database [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). The database software image [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). Applicable only when creationType=`ExistingDbSystem` and when the existing database has Exadata shape. The user-friendly name of the DB system that will contain the the standby database. The display name does not have to be unique. The hostname for the DB node. Additional information about the current lifecycleState, if available. A list of the [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security groups (NSGs) that this resource belongs to. Setting this to an empty array after the list is created removes the resource from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm). **NsgIds restrictions:**         * Autonomous Databases with private access require at least 1 Network Security Group (NSG). The nsgIds array cannot be empty. The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the peer database's Data Guard association. The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the associated peer database. The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB home in which to create the standby database. You must supply this value to create standby database with an existing DB home The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB system in which to create the standby database. You must supply this value if creationType is `ExistingDbSystem`. The role of the peer database in this Data Guard association. The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VM Cluster in which to create the standby database. You must supply this value if creationType is `ExistingVmCluster`. (Updatable) The protection mode to set up between the primary and standby databases. For more information, see [Oracle Data Guard Protection Modes](http://docs.oracle.com/database/122/SBYDB/oracle-data-guard-protection-modes.htm#SBYDB02000) in the Oracle Data Guard documentation. The role of the reporting database in this Data Guard association. The virtual machine DB system shape to launch for the standby database in the Data Guard association. The shape determines the number of CPU cores and the amount of memory available for the DB system. Only virtual machine shapes are valid options. If you do not supply this parameter, the default shape is the shape of the primary DB system. The current state of the Data Guard association. The OCID of the subnet the DB system is associated with. **Subnet Restrictions:**         * For 1- and 2-node RAC DB systems, do not use a subnet that overlaps with 192.168.16.16/28 The date and time the Data Guard association was created. (Updatable) The redo transport type to use for this Data Guard association.  Valid values depend on the specified `protectionMode`:         * MAXIMUM_AVAILABILITY - SYNC or FASTSYNC         * MAXIMUM_PERFORMANCE - ASYNC         * MAXIMUM_PROTECTION - SYNC