# 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 copy
import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from .. import _utilities
from . import outputs

__all__ = [
    'ExternalAsmServicedDatabase',
    'ExternalClusterNetworkConfiguration',
    'ExternalClusterScanConfiguration',
    'ExternalClusterVipConfiguration',
    'ExternalDbSystemConnectorConnectionInfo',
    'ExternalDbSystemConnectorConnectionInfoConnectionCredential',
    'ExternalDbSystemConnectorConnectionInfoConnectionString',
    'ExternalDbSystemDatabaseManagementConfig',
    'ExternalDbSystemDiscoveryDiscoveredComponent',
    'ExternalDbSystemDiscoveryDiscoveredComponentAsmInstance',
    'ExternalDbSystemDiscoveryDiscoveredComponentAssociatedComponent',
    'ExternalDbSystemDiscoveryDiscoveredComponentClusterInstance',
    'ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnector',
    'ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfo',
    'ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionCredential',
    'ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionString',
    'ExternalDbSystemDiscoveryDiscoveredComponentConnector',
    'ExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfo',
    'ExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoConnectionCredential',
    'ExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoConnectionString',
    'ExternalDbSystemDiscoveryDiscoveredComponentEndpoint',
    'ExternalDbSystemDiscoveryDiscoveredComponentNetworkConfiguration',
    'ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabase',
    'ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnector',
    'ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfo',
    'ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionCredential',
    'ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionString',
    'ExternalDbSystemDiscoveryDiscoveredComponentScanConfiguration',
    'ExternalDbSystemDiscoveryDiscoveredComponentVipConfiguration',
    'ExternalDbSystemDiscoveryPatchOperation',
    'ExternalDbSystemDiscoveryPatchOperationValue',
    'ExternalDbSystemDiscoveryPatchOperationValueConnector',
    'ExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfo',
    'ExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoConnectionCredentials',
    'ExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoConnectionString',
    'ExternalListenerEndpoint',
    'ExternalListenerServicedAsm',
    'ExternalListenerServicedDatabase',
    'ManagedDatabaseGroupManagedDatabase',
    'ManagedDatabasesChangeDatabaseParameterCredentials',
    'ManagedDatabasesChangeDatabaseParameterParameter',
    'ManagedDatabasesResetDatabaseParameterCredentials',
    'GetDbManagementPrivateEndpointAssociatedDatabaseItemResult',
    'GetDbManagementPrivateEndpointAssociatedDatabasesAssociatedDatabaseCollectionResult',
    'GetDbManagementPrivateEndpointAssociatedDatabasesAssociatedDatabaseCollectionItemResult',
    'GetDbManagementPrivateEndpointAssociatedDatabasesFilterResult',
    'GetDbManagementPrivateEndpointsDbManagementPrivateEndpointCollectionResult',
    'GetDbManagementPrivateEndpointsDbManagementPrivateEndpointCollectionItemResult',
    'GetDbManagementPrivateEndpointsFilterResult',
    'GetExternalAsmConfigurationInitParameterResult',
    'GetExternalAsmDiskGroupsExternalAsmDiskGroupCollectionResult',
    'GetExternalAsmDiskGroupsExternalAsmDiskGroupCollectionItemResult',
    'GetExternalAsmDiskGroupsFilterResult',
    'GetExternalAsmInstancesExternalAsmInstanceCollectionResult',
    'GetExternalAsmInstancesExternalAsmInstanceCollectionItemResult',
    'GetExternalAsmInstancesFilterResult',
    'GetExternalAsmServicedDatabaseResult',
    'GetExternalAsmUsersExternalAsmUserCollectionResult',
    'GetExternalAsmUsersExternalAsmUserCollectionItemResult',
    'GetExternalAsmUsersFilterResult',
    'GetExternalAsmsExternalAsmCollectionResult',
    'GetExternalAsmsExternalAsmCollectionItemResult',
    'GetExternalAsmsExternalAsmCollectionItemServicedDatabaseResult',
    'GetExternalAsmsFilterResult',
    'GetExternalClusterInstancesExternalClusterInstanceCollectionResult',
    'GetExternalClusterInstancesExternalClusterInstanceCollectionItemResult',
    'GetExternalClusterInstancesFilterResult',
    'GetExternalClusterNetworkConfigurationResult',
    'GetExternalClusterScanConfigurationResult',
    'GetExternalClusterVipConfigurationResult',
    'GetExternalClustersExternalClusterCollectionResult',
    'GetExternalClustersExternalClusterCollectionItemResult',
    'GetExternalClustersExternalClusterCollectionItemNetworkConfigurationResult',
    'GetExternalClustersExternalClusterCollectionItemScanConfigurationResult',
    'GetExternalClustersExternalClusterCollectionItemVipConfigurationResult',
    'GetExternalClustersFilterResult',
    'GetExternalDatabasesExternalDatabaseCollectionResult',
    'GetExternalDatabasesExternalDatabaseCollectionItemResult',
    'GetExternalDatabasesExternalDatabaseCollectionItemDbManagementConfigResult',
    'GetExternalDatabasesExternalDatabaseCollectionItemDbSystemInfoResult',
    'GetExternalDatabasesExternalDatabaseCollectionItemInstanceDetailResult',
    'GetExternalDatabasesFilterResult',
    'GetExternalDbHomesExternalDbHomeCollectionResult',
    'GetExternalDbHomesExternalDbHomeCollectionItemResult',
    'GetExternalDbHomesFilterResult',
    'GetExternalDbNodesExternalDbNodeCollectionResult',
    'GetExternalDbNodesExternalDbNodeCollectionItemResult',
    'GetExternalDbNodesFilterResult',
    'GetExternalDbSystemConnectorConnectionInfoResult',
    'GetExternalDbSystemConnectorConnectionInfoConnectionCredentialResult',
    'GetExternalDbSystemConnectorConnectionInfoConnectionStringResult',
    'GetExternalDbSystemConnectorsExternalDbSystemConnectorCollectionResult',
    'GetExternalDbSystemConnectorsExternalDbSystemConnectorCollectionItemResult',
    'GetExternalDbSystemConnectorsExternalDbSystemConnectorCollectionItemConnectionInfoResult',
    'GetExternalDbSystemConnectorsExternalDbSystemConnectorCollectionItemConnectionInfoConnectionCredentialResult',
    'GetExternalDbSystemConnectorsExternalDbSystemConnectorCollectionItemConnectionInfoConnectionStringResult',
    'GetExternalDbSystemConnectorsFilterResult',
    'GetExternalDbSystemDatabaseManagementConfigResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentAsmInstanceResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentAssociatedComponentResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentClusterInstanceResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentClusterInstanceConnectorResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentClusterInstanceConnectorConnectionInfoResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionCredentialResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionStringResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentConnectorResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentConnectorConnectionInfoResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentConnectorConnectionInfoConnectionCredentialResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentConnectorConnectionInfoConnectionStringResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentEndpointResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentNetworkConfigurationResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentPluggableDatabaseResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentPluggableDatabaseConnectorResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentPluggableDatabaseConnectorConnectionInfoResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionCredentialResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionStringResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentScanConfigurationResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentVipConfigurationResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemPatchOperationResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemPatchOperationValueResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemPatchOperationValueConnectorResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemPatchOperationValueConnectorConnectionInfoResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemPatchOperationValueConnectorConnectionInfoConnectionCredentialResult',
    'GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemPatchOperationValueConnectorConnectionInfoConnectionStringResult',
    'GetExternalDbSystemDiscoveriesFilterResult',
    'GetExternalDbSystemDiscoveryDiscoveredComponentResult',
    'GetExternalDbSystemDiscoveryDiscoveredComponentAsmInstanceResult',
    'GetExternalDbSystemDiscoveryDiscoveredComponentAssociatedComponentResult',
    'GetExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceResult',
    'GetExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorResult',
    'GetExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoResult',
    'GetExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionCredentialResult',
    'GetExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionStringResult',
    'GetExternalDbSystemDiscoveryDiscoveredComponentConnectorResult',
    'GetExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoResult',
    'GetExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoConnectionCredentialResult',
    'GetExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoConnectionStringResult',
    'GetExternalDbSystemDiscoveryDiscoveredComponentEndpointResult',
    'GetExternalDbSystemDiscoveryDiscoveredComponentNetworkConfigurationResult',
    'GetExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseResult',
    'GetExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorResult',
    'GetExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoResult',
    'GetExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionCredentialResult',
    'GetExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionStringResult',
    'GetExternalDbSystemDiscoveryDiscoveredComponentScanConfigurationResult',
    'GetExternalDbSystemDiscoveryDiscoveredComponentVipConfigurationResult',
    'GetExternalDbSystemDiscoveryPatchOperationResult',
    'GetExternalDbSystemDiscoveryPatchOperationValueResult',
    'GetExternalDbSystemDiscoveryPatchOperationValueConnectorResult',
    'GetExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoResult',
    'GetExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoConnectionCredentialResult',
    'GetExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoConnectionStringResult',
    'GetExternalDbSystemsExternalDbSystemCollectionResult',
    'GetExternalDbSystemsExternalDbSystemCollectionItemResult',
    'GetExternalDbSystemsExternalDbSystemCollectionItemDatabaseManagementConfigResult',
    'GetExternalDbSystemsFilterResult',
    'GetExternalListenerEndpointResult',
    'GetExternalListenerServicedAsmResult',
    'GetExternalListenerServicedDatabaseResult',
    'GetExternalListenerServicesExternalListenerServiceCollectionResult',
    'GetExternalListenerServicesExternalListenerServiceCollectionItemResult',
    'GetExternalListenerServicesFilterResult',
    'GetExternalListenersExternalListenerCollectionResult',
    'GetExternalListenersExternalListenerCollectionItemResult',
    'GetExternalListenersExternalListenerCollectionItemEndpointResult',
    'GetExternalListenersExternalListenerCollectionItemServicedAsmResult',
    'GetExternalListenersExternalListenerCollectionItemServicedDatabaseResult',
    'GetExternalListenersFilterResult',
    'GetJobExecutionsStatusItemResult',
    'GetJobExecutionsStatusesFilterResult',
    'GetJobExecutionsStatusesJobExecutionsStatusSummaryCollectionResult',
    'GetJobExecutionsStatusesJobExecutionsStatusSummaryCollectionItemResult',
    'GetManagedDatabaseAddmTaskItemResult',
    'GetManagedDatabaseAddmTasksAddmTasksCollectionResult',
    'GetManagedDatabaseAddmTasksAddmTasksCollectionItemResult',
    'GetManagedDatabaseAddmTasksFilterResult',
    'GetManagedDatabaseAlertLogCountItemResult',
    'GetManagedDatabaseAlertLogCountsAlertLogCountsCollectionResult',
    'GetManagedDatabaseAlertLogCountsAlertLogCountsCollectionItemResult',
    'GetManagedDatabaseAlertLogCountsFilterResult',
    'GetManagedDatabaseAttentionLogCountItemResult',
    'GetManagedDatabaseAttentionLogCountsAttentionLogCountsCollectionResult',
    'GetManagedDatabaseAttentionLogCountsAttentionLogCountsCollectionItemResult',
    'GetManagedDatabaseAttentionLogCountsFilterResult',
    'GetManagedDatabaseGroupManagedDatabaseResult',
    'GetManagedDatabaseGroupsFilterResult',
    'GetManagedDatabaseGroupsManagedDatabaseGroupCollectionResult',
    'GetManagedDatabaseGroupsManagedDatabaseGroupCollectionItemResult',
    'GetManagedDatabaseGroupsManagedDatabaseGroupCollectionItemManagedDatabaseResult',
    'GetManagedDatabaseManagedDatabaseGroupResult',
    'GetManagedDatabaseOptimizerStatisticsAdvisorExecutionDatabaseResult',
    'GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportResult',
    'GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleResult',
    'GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingResult',
    'GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingDetailResult',
    'GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingDetailSchemaResult',
    'GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingRecommendationResult',
    'GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingRecommendationExampleResult',
    'GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingRecommendationExampleLineResult',
    'GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingRecommendationRationaleResult',
    'GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsFilterResult',
    'GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionResult',
    'GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemResult',
    'GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemDatabaseResult',
    'GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportResult',
    'GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleResult',
    'GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingResult',
    'GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingDetailResult',
    'GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingDetailSchemaResult',
    'GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingRecommendationResult',
    'GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingRecommendationExampleResult',
    'GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingRecommendationExampleLineResult',
    'GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingRecommendationRationaleResult',
    'GetManagedDatabaseOptimizerStatisticsCollectionAggregationsFilterResult',
    'GetManagedDatabaseOptimizerStatisticsCollectionAggregationsOptimizerStatisticsCollectionAggregationsCollectionResult',
    'GetManagedDatabaseOptimizerStatisticsCollectionAggregationsOptimizerStatisticsCollectionAggregationsCollectionItemResult',
    'GetManagedDatabaseOptimizerStatisticsCollectionOperationDatabaseResult',
    'GetManagedDatabaseOptimizerStatisticsCollectionOperationTaskResult',
    'GetManagedDatabaseOptimizerStatisticsCollectionOperationsFilterResult',
    'GetManagedDatabaseOptimizerStatisticsCollectionOperationsOptimizerStatisticsCollectionOperationsCollectionResult',
    'GetManagedDatabaseOptimizerStatisticsCollectionOperationsOptimizerStatisticsCollectionOperationsCollectionItemResult',
    'GetManagedDatabaseOptimizerStatisticsCollectionOperationsOptimizerStatisticsCollectionOperationsCollectionItemDatabaseResult',
    'GetManagedDatabaseOptimizerStatisticsCollectionOperationsOptimizerStatisticsCollectionOperationsCollectionItemTaskResult',
    'GetManagedDatabaseSqlTuningAdvisorTaskItemResult',
    'GetManagedDatabaseSqlTuningAdvisorTasksExecutionPlanStatsComparisonModifiedResult',
    'GetManagedDatabaseSqlTuningAdvisorTasksExecutionPlanStatsComparisonOriginalResult',
    'GetManagedDatabaseSqlTuningAdvisorTasksFilterResult',
    'GetManagedDatabaseSqlTuningAdvisorTasksFindingItemResult',
    'GetManagedDatabaseSqlTuningAdvisorTasksFindingsFilterResult',
    'GetManagedDatabaseSqlTuningAdvisorTasksFindingsSqlTuningAdvisorTaskFindingCollectionResult',
    'GetManagedDatabaseSqlTuningAdvisorTasksFindingsSqlTuningAdvisorTaskFindingCollectionItemResult',
    'GetManagedDatabaseSqlTuningAdvisorTasksRecommendationItemResult',
    'GetManagedDatabaseSqlTuningAdvisorTasksRecommendationsFilterResult',
    'GetManagedDatabaseSqlTuningAdvisorTasksRecommendationsSqlTuningAdvisorTaskRecommendationCollectionResult',
    'GetManagedDatabaseSqlTuningAdvisorTasksRecommendationsSqlTuningAdvisorTaskRecommendationCollectionItemResult',
    'GetManagedDatabaseSqlTuningAdvisorTasksSqlExecutionPlanPlanResult',
    'GetManagedDatabaseSqlTuningAdvisorTasksSqlTuningAdvisorTaskCollectionResult',
    'GetManagedDatabaseSqlTuningAdvisorTasksSqlTuningAdvisorTaskCollectionItemResult',
    'GetManagedDatabaseSqlTuningAdvisorTasksSummaryReportIndexFindingResult',
    'GetManagedDatabaseSqlTuningAdvisorTasksSummaryReportObjectStatFindingResult',
    'GetManagedDatabaseSqlTuningAdvisorTasksSummaryReportStatisticResult',
    'GetManagedDatabaseSqlTuningAdvisorTasksSummaryReportStatisticFindingBenefitResult',
    'GetManagedDatabaseSqlTuningAdvisorTasksSummaryReportStatisticFindingCountResult',
    'GetManagedDatabaseSqlTuningAdvisorTasksSummaryReportStatisticStatementCountResult',
    'GetManagedDatabaseSqlTuningAdvisorTasksSummaryReportTaskInfoResult',
    'GetManagedDatabaseSqlTuningSetItemResult',
    'GetManagedDatabaseSqlTuningSetsFilterResult',
    'GetManagedDatabaseSqlTuningSetsSqlTuningSetCollectionResult',
    'GetManagedDatabaseSqlTuningSetsSqlTuningSetCollectionItemResult',
    'GetManagedDatabaseTableStatisticsFilterResult',
    'GetManagedDatabaseTableStatisticsTableStatisticsCollectionResult',
    'GetManagedDatabaseTableStatisticsTableStatisticsCollectionItemResult',
    'GetManagedDatabaseUserConsumerGroupPrivilegeItemResult',
    'GetManagedDatabaseUserConsumerGroupPrivilegesConsumerGroupPrivilegeCollectionResult',
    'GetManagedDatabaseUserConsumerGroupPrivilegesConsumerGroupPrivilegeCollectionItemResult',
    'GetManagedDatabaseUserConsumerGroupPrivilegesFilterResult',
    'GetManagedDatabaseUserDataAccessContainerItemResult',
    'GetManagedDatabaseUserDataAccessContainersDataAccessContainerCollectionResult',
    'GetManagedDatabaseUserDataAccessContainersDataAccessContainerCollectionItemResult',
    'GetManagedDatabaseUserDataAccessContainersFilterResult',
    'GetManagedDatabaseUserObjectPrivilegeItemResult',
    'GetManagedDatabaseUserObjectPrivilegesFilterResult',
    'GetManagedDatabaseUserObjectPrivilegesObjectPrivilegeCollectionResult',
    'GetManagedDatabaseUserObjectPrivilegesObjectPrivilegeCollectionItemResult',
    'GetManagedDatabaseUserProxiedForUserItemResult',
    'GetManagedDatabaseUserProxiedForUsersFilterResult',
    'GetManagedDatabaseUserProxiedForUsersProxiedForUserCollectionResult',
    'GetManagedDatabaseUserProxiedForUsersProxiedForUserCollectionItemResult',
    'GetManagedDatabaseUserRoleItemResult',
    'GetManagedDatabaseUserRolesFilterResult',
    'GetManagedDatabaseUserRolesRoleCollectionResult',
    'GetManagedDatabaseUserRolesRoleCollectionItemResult',
    'GetManagedDatabaseUsersFilterResult',
    'GetManagedDatabaseUsersUserCollectionResult',
    'GetManagedDatabaseUsersUserCollectionItemResult',
    'GetManagedDatabasesAsmPropertiesAsmPropertyCollectionResult',
    'GetManagedDatabasesAsmPropertiesAsmPropertyCollectionItemResult',
    'GetManagedDatabasesAsmPropertiesFilterResult',
    'GetManagedDatabasesAsmPropertyItemResult',
    'GetManagedDatabasesDatabaseParameterItemResult',
    'GetManagedDatabasesDatabaseParameterItemAllowedValueResult',
    'GetManagedDatabasesDatabaseParametersDatabaseParametersCollectionResult',
    'GetManagedDatabasesDatabaseParametersDatabaseParametersCollectionItemResult',
    'GetManagedDatabasesDatabaseParametersDatabaseParametersCollectionItemAllowedValueResult',
    'GetManagedDatabasesDatabaseParametersFilterResult',
    'GetManagedDatabasesFilterResult',
    'GetManagedDatabasesManagedDatabaseCollectionResult',
    'GetManagedDatabasesManagedDatabaseCollectionItemResult',
    'GetManagedDatabasesManagedDatabaseCollectionItemManagedDatabaseGroupResult',
    'GetManagedDatabasesUserProxyUserItemResult',
    'GetManagedDatabasesUserProxyUsersFilterResult',
    'GetManagedDatabasesUserProxyUsersProxyUserCollectionResult',
    'GetManagedDatabasesUserProxyUsersProxyUserCollectionItemResult',
    'GetManagedDatabasesUserSystemPrivilegeItemResult',
    'GetManagedDatabasesUserSystemPrivilegesFilterResult',
    'GetManagedDatabasesUserSystemPrivilegesSystemPrivilegeCollectionResult',
    'GetManagedDatabasesUserSystemPrivilegesSystemPrivilegeCollectionItemResult',
]

@pulumi.output_type
class ExternalAsmServicedDatabase(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "compartmentId":
            suggest = "compartment_id"
        elif key == "databaseSubType":
            suggest = "database_sub_type"
        elif key == "databaseType":
            suggest = "database_type"
        elif key == "dbUniqueName":
            suggest = "db_unique_name"
        elif key == "diskGroups":
            suggest = "disk_groups"
        elif key == "displayName":
            suggest = "display_name"
        elif key == "isManaged":
            suggest = "is_managed"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalAsmServicedDatabase. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalAsmServicedDatabase.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalAsmServicedDatabase.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 compartment_id: Optional[str] = None,
                 database_sub_type: Optional[str] = None,
                 database_type: Optional[str] = None,
                 db_unique_name: Optional[str] = None,
                 disk_groups: Optional[Sequence[str]] = None,
                 display_name: Optional[str] = None,
                 id: Optional[str] = None,
                 is_managed: Optional[bool] = None):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the external database resides.
        :param str database_sub_type: The subtype of Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, Non-container Database, Autonomous Database, or Autonomous Container Database.
        :param str database_type: The type of Oracle Database installation.
        :param str db_unique_name: The unique name of the external database.
        :param Sequence[str] disk_groups: The list of ASM disk groups used by the database.
        :param str display_name: The user-friendly name for the database. The name does not have to be unique.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external database.
        :param bool is_managed: Indicates whether the database is a Managed Database or not.
        """
        if compartment_id is not None:
            pulumi.set(__self__, "compartment_id", compartment_id)
        if database_sub_type is not None:
            pulumi.set(__self__, "database_sub_type", database_sub_type)
        if database_type is not None:
            pulumi.set(__self__, "database_type", database_type)
        if db_unique_name is not None:
            pulumi.set(__self__, "db_unique_name", db_unique_name)
        if disk_groups is not None:
            pulumi.set(__self__, "disk_groups", disk_groups)
        if display_name is not None:
            pulumi.set(__self__, "display_name", display_name)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if is_managed is not None:
            pulumi.set(__self__, "is_managed", is_managed)

    @property
    @pulumi.getter(name="compartmentId")
    def compartment_id(self) -> Optional[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the external database resides.
        """
        return pulumi.get(self, "compartment_id")

    @property
    @pulumi.getter(name="databaseSubType")
    def database_sub_type(self) -> Optional[str]:
        """
        The subtype of Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, Non-container Database, Autonomous Database, or Autonomous Container Database.
        """
        return pulumi.get(self, "database_sub_type")

    @property
    @pulumi.getter(name="databaseType")
    def database_type(self) -> Optional[str]:
        """
        The type of Oracle Database installation.
        """
        return pulumi.get(self, "database_type")

    @property
    @pulumi.getter(name="dbUniqueName")
    def db_unique_name(self) -> Optional[str]:
        """
        The unique name of the external database.
        """
        return pulumi.get(self, "db_unique_name")

    @property
    @pulumi.getter(name="diskGroups")
    def disk_groups(self) -> Optional[Sequence[str]]:
        """
        The list of ASM disk groups used by the database.
        """
        return pulumi.get(self, "disk_groups")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> Optional[str]:
        """
        The user-friendly name for the database. The name does not have to be unique.
        """
        return pulumi.get(self, "display_name")

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

    @property
    @pulumi.getter(name="isManaged")
    def is_managed(self) -> Optional[bool]:
        """
        Indicates whether the database is a Managed Database or not.
        """
        return pulumi.get(self, "is_managed")


@pulumi.output_type
class ExternalClusterNetworkConfiguration(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "networkNumber":
            suggest = "network_number"
        elif key == "networkType":
            suggest = "network_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalClusterNetworkConfiguration. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalClusterNetworkConfiguration.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalClusterNetworkConfiguration.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 network_number: Optional[int] = None,
                 network_type: Optional[str] = None,
                 subnet: Optional[str] = None):
        """
        :param int network_number: The network number from which VIPs are obtained.
        :param str network_type: The network type.
        :param str subnet: The subnet for the network.
        """
        if network_number is not None:
            pulumi.set(__self__, "network_number", network_number)
        if network_type is not None:
            pulumi.set(__self__, "network_type", network_type)
        if subnet is not None:
            pulumi.set(__self__, "subnet", subnet)

    @property
    @pulumi.getter(name="networkNumber")
    def network_number(self) -> Optional[int]:
        """
        The network number from which VIPs are obtained.
        """
        return pulumi.get(self, "network_number")

    @property
    @pulumi.getter(name="networkType")
    def network_type(self) -> Optional[str]:
        """
        The network type.
        """
        return pulumi.get(self, "network_type")

    @property
    @pulumi.getter
    def subnet(self) -> Optional[str]:
        """
        The subnet for the network.
        """
        return pulumi.get(self, "subnet")


@pulumi.output_type
class ExternalClusterScanConfiguration(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "networkNumber":
            suggest = "network_number"
        elif key == "scanName":
            suggest = "scan_name"
        elif key == "scanPort":
            suggest = "scan_port"
        elif key == "scanProtocol":
            suggest = "scan_protocol"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalClusterScanConfiguration. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalClusterScanConfiguration.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalClusterScanConfiguration.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 network_number: Optional[int] = None,
                 scan_name: Optional[str] = None,
                 scan_port: Optional[int] = None,
                 scan_protocol: Optional[str] = None):
        """
        :param int network_number: The network number from which VIPs are obtained.
        :param str scan_name: The name of the SCAN listener.
        :param int scan_port: The port number of the SCAN listener.
        :param str scan_protocol: The protocol of the SCAN listener.
        """
        if network_number is not None:
            pulumi.set(__self__, "network_number", network_number)
        if scan_name is not None:
            pulumi.set(__self__, "scan_name", scan_name)
        if scan_port is not None:
            pulumi.set(__self__, "scan_port", scan_port)
        if scan_protocol is not None:
            pulumi.set(__self__, "scan_protocol", scan_protocol)

    @property
    @pulumi.getter(name="networkNumber")
    def network_number(self) -> Optional[int]:
        """
        The network number from which VIPs are obtained.
        """
        return pulumi.get(self, "network_number")

    @property
    @pulumi.getter(name="scanName")
    def scan_name(self) -> Optional[str]:
        """
        The name of the SCAN listener.
        """
        return pulumi.get(self, "scan_name")

    @property
    @pulumi.getter(name="scanPort")
    def scan_port(self) -> Optional[int]:
        """
        The port number of the SCAN listener.
        """
        return pulumi.get(self, "scan_port")

    @property
    @pulumi.getter(name="scanProtocol")
    def scan_protocol(self) -> Optional[str]:
        """
        The protocol of the SCAN listener.
        """
        return pulumi.get(self, "scan_protocol")


@pulumi.output_type
class ExternalClusterVipConfiguration(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "networkNumber":
            suggest = "network_number"
        elif key == "nodeName":
            suggest = "node_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalClusterVipConfiguration. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalClusterVipConfiguration.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalClusterVipConfiguration.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 address: Optional[str] = None,
                 network_number: Optional[int] = None,
                 node_name: Optional[str] = None):
        """
        :param str address: The VIP name or IP address.
        :param int network_number: The network number from which VIPs are obtained.
        :param str node_name: The name of the node with the VIP.
        """
        if address is not None:
            pulumi.set(__self__, "address", address)
        if network_number is not None:
            pulumi.set(__self__, "network_number", network_number)
        if node_name is not None:
            pulumi.set(__self__, "node_name", node_name)

    @property
    @pulumi.getter
    def address(self) -> Optional[str]:
        """
        The VIP name or IP address.
        """
        return pulumi.get(self, "address")

    @property
    @pulumi.getter(name="networkNumber")
    def network_number(self) -> Optional[int]:
        """
        The network number from which VIPs are obtained.
        """
        return pulumi.get(self, "network_number")

    @property
    @pulumi.getter(name="nodeName")
    def node_name(self) -> Optional[str]:
        """
        The name of the node with the VIP.
        """
        return pulumi.get(self, "node_name")


@pulumi.output_type
class ExternalDbSystemConnectorConnectionInfo(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "componentType":
            suggest = "component_type"
        elif key == "connectionCredentials":
            suggest = "connection_credentials"
        elif key == "connectionStrings":
            suggest = "connection_strings"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemConnectorConnectionInfo. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemConnectorConnectionInfo.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemConnectorConnectionInfo.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 component_type: str,
                 connection_credentials: Optional[Sequence['outputs.ExternalDbSystemConnectorConnectionInfoConnectionCredential']] = None,
                 connection_strings: Optional[Sequence['outputs.ExternalDbSystemConnectorConnectionInfoConnectionString']] = None):
        """
        :param str component_type: The component type.
        :param Sequence['ExternalDbSystemConnectorConnectionInfoConnectionCredentialArgs'] connection_credentials: The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        :param Sequence['ExternalDbSystemConnectorConnectionInfoConnectionStringArgs'] connection_strings: The Oracle Database connection string.
        """
        pulumi.set(__self__, "component_type", component_type)
        if connection_credentials is not None:
            pulumi.set(__self__, "connection_credentials", connection_credentials)
        if connection_strings is not None:
            pulumi.set(__self__, "connection_strings", connection_strings)

    @property
    @pulumi.getter(name="componentType")
    def component_type(self) -> str:
        """
        The component type.
        """
        return pulumi.get(self, "component_type")

    @property
    @pulumi.getter(name="connectionCredentials")
    def connection_credentials(self) -> Optional[Sequence['outputs.ExternalDbSystemConnectorConnectionInfoConnectionCredential']]:
        """
        The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        """
        return pulumi.get(self, "connection_credentials")

    @property
    @pulumi.getter(name="connectionStrings")
    def connection_strings(self) -> Optional[Sequence['outputs.ExternalDbSystemConnectorConnectionInfoConnectionString']]:
        """
        The Oracle Database connection string.
        """
        return pulumi.get(self, "connection_strings")


@pulumi.output_type
class ExternalDbSystemConnectorConnectionInfoConnectionCredential(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "credentialName":
            suggest = "credential_name"
        elif key == "credentialType":
            suggest = "credential_type"
        elif key == "passwordSecretId":
            suggest = "password_secret_id"
        elif key == "sslSecretId":
            suggest = "ssl_secret_id"
        elif key == "userName":
            suggest = "user_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemConnectorConnectionInfoConnectionCredential. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemConnectorConnectionInfoConnectionCredential.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemConnectorConnectionInfoConnectionCredential.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 credential_name: Optional[str] = None,
                 credential_type: Optional[str] = None,
                 password_secret_id: Optional[str] = None,
                 role: Optional[str] = None,
                 ssl_secret_id: Optional[str] = None,
                 user_name: Optional[str] = None):
        """
        :param str credential_name: The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        :param str credential_type: The type of credential used to connect to the ASM instance.
        :param str password_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        :param str role: The role of the user connecting to the ASM instance.
        :param str ssl_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        :param str user_name: The user name used to connect to the ASM instance.
        """
        if credential_name is not None:
            pulumi.set(__self__, "credential_name", credential_name)
        if credential_type is not None:
            pulumi.set(__self__, "credential_type", credential_type)
        if password_secret_id is not None:
            pulumi.set(__self__, "password_secret_id", password_secret_id)
        if role is not None:
            pulumi.set(__self__, "role", role)
        if ssl_secret_id is not None:
            pulumi.set(__self__, "ssl_secret_id", ssl_secret_id)
        if user_name is not None:
            pulumi.set(__self__, "user_name", user_name)

    @property
    @pulumi.getter(name="credentialName")
    def credential_name(self) -> Optional[str]:
        """
        The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        """
        return pulumi.get(self, "credential_name")

    @property
    @pulumi.getter(name="credentialType")
    def credential_type(self) -> Optional[str]:
        """
        The type of credential used to connect to the ASM instance.
        """
        return pulumi.get(self, "credential_type")

    @property
    @pulumi.getter(name="passwordSecretId")
    def password_secret_id(self) -> Optional[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        """
        return pulumi.get(self, "password_secret_id")

    @property
    @pulumi.getter
    def role(self) -> Optional[str]:
        """
        The role of the user connecting to the ASM instance.
        """
        return pulumi.get(self, "role")

    @property
    @pulumi.getter(name="sslSecretId")
    def ssl_secret_id(self) -> Optional[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        """
        return pulumi.get(self, "ssl_secret_id")

    @property
    @pulumi.getter(name="userName")
    def user_name(self) -> Optional[str]:
        """
        The user name used to connect to the ASM instance.
        """
        return pulumi.get(self, "user_name")


@pulumi.output_type
class ExternalDbSystemConnectorConnectionInfoConnectionString(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "hostName":
            suggest = "host_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemConnectorConnectionInfoConnectionString. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemConnectorConnectionInfoConnectionString.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemConnectorConnectionInfoConnectionString.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 host_name: Optional[str] = None,
                 hosts: Optional[Sequence[str]] = None,
                 port: Optional[int] = None,
                 protocol: Optional[str] = None,
                 service: Optional[str] = None):
        """
        :param str host_name: The host name of the database or the SCAN name in case of a RAC database.
        :param Sequence[str] hosts: The list of host names of the ASM instances.
        :param int port: The port used to connect to the ASM instance.
        :param str protocol: The protocol used to connect to the ASM instance.
        :param str service: The service name of the ASM instance.
        """
        if host_name is not None:
            pulumi.set(__self__, "host_name", host_name)
        if hosts is not None:
            pulumi.set(__self__, "hosts", hosts)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if protocol is not None:
            pulumi.set(__self__, "protocol", protocol)
        if service is not None:
            pulumi.set(__self__, "service", service)

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> Optional[str]:
        """
        The host name of the database or the SCAN name in case of a RAC database.
        """
        return pulumi.get(self, "host_name")

    @property
    @pulumi.getter
    def hosts(self) -> Optional[Sequence[str]]:
        """
        The list of host names of the ASM instances.
        """
        return pulumi.get(self, "hosts")

    @property
    @pulumi.getter
    def port(self) -> Optional[int]:
        """
        The port used to connect to the ASM instance.
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter
    def protocol(self) -> Optional[str]:
        """
        The protocol used to connect to the ASM instance.
        """
        return pulumi.get(self, "protocol")

    @property
    @pulumi.getter
    def service(self) -> Optional[str]:
        """
        The service name of the ASM instance.
        """
        return pulumi.get(self, "service")


@pulumi.output_type
class ExternalDbSystemDatabaseManagementConfig(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "licenseModel":
            suggest = "license_model"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemDatabaseManagementConfig. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemDatabaseManagementConfig.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemDatabaseManagementConfig.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 license_model: str):
        """
        :param str license_model: The Oracle license model that applies to the external database.
        """
        pulumi.set(__self__, "license_model", license_model)

    @property
    @pulumi.getter(name="licenseModel")
    def license_model(self) -> str:
        """
        The Oracle license model that applies to the external database.
        """
        return pulumi.get(self, "license_model")


@pulumi.output_type
class ExternalDbSystemDiscoveryDiscoveredComponent(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "adrHomeDirectory":
            suggest = "adr_home_directory"
        elif key == "asmInstances":
            suggest = "asm_instances"
        elif key == "associatedComponents":
            suggest = "associated_components"
        elif key == "clusterId":
            suggest = "cluster_id"
        elif key == "clusterInstances":
            suggest = "cluster_instances"
        elif key == "compartmentId":
            suggest = "compartment_id"
        elif key == "componentId":
            suggest = "component_id"
        elif key == "componentName":
            suggest = "component_name"
        elif key == "componentType":
            suggest = "component_type"
        elif key == "containerDatabaseId":
            suggest = "container_database_id"
        elif key == "cpuCoreCount":
            suggest = "cpu_core_count"
        elif key == "crsBaseDirectory":
            suggest = "crs_base_directory"
        elif key == "dbEdition":
            suggest = "db_edition"
        elif key == "dbId":
            suggest = "db_id"
        elif key == "dbNodeName":
            suggest = "db_node_name"
        elif key == "dbPacks":
            suggest = "db_packs"
        elif key == "dbRole":
            suggest = "db_role"
        elif key == "dbType":
            suggest = "db_type"
        elif key == "dbUniqueName":
            suggest = "db_unique_name"
        elif key == "dbVersion":
            suggest = "db_version"
        elif key == "displayName":
            suggest = "display_name"
        elif key == "gridHome":
            suggest = "grid_home"
        elif key == "homeDirectory":
            suggest = "home_directory"
        elif key == "hostName":
            suggest = "host_name"
        elif key == "instanceName":
            suggest = "instance_name"
        elif key == "isCluster":
            suggest = "is_cluster"
        elif key == "isFlexCluster":
            suggest = "is_flex_cluster"
        elif key == "isFlexEnabled":
            suggest = "is_flex_enabled"
        elif key == "isSelectedForMonitoring":
            suggest = "is_selected_for_monitoring"
        elif key == "listenerAlias":
            suggest = "listener_alias"
        elif key == "listenerType":
            suggest = "listener_type"
        elif key == "logDirectory":
            suggest = "log_directory"
        elif key == "memorySizeInGbs":
            suggest = "memory_size_in_gbs"
        elif key == "networkConfigurations":
            suggest = "network_configurations"
        elif key == "nodeRole":
            suggest = "node_role"
        elif key == "ocrFileLocation":
            suggest = "ocr_file_location"
        elif key == "oracleHome":
            suggest = "oracle_home"
        elif key == "pluggableDatabases":
            suggest = "pluggable_databases"
        elif key == "resourceId":
            suggest = "resource_id"
        elif key == "scanConfigurations":
            suggest = "scan_configurations"
        elif key == "traceDirectory":
            suggest = "trace_directory"
        elif key == "vipConfigurations":
            suggest = "vip_configurations"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemDiscoveryDiscoveredComponent. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponent.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponent.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 adr_home_directory: Optional[str] = None,
                 asm_instances: Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentAsmInstance']] = None,
                 associated_components: Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentAssociatedComponent']] = None,
                 cluster_id: Optional[str] = None,
                 cluster_instances: Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentClusterInstance']] = None,
                 compartment_id: Optional[str] = None,
                 component_id: Optional[str] = None,
                 component_name: Optional[str] = None,
                 component_type: Optional[str] = None,
                 connectors: Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentConnector']] = None,
                 container_database_id: Optional[str] = None,
                 cpu_core_count: Optional[float] = None,
                 crs_base_directory: Optional[str] = None,
                 db_edition: Optional[str] = None,
                 db_id: Optional[str] = None,
                 db_node_name: Optional[str] = None,
                 db_packs: Optional[str] = None,
                 db_role: Optional[str] = None,
                 db_type: Optional[str] = None,
                 db_unique_name: Optional[str] = None,
                 db_version: Optional[str] = None,
                 display_name: Optional[str] = None,
                 endpoints: Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentEndpoint']] = None,
                 grid_home: Optional[str] = None,
                 guid: Optional[str] = None,
                 home_directory: Optional[str] = None,
                 host_name: Optional[str] = None,
                 instance_name: Optional[str] = None,
                 is_cluster: Optional[bool] = None,
                 is_flex_cluster: Optional[bool] = None,
                 is_flex_enabled: Optional[bool] = None,
                 is_selected_for_monitoring: Optional[bool] = None,
                 listener_alias: Optional[str] = None,
                 listener_type: Optional[str] = None,
                 log_directory: Optional[str] = None,
                 memory_size_in_gbs: Optional[float] = None,
                 network_configurations: Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentNetworkConfiguration']] = None,
                 node_role: Optional[str] = None,
                 ocr_file_location: Optional[str] = None,
                 oracle_home: Optional[str] = None,
                 pluggable_databases: Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabase']] = None,
                 resource_id: Optional[str] = None,
                 scan_configurations: Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentScanConfiguration']] = None,
                 status: Optional[str] = None,
                 trace_directory: Optional[str] = None,
                 version: Optional[str] = None,
                 vip_configurations: Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentVipConfiguration']] = None):
        """
        :param str adr_home_directory: The Automatic Diagnostic Repository (ADR) home directory for the cluster instance.
        :param Sequence['ExternalDbSystemDiscoveryDiscoveredComponentAssociatedComponentArgs'] associated_components: The list of associated components.
        :param str cluster_id: The unique identifier of the Oracle cluster.
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the external DB system resides.
        :param str component_id: The identifier of the discovered DB system component.
        :param str component_name: The name of the discovered DB system component.
        :param str component_type: The component type.
        :param Sequence['ExternalDbSystemDiscoveryDiscoveredComponentConnectorArgs'] connectors: The connector details used to connect to the external DB system component.
        :param str container_database_id: The unique identifier of the parent Container Database (CDB).
        :param float cpu_core_count: The number of CPU cores available on the DB node.
        :param str crs_base_directory: The Oracle base location of Cluster Ready Services (CRS).
        :param str db_edition: The Oracle Database edition.
        :param str db_id: The Oracle Database ID.
        :param str db_node_name: The name of the DB node.
        :param str db_packs: The database packs licensed for the external Oracle Database.
        :param str db_role: The role of the Oracle Database in Oracle Data Guard configuration.
        :param str db_type: The type of Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, or a Non-container Database.
        :param str db_unique_name: The `DB_UNIQUE_NAME` of the external database.
        :param str db_version: The Oracle Database version.
        :param str display_name: (Updatable) The user-friendly name for the DB system. The name does not have to be unique.
        :param Sequence['ExternalDbSystemDiscoveryDiscoveredComponentEndpointArgs'] endpoints: The list of protocol addresses the listener is configured to listen on.
        :param str grid_home: The directory in which Oracle Grid Infrastructure is installed.
        :param str guid: The unique identifier of the PDB.
        :param str home_directory: The location of the DB home.
        :param str host_name: The host name of the database or the SCAN name in case of a RAC database.
        :param str instance_name: The name of the ASM instance.
        :param bool is_cluster: Indicates whether the Oracle Database is part of a cluster.
        :param bool is_flex_cluster: Indicates whether the cluster is an Oracle Flex Cluster or not.
        :param bool is_flex_enabled: Indicates whether Oracle Flex ASM is enabled or not.
        :param bool is_selected_for_monitoring: Indicates whether the DB system component should be provisioned as an Oracle Cloud Infrastructure resource or not.
        :param str listener_alias: The listener alias.
        :param str listener_type: The type of listener.
        :param str log_directory: The destination directory of the listener log file.
        :param float memory_size_in_gbs: The total memory in gigabytes (GB) on the DB node.
        :param Sequence['ExternalDbSystemDiscoveryDiscoveredComponentNetworkConfigurationArgs'] network_configurations: The list of network address configurations of the external cluster.
        :param str node_role: The role of the cluster node.
        :param str ocr_file_location: The location of the Oracle Cluster Registry (OCR) file.
        :param str oracle_home: The Oracle home location of the listener.
        :param Sequence['ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseArgs'] pluggable_databases: The list of Pluggable Databases.
        :param str resource_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the existing Oracle Cloud Infrastructure resource matching the discovered DB system.
        :param Sequence['ExternalDbSystemDiscoveryDiscoveredComponentScanConfigurationArgs'] scan_configurations: The list of Single Client Access Name (SCAN) configurations of the external cluster.
        :param str status: The state of the discovered DB system component.
        :param str trace_directory: The destination directory of the listener trace file.
        :param str version: The version of Oracle Clusterware running in the cluster.
        :param Sequence['ExternalDbSystemDiscoveryDiscoveredComponentVipConfigurationArgs'] vip_configurations: The list of Virtual IP (VIP) configurations of the external cluster.
        """
        if adr_home_directory is not None:
            pulumi.set(__self__, "adr_home_directory", adr_home_directory)
        if asm_instances is not None:
            pulumi.set(__self__, "asm_instances", asm_instances)
        if associated_components is not None:
            pulumi.set(__self__, "associated_components", associated_components)
        if cluster_id is not None:
            pulumi.set(__self__, "cluster_id", cluster_id)
        if cluster_instances is not None:
            pulumi.set(__self__, "cluster_instances", cluster_instances)
        if compartment_id is not None:
            pulumi.set(__self__, "compartment_id", compartment_id)
        if component_id is not None:
            pulumi.set(__self__, "component_id", component_id)
        if component_name is not None:
            pulumi.set(__self__, "component_name", component_name)
        if component_type is not None:
            pulumi.set(__self__, "component_type", component_type)
        if connectors is not None:
            pulumi.set(__self__, "connectors", connectors)
        if container_database_id is not None:
            pulumi.set(__self__, "container_database_id", container_database_id)
        if cpu_core_count is not None:
            pulumi.set(__self__, "cpu_core_count", cpu_core_count)
        if crs_base_directory is not None:
            pulumi.set(__self__, "crs_base_directory", crs_base_directory)
        if db_edition is not None:
            pulumi.set(__self__, "db_edition", db_edition)
        if db_id is not None:
            pulumi.set(__self__, "db_id", db_id)
        if db_node_name is not None:
            pulumi.set(__self__, "db_node_name", db_node_name)
        if db_packs is not None:
            pulumi.set(__self__, "db_packs", db_packs)
        if db_role is not None:
            pulumi.set(__self__, "db_role", db_role)
        if db_type is not None:
            pulumi.set(__self__, "db_type", db_type)
        if db_unique_name is not None:
            pulumi.set(__self__, "db_unique_name", db_unique_name)
        if db_version is not None:
            pulumi.set(__self__, "db_version", db_version)
        if display_name is not None:
            pulumi.set(__self__, "display_name", display_name)
        if endpoints is not None:
            pulumi.set(__self__, "endpoints", endpoints)
        if grid_home is not None:
            pulumi.set(__self__, "grid_home", grid_home)
        if guid is not None:
            pulumi.set(__self__, "guid", guid)
        if home_directory is not None:
            pulumi.set(__self__, "home_directory", home_directory)
        if host_name is not None:
            pulumi.set(__self__, "host_name", host_name)
        if instance_name is not None:
            pulumi.set(__self__, "instance_name", instance_name)
        if is_cluster is not None:
            pulumi.set(__self__, "is_cluster", is_cluster)
        if is_flex_cluster is not None:
            pulumi.set(__self__, "is_flex_cluster", is_flex_cluster)
        if is_flex_enabled is not None:
            pulumi.set(__self__, "is_flex_enabled", is_flex_enabled)
        if is_selected_for_monitoring is not None:
            pulumi.set(__self__, "is_selected_for_monitoring", is_selected_for_monitoring)
        if listener_alias is not None:
            pulumi.set(__self__, "listener_alias", listener_alias)
        if listener_type is not None:
            pulumi.set(__self__, "listener_type", listener_type)
        if log_directory is not None:
            pulumi.set(__self__, "log_directory", log_directory)
        if memory_size_in_gbs is not None:
            pulumi.set(__self__, "memory_size_in_gbs", memory_size_in_gbs)
        if network_configurations is not None:
            pulumi.set(__self__, "network_configurations", network_configurations)
        if node_role is not None:
            pulumi.set(__self__, "node_role", node_role)
        if ocr_file_location is not None:
            pulumi.set(__self__, "ocr_file_location", ocr_file_location)
        if oracle_home is not None:
            pulumi.set(__self__, "oracle_home", oracle_home)
        if pluggable_databases is not None:
            pulumi.set(__self__, "pluggable_databases", pluggable_databases)
        if resource_id is not None:
            pulumi.set(__self__, "resource_id", resource_id)
        if scan_configurations is not None:
            pulumi.set(__self__, "scan_configurations", scan_configurations)
        if status is not None:
            pulumi.set(__self__, "status", status)
        if trace_directory is not None:
            pulumi.set(__self__, "trace_directory", trace_directory)
        if version is not None:
            pulumi.set(__self__, "version", version)
        if vip_configurations is not None:
            pulumi.set(__self__, "vip_configurations", vip_configurations)

    @property
    @pulumi.getter(name="adrHomeDirectory")
    def adr_home_directory(self) -> Optional[str]:
        """
        The Automatic Diagnostic Repository (ADR) home directory for the cluster instance.
        """
        return pulumi.get(self, "adr_home_directory")

    @property
    @pulumi.getter(name="asmInstances")
    def asm_instances(self) -> Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentAsmInstance']]:
        return pulumi.get(self, "asm_instances")

    @property
    @pulumi.getter(name="associatedComponents")
    def associated_components(self) -> Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentAssociatedComponent']]:
        """
        The list of associated components.
        """
        return pulumi.get(self, "associated_components")

    @property
    @pulumi.getter(name="clusterId")
    def cluster_id(self) -> Optional[str]:
        """
        The unique identifier of the Oracle cluster.
        """
        return pulumi.get(self, "cluster_id")

    @property
    @pulumi.getter(name="clusterInstances")
    def cluster_instances(self) -> Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentClusterInstance']]:
        return pulumi.get(self, "cluster_instances")

    @property
    @pulumi.getter(name="compartmentId")
    def compartment_id(self) -> Optional[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the external DB system resides.
        """
        return pulumi.get(self, "compartment_id")

    @property
    @pulumi.getter(name="componentId")
    def component_id(self) -> Optional[str]:
        """
        The identifier of the discovered DB system component.
        """
        return pulumi.get(self, "component_id")

    @property
    @pulumi.getter(name="componentName")
    def component_name(self) -> Optional[str]:
        """
        The name of the discovered DB system component.
        """
        return pulumi.get(self, "component_name")

    @property
    @pulumi.getter(name="componentType")
    def component_type(self) -> Optional[str]:
        """
        The component type.
        """
        return pulumi.get(self, "component_type")

    @property
    @pulumi.getter
    def connectors(self) -> Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentConnector']]:
        """
        The connector details used to connect to the external DB system component.
        """
        return pulumi.get(self, "connectors")

    @property
    @pulumi.getter(name="containerDatabaseId")
    def container_database_id(self) -> Optional[str]:
        """
        The unique identifier of the parent Container Database (CDB).
        """
        return pulumi.get(self, "container_database_id")

    @property
    @pulumi.getter(name="cpuCoreCount")
    def cpu_core_count(self) -> Optional[float]:
        """
        The number of CPU cores available on the DB node.
        """
        return pulumi.get(self, "cpu_core_count")

    @property
    @pulumi.getter(name="crsBaseDirectory")
    def crs_base_directory(self) -> Optional[str]:
        """
        The Oracle base location of Cluster Ready Services (CRS).
        """
        return pulumi.get(self, "crs_base_directory")

    @property
    @pulumi.getter(name="dbEdition")
    def db_edition(self) -> Optional[str]:
        """
        The Oracle Database edition.
        """
        return pulumi.get(self, "db_edition")

    @property
    @pulumi.getter(name="dbId")
    def db_id(self) -> Optional[str]:
        """
        The Oracle Database ID.
        """
        return pulumi.get(self, "db_id")

    @property
    @pulumi.getter(name="dbNodeName")
    def db_node_name(self) -> Optional[str]:
        """
        The name of the DB node.
        """
        return pulumi.get(self, "db_node_name")

    @property
    @pulumi.getter(name="dbPacks")
    def db_packs(self) -> Optional[str]:
        """
        The database packs licensed for the external Oracle Database.
        """
        return pulumi.get(self, "db_packs")

    @property
    @pulumi.getter(name="dbRole")
    def db_role(self) -> Optional[str]:
        """
        The role of the Oracle Database in Oracle Data Guard configuration.
        """
        return pulumi.get(self, "db_role")

    @property
    @pulumi.getter(name="dbType")
    def db_type(self) -> Optional[str]:
        """
        The type of Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, or a Non-container Database.
        """
        return pulumi.get(self, "db_type")

    @property
    @pulumi.getter(name="dbUniqueName")
    def db_unique_name(self) -> Optional[str]:
        """
        The `DB_UNIQUE_NAME` of the external database.
        """
        return pulumi.get(self, "db_unique_name")

    @property
    @pulumi.getter(name="dbVersion")
    def db_version(self) -> Optional[str]:
        """
        The Oracle Database version.
        """
        return pulumi.get(self, "db_version")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> Optional[str]:
        """
        (Updatable) The user-friendly name for the DB system. The name does not have to be unique.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter
    def endpoints(self) -> Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentEndpoint']]:
        """
        The list of protocol addresses the listener is configured to listen on.
        """
        return pulumi.get(self, "endpoints")

    @property
    @pulumi.getter(name="gridHome")
    def grid_home(self) -> Optional[str]:
        """
        The directory in which Oracle Grid Infrastructure is installed.
        """
        return pulumi.get(self, "grid_home")

    @property
    @pulumi.getter
    def guid(self) -> Optional[str]:
        """
        The unique identifier of the PDB.
        """
        return pulumi.get(self, "guid")

    @property
    @pulumi.getter(name="homeDirectory")
    def home_directory(self) -> Optional[str]:
        """
        The location of the DB home.
        """
        return pulumi.get(self, "home_directory")

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> Optional[str]:
        """
        The host name of the database or the SCAN name in case of a RAC database.
        """
        return pulumi.get(self, "host_name")

    @property
    @pulumi.getter(name="instanceName")
    def instance_name(self) -> Optional[str]:
        """
        The name of the ASM instance.
        """
        return pulumi.get(self, "instance_name")

    @property
    @pulumi.getter(name="isCluster")
    def is_cluster(self) -> Optional[bool]:
        """
        Indicates whether the Oracle Database is part of a cluster.
        """
        return pulumi.get(self, "is_cluster")

    @property
    @pulumi.getter(name="isFlexCluster")
    def is_flex_cluster(self) -> Optional[bool]:
        """
        Indicates whether the cluster is an Oracle Flex Cluster or not.
        """
        return pulumi.get(self, "is_flex_cluster")

    @property
    @pulumi.getter(name="isFlexEnabled")
    def is_flex_enabled(self) -> Optional[bool]:
        """
        Indicates whether Oracle Flex ASM is enabled or not.
        """
        return pulumi.get(self, "is_flex_enabled")

    @property
    @pulumi.getter(name="isSelectedForMonitoring")
    def is_selected_for_monitoring(self) -> Optional[bool]:
        """
        Indicates whether the DB system component should be provisioned as an Oracle Cloud Infrastructure resource or not.
        """
        return pulumi.get(self, "is_selected_for_monitoring")

    @property
    @pulumi.getter(name="listenerAlias")
    def listener_alias(self) -> Optional[str]:
        """
        The listener alias.
        """
        return pulumi.get(self, "listener_alias")

    @property
    @pulumi.getter(name="listenerType")
    def listener_type(self) -> Optional[str]:
        """
        The type of listener.
        """
        return pulumi.get(self, "listener_type")

    @property
    @pulumi.getter(name="logDirectory")
    def log_directory(self) -> Optional[str]:
        """
        The destination directory of the listener log file.
        """
        return pulumi.get(self, "log_directory")

    @property
    @pulumi.getter(name="memorySizeInGbs")
    def memory_size_in_gbs(self) -> Optional[float]:
        """
        The total memory in gigabytes (GB) on the DB node.
        """
        return pulumi.get(self, "memory_size_in_gbs")

    @property
    @pulumi.getter(name="networkConfigurations")
    def network_configurations(self) -> Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentNetworkConfiguration']]:
        """
        The list of network address configurations of the external cluster.
        """
        return pulumi.get(self, "network_configurations")

    @property
    @pulumi.getter(name="nodeRole")
    def node_role(self) -> Optional[str]:
        """
        The role of the cluster node.
        """
        return pulumi.get(self, "node_role")

    @property
    @pulumi.getter(name="ocrFileLocation")
    def ocr_file_location(self) -> Optional[str]:
        """
        The location of the Oracle Cluster Registry (OCR) file.
        """
        return pulumi.get(self, "ocr_file_location")

    @property
    @pulumi.getter(name="oracleHome")
    def oracle_home(self) -> Optional[str]:
        """
        The Oracle home location of the listener.
        """
        return pulumi.get(self, "oracle_home")

    @property
    @pulumi.getter(name="pluggableDatabases")
    def pluggable_databases(self) -> Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabase']]:
        """
        The list of Pluggable Databases.
        """
        return pulumi.get(self, "pluggable_databases")

    @property
    @pulumi.getter(name="resourceId")
    def resource_id(self) -> Optional[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the existing Oracle Cloud Infrastructure resource matching the discovered DB system.
        """
        return pulumi.get(self, "resource_id")

    @property
    @pulumi.getter(name="scanConfigurations")
    def scan_configurations(self) -> Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentScanConfiguration']]:
        """
        The list of Single Client Access Name (SCAN) configurations of the external cluster.
        """
        return pulumi.get(self, "scan_configurations")

    @property
    @pulumi.getter
    def status(self) -> Optional[str]:
        """
        The state of the discovered DB system component.
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter(name="traceDirectory")
    def trace_directory(self) -> Optional[str]:
        """
        The destination directory of the listener trace file.
        """
        return pulumi.get(self, "trace_directory")

    @property
    @pulumi.getter
    def version(self) -> Optional[str]:
        """
        The version of Oracle Clusterware running in the cluster.
        """
        return pulumi.get(self, "version")

    @property
    @pulumi.getter(name="vipConfigurations")
    def vip_configurations(self) -> Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentVipConfiguration']]:
        """
        The list of Virtual IP (VIP) configurations of the external cluster.
        """
        return pulumi.get(self, "vip_configurations")


@pulumi.output_type
class ExternalDbSystemDiscoveryDiscoveredComponentAsmInstance(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "adrHomeDirectory":
            suggest = "adr_home_directory"
        elif key == "hostName":
            suggest = "host_name"
        elif key == "instanceName":
            suggest = "instance_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemDiscoveryDiscoveredComponentAsmInstance. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentAsmInstance.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentAsmInstance.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 adr_home_directory: Optional[str] = None,
                 host_name: Optional[str] = None,
                 instance_name: Optional[str] = None):
        """
        :param str adr_home_directory: The Automatic Diagnostic Repository (ADR) home directory for the cluster instance.
        :param str host_name: The host name of the database or the SCAN name in case of a RAC database.
        :param str instance_name: The name of the ASM instance.
        """
        if adr_home_directory is not None:
            pulumi.set(__self__, "adr_home_directory", adr_home_directory)
        if host_name is not None:
            pulumi.set(__self__, "host_name", host_name)
        if instance_name is not None:
            pulumi.set(__self__, "instance_name", instance_name)

    @property
    @pulumi.getter(name="adrHomeDirectory")
    def adr_home_directory(self) -> Optional[str]:
        """
        The Automatic Diagnostic Repository (ADR) home directory for the cluster instance.
        """
        return pulumi.get(self, "adr_home_directory")

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> Optional[str]:
        """
        The host name of the database or the SCAN name in case of a RAC database.
        """
        return pulumi.get(self, "host_name")

    @property
    @pulumi.getter(name="instanceName")
    def instance_name(self) -> Optional[str]:
        """
        The name of the ASM instance.
        """
        return pulumi.get(self, "instance_name")


@pulumi.output_type
class ExternalDbSystemDiscoveryDiscoveredComponentAssociatedComponent(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "associationType":
            suggest = "association_type"
        elif key == "componentId":
            suggest = "component_id"
        elif key == "componentType":
            suggest = "component_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemDiscoveryDiscoveredComponentAssociatedComponent. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentAssociatedComponent.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentAssociatedComponent.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 association_type: Optional[str] = None,
                 component_id: Optional[str] = None,
                 component_type: Optional[str] = None):
        """
        :param str association_type: The association type.
        :param str component_id: The identifier of the discovered DB system component.
        :param str component_type: The component type.
        """
        if association_type is not None:
            pulumi.set(__self__, "association_type", association_type)
        if component_id is not None:
            pulumi.set(__self__, "component_id", component_id)
        if component_type is not None:
            pulumi.set(__self__, "component_type", component_type)

    @property
    @pulumi.getter(name="associationType")
    def association_type(self) -> Optional[str]:
        """
        The association type.
        """
        return pulumi.get(self, "association_type")

    @property
    @pulumi.getter(name="componentId")
    def component_id(self) -> Optional[str]:
        """
        The identifier of the discovered DB system component.
        """
        return pulumi.get(self, "component_id")

    @property
    @pulumi.getter(name="componentType")
    def component_type(self) -> Optional[str]:
        """
        The component type.
        """
        return pulumi.get(self, "component_type")


@pulumi.output_type
class ExternalDbSystemDiscoveryDiscoveredComponentClusterInstance(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "adrHomeDirectory":
            suggest = "adr_home_directory"
        elif key == "clusterId":
            suggest = "cluster_id"
        elif key == "crsBaseDirectory":
            suggest = "crs_base_directory"
        elif key == "hostName":
            suggest = "host_name"
        elif key == "nodeRole":
            suggest = "node_role"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemDiscoveryDiscoveredComponentClusterInstance. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentClusterInstance.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentClusterInstance.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 adr_home_directory: Optional[str] = None,
                 cluster_id: Optional[str] = None,
                 connectors: Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnector']] = None,
                 crs_base_directory: Optional[str] = None,
                 host_name: Optional[str] = None,
                 node_role: Optional[str] = None):
        """
        :param str adr_home_directory: The Automatic Diagnostic Repository (ADR) home directory for the cluster instance.
        :param str cluster_id: The unique identifier of the Oracle cluster.
        :param Sequence['ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorArgs'] connectors: The connector details used to connect to the external DB system component.
        :param str crs_base_directory: The Oracle base location of Cluster Ready Services (CRS).
        :param str host_name: The host name of the database or the SCAN name in case of a RAC database.
        :param str node_role: The role of the cluster node.
        """
        if adr_home_directory is not None:
            pulumi.set(__self__, "adr_home_directory", adr_home_directory)
        if cluster_id is not None:
            pulumi.set(__self__, "cluster_id", cluster_id)
        if connectors is not None:
            pulumi.set(__self__, "connectors", connectors)
        if crs_base_directory is not None:
            pulumi.set(__self__, "crs_base_directory", crs_base_directory)
        if host_name is not None:
            pulumi.set(__self__, "host_name", host_name)
        if node_role is not None:
            pulumi.set(__self__, "node_role", node_role)

    @property
    @pulumi.getter(name="adrHomeDirectory")
    def adr_home_directory(self) -> Optional[str]:
        """
        The Automatic Diagnostic Repository (ADR) home directory for the cluster instance.
        """
        return pulumi.get(self, "adr_home_directory")

    @property
    @pulumi.getter(name="clusterId")
    def cluster_id(self) -> Optional[str]:
        """
        The unique identifier of the Oracle cluster.
        """
        return pulumi.get(self, "cluster_id")

    @property
    @pulumi.getter
    def connectors(self) -> Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnector']]:
        """
        The connector details used to connect to the external DB system component.
        """
        return pulumi.get(self, "connectors")

    @property
    @pulumi.getter(name="crsBaseDirectory")
    def crs_base_directory(self) -> Optional[str]:
        """
        The Oracle base location of Cluster Ready Services (CRS).
        """
        return pulumi.get(self, "crs_base_directory")

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> Optional[str]:
        """
        The host name of the database or the SCAN name in case of a RAC database.
        """
        return pulumi.get(self, "host_name")

    @property
    @pulumi.getter(name="nodeRole")
    def node_role(self) -> Optional[str]:
        """
        The role of the cluster node.
        """
        return pulumi.get(self, "node_role")


@pulumi.output_type
class ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnector(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "agentId":
            suggest = "agent_id"
        elif key == "connectionFailureMessage":
            suggest = "connection_failure_message"
        elif key == "connectionInfos":
            suggest = "connection_infos"
        elif key == "connectionStatus":
            suggest = "connection_status"
        elif key == "connectorType":
            suggest = "connector_type"
        elif key == "displayName":
            suggest = "display_name"
        elif key == "timeConnectionStatusLastUpdated":
            suggest = "time_connection_status_last_updated"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnector. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnector.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnector.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 agent_id: Optional[str] = None,
                 connection_failure_message: Optional[str] = None,
                 connection_infos: Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfo']] = None,
                 connection_status: Optional[str] = None,
                 connector_type: Optional[str] = None,
                 display_name: Optional[str] = None,
                 time_connection_status_last_updated: Optional[str] = None):
        """
        :param str agent_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used for the external DB system discovery.
        :param str connection_failure_message: The error message indicating the reason for connection failure or `null` if the connection was successful.
        :param Sequence['ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoArgs'] connection_infos: The connection details required to connect to an external DB system component.
        :param str connection_status: The status of connectivity to the external DB system component.
        :param str connector_type: The type of connector.
        :param str display_name: (Updatable) The user-friendly name for the DB system. The name does not have to be unique.
        :param str time_connection_status_last_updated: The date and time the connectionStatus of the external DB system connector was last updated.
        """
        if agent_id is not None:
            pulumi.set(__self__, "agent_id", agent_id)
        if connection_failure_message is not None:
            pulumi.set(__self__, "connection_failure_message", connection_failure_message)
        if connection_infos is not None:
            pulumi.set(__self__, "connection_infos", connection_infos)
        if connection_status is not None:
            pulumi.set(__self__, "connection_status", connection_status)
        if connector_type is not None:
            pulumi.set(__self__, "connector_type", connector_type)
        if display_name is not None:
            pulumi.set(__self__, "display_name", display_name)
        if time_connection_status_last_updated is not None:
            pulumi.set(__self__, "time_connection_status_last_updated", time_connection_status_last_updated)

    @property
    @pulumi.getter(name="agentId")
    def agent_id(self) -> Optional[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used for the external DB system discovery.
        """
        return pulumi.get(self, "agent_id")

    @property
    @pulumi.getter(name="connectionFailureMessage")
    def connection_failure_message(self) -> Optional[str]:
        """
        The error message indicating the reason for connection failure or `null` if the connection was successful.
        """
        return pulumi.get(self, "connection_failure_message")

    @property
    @pulumi.getter(name="connectionInfos")
    def connection_infos(self) -> Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfo']]:
        """
        The connection details required to connect to an external DB system component.
        """
        return pulumi.get(self, "connection_infos")

    @property
    @pulumi.getter(name="connectionStatus")
    def connection_status(self) -> Optional[str]:
        """
        The status of connectivity to the external DB system component.
        """
        return pulumi.get(self, "connection_status")

    @property
    @pulumi.getter(name="connectorType")
    def connector_type(self) -> Optional[str]:
        """
        The type of connector.
        """
        return pulumi.get(self, "connector_type")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> Optional[str]:
        """
        (Updatable) The user-friendly name for the DB system. The name does not have to be unique.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="timeConnectionStatusLastUpdated")
    def time_connection_status_last_updated(self) -> Optional[str]:
        """
        The date and time the connectionStatus of the external DB system connector was last updated.
        """
        return pulumi.get(self, "time_connection_status_last_updated")


@pulumi.output_type
class ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfo(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "componentType":
            suggest = "component_type"
        elif key == "connectionCredentials":
            suggest = "connection_credentials"
        elif key == "connectionStrings":
            suggest = "connection_strings"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfo. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfo.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfo.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 component_type: Optional[str] = None,
                 connection_credentials: Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionCredential']] = None,
                 connection_strings: Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionString']] = None):
        """
        :param str component_type: The component type.
        :param Sequence['ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionCredentialArgs'] connection_credentials: The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        :param Sequence['ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionStringArgs'] connection_strings: The Oracle Database connection string.
        """
        if component_type is not None:
            pulumi.set(__self__, "component_type", component_type)
        if connection_credentials is not None:
            pulumi.set(__self__, "connection_credentials", connection_credentials)
        if connection_strings is not None:
            pulumi.set(__self__, "connection_strings", connection_strings)

    @property
    @pulumi.getter(name="componentType")
    def component_type(self) -> Optional[str]:
        """
        The component type.
        """
        return pulumi.get(self, "component_type")

    @property
    @pulumi.getter(name="connectionCredentials")
    def connection_credentials(self) -> Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionCredential']]:
        """
        The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        """
        return pulumi.get(self, "connection_credentials")

    @property
    @pulumi.getter(name="connectionStrings")
    def connection_strings(self) -> Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionString']]:
        """
        The Oracle Database connection string.
        """
        return pulumi.get(self, "connection_strings")


@pulumi.output_type
class ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionCredential(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "credentialName":
            suggest = "credential_name"
        elif key == "credentialType":
            suggest = "credential_type"
        elif key == "passwordSecretId":
            suggest = "password_secret_id"
        elif key == "sslSecretId":
            suggest = "ssl_secret_id"
        elif key == "userName":
            suggest = "user_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionCredential. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionCredential.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionCredential.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 credential_name: Optional[str] = None,
                 credential_type: Optional[str] = None,
                 password_secret_id: Optional[str] = None,
                 role: Optional[str] = None,
                 ssl_secret_id: Optional[str] = None,
                 user_name: Optional[str] = None):
        """
        :param str credential_name: The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        :param str credential_type: The type of credential used to connect to the ASM instance.
        :param str password_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        :param str role: The role of the user connecting to the ASM instance.
        :param str ssl_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        :param str user_name: The user name used to connect to the ASM instance.
        """
        if credential_name is not None:
            pulumi.set(__self__, "credential_name", credential_name)
        if credential_type is not None:
            pulumi.set(__self__, "credential_type", credential_type)
        if password_secret_id is not None:
            pulumi.set(__self__, "password_secret_id", password_secret_id)
        if role is not None:
            pulumi.set(__self__, "role", role)
        if ssl_secret_id is not None:
            pulumi.set(__self__, "ssl_secret_id", ssl_secret_id)
        if user_name is not None:
            pulumi.set(__self__, "user_name", user_name)

    @property
    @pulumi.getter(name="credentialName")
    def credential_name(self) -> Optional[str]:
        """
        The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        """
        return pulumi.get(self, "credential_name")

    @property
    @pulumi.getter(name="credentialType")
    def credential_type(self) -> Optional[str]:
        """
        The type of credential used to connect to the ASM instance.
        """
        return pulumi.get(self, "credential_type")

    @property
    @pulumi.getter(name="passwordSecretId")
    def password_secret_id(self) -> Optional[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        """
        return pulumi.get(self, "password_secret_id")

    @property
    @pulumi.getter
    def role(self) -> Optional[str]:
        """
        The role of the user connecting to the ASM instance.
        """
        return pulumi.get(self, "role")

    @property
    @pulumi.getter(name="sslSecretId")
    def ssl_secret_id(self) -> Optional[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        """
        return pulumi.get(self, "ssl_secret_id")

    @property
    @pulumi.getter(name="userName")
    def user_name(self) -> Optional[str]:
        """
        The user name used to connect to the ASM instance.
        """
        return pulumi.get(self, "user_name")


@pulumi.output_type
class ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionString(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "hostName":
            suggest = "host_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionString. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionString.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionString.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 host_name: Optional[str] = None,
                 hosts: Optional[Sequence[str]] = None,
                 port: Optional[int] = None,
                 protocol: Optional[str] = None,
                 service: Optional[str] = None):
        """
        :param str host_name: The host name of the database or the SCAN name in case of a RAC database.
        :param Sequence[str] hosts: The list of host names of the ASM instances.
        :param int port: The port used to connect to the ASM instance.
        :param str protocol: The protocol used to connect to the ASM instance.
        :param str service: The service name of the ASM instance.
        """
        if host_name is not None:
            pulumi.set(__self__, "host_name", host_name)
        if hosts is not None:
            pulumi.set(__self__, "hosts", hosts)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if protocol is not None:
            pulumi.set(__self__, "protocol", protocol)
        if service is not None:
            pulumi.set(__self__, "service", service)

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> Optional[str]:
        """
        The host name of the database or the SCAN name in case of a RAC database.
        """
        return pulumi.get(self, "host_name")

    @property
    @pulumi.getter
    def hosts(self) -> Optional[Sequence[str]]:
        """
        The list of host names of the ASM instances.
        """
        return pulumi.get(self, "hosts")

    @property
    @pulumi.getter
    def port(self) -> Optional[int]:
        """
        The port used to connect to the ASM instance.
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter
    def protocol(self) -> Optional[str]:
        """
        The protocol used to connect to the ASM instance.
        """
        return pulumi.get(self, "protocol")

    @property
    @pulumi.getter
    def service(self) -> Optional[str]:
        """
        The service name of the ASM instance.
        """
        return pulumi.get(self, "service")


@pulumi.output_type
class ExternalDbSystemDiscoveryDiscoveredComponentConnector(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "agentId":
            suggest = "agent_id"
        elif key == "connectionFailureMessage":
            suggest = "connection_failure_message"
        elif key == "connectionInfos":
            suggest = "connection_infos"
        elif key == "connectionStatus":
            suggest = "connection_status"
        elif key == "connectorType":
            suggest = "connector_type"
        elif key == "displayName":
            suggest = "display_name"
        elif key == "timeConnectionStatusLastUpdated":
            suggest = "time_connection_status_last_updated"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemDiscoveryDiscoveredComponentConnector. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentConnector.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentConnector.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 agent_id: Optional[str] = None,
                 connection_failure_message: Optional[str] = None,
                 connection_infos: Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfo']] = None,
                 connection_status: Optional[str] = None,
                 connector_type: Optional[str] = None,
                 display_name: Optional[str] = None,
                 time_connection_status_last_updated: Optional[str] = None):
        """
        :param str agent_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used for the external DB system discovery.
        :param str connection_failure_message: The error message indicating the reason for connection failure or `null` if the connection was successful.
        :param Sequence['ExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoArgs'] connection_infos: The connection details required to connect to an external DB system component.
        :param str connection_status: The status of connectivity to the external DB system component.
        :param str connector_type: The type of connector.
        :param str display_name: (Updatable) The user-friendly name for the DB system. The name does not have to be unique.
        :param str time_connection_status_last_updated: The date and time the connectionStatus of the external DB system connector was last updated.
        """
        if agent_id is not None:
            pulumi.set(__self__, "agent_id", agent_id)
        if connection_failure_message is not None:
            pulumi.set(__self__, "connection_failure_message", connection_failure_message)
        if connection_infos is not None:
            pulumi.set(__self__, "connection_infos", connection_infos)
        if connection_status is not None:
            pulumi.set(__self__, "connection_status", connection_status)
        if connector_type is not None:
            pulumi.set(__self__, "connector_type", connector_type)
        if display_name is not None:
            pulumi.set(__self__, "display_name", display_name)
        if time_connection_status_last_updated is not None:
            pulumi.set(__self__, "time_connection_status_last_updated", time_connection_status_last_updated)

    @property
    @pulumi.getter(name="agentId")
    def agent_id(self) -> Optional[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used for the external DB system discovery.
        """
        return pulumi.get(self, "agent_id")

    @property
    @pulumi.getter(name="connectionFailureMessage")
    def connection_failure_message(self) -> Optional[str]:
        """
        The error message indicating the reason for connection failure or `null` if the connection was successful.
        """
        return pulumi.get(self, "connection_failure_message")

    @property
    @pulumi.getter(name="connectionInfos")
    def connection_infos(self) -> Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfo']]:
        """
        The connection details required to connect to an external DB system component.
        """
        return pulumi.get(self, "connection_infos")

    @property
    @pulumi.getter(name="connectionStatus")
    def connection_status(self) -> Optional[str]:
        """
        The status of connectivity to the external DB system component.
        """
        return pulumi.get(self, "connection_status")

    @property
    @pulumi.getter(name="connectorType")
    def connector_type(self) -> Optional[str]:
        """
        The type of connector.
        """
        return pulumi.get(self, "connector_type")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> Optional[str]:
        """
        (Updatable) The user-friendly name for the DB system. The name does not have to be unique.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="timeConnectionStatusLastUpdated")
    def time_connection_status_last_updated(self) -> Optional[str]:
        """
        The date and time the connectionStatus of the external DB system connector was last updated.
        """
        return pulumi.get(self, "time_connection_status_last_updated")


@pulumi.output_type
class ExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfo(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "componentType":
            suggest = "component_type"
        elif key == "connectionCredentials":
            suggest = "connection_credentials"
        elif key == "connectionStrings":
            suggest = "connection_strings"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfo. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfo.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfo.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 component_type: Optional[str] = None,
                 connection_credentials: Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoConnectionCredential']] = None,
                 connection_strings: Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoConnectionString']] = None):
        """
        :param str component_type: The component type.
        :param Sequence['ExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoConnectionCredentialArgs'] connection_credentials: The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        :param Sequence['ExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoConnectionStringArgs'] connection_strings: The Oracle Database connection string.
        """
        if component_type is not None:
            pulumi.set(__self__, "component_type", component_type)
        if connection_credentials is not None:
            pulumi.set(__self__, "connection_credentials", connection_credentials)
        if connection_strings is not None:
            pulumi.set(__self__, "connection_strings", connection_strings)

    @property
    @pulumi.getter(name="componentType")
    def component_type(self) -> Optional[str]:
        """
        The component type.
        """
        return pulumi.get(self, "component_type")

    @property
    @pulumi.getter(name="connectionCredentials")
    def connection_credentials(self) -> Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoConnectionCredential']]:
        """
        The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        """
        return pulumi.get(self, "connection_credentials")

    @property
    @pulumi.getter(name="connectionStrings")
    def connection_strings(self) -> Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoConnectionString']]:
        """
        The Oracle Database connection string.
        """
        return pulumi.get(self, "connection_strings")


@pulumi.output_type
class ExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoConnectionCredential(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "credentialName":
            suggest = "credential_name"
        elif key == "credentialType":
            suggest = "credential_type"
        elif key == "passwordSecretId":
            suggest = "password_secret_id"
        elif key == "sslSecretId":
            suggest = "ssl_secret_id"
        elif key == "userName":
            suggest = "user_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoConnectionCredential. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoConnectionCredential.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoConnectionCredential.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 credential_name: Optional[str] = None,
                 credential_type: Optional[str] = None,
                 password_secret_id: Optional[str] = None,
                 role: Optional[str] = None,
                 ssl_secret_id: Optional[str] = None,
                 user_name: Optional[str] = None):
        """
        :param str credential_name: The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        :param str credential_type: The type of credential used to connect to the ASM instance.
        :param str password_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        :param str role: The role of the user connecting to the ASM instance.
        :param str ssl_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        :param str user_name: The user name used to connect to the ASM instance.
        """
        if credential_name is not None:
            pulumi.set(__self__, "credential_name", credential_name)
        if credential_type is not None:
            pulumi.set(__self__, "credential_type", credential_type)
        if password_secret_id is not None:
            pulumi.set(__self__, "password_secret_id", password_secret_id)
        if role is not None:
            pulumi.set(__self__, "role", role)
        if ssl_secret_id is not None:
            pulumi.set(__self__, "ssl_secret_id", ssl_secret_id)
        if user_name is not None:
            pulumi.set(__self__, "user_name", user_name)

    @property
    @pulumi.getter(name="credentialName")
    def credential_name(self) -> Optional[str]:
        """
        The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        """
        return pulumi.get(self, "credential_name")

    @property
    @pulumi.getter(name="credentialType")
    def credential_type(self) -> Optional[str]:
        """
        The type of credential used to connect to the ASM instance.
        """
        return pulumi.get(self, "credential_type")

    @property
    @pulumi.getter(name="passwordSecretId")
    def password_secret_id(self) -> Optional[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        """
        return pulumi.get(self, "password_secret_id")

    @property
    @pulumi.getter
    def role(self) -> Optional[str]:
        """
        The role of the user connecting to the ASM instance.
        """
        return pulumi.get(self, "role")

    @property
    @pulumi.getter(name="sslSecretId")
    def ssl_secret_id(self) -> Optional[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        """
        return pulumi.get(self, "ssl_secret_id")

    @property
    @pulumi.getter(name="userName")
    def user_name(self) -> Optional[str]:
        """
        The user name used to connect to the ASM instance.
        """
        return pulumi.get(self, "user_name")


@pulumi.output_type
class ExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoConnectionString(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "hostName":
            suggest = "host_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoConnectionString. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoConnectionString.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoConnectionString.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 host_name: Optional[str] = None,
                 hosts: Optional[Sequence[str]] = None,
                 port: Optional[int] = None,
                 protocol: Optional[str] = None,
                 service: Optional[str] = None):
        """
        :param str host_name: The host name of the database or the SCAN name in case of a RAC database.
        :param Sequence[str] hosts: The list of host names of the ASM instances.
        :param int port: The port used to connect to the ASM instance.
        :param str protocol: The protocol used to connect to the ASM instance.
        :param str service: The service name of the ASM instance.
        """
        if host_name is not None:
            pulumi.set(__self__, "host_name", host_name)
        if hosts is not None:
            pulumi.set(__self__, "hosts", hosts)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if protocol is not None:
            pulumi.set(__self__, "protocol", protocol)
        if service is not None:
            pulumi.set(__self__, "service", service)

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> Optional[str]:
        """
        The host name of the database or the SCAN name in case of a RAC database.
        """
        return pulumi.get(self, "host_name")

    @property
    @pulumi.getter
    def hosts(self) -> Optional[Sequence[str]]:
        """
        The list of host names of the ASM instances.
        """
        return pulumi.get(self, "hosts")

    @property
    @pulumi.getter
    def port(self) -> Optional[int]:
        """
        The port used to connect to the ASM instance.
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter
    def protocol(self) -> Optional[str]:
        """
        The protocol used to connect to the ASM instance.
        """
        return pulumi.get(self, "protocol")

    @property
    @pulumi.getter
    def service(self) -> Optional[str]:
        """
        The service name of the ASM instance.
        """
        return pulumi.get(self, "service")


@pulumi.output_type
class ExternalDbSystemDiscoveryDiscoveredComponentEndpoint(dict):
    def __init__(__self__, *,
                 host: Optional[str] = None,
                 key: Optional[str] = None,
                 port: Optional[int] = None,
                 protocol: Optional[str] = None,
                 services: Optional[Sequence[str]] = None):
        """
        :param str host: The host name or IP address.
        :param str key: The unique name of the service.
        :param int port: The port used to connect to the ASM instance.
        :param str protocol: The protocol used to connect to the ASM instance.
        :param Sequence[str] services: The list of services registered with the listener.
        """
        if host is not None:
            pulumi.set(__self__, "host", host)
        if key is not None:
            pulumi.set(__self__, "key", key)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if protocol is not None:
            pulumi.set(__self__, "protocol", protocol)
        if services is not None:
            pulumi.set(__self__, "services", services)

    @property
    @pulumi.getter
    def host(self) -> Optional[str]:
        """
        The host name or IP address.
        """
        return pulumi.get(self, "host")

    @property
    @pulumi.getter
    def key(self) -> Optional[str]:
        """
        The unique name of the service.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def port(self) -> Optional[int]:
        """
        The port used to connect to the ASM instance.
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter
    def protocol(self) -> Optional[str]:
        """
        The protocol used to connect to the ASM instance.
        """
        return pulumi.get(self, "protocol")

    @property
    @pulumi.getter
    def services(self) -> Optional[Sequence[str]]:
        """
        The list of services registered with the listener.
        """
        return pulumi.get(self, "services")


@pulumi.output_type
class ExternalDbSystemDiscoveryDiscoveredComponentNetworkConfiguration(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "networkNumber":
            suggest = "network_number"
        elif key == "networkType":
            suggest = "network_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemDiscoveryDiscoveredComponentNetworkConfiguration. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentNetworkConfiguration.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentNetworkConfiguration.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 network_number: Optional[int] = None,
                 network_type: Optional[str] = None,
                 subnet: Optional[str] = None):
        """
        :param int network_number: The network number from which VIPs are obtained.
        :param str network_type: The network type.
        :param str subnet: The subnet for the network.
        """
        if network_number is not None:
            pulumi.set(__self__, "network_number", network_number)
        if network_type is not None:
            pulumi.set(__self__, "network_type", network_type)
        if subnet is not None:
            pulumi.set(__self__, "subnet", subnet)

    @property
    @pulumi.getter(name="networkNumber")
    def network_number(self) -> Optional[int]:
        """
        The network number from which VIPs are obtained.
        """
        return pulumi.get(self, "network_number")

    @property
    @pulumi.getter(name="networkType")
    def network_type(self) -> Optional[str]:
        """
        The network type.
        """
        return pulumi.get(self, "network_type")

    @property
    @pulumi.getter
    def subnet(self) -> Optional[str]:
        """
        The subnet for the network.
        """
        return pulumi.get(self, "subnet")


@pulumi.output_type
class ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabase(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "compartmentId":
            suggest = "compartment_id"
        elif key == "containerDatabaseId":
            suggest = "container_database_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabase. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabase.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabase.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 compartment_id: Optional[str] = None,
                 connectors: Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnector']] = None,
                 container_database_id: Optional[str] = None,
                 guid: Optional[str] = None):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the external DB system resides.
        :param Sequence['ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorArgs'] connectors: The connector details used to connect to the external DB system component.
        :param str container_database_id: The unique identifier of the parent Container Database (CDB).
        :param str guid: The unique identifier of the PDB.
        """
        if compartment_id is not None:
            pulumi.set(__self__, "compartment_id", compartment_id)
        if connectors is not None:
            pulumi.set(__self__, "connectors", connectors)
        if container_database_id is not None:
            pulumi.set(__self__, "container_database_id", container_database_id)
        if guid is not None:
            pulumi.set(__self__, "guid", guid)

    @property
    @pulumi.getter(name="compartmentId")
    def compartment_id(self) -> Optional[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the external DB system resides.
        """
        return pulumi.get(self, "compartment_id")

    @property
    @pulumi.getter
    def connectors(self) -> Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnector']]:
        """
        The connector details used to connect to the external DB system component.
        """
        return pulumi.get(self, "connectors")

    @property
    @pulumi.getter(name="containerDatabaseId")
    def container_database_id(self) -> Optional[str]:
        """
        The unique identifier of the parent Container Database (CDB).
        """
        return pulumi.get(self, "container_database_id")

    @property
    @pulumi.getter
    def guid(self) -> Optional[str]:
        """
        The unique identifier of the PDB.
        """
        return pulumi.get(self, "guid")


@pulumi.output_type
class ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnector(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "agentId":
            suggest = "agent_id"
        elif key == "connectionFailureMessage":
            suggest = "connection_failure_message"
        elif key == "connectionInfos":
            suggest = "connection_infos"
        elif key == "connectionStatus":
            suggest = "connection_status"
        elif key == "connectorType":
            suggest = "connector_type"
        elif key == "displayName":
            suggest = "display_name"
        elif key == "timeConnectionStatusLastUpdated":
            suggest = "time_connection_status_last_updated"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnector. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnector.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnector.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 agent_id: Optional[str] = None,
                 connection_failure_message: Optional[str] = None,
                 connection_infos: Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfo']] = None,
                 connection_status: Optional[str] = None,
                 connector_type: Optional[str] = None,
                 display_name: Optional[str] = None,
                 time_connection_status_last_updated: Optional[str] = None):
        """
        :param str agent_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used for the external DB system discovery.
        :param str connection_failure_message: The error message indicating the reason for connection failure or `null` if the connection was successful.
        :param Sequence['ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoArgs'] connection_infos: The connection details required to connect to an external DB system component.
        :param str connection_status: The status of connectivity to the external DB system component.
        :param str connector_type: The type of connector.
        :param str display_name: (Updatable) The user-friendly name for the DB system. The name does not have to be unique.
        :param str time_connection_status_last_updated: The date and time the connectionStatus of the external DB system connector was last updated.
        """
        if agent_id is not None:
            pulumi.set(__self__, "agent_id", agent_id)
        if connection_failure_message is not None:
            pulumi.set(__self__, "connection_failure_message", connection_failure_message)
        if connection_infos is not None:
            pulumi.set(__self__, "connection_infos", connection_infos)
        if connection_status is not None:
            pulumi.set(__self__, "connection_status", connection_status)
        if connector_type is not None:
            pulumi.set(__self__, "connector_type", connector_type)
        if display_name is not None:
            pulumi.set(__self__, "display_name", display_name)
        if time_connection_status_last_updated is not None:
            pulumi.set(__self__, "time_connection_status_last_updated", time_connection_status_last_updated)

    @property
    @pulumi.getter(name="agentId")
    def agent_id(self) -> Optional[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used for the external DB system discovery.
        """
        return pulumi.get(self, "agent_id")

    @property
    @pulumi.getter(name="connectionFailureMessage")
    def connection_failure_message(self) -> Optional[str]:
        """
        The error message indicating the reason for connection failure or `null` if the connection was successful.
        """
        return pulumi.get(self, "connection_failure_message")

    @property
    @pulumi.getter(name="connectionInfos")
    def connection_infos(self) -> Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfo']]:
        """
        The connection details required to connect to an external DB system component.
        """
        return pulumi.get(self, "connection_infos")

    @property
    @pulumi.getter(name="connectionStatus")
    def connection_status(self) -> Optional[str]:
        """
        The status of connectivity to the external DB system component.
        """
        return pulumi.get(self, "connection_status")

    @property
    @pulumi.getter(name="connectorType")
    def connector_type(self) -> Optional[str]:
        """
        The type of connector.
        """
        return pulumi.get(self, "connector_type")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> Optional[str]:
        """
        (Updatable) The user-friendly name for the DB system. The name does not have to be unique.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="timeConnectionStatusLastUpdated")
    def time_connection_status_last_updated(self) -> Optional[str]:
        """
        The date and time the connectionStatus of the external DB system connector was last updated.
        """
        return pulumi.get(self, "time_connection_status_last_updated")


@pulumi.output_type
class ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfo(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "componentType":
            suggest = "component_type"
        elif key == "connectionCredentials":
            suggest = "connection_credentials"
        elif key == "connectionStrings":
            suggest = "connection_strings"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfo. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfo.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfo.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 component_type: Optional[str] = None,
                 connection_credentials: Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionCredential']] = None,
                 connection_strings: Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionString']] = None):
        """
        :param str component_type: The component type.
        :param Sequence['ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionCredentialArgs'] connection_credentials: The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        :param Sequence['ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionStringArgs'] connection_strings: The Oracle Database connection string.
        """
        if component_type is not None:
            pulumi.set(__self__, "component_type", component_type)
        if connection_credentials is not None:
            pulumi.set(__self__, "connection_credentials", connection_credentials)
        if connection_strings is not None:
            pulumi.set(__self__, "connection_strings", connection_strings)

    @property
    @pulumi.getter(name="componentType")
    def component_type(self) -> Optional[str]:
        """
        The component type.
        """
        return pulumi.get(self, "component_type")

    @property
    @pulumi.getter(name="connectionCredentials")
    def connection_credentials(self) -> Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionCredential']]:
        """
        The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        """
        return pulumi.get(self, "connection_credentials")

    @property
    @pulumi.getter(name="connectionStrings")
    def connection_strings(self) -> Optional[Sequence['outputs.ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionString']]:
        """
        The Oracle Database connection string.
        """
        return pulumi.get(self, "connection_strings")


@pulumi.output_type
class ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionCredential(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "credentialName":
            suggest = "credential_name"
        elif key == "credentialType":
            suggest = "credential_type"
        elif key == "passwordSecretId":
            suggest = "password_secret_id"
        elif key == "sslSecretId":
            suggest = "ssl_secret_id"
        elif key == "userName":
            suggest = "user_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionCredential. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionCredential.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionCredential.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 credential_name: Optional[str] = None,
                 credential_type: Optional[str] = None,
                 password_secret_id: Optional[str] = None,
                 role: Optional[str] = None,
                 ssl_secret_id: Optional[str] = None,
                 user_name: Optional[str] = None):
        """
        :param str credential_name: The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        :param str credential_type: The type of credential used to connect to the ASM instance.
        :param str password_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        :param str role: The role of the user connecting to the ASM instance.
        :param str ssl_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        :param str user_name: The user name used to connect to the ASM instance.
        """
        if credential_name is not None:
            pulumi.set(__self__, "credential_name", credential_name)
        if credential_type is not None:
            pulumi.set(__self__, "credential_type", credential_type)
        if password_secret_id is not None:
            pulumi.set(__self__, "password_secret_id", password_secret_id)
        if role is not None:
            pulumi.set(__self__, "role", role)
        if ssl_secret_id is not None:
            pulumi.set(__self__, "ssl_secret_id", ssl_secret_id)
        if user_name is not None:
            pulumi.set(__self__, "user_name", user_name)

    @property
    @pulumi.getter(name="credentialName")
    def credential_name(self) -> Optional[str]:
        """
        The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        """
        return pulumi.get(self, "credential_name")

    @property
    @pulumi.getter(name="credentialType")
    def credential_type(self) -> Optional[str]:
        """
        The type of credential used to connect to the ASM instance.
        """
        return pulumi.get(self, "credential_type")

    @property
    @pulumi.getter(name="passwordSecretId")
    def password_secret_id(self) -> Optional[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        """
        return pulumi.get(self, "password_secret_id")

    @property
    @pulumi.getter
    def role(self) -> Optional[str]:
        """
        The role of the user connecting to the ASM instance.
        """
        return pulumi.get(self, "role")

    @property
    @pulumi.getter(name="sslSecretId")
    def ssl_secret_id(self) -> Optional[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        """
        return pulumi.get(self, "ssl_secret_id")

    @property
    @pulumi.getter(name="userName")
    def user_name(self) -> Optional[str]:
        """
        The user name used to connect to the ASM instance.
        """
        return pulumi.get(self, "user_name")


@pulumi.output_type
class ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionString(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "hostName":
            suggest = "host_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionString. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionString.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionString.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 host_name: Optional[str] = None,
                 hosts: Optional[Sequence[str]] = None,
                 port: Optional[int] = None,
                 protocol: Optional[str] = None,
                 service: Optional[str] = None):
        """
        :param str host_name: The host name of the database or the SCAN name in case of a RAC database.
        :param Sequence[str] hosts: The list of host names of the ASM instances.
        :param int port: The port used to connect to the ASM instance.
        :param str protocol: The protocol used to connect to the ASM instance.
        :param str service: The service name of the ASM instance.
        """
        if host_name is not None:
            pulumi.set(__self__, "host_name", host_name)
        if hosts is not None:
            pulumi.set(__self__, "hosts", hosts)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if protocol is not None:
            pulumi.set(__self__, "protocol", protocol)
        if service is not None:
            pulumi.set(__self__, "service", service)

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> Optional[str]:
        """
        The host name of the database or the SCAN name in case of a RAC database.
        """
        return pulumi.get(self, "host_name")

    @property
    @pulumi.getter
    def hosts(self) -> Optional[Sequence[str]]:
        """
        The list of host names of the ASM instances.
        """
        return pulumi.get(self, "hosts")

    @property
    @pulumi.getter
    def port(self) -> Optional[int]:
        """
        The port used to connect to the ASM instance.
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter
    def protocol(self) -> Optional[str]:
        """
        The protocol used to connect to the ASM instance.
        """
        return pulumi.get(self, "protocol")

    @property
    @pulumi.getter
    def service(self) -> Optional[str]:
        """
        The service name of the ASM instance.
        """
        return pulumi.get(self, "service")


@pulumi.output_type
class ExternalDbSystemDiscoveryDiscoveredComponentScanConfiguration(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "networkNumber":
            suggest = "network_number"
        elif key == "scanName":
            suggest = "scan_name"
        elif key == "scanPort":
            suggest = "scan_port"
        elif key == "scanProtocol":
            suggest = "scan_protocol"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemDiscoveryDiscoveredComponentScanConfiguration. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentScanConfiguration.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentScanConfiguration.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 network_number: Optional[int] = None,
                 scan_name: Optional[str] = None,
                 scan_port: Optional[int] = None,
                 scan_protocol: Optional[str] = None):
        """
        :param int network_number: The network number from which VIPs are obtained.
        :param str scan_name: The name of the SCAN listener.
        :param int scan_port: The port number of the SCAN listener.
        :param str scan_protocol: The protocol of the SCAN listener.
        """
        if network_number is not None:
            pulumi.set(__self__, "network_number", network_number)
        if scan_name is not None:
            pulumi.set(__self__, "scan_name", scan_name)
        if scan_port is not None:
            pulumi.set(__self__, "scan_port", scan_port)
        if scan_protocol is not None:
            pulumi.set(__self__, "scan_protocol", scan_protocol)

    @property
    @pulumi.getter(name="networkNumber")
    def network_number(self) -> Optional[int]:
        """
        The network number from which VIPs are obtained.
        """
        return pulumi.get(self, "network_number")

    @property
    @pulumi.getter(name="scanName")
    def scan_name(self) -> Optional[str]:
        """
        The name of the SCAN listener.
        """
        return pulumi.get(self, "scan_name")

    @property
    @pulumi.getter(name="scanPort")
    def scan_port(self) -> Optional[int]:
        """
        The port number of the SCAN listener.
        """
        return pulumi.get(self, "scan_port")

    @property
    @pulumi.getter(name="scanProtocol")
    def scan_protocol(self) -> Optional[str]:
        """
        The protocol of the SCAN listener.
        """
        return pulumi.get(self, "scan_protocol")


@pulumi.output_type
class ExternalDbSystemDiscoveryDiscoveredComponentVipConfiguration(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "networkNumber":
            suggest = "network_number"
        elif key == "nodeName":
            suggest = "node_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemDiscoveryDiscoveredComponentVipConfiguration. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentVipConfiguration.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemDiscoveryDiscoveredComponentVipConfiguration.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 address: Optional[str] = None,
                 network_number: Optional[int] = None,
                 node_name: Optional[str] = None):
        """
        :param str address: The VIP name or IP address.
        :param int network_number: The network number from which VIPs are obtained.
        :param str node_name: The name of the node with the VIP.
        """
        if address is not None:
            pulumi.set(__self__, "address", address)
        if network_number is not None:
            pulumi.set(__self__, "network_number", network_number)
        if node_name is not None:
            pulumi.set(__self__, "node_name", node_name)

    @property
    @pulumi.getter
    def address(self) -> Optional[str]:
        """
        The VIP name or IP address.
        """
        return pulumi.get(self, "address")

    @property
    @pulumi.getter(name="networkNumber")
    def network_number(self) -> Optional[int]:
        """
        The network number from which VIPs are obtained.
        """
        return pulumi.get(self, "network_number")

    @property
    @pulumi.getter(name="nodeName")
    def node_name(self) -> Optional[str]:
        """
        The name of the node with the VIP.
        """
        return pulumi.get(self, "node_name")


@pulumi.output_type
class ExternalDbSystemDiscoveryPatchOperation(dict):
    def __init__(__self__, *,
                 operation: str,
                 selection: str,
                 value: Optional['outputs.ExternalDbSystemDiscoveryPatchOperationValue'] = None):
        """
        :param str operation: (Updatable) The operation can be one of these values: `MERGE`
        :param str selection: (Updatable)
        :param 'ExternalDbSystemDiscoveryPatchOperationValueArgs' value: (Updatable) 
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        pulumi.set(__self__, "operation", operation)
        pulumi.set(__self__, "selection", selection)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def operation(self) -> str:
        """
        (Updatable) The operation can be one of these values: `MERGE`
        """
        return pulumi.get(self, "operation")

    @property
    @pulumi.getter
    def selection(self) -> str:
        """
        (Updatable)
        """
        return pulumi.get(self, "selection")

    @property
    @pulumi.getter
    def value(self) -> Optional['outputs.ExternalDbSystemDiscoveryPatchOperationValue']:
        """
        (Updatable) 


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class ExternalDbSystemDiscoveryPatchOperationValue(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "compartmentId":
            suggest = "compartment_id"
        elif key == "displayName":
            suggest = "display_name"
        elif key == "isSelectedForMonitoring":
            suggest = "is_selected_for_monitoring"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemDiscoveryPatchOperationValue. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemDiscoveryPatchOperationValue.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemDiscoveryPatchOperationValue.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 compartment_id: Optional[str] = None,
                 connector: Optional['outputs.ExternalDbSystemDiscoveryPatchOperationValueConnector'] = None,
                 display_name: Optional[str] = None,
                 is_selected_for_monitoring: Optional[bool] = None):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the external DB system resides.
        :param 'ExternalDbSystemDiscoveryPatchOperationValueConnectorArgs' connector: The connector details used to connect to the external DB system component.
        :param str display_name: (Updatable) The user-friendly name for the DB system. The name does not have to be unique.
        :param bool is_selected_for_monitoring: Indicates whether the DB system component should be provisioned as an Oracle Cloud Infrastructure resource or not.
        """
        if compartment_id is not None:
            pulumi.set(__self__, "compartment_id", compartment_id)
        if connector is not None:
            pulumi.set(__self__, "connector", connector)
        if display_name is not None:
            pulumi.set(__self__, "display_name", display_name)
        if is_selected_for_monitoring is not None:
            pulumi.set(__self__, "is_selected_for_monitoring", is_selected_for_monitoring)

    @property
    @pulumi.getter(name="compartmentId")
    def compartment_id(self) -> Optional[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the external DB system resides.
        """
        return pulumi.get(self, "compartment_id")

    @property
    @pulumi.getter
    def connector(self) -> Optional['outputs.ExternalDbSystemDiscoveryPatchOperationValueConnector']:
        """
        The connector details used to connect to the external DB system component.
        """
        return pulumi.get(self, "connector")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> Optional[str]:
        """
        (Updatable) The user-friendly name for the DB system. The name does not have to be unique.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="isSelectedForMonitoring")
    def is_selected_for_monitoring(self) -> Optional[bool]:
        """
        Indicates whether the DB system component should be provisioned as an Oracle Cloud Infrastructure resource or not.
        """
        return pulumi.get(self, "is_selected_for_monitoring")


@pulumi.output_type
class ExternalDbSystemDiscoveryPatchOperationValueConnector(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "connectorType":
            suggest = "connector_type"
        elif key == "displayName":
            suggest = "display_name"
        elif key == "agentId":
            suggest = "agent_id"
        elif key == "connectionInfo":
            suggest = "connection_info"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemDiscoveryPatchOperationValueConnector. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemDiscoveryPatchOperationValueConnector.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemDiscoveryPatchOperationValueConnector.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 connector_type: str,
                 display_name: str,
                 agent_id: Optional[str] = None,
                 connection_info: Optional['outputs.ExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfo'] = None):
        """
        :param str connector_type: The type of connector.
        :param str display_name: (Updatable) The user-friendly name for the DB system. The name does not have to be unique.
        :param str agent_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used for the external DB system discovery.
        :param 'ExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoArgs' connection_info: The connection details required to connect to an external DB system component.
        """
        pulumi.set(__self__, "connector_type", connector_type)
        pulumi.set(__self__, "display_name", display_name)
        if agent_id is not None:
            pulumi.set(__self__, "agent_id", agent_id)
        if connection_info is not None:
            pulumi.set(__self__, "connection_info", connection_info)

    @property
    @pulumi.getter(name="connectorType")
    def connector_type(self) -> str:
        """
        The type of connector.
        """
        return pulumi.get(self, "connector_type")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        (Updatable) The user-friendly name for the DB system. The name does not have to be unique.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="agentId")
    def agent_id(self) -> Optional[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used for the external DB system discovery.
        """
        return pulumi.get(self, "agent_id")

    @property
    @pulumi.getter(name="connectionInfo")
    def connection_info(self) -> Optional['outputs.ExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfo']:
        """
        The connection details required to connect to an external DB system component.
        """
        return pulumi.get(self, "connection_info")


@pulumi.output_type
class ExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfo(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "componentType":
            suggest = "component_type"
        elif key == "connectionCredentials":
            suggest = "connection_credentials"
        elif key == "connectionString":
            suggest = "connection_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfo. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfo.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfo.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 component_type: str,
                 connection_credentials: Optional['outputs.ExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoConnectionCredentials'] = None,
                 connection_string: Optional['outputs.ExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoConnectionString'] = None):
        """
        :param str component_type: The component type.
        :param 'ExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoConnectionCredentialsArgs' connection_credentials: The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        :param 'ExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoConnectionStringArgs' connection_string: The Oracle Database connection string.
        """
        pulumi.set(__self__, "component_type", component_type)
        if connection_credentials is not None:
            pulumi.set(__self__, "connection_credentials", connection_credentials)
        if connection_string is not None:
            pulumi.set(__self__, "connection_string", connection_string)

    @property
    @pulumi.getter(name="componentType")
    def component_type(self) -> str:
        """
        The component type.
        """
        return pulumi.get(self, "component_type")

    @property
    @pulumi.getter(name="connectionCredentials")
    def connection_credentials(self) -> Optional['outputs.ExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoConnectionCredentials']:
        """
        The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        """
        return pulumi.get(self, "connection_credentials")

    @property
    @pulumi.getter(name="connectionString")
    def connection_string(self) -> Optional['outputs.ExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoConnectionString']:
        """
        The Oracle Database connection string.
        """
        return pulumi.get(self, "connection_string")


@pulumi.output_type
class ExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoConnectionCredentials(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "credentialType":
            suggest = "credential_type"
        elif key == "credentialName":
            suggest = "credential_name"
        elif key == "passwordSecretId":
            suggest = "password_secret_id"
        elif key == "sslSecretId":
            suggest = "ssl_secret_id"
        elif key == "userName":
            suggest = "user_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoConnectionCredentials. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoConnectionCredentials.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoConnectionCredentials.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 credential_type: str,
                 credential_name: Optional[str] = None,
                 password_secret_id: Optional[str] = None,
                 role: Optional[str] = None,
                 ssl_secret_id: Optional[str] = None,
                 user_name: Optional[str] = None):
        """
        :param str credential_type: The type of credential used to connect to the ASM instance.
        :param str credential_name: The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        :param str password_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        :param str role: The role of the user connecting to the ASM instance.
        :param str ssl_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        :param str user_name: The user name used to connect to the ASM instance.
        """
        pulumi.set(__self__, "credential_type", credential_type)
        if credential_name is not None:
            pulumi.set(__self__, "credential_name", credential_name)
        if password_secret_id is not None:
            pulumi.set(__self__, "password_secret_id", password_secret_id)
        if role is not None:
            pulumi.set(__self__, "role", role)
        if ssl_secret_id is not None:
            pulumi.set(__self__, "ssl_secret_id", ssl_secret_id)
        if user_name is not None:
            pulumi.set(__self__, "user_name", user_name)

    @property
    @pulumi.getter(name="credentialType")
    def credential_type(self) -> str:
        """
        The type of credential used to connect to the ASM instance.
        """
        return pulumi.get(self, "credential_type")

    @property
    @pulumi.getter(name="credentialName")
    def credential_name(self) -> Optional[str]:
        """
        The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        """
        return pulumi.get(self, "credential_name")

    @property
    @pulumi.getter(name="passwordSecretId")
    def password_secret_id(self) -> Optional[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        """
        return pulumi.get(self, "password_secret_id")

    @property
    @pulumi.getter
    def role(self) -> Optional[str]:
        """
        The role of the user connecting to the ASM instance.
        """
        return pulumi.get(self, "role")

    @property
    @pulumi.getter(name="sslSecretId")
    def ssl_secret_id(self) -> Optional[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        """
        return pulumi.get(self, "ssl_secret_id")

    @property
    @pulumi.getter(name="userName")
    def user_name(self) -> Optional[str]:
        """
        The user name used to connect to the ASM instance.
        """
        return pulumi.get(self, "user_name")


@pulumi.output_type
class ExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoConnectionString(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "hostName":
            suggest = "host_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoConnectionString. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoConnectionString.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoConnectionString.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 host_name: Optional[str] = None,
                 hosts: Optional[Sequence[str]] = None,
                 port: Optional[int] = None,
                 protocol: Optional[str] = None,
                 service: Optional[str] = None):
        """
        :param str host_name: The host name of the database or the SCAN name in case of a RAC database.
        :param Sequence[str] hosts: The list of host names of the ASM instances.
        :param int port: The port used to connect to the ASM instance.
        :param str protocol: The protocol used to connect to the ASM instance.
        :param str service: The service name of the ASM instance.
        """
        if host_name is not None:
            pulumi.set(__self__, "host_name", host_name)
        if hosts is not None:
            pulumi.set(__self__, "hosts", hosts)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if protocol is not None:
            pulumi.set(__self__, "protocol", protocol)
        if service is not None:
            pulumi.set(__self__, "service", service)

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> Optional[str]:
        """
        The host name of the database or the SCAN name in case of a RAC database.
        """
        return pulumi.get(self, "host_name")

    @property
    @pulumi.getter
    def hosts(self) -> Optional[Sequence[str]]:
        """
        The list of host names of the ASM instances.
        """
        return pulumi.get(self, "hosts")

    @property
    @pulumi.getter
    def port(self) -> Optional[int]:
        """
        The port used to connect to the ASM instance.
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter
    def protocol(self) -> Optional[str]:
        """
        The protocol used to connect to the ASM instance.
        """
        return pulumi.get(self, "protocol")

    @property
    @pulumi.getter
    def service(self) -> Optional[str]:
        """
        The service name of the ASM instance.
        """
        return pulumi.get(self, "service")


@pulumi.output_type
class ExternalListenerEndpoint(dict):
    def __init__(__self__, *,
                 host: Optional[str] = None,
                 key: Optional[str] = None,
                 port: Optional[int] = None,
                 protocol: Optional[str] = None,
                 services: Optional[Sequence[str]] = None):
        """
        :param str host: The host name or IP address.
        :param str key: The unique name of the service.
        :param int port: The port number.
        :param str protocol: The listener protocol.
        :param Sequence[str] services: The list of services registered with the listener.
        """
        if host is not None:
            pulumi.set(__self__, "host", host)
        if key is not None:
            pulumi.set(__self__, "key", key)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if protocol is not None:
            pulumi.set(__self__, "protocol", protocol)
        if services is not None:
            pulumi.set(__self__, "services", services)

    @property
    @pulumi.getter
    def host(self) -> Optional[str]:
        """
        The host name or IP address.
        """
        return pulumi.get(self, "host")

    @property
    @pulumi.getter
    def key(self) -> Optional[str]:
        """
        The unique name of the service.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def port(self) -> Optional[int]:
        """
        The port number.
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter
    def protocol(self) -> Optional[str]:
        """
        The listener protocol.
        """
        return pulumi.get(self, "protocol")

    @property
    @pulumi.getter
    def services(self) -> Optional[Sequence[str]]:
        """
        The list of services registered with the listener.
        """
        return pulumi.get(self, "services")


@pulumi.output_type
class ExternalListenerServicedAsm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "compartmentId":
            suggest = "compartment_id"
        elif key == "displayName":
            suggest = "display_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalListenerServicedAsm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalListenerServicedAsm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalListenerServicedAsm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 compartment_id: Optional[str] = None,
                 display_name: Optional[str] = None,
                 id: Optional[str] = None):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the external database resides.
        :param str display_name: The user-friendly name for the database. The name does not have to be unique.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external database.
        """
        if compartment_id is not None:
            pulumi.set(__self__, "compartment_id", compartment_id)
        if display_name is not None:
            pulumi.set(__self__, "display_name", display_name)
        if id is not None:
            pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter(name="compartmentId")
    def compartment_id(self) -> Optional[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the external database resides.
        """
        return pulumi.get(self, "compartment_id")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> Optional[str]:
        """
        The user-friendly name for the database. The name does not have to be unique.
        """
        return pulumi.get(self, "display_name")

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


@pulumi.output_type
class ExternalListenerServicedDatabase(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "compartmentId":
            suggest = "compartment_id"
        elif key == "databaseSubType":
            suggest = "database_sub_type"
        elif key == "databaseType":
            suggest = "database_type"
        elif key == "dbUniqueName":
            suggest = "db_unique_name"
        elif key == "displayName":
            suggest = "display_name"
        elif key == "isManaged":
            suggest = "is_managed"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ExternalListenerServicedDatabase. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ExternalListenerServicedDatabase.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ExternalListenerServicedDatabase.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 compartment_id: Optional[str] = None,
                 database_sub_type: Optional[str] = None,
                 database_type: Optional[str] = None,
                 db_unique_name: Optional[str] = None,
                 display_name: Optional[str] = None,
                 id: Optional[str] = None,
                 is_managed: Optional[bool] = None):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the external database resides.
        :param str database_sub_type: The subtype of Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, Non-container Database, Autonomous Database, or Autonomous Container Database.
        :param str database_type: The type of Oracle Database installation.
        :param str db_unique_name: The unique name of the external database.
        :param str display_name: The user-friendly name for the database. The name does not have to be unique.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external database.
        :param bool is_managed: Indicates whether the database is a Managed Database or not.
        """
        if compartment_id is not None:
            pulumi.set(__self__, "compartment_id", compartment_id)
        if database_sub_type is not None:
            pulumi.set(__self__, "database_sub_type", database_sub_type)
        if database_type is not None:
            pulumi.set(__self__, "database_type", database_type)
        if db_unique_name is not None:
            pulumi.set(__self__, "db_unique_name", db_unique_name)
        if display_name is not None:
            pulumi.set(__self__, "display_name", display_name)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if is_managed is not None:
            pulumi.set(__self__, "is_managed", is_managed)

    @property
    @pulumi.getter(name="compartmentId")
    def compartment_id(self) -> Optional[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the external database resides.
        """
        return pulumi.get(self, "compartment_id")

    @property
    @pulumi.getter(name="databaseSubType")
    def database_sub_type(self) -> Optional[str]:
        """
        The subtype of Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, Non-container Database, Autonomous Database, or Autonomous Container Database.
        """
        return pulumi.get(self, "database_sub_type")

    @property
    @pulumi.getter(name="databaseType")
    def database_type(self) -> Optional[str]:
        """
        The type of Oracle Database installation.
        """
        return pulumi.get(self, "database_type")

    @property
    @pulumi.getter(name="dbUniqueName")
    def db_unique_name(self) -> Optional[str]:
        """
        The unique name of the external database.
        """
        return pulumi.get(self, "db_unique_name")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> Optional[str]:
        """
        The user-friendly name for the database. The name does not have to be unique.
        """
        return pulumi.get(self, "display_name")

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

    @property
    @pulumi.getter(name="isManaged")
    def is_managed(self) -> Optional[bool]:
        """
        Indicates whether the database is a Managed Database or not.
        """
        return pulumi.get(self, "is_managed")


@pulumi.output_type
class ManagedDatabaseGroupManagedDatabase(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "compartmentId":
            suggest = "compartment_id"
        elif key == "databaseSubType":
            suggest = "database_sub_type"
        elif key == "databaseType":
            suggest = "database_type"
        elif key == "deploymentType":
            suggest = "deployment_type"
        elif key == "timeAdded":
            suggest = "time_added"
        elif key == "workloadType":
            suggest = "workload_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ManagedDatabaseGroupManagedDatabase. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ManagedDatabaseGroupManagedDatabase.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ManagedDatabaseGroupManagedDatabase.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 compartment_id: Optional[str] = None,
                 database_sub_type: Optional[str] = None,
                 database_type: Optional[str] = None,
                 deployment_type: Optional[str] = None,
                 id: Optional[str] = None,
                 name: Optional[str] = None,
                 time_added: Optional[str] = None,
                 workload_type: Optional[str] = None):
        """
        :param str compartment_id: (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the Managed Database Group resides.
        :param str database_sub_type: The subtype of the Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, Non-container Database, Autonomous Database, or Autonomous Container Database.
        :param str database_type: The type of Oracle Database installation.
        :param str deployment_type: The infrastructure used to deploy the Oracle Database.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the managed database that needs to be added to the Managed Database Group. 
               
               
               ** IMPORTANT **
               Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        :param str name: The name of the Managed Database Group. Valid characters are uppercase or lowercase letters, numbers, and "_". The name of the Managed Database Group cannot be modified. It must be unique in the compartment and must begin with an alphabetic character.
        :param str time_added: The date and time the Managed Database was added to the group.
        :param str workload_type: The workload type of the Autonomous Database.
        """
        if compartment_id is not None:
            pulumi.set(__self__, "compartment_id", compartment_id)
        if database_sub_type is not None:
            pulumi.set(__self__, "database_sub_type", database_sub_type)
        if database_type is not None:
            pulumi.set(__self__, "database_type", database_type)
        if deployment_type is not None:
            pulumi.set(__self__, "deployment_type", deployment_type)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if time_added is not None:
            pulumi.set(__self__, "time_added", time_added)
        if workload_type is not None:
            pulumi.set(__self__, "workload_type", workload_type)

    @property
    @pulumi.getter(name="compartmentId")
    def compartment_id(self) -> Optional[str]:
        """
        (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the Managed Database Group resides.
        """
        return pulumi.get(self, "compartment_id")

    @property
    @pulumi.getter(name="databaseSubType")
    def database_sub_type(self) -> Optional[str]:
        """
        The subtype of the Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, Non-container Database, Autonomous Database, or Autonomous Container Database.
        """
        return pulumi.get(self, "database_sub_type")

    @property
    @pulumi.getter(name="databaseType")
    def database_type(self) -> Optional[str]:
        """
        The type of Oracle Database installation.
        """
        return pulumi.get(self, "database_type")

    @property
    @pulumi.getter(name="deploymentType")
    def deployment_type(self) -> Optional[str]:
        """
        The infrastructure used to deploy the Oracle Database.
        """
        return pulumi.get(self, "deployment_type")

    @property
    @pulumi.getter
    def id(self) -> Optional[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the managed database that needs to be added to the Managed Database Group. 


        ** IMPORTANT **
        Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def name(self) -> Optional[str]:
        """
        The name of the Managed Database Group. Valid characters are uppercase or lowercase letters, numbers, and "_". The name of the Managed Database Group cannot be modified. It must be unique in the compartment and must begin with an alphabetic character.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="timeAdded")
    def time_added(self) -> Optional[str]:
        """
        The date and time the Managed Database was added to the group.
        """
        return pulumi.get(self, "time_added")

    @property
    @pulumi.getter(name="workloadType")
    def workload_type(self) -> Optional[str]:
        """
        The workload type of the Autonomous Database.
        """
        return pulumi.get(self, "workload_type")


@pulumi.output_type
class ManagedDatabasesChangeDatabaseParameterCredentials(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretId":
            suggest = "secret_id"
        elif key == "userName":
            suggest = "user_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ManagedDatabasesChangeDatabaseParameterCredentials. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ManagedDatabasesChangeDatabaseParameterCredentials.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ManagedDatabasesChangeDatabaseParameterCredentials.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password: Optional[str] = None,
                 role: Optional[str] = None,
                 secret_id: Optional[str] = None,
                 user_name: Optional[str] = None):
        """
        :param str password: The password for the database user name.
        :param str role: The role of the database user. Indicates whether the database user is a normal user or sysdba.
        :param str secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        :param str user_name: The database user name used to perform management activity.
        """
        if password is not None:
            pulumi.set(__self__, "password", password)
        if role is not None:
            pulumi.set(__self__, "role", role)
        if secret_id is not None:
            pulumi.set(__self__, "secret_id", secret_id)
        if user_name is not None:
            pulumi.set(__self__, "user_name", user_name)

    @property
    @pulumi.getter
    def password(self) -> Optional[str]:
        """
        The password for the database user name.
        """
        return pulumi.get(self, "password")

    @property
    @pulumi.getter
    def role(self) -> Optional[str]:
        """
        The role of the database user. Indicates whether the database user is a normal user or sysdba.
        """
        return pulumi.get(self, "role")

    @property
    @pulumi.getter(name="secretId")
    def secret_id(self) -> Optional[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        """
        return pulumi.get(self, "secret_id")

    @property
    @pulumi.getter(name="userName")
    def user_name(self) -> Optional[str]:
        """
        The database user name used to perform management activity.
        """
        return pulumi.get(self, "user_name")


@pulumi.output_type
class ManagedDatabasesChangeDatabaseParameterParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "updateComment":
            suggest = "update_comment"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ManagedDatabasesChangeDatabaseParameterParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ManagedDatabasesChangeDatabaseParameterParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ManagedDatabasesChangeDatabaseParameterParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 name: str,
                 value: str,
                 update_comment: Optional[str] = None):
        """
        :param str name: The parameter name.
        :param str value: The parameter value.
        :param str update_comment: A comment string to associate with the change in parameter value. It cannot contain control characters or a line break.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "value", value)
        if update_comment is not None:
            pulumi.set(__self__, "update_comment", update_comment)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The parameter name.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def value(self) -> str:
        """
        The parameter value.
        """
        return pulumi.get(self, "value")

    @property
    @pulumi.getter(name="updateComment")
    def update_comment(self) -> Optional[str]:
        """
        A comment string to associate with the change in parameter value. It cannot contain control characters or a line break.
        """
        return pulumi.get(self, "update_comment")


@pulumi.output_type
class ManagedDatabasesResetDatabaseParameterCredentials(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretId":
            suggest = "secret_id"
        elif key == "userName":
            suggest = "user_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ManagedDatabasesResetDatabaseParameterCredentials. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ManagedDatabasesResetDatabaseParameterCredentials.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ManagedDatabasesResetDatabaseParameterCredentials.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password: Optional[str] = None,
                 role: Optional[str] = None,
                 secret_id: Optional[str] = None,
                 user_name: Optional[str] = None):
        """
        :param str password: The password for the database user name.
        :param str role: The role of the database user. Indicates whether the database user is a normal user or sysdba.
        :param str secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        :param str user_name: The database user name used to perform management activity.
        """
        if password is not None:
            pulumi.set(__self__, "password", password)
        if role is not None:
            pulumi.set(__self__, "role", role)
        if secret_id is not None:
            pulumi.set(__self__, "secret_id", secret_id)
        if user_name is not None:
            pulumi.set(__self__, "user_name", user_name)

    @property
    @pulumi.getter
    def password(self) -> Optional[str]:
        """
        The password for the database user name.
        """
        return pulumi.get(self, "password")

    @property
    @pulumi.getter
    def role(self) -> Optional[str]:
        """
        The role of the database user. Indicates whether the database user is a normal user or sysdba.
        """
        return pulumi.get(self, "role")

    @property
    @pulumi.getter(name="secretId")
    def secret_id(self) -> Optional[str]:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        """
        return pulumi.get(self, "secret_id")

    @property
    @pulumi.getter(name="userName")
    def user_name(self) -> Optional[str]:
        """
        The database user name used to perform management activity.
        """
        return pulumi.get(self, "user_name")


@pulumi.output_type
class GetDbManagementPrivateEndpointAssociatedDatabaseItemResult(dict):
    def __init__(__self__, *,
                 compartment_id: str,
                 id: str,
                 name: str,
                 time_registered: str):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the database.
        :param str name: The name of the database.
        :param str time_registered: The time when Database Management was enabled for the database.
        """
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "time_registered", time_registered)

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

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

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the database.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="timeRegistered")
    def time_registered(self) -> str:
        """
        The time when Database Management was enabled for the database.
        """
        return pulumi.get(self, "time_registered")


@pulumi.output_type
class GetDbManagementPrivateEndpointAssociatedDatabasesAssociatedDatabaseCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDbManagementPrivateEndpointAssociatedDatabasesAssociatedDatabaseCollectionItemResult']):
        """
        :param Sequence['GetDbManagementPrivateEndpointAssociatedDatabasesAssociatedDatabaseCollectionItemArgs'] items: A list of databases using a Database Management private endpoint.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDbManagementPrivateEndpointAssociatedDatabasesAssociatedDatabaseCollectionItemResult']:
        """
        A list of databases using a Database Management private endpoint.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetDbManagementPrivateEndpointAssociatedDatabasesAssociatedDatabaseCollectionItemResult(dict):
    def __init__(__self__, *,
                 compartment_id: str,
                 id: str,
                 name: str,
                 time_registered: str):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the database.
        :param str name: The name of the database.
        :param str time_registered: The time when Database Management was enabled for the database.
        """
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "time_registered", time_registered)

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

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

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the database.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="timeRegistered")
    def time_registered(self) -> str:
        """
        The time when Database Management was enabled for the database.
        """
        return pulumi.get(self, "time_registered")


@pulumi.output_type
class GetDbManagementPrivateEndpointAssociatedDatabasesFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: The name of the database.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the database.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetDbManagementPrivateEndpointsDbManagementPrivateEndpointCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetDbManagementPrivateEndpointsDbManagementPrivateEndpointCollectionItemResult']):
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetDbManagementPrivateEndpointsDbManagementPrivateEndpointCollectionItemResult']:
        return pulumi.get(self, "items")


@pulumi.output_type
class GetDbManagementPrivateEndpointsDbManagementPrivateEndpointCollectionItemResult(dict):
    def __init__(__self__, *,
                 compartment_id: str,
                 description: str,
                 id: str,
                 is_cluster: bool,
                 name: str,
                 nsg_ids: Sequence[str],
                 private_ip: str,
                 state: str,
                 subnet_id: str,
                 time_created: str,
                 vcn_id: str):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        :param str description: The description of the Database Management private endpoint.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Database Management private endpoint.
        :param bool is_cluster: The option to filter Database Management private endpoints that can used for Oracle Databases in a cluster. This should be used along with the vcnId query parameter.
        :param str name: A filter to return only resources that match the entire name.
        :param Sequence[str] nsg_ids: The OCIDs of the Network Security Groups to which the Database Management private endpoint belongs.
        :param str private_ip: The IP addresses assigned to the Database Management private endpoint.
        :param str state: The lifecycle state of a resource.
        :param str subnet_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the subnet.
        :param str time_created: The date and time the Database Managament private endpoint was created, in the format defined by [RFC3339](https://tools.ietf.org/html/rfc3339).
        :param str vcn_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VCN.
        """
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "is_cluster", is_cluster)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "nsg_ids", nsg_ids)
        pulumi.set(__self__, "private_ip", private_ip)
        pulumi.set(__self__, "state", state)
        pulumi.set(__self__, "subnet_id", subnet_id)
        pulumi.set(__self__, "time_created", time_created)
        pulumi.set(__self__, "vcn_id", vcn_id)

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

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        The description of the Database Management private endpoint.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Database Management private endpoint.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="isCluster")
    def is_cluster(self) -> bool:
        """
        The option to filter Database Management private endpoints that can used for Oracle Databases in a cluster. This should be used along with the vcnId query parameter.
        """
        return pulumi.get(self, "is_cluster")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="nsgIds")
    def nsg_ids(self) -> Sequence[str]:
        """
        The OCIDs of the Network Security Groups to which the Database Management private endpoint belongs.
        """
        return pulumi.get(self, "nsg_ids")

    @property
    @pulumi.getter(name="privateIp")
    def private_ip(self) -> str:
        """
        The IP addresses assigned to the Database Management private endpoint.
        """
        return pulumi.get(self, "private_ip")

    @property
    @pulumi.getter
    def state(self) -> str:
        """
        The lifecycle state of a resource.
        """
        return pulumi.get(self, "state")

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

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> str:
        """
        The date and time the Database Managament private endpoint was created, in the format defined by [RFC3339](https://tools.ietf.org/html/rfc3339).
        """
        return pulumi.get(self, "time_created")

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


@pulumi.output_type
class GetDbManagementPrivateEndpointsFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: A filter to return only resources that match the entire name.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetExternalAsmConfigurationInitParameterResult(dict):
    def __init__(__self__, *,
                 asm_instance_display_name: str,
                 asm_instance_id: str,
                 auto_mount_disk_groups: Sequence[str],
                 disk_discovery_path: str,
                 preferred_read_failure_groups: Sequence[str],
                 rebalance_power: int):
        """
        :param str asm_instance_display_name: The user-friendly name for the ASM instance. The name does not have to be unique.
        :param str asm_instance_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external ASM instance.
        :param Sequence[str] auto_mount_disk_groups: The list of disk group names that an ASM instance mounts at startup or when the `ALTER DISKGROUP ALL MOUNT` statement is issued.
        :param str disk_discovery_path: An operating system-dependent value used to limit the set of disks considered for discovery.
        :param Sequence[str] preferred_read_failure_groups: The list of failure groups that contain preferred read disks.
        :param int rebalance_power: The maximum power on an ASM instance for disk rebalancing.
        """
        pulumi.set(__self__, "asm_instance_display_name", asm_instance_display_name)
        pulumi.set(__self__, "asm_instance_id", asm_instance_id)
        pulumi.set(__self__, "auto_mount_disk_groups", auto_mount_disk_groups)
        pulumi.set(__self__, "disk_discovery_path", disk_discovery_path)
        pulumi.set(__self__, "preferred_read_failure_groups", preferred_read_failure_groups)
        pulumi.set(__self__, "rebalance_power", rebalance_power)

    @property
    @pulumi.getter(name="asmInstanceDisplayName")
    def asm_instance_display_name(self) -> str:
        """
        The user-friendly name for the ASM instance. The name does not have to be unique.
        """
        return pulumi.get(self, "asm_instance_display_name")

    @property
    @pulumi.getter(name="asmInstanceId")
    def asm_instance_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external ASM instance.
        """
        return pulumi.get(self, "asm_instance_id")

    @property
    @pulumi.getter(name="autoMountDiskGroups")
    def auto_mount_disk_groups(self) -> Sequence[str]:
        """
        The list of disk group names that an ASM instance mounts at startup or when the `ALTER DISKGROUP ALL MOUNT` statement is issued.
        """
        return pulumi.get(self, "auto_mount_disk_groups")

    @property
    @pulumi.getter(name="diskDiscoveryPath")
    def disk_discovery_path(self) -> str:
        """
        An operating system-dependent value used to limit the set of disks considered for discovery.
        """
        return pulumi.get(self, "disk_discovery_path")

    @property
    @pulumi.getter(name="preferredReadFailureGroups")
    def preferred_read_failure_groups(self) -> Sequence[str]:
        """
        The list of failure groups that contain preferred read disks.
        """
        return pulumi.get(self, "preferred_read_failure_groups")

    @property
    @pulumi.getter(name="rebalancePower")
    def rebalance_power(self) -> int:
        """
        The maximum power on an ASM instance for disk rebalancing.
        """
        return pulumi.get(self, "rebalance_power")


@pulumi.output_type
class GetExternalAsmDiskGroupsExternalAsmDiskGroupCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetExternalAsmDiskGroupsExternalAsmDiskGroupCollectionItemResult']):
        """
        :param Sequence['GetExternalAsmDiskGroupsExternalAsmDiskGroupCollectionItemArgs'] items: An array of external ASM disk groups.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetExternalAsmDiskGroupsExternalAsmDiskGroupCollectionItemResult']:
        """
        An array of external ASM disk groups.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetExternalAsmDiskGroupsExternalAsmDiskGroupCollectionItemResult(dict):
    def __init__(__self__, *,
                 databases: Sequence[str],
                 dismounting_instance_count: int,
                 is_sparse: bool,
                 mounting_instance_count: int,
                 name: str,
                 redundancy_type: str,
                 total_size_in_mbs: str,
                 used_percent: float,
                 used_size_in_mbs: str):
        """
        :param Sequence[str] databases: The unique names of the databases using the disk group.
        :param int dismounting_instance_count: The number of ASM instances that have the disk group in dismounted state.
        :param bool is_sparse: Indicates whether the disk group is a sparse disk group or not.
        :param int mounting_instance_count: The number of ASM instances that have the disk group in mounted state.
        :param str name: The name of the ASM disk group.
        :param str redundancy_type: The redundancy type of the disk group.
        :param str total_size_in_mbs: The total capacity of the disk group (in megabytes).
        :param float used_percent: The percentage of used space in the disk group.
        :param str used_size_in_mbs: The used capacity of the disk group (in megabytes).
        """
        pulumi.set(__self__, "databases", databases)
        pulumi.set(__self__, "dismounting_instance_count", dismounting_instance_count)
        pulumi.set(__self__, "is_sparse", is_sparse)
        pulumi.set(__self__, "mounting_instance_count", mounting_instance_count)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "redundancy_type", redundancy_type)
        pulumi.set(__self__, "total_size_in_mbs", total_size_in_mbs)
        pulumi.set(__self__, "used_percent", used_percent)
        pulumi.set(__self__, "used_size_in_mbs", used_size_in_mbs)

    @property
    @pulumi.getter
    def databases(self) -> Sequence[str]:
        """
        The unique names of the databases using the disk group.
        """
        return pulumi.get(self, "databases")

    @property
    @pulumi.getter(name="dismountingInstanceCount")
    def dismounting_instance_count(self) -> int:
        """
        The number of ASM instances that have the disk group in dismounted state.
        """
        return pulumi.get(self, "dismounting_instance_count")

    @property
    @pulumi.getter(name="isSparse")
    def is_sparse(self) -> bool:
        """
        Indicates whether the disk group is a sparse disk group or not.
        """
        return pulumi.get(self, "is_sparse")

    @property
    @pulumi.getter(name="mountingInstanceCount")
    def mounting_instance_count(self) -> int:
        """
        The number of ASM instances that have the disk group in mounted state.
        """
        return pulumi.get(self, "mounting_instance_count")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the ASM disk group.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="redundancyType")
    def redundancy_type(self) -> str:
        """
        The redundancy type of the disk group.
        """
        return pulumi.get(self, "redundancy_type")

    @property
    @pulumi.getter(name="totalSizeInMbs")
    def total_size_in_mbs(self) -> str:
        """
        The total capacity of the disk group (in megabytes).
        """
        return pulumi.get(self, "total_size_in_mbs")

    @property
    @pulumi.getter(name="usedPercent")
    def used_percent(self) -> float:
        """
        The percentage of used space in the disk group.
        """
        return pulumi.get(self, "used_percent")

    @property
    @pulumi.getter(name="usedSizeInMbs")
    def used_size_in_mbs(self) -> str:
        """
        The used capacity of the disk group (in megabytes).
        """
        return pulumi.get(self, "used_size_in_mbs")


@pulumi.output_type
class GetExternalAsmDiskGroupsFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: The name of the ASM disk group.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the ASM disk group.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetExternalAsmInstancesExternalAsmInstanceCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetExternalAsmInstancesExternalAsmInstanceCollectionItemResult']):
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetExternalAsmInstancesExternalAsmInstanceCollectionItemResult']:
        return pulumi.get(self, "items")


@pulumi.output_type
class GetExternalAsmInstancesExternalAsmInstanceCollectionItemResult(dict):
    def __init__(__self__, *,
                 adr_home_directory: str,
                 compartment_id: str,
                 component_name: str,
                 display_name: str,
                 external_asm_id: str,
                 external_db_node_id: str,
                 external_db_system_id: str,
                 host_name: str,
                 id: str,
                 lifecycle_details: str,
                 state: str,
                 time_created: str,
                 time_updated: str):
        """
        :param str adr_home_directory: The Automatic Diagnostic Repository (ADR) home directory for the ASM instance.
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        :param str component_name: The name of the external ASM instance.
        :param str display_name: A filter to only return the resources that match the entire display name.
        :param str external_asm_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external ASM.
        :param str external_db_node_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB node on which the ASM instance is running.
        :param str external_db_system_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB system that the ASM instance is a part of.
        :param str host_name: The name of the host on which the ASM instance is running.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external ASM instance.
        :param str lifecycle_details: Additional information about the current lifecycle state.
        :param str state: The current lifecycle state of the external ASM instance.
        :param str time_created: The date and time the external ASM instance was created.
        :param str time_updated: The date and time the external ASM instance was last updated.
        """
        pulumi.set(__self__, "adr_home_directory", adr_home_directory)
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "component_name", component_name)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "external_asm_id", external_asm_id)
        pulumi.set(__self__, "external_db_node_id", external_db_node_id)
        pulumi.set(__self__, "external_db_system_id", external_db_system_id)
        pulumi.set(__self__, "host_name", host_name)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "lifecycle_details", lifecycle_details)
        pulumi.set(__self__, "state", state)
        pulumi.set(__self__, "time_created", time_created)
        pulumi.set(__self__, "time_updated", time_updated)

    @property
    @pulumi.getter(name="adrHomeDirectory")
    def adr_home_directory(self) -> str:
        """
        The Automatic Diagnostic Repository (ADR) home directory for the ASM instance.
        """
        return pulumi.get(self, "adr_home_directory")

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

    @property
    @pulumi.getter(name="componentName")
    def component_name(self) -> str:
        """
        The name of the external ASM instance.
        """
        return pulumi.get(self, "component_name")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        A filter to only return the resources that match the entire display name.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="externalAsmId")
    def external_asm_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external ASM.
        """
        return pulumi.get(self, "external_asm_id")

    @property
    @pulumi.getter(name="externalDbNodeId")
    def external_db_node_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB node on which the ASM instance is running.
        """
        return pulumi.get(self, "external_db_node_id")

    @property
    @pulumi.getter(name="externalDbSystemId")
    def external_db_system_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB system that the ASM instance is a part of.
        """
        return pulumi.get(self, "external_db_system_id")

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> str:
        """
        The name of the host on which the ASM instance is running.
        """
        return pulumi.get(self, "host_name")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external ASM instance.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="lifecycleDetails")
    def lifecycle_details(self) -> str:
        """
        Additional information about the current lifecycle state.
        """
        return pulumi.get(self, "lifecycle_details")

    @property
    @pulumi.getter
    def state(self) -> str:
        """
        The current lifecycle state of the external ASM instance.
        """
        return pulumi.get(self, "state")

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> str:
        """
        The date and time the external ASM instance was created.
        """
        return pulumi.get(self, "time_created")

    @property
    @pulumi.getter(name="timeUpdated")
    def time_updated(self) -> str:
        """
        The date and time the external ASM instance was last updated.
        """
        return pulumi.get(self, "time_updated")


@pulumi.output_type
class GetExternalAsmInstancesFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetExternalAsmServicedDatabaseResult(dict):
    def __init__(__self__, *,
                 compartment_id: str,
                 database_sub_type: str,
                 database_type: str,
                 db_unique_name: str,
                 disk_groups: Sequence[str],
                 display_name: str,
                 id: str,
                 is_managed: bool):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the external database resides.
        :param str database_sub_type: The subtype of Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, Non-container Database, Autonomous Database, or Autonomous Container Database.
        :param str database_type: The type of Oracle Database installation.
        :param str db_unique_name: The unique name of the external database.
        :param Sequence[str] disk_groups: The list of ASM disk groups used by the database.
        :param str display_name: The user-friendly name for the database. The name does not have to be unique.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external database.
        :param bool is_managed: Indicates whether the database is a Managed Database or not.
        """
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "database_sub_type", database_sub_type)
        pulumi.set(__self__, "database_type", database_type)
        pulumi.set(__self__, "db_unique_name", db_unique_name)
        pulumi.set(__self__, "disk_groups", disk_groups)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "is_managed", is_managed)

    @property
    @pulumi.getter(name="compartmentId")
    def compartment_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the external database resides.
        """
        return pulumi.get(self, "compartment_id")

    @property
    @pulumi.getter(name="databaseSubType")
    def database_sub_type(self) -> str:
        """
        The subtype of Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, Non-container Database, Autonomous Database, or Autonomous Container Database.
        """
        return pulumi.get(self, "database_sub_type")

    @property
    @pulumi.getter(name="databaseType")
    def database_type(self) -> str:
        """
        The type of Oracle Database installation.
        """
        return pulumi.get(self, "database_type")

    @property
    @pulumi.getter(name="dbUniqueName")
    def db_unique_name(self) -> str:
        """
        The unique name of the external database.
        """
        return pulumi.get(self, "db_unique_name")

    @property
    @pulumi.getter(name="diskGroups")
    def disk_groups(self) -> Sequence[str]:
        """
        The list of ASM disk groups used by the database.
        """
        return pulumi.get(self, "disk_groups")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        The user-friendly name for the database. The name does not have to be unique.
        """
        return pulumi.get(self, "display_name")

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

    @property
    @pulumi.getter(name="isManaged")
    def is_managed(self) -> bool:
        """
        Indicates whether the database is a Managed Database or not.
        """
        return pulumi.get(self, "is_managed")


@pulumi.output_type
class GetExternalAsmUsersExternalAsmUserCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetExternalAsmUsersExternalAsmUserCollectionItemResult']):
        """
        :param Sequence['GetExternalAsmUsersExternalAsmUserCollectionItemArgs'] items: An array of external ASM users.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetExternalAsmUsersExternalAsmUserCollectionItemResult']:
        """
        An array of external ASM users.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetExternalAsmUsersExternalAsmUserCollectionItemResult(dict):
    def __init__(__self__, *,
                 asm_id: str,
                 name: str,
                 privileges: Sequence[str]):
        """
        :param str asm_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external ASM.
        :param str name: The name of the ASM user.
        :param Sequence[str] privileges: The list of privileges of the ASM user.
        """
        pulumi.set(__self__, "asm_id", asm_id)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "privileges", privileges)

    @property
    @pulumi.getter(name="asmId")
    def asm_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external ASM.
        """
        return pulumi.get(self, "asm_id")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the ASM user.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def privileges(self) -> Sequence[str]:
        """
        The list of privileges of the ASM user.
        """
        return pulumi.get(self, "privileges")


@pulumi.output_type
class GetExternalAsmUsersFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: The name of the ASM user.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the ASM user.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetExternalAsmsExternalAsmCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetExternalAsmsExternalAsmCollectionItemResult']):
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetExternalAsmsExternalAsmCollectionItemResult']:
        return pulumi.get(self, "items")


@pulumi.output_type
class GetExternalAsmsExternalAsmCollectionItemResult(dict):
    def __init__(__self__, *,
                 additional_details: Mapping[str, Any],
                 compartment_id: str,
                 component_name: str,
                 display_name: str,
                 external_asm_id: str,
                 external_connector_id: str,
                 external_db_system_id: str,
                 grid_home: str,
                 id: str,
                 is_cluster: bool,
                 is_flex_enabled: bool,
                 lifecycle_details: str,
                 serviced_databases: Sequence['outputs.GetExternalAsmsExternalAsmCollectionItemServicedDatabaseResult'],
                 state: str,
                 time_created: str,
                 time_updated: str,
                 version: str):
        """
        :param Mapping[str, Any] additional_details: The additional details of the external ASM defined in `{"key": "value"}` format. Example: `{"bar-key": "value"}`
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        :param str component_name: The name of the external ASM.
        :param str display_name: A filter to only return the resources that match the entire display name.
        :param str external_connector_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external connector.
        :param str external_db_system_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB system.
        :param str grid_home: The directory in which ASM is installed. This is the same directory in which Oracle Grid Infrastructure is installed.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external database.
        :param bool is_cluster: Indicates whether the ASM is a cluster ASM or not.
        :param bool is_flex_enabled: Indicates whether Oracle Flex ASM is enabled or not.
        :param str lifecycle_details: Additional information about the current lifecycle state.
        :param Sequence['GetExternalAsmsExternalAsmCollectionItemServicedDatabaseArgs'] serviced_databases: The list of databases that are serviced by the ASM.
        :param str state: The current lifecycle state of the external ASM.
        :param str time_created: The date and time the external ASM was created.
        :param str time_updated: The date and time the external ASM was last updated.
        :param str version: The ASM version.
        """
        pulumi.set(__self__, "additional_details", additional_details)
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "component_name", component_name)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "external_asm_id", external_asm_id)
        pulumi.set(__self__, "external_connector_id", external_connector_id)
        pulumi.set(__self__, "external_db_system_id", external_db_system_id)
        pulumi.set(__self__, "grid_home", grid_home)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "is_cluster", is_cluster)
        pulumi.set(__self__, "is_flex_enabled", is_flex_enabled)
        pulumi.set(__self__, "lifecycle_details", lifecycle_details)
        pulumi.set(__self__, "serviced_databases", serviced_databases)
        pulumi.set(__self__, "state", state)
        pulumi.set(__self__, "time_created", time_created)
        pulumi.set(__self__, "time_updated", time_updated)
        pulumi.set(__self__, "version", version)

    @property
    @pulumi.getter(name="additionalDetails")
    def additional_details(self) -> Mapping[str, Any]:
        """
        The additional details of the external ASM defined in `{"key": "value"}` format. Example: `{"bar-key": "value"}`
        """
        return pulumi.get(self, "additional_details")

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

    @property
    @pulumi.getter(name="componentName")
    def component_name(self) -> str:
        """
        The name of the external ASM.
        """
        return pulumi.get(self, "component_name")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        A filter to only return the resources that match the entire display name.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="externalAsmId")
    def external_asm_id(self) -> str:
        return pulumi.get(self, "external_asm_id")

    @property
    @pulumi.getter(name="externalConnectorId")
    def external_connector_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external connector.
        """
        return pulumi.get(self, "external_connector_id")

    @property
    @pulumi.getter(name="externalDbSystemId")
    def external_db_system_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB system.
        """
        return pulumi.get(self, "external_db_system_id")

    @property
    @pulumi.getter(name="gridHome")
    def grid_home(self) -> str:
        """
        The directory in which ASM is installed. This is the same directory in which Oracle Grid Infrastructure is installed.
        """
        return pulumi.get(self, "grid_home")

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

    @property
    @pulumi.getter(name="isCluster")
    def is_cluster(self) -> bool:
        """
        Indicates whether the ASM is a cluster ASM or not.
        """
        return pulumi.get(self, "is_cluster")

    @property
    @pulumi.getter(name="isFlexEnabled")
    def is_flex_enabled(self) -> bool:
        """
        Indicates whether Oracle Flex ASM is enabled or not.
        """
        return pulumi.get(self, "is_flex_enabled")

    @property
    @pulumi.getter(name="lifecycleDetails")
    def lifecycle_details(self) -> str:
        """
        Additional information about the current lifecycle state.
        """
        return pulumi.get(self, "lifecycle_details")

    @property
    @pulumi.getter(name="servicedDatabases")
    def serviced_databases(self) -> Sequence['outputs.GetExternalAsmsExternalAsmCollectionItemServicedDatabaseResult']:
        """
        The list of databases that are serviced by the ASM.
        """
        return pulumi.get(self, "serviced_databases")

    @property
    @pulumi.getter
    def state(self) -> str:
        """
        The current lifecycle state of the external ASM.
        """
        return pulumi.get(self, "state")

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> str:
        """
        The date and time the external ASM was created.
        """
        return pulumi.get(self, "time_created")

    @property
    @pulumi.getter(name="timeUpdated")
    def time_updated(self) -> str:
        """
        The date and time the external ASM was last updated.
        """
        return pulumi.get(self, "time_updated")

    @property
    @pulumi.getter
    def version(self) -> str:
        """
        The ASM version.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GetExternalAsmsExternalAsmCollectionItemServicedDatabaseResult(dict):
    def __init__(__self__, *,
                 compartment_id: str,
                 database_sub_type: str,
                 database_type: str,
                 db_unique_name: str,
                 disk_groups: Sequence[str],
                 display_name: str,
                 id: str,
                 is_managed: bool):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        :param str database_sub_type: The subtype of Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, Non-container Database, Autonomous Database, or Autonomous Container Database.
        :param str database_type: The type of Oracle Database installation.
        :param str db_unique_name: The unique name of the external database.
        :param Sequence[str] disk_groups: The list of ASM disk groups used by the database.
        :param str display_name: A filter to only return the resources that match the entire display name.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external database.
        :param bool is_managed: Indicates whether the database is a Managed Database or not.
        """
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "database_sub_type", database_sub_type)
        pulumi.set(__self__, "database_type", database_type)
        pulumi.set(__self__, "db_unique_name", db_unique_name)
        pulumi.set(__self__, "disk_groups", disk_groups)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "is_managed", is_managed)

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

    @property
    @pulumi.getter(name="databaseSubType")
    def database_sub_type(self) -> str:
        """
        The subtype of Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, Non-container Database, Autonomous Database, or Autonomous Container Database.
        """
        return pulumi.get(self, "database_sub_type")

    @property
    @pulumi.getter(name="databaseType")
    def database_type(self) -> str:
        """
        The type of Oracle Database installation.
        """
        return pulumi.get(self, "database_type")

    @property
    @pulumi.getter(name="dbUniqueName")
    def db_unique_name(self) -> str:
        """
        The unique name of the external database.
        """
        return pulumi.get(self, "db_unique_name")

    @property
    @pulumi.getter(name="diskGroups")
    def disk_groups(self) -> Sequence[str]:
        """
        The list of ASM disk groups used by the database.
        """
        return pulumi.get(self, "disk_groups")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        A filter to only return the resources that match the entire display name.
        """
        return pulumi.get(self, "display_name")

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

    @property
    @pulumi.getter(name="isManaged")
    def is_managed(self) -> bool:
        """
        Indicates whether the database is a Managed Database or not.
        """
        return pulumi.get(self, "is_managed")


@pulumi.output_type
class GetExternalAsmsFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetExternalClusterInstancesExternalClusterInstanceCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetExternalClusterInstancesExternalClusterInstanceCollectionItemResult']):
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetExternalClusterInstancesExternalClusterInstanceCollectionItemResult']:
        return pulumi.get(self, "items")


@pulumi.output_type
class GetExternalClusterInstancesExternalClusterInstanceCollectionItemResult(dict):
    def __init__(__self__, *,
                 adr_home_directory: str,
                 compartment_id: str,
                 component_name: str,
                 crs_base_directory: str,
                 display_name: str,
                 external_cluster_id: str,
                 external_cluster_instance_id: str,
                 external_connector_id: str,
                 external_db_node_id: str,
                 external_db_system_id: str,
                 host_name: str,
                 id: str,
                 lifecycle_details: str,
                 node_role: str,
                 state: str,
                 time_created: str,
                 time_updated: str):
        """
        :param str adr_home_directory: The Automatic Diagnostic Repository (ADR) home directory for the cluster instance.
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        :param str component_name: The name of the external cluster instance.
        :param str crs_base_directory: The Oracle base location of Cluster Ready Services (CRS).
        :param str display_name: A filter to only return the resources that match the entire display name.
        :param str external_cluster_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external cluster.
        :param str external_connector_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external connector.
        :param str external_db_node_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB node.
        :param str external_db_system_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB system that the cluster instance is a part of.
        :param str host_name: The name of the host on which the cluster instance is running.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external cluster instance.
        :param str lifecycle_details: Additional information about the current lifecycle state.
        :param str node_role: The role of the cluster node.
        :param str state: The current lifecycle state of the external cluster instance.
        :param str time_created: The date and time the external cluster instance was created.
        :param str time_updated: The date and time the external cluster instance was last updated.
        """
        pulumi.set(__self__, "adr_home_directory", adr_home_directory)
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "component_name", component_name)
        pulumi.set(__self__, "crs_base_directory", crs_base_directory)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "external_cluster_id", external_cluster_id)
        pulumi.set(__self__, "external_cluster_instance_id", external_cluster_instance_id)
        pulumi.set(__self__, "external_connector_id", external_connector_id)
        pulumi.set(__self__, "external_db_node_id", external_db_node_id)
        pulumi.set(__self__, "external_db_system_id", external_db_system_id)
        pulumi.set(__self__, "host_name", host_name)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "lifecycle_details", lifecycle_details)
        pulumi.set(__self__, "node_role", node_role)
        pulumi.set(__self__, "state", state)
        pulumi.set(__self__, "time_created", time_created)
        pulumi.set(__self__, "time_updated", time_updated)

    @property
    @pulumi.getter(name="adrHomeDirectory")
    def adr_home_directory(self) -> str:
        """
        The Automatic Diagnostic Repository (ADR) home directory for the cluster instance.
        """
        return pulumi.get(self, "adr_home_directory")

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

    @property
    @pulumi.getter(name="componentName")
    def component_name(self) -> str:
        """
        The name of the external cluster instance.
        """
        return pulumi.get(self, "component_name")

    @property
    @pulumi.getter(name="crsBaseDirectory")
    def crs_base_directory(self) -> str:
        """
        The Oracle base location of Cluster Ready Services (CRS).
        """
        return pulumi.get(self, "crs_base_directory")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        A filter to only return the resources that match the entire display name.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="externalClusterId")
    def external_cluster_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external cluster.
        """
        return pulumi.get(self, "external_cluster_id")

    @property
    @pulumi.getter(name="externalClusterInstanceId")
    def external_cluster_instance_id(self) -> str:
        return pulumi.get(self, "external_cluster_instance_id")

    @property
    @pulumi.getter(name="externalConnectorId")
    def external_connector_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external connector.
        """
        return pulumi.get(self, "external_connector_id")

    @property
    @pulumi.getter(name="externalDbNodeId")
    def external_db_node_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB node.
        """
        return pulumi.get(self, "external_db_node_id")

    @property
    @pulumi.getter(name="externalDbSystemId")
    def external_db_system_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB system that the cluster instance is a part of.
        """
        return pulumi.get(self, "external_db_system_id")

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> str:
        """
        The name of the host on which the cluster instance is running.
        """
        return pulumi.get(self, "host_name")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external cluster instance.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="lifecycleDetails")
    def lifecycle_details(self) -> str:
        """
        Additional information about the current lifecycle state.
        """
        return pulumi.get(self, "lifecycle_details")

    @property
    @pulumi.getter(name="nodeRole")
    def node_role(self) -> str:
        """
        The role of the cluster node.
        """
        return pulumi.get(self, "node_role")

    @property
    @pulumi.getter
    def state(self) -> str:
        """
        The current lifecycle state of the external cluster instance.
        """
        return pulumi.get(self, "state")

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> str:
        """
        The date and time the external cluster instance was created.
        """
        return pulumi.get(self, "time_created")

    @property
    @pulumi.getter(name="timeUpdated")
    def time_updated(self) -> str:
        """
        The date and time the external cluster instance was last updated.
        """
        return pulumi.get(self, "time_updated")


@pulumi.output_type
class GetExternalClusterInstancesFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetExternalClusterNetworkConfigurationResult(dict):
    def __init__(__self__, *,
                 network_number: int,
                 network_type: str,
                 subnet: str):
        """
        :param int network_number: The network number from which VIPs are obtained.
        :param str network_type: The network type.
        :param str subnet: The subnet for the network.
        """
        pulumi.set(__self__, "network_number", network_number)
        pulumi.set(__self__, "network_type", network_type)
        pulumi.set(__self__, "subnet", subnet)

    @property
    @pulumi.getter(name="networkNumber")
    def network_number(self) -> int:
        """
        The network number from which VIPs are obtained.
        """
        return pulumi.get(self, "network_number")

    @property
    @pulumi.getter(name="networkType")
    def network_type(self) -> str:
        """
        The network type.
        """
        return pulumi.get(self, "network_type")

    @property
    @pulumi.getter
    def subnet(self) -> str:
        """
        The subnet for the network.
        """
        return pulumi.get(self, "subnet")


@pulumi.output_type
class GetExternalClusterScanConfigurationResult(dict):
    def __init__(__self__, *,
                 network_number: int,
                 scan_name: str,
                 scan_port: int,
                 scan_protocol: str):
        """
        :param int network_number: The network number from which VIPs are obtained.
        :param str scan_name: The name of the SCAN listener.
        :param int scan_port: The port number of the SCAN listener.
        :param str scan_protocol: The protocol of the SCAN listener.
        """
        pulumi.set(__self__, "network_number", network_number)
        pulumi.set(__self__, "scan_name", scan_name)
        pulumi.set(__self__, "scan_port", scan_port)
        pulumi.set(__self__, "scan_protocol", scan_protocol)

    @property
    @pulumi.getter(name="networkNumber")
    def network_number(self) -> int:
        """
        The network number from which VIPs are obtained.
        """
        return pulumi.get(self, "network_number")

    @property
    @pulumi.getter(name="scanName")
    def scan_name(self) -> str:
        """
        The name of the SCAN listener.
        """
        return pulumi.get(self, "scan_name")

    @property
    @pulumi.getter(name="scanPort")
    def scan_port(self) -> int:
        """
        The port number of the SCAN listener.
        """
        return pulumi.get(self, "scan_port")

    @property
    @pulumi.getter(name="scanProtocol")
    def scan_protocol(self) -> str:
        """
        The protocol of the SCAN listener.
        """
        return pulumi.get(self, "scan_protocol")


@pulumi.output_type
class GetExternalClusterVipConfigurationResult(dict):
    def __init__(__self__, *,
                 address: str,
                 network_number: int,
                 node_name: str):
        """
        :param str address: The VIP name or IP address.
        :param int network_number: The network number from which VIPs are obtained.
        :param str node_name: The name of the node with the VIP.
        """
        pulumi.set(__self__, "address", address)
        pulumi.set(__self__, "network_number", network_number)
        pulumi.set(__self__, "node_name", node_name)

    @property
    @pulumi.getter
    def address(self) -> str:
        """
        The VIP name or IP address.
        """
        return pulumi.get(self, "address")

    @property
    @pulumi.getter(name="networkNumber")
    def network_number(self) -> int:
        """
        The network number from which VIPs are obtained.
        """
        return pulumi.get(self, "network_number")

    @property
    @pulumi.getter(name="nodeName")
    def node_name(self) -> str:
        """
        The name of the node with the VIP.
        """
        return pulumi.get(self, "node_name")


@pulumi.output_type
class GetExternalClustersExternalClusterCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetExternalClustersExternalClusterCollectionItemResult']):
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetExternalClustersExternalClusterCollectionItemResult']:
        return pulumi.get(self, "items")


@pulumi.output_type
class GetExternalClustersExternalClusterCollectionItemResult(dict):
    def __init__(__self__, *,
                 additional_details: Mapping[str, Any],
                 compartment_id: str,
                 component_name: str,
                 display_name: str,
                 external_cluster_id: str,
                 external_connector_id: str,
                 external_db_system_id: str,
                 grid_home: str,
                 id: str,
                 is_flex_cluster: bool,
                 lifecycle_details: str,
                 network_configurations: Sequence['outputs.GetExternalClustersExternalClusterCollectionItemNetworkConfigurationResult'],
                 ocr_file_location: str,
                 scan_configurations: Sequence['outputs.GetExternalClustersExternalClusterCollectionItemScanConfigurationResult'],
                 state: str,
                 time_created: str,
                 time_updated: str,
                 version: str,
                 vip_configurations: Sequence['outputs.GetExternalClustersExternalClusterCollectionItemVipConfigurationResult']):
        """
        :param Mapping[str, Any] additional_details: The additional details of the external cluster defined in `{"key": "value"}` format. Example: `{"bar-key": "value"}`
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        :param str component_name: The name of the external cluster.
        :param str display_name: A filter to only return the resources that match the entire display name.
        :param str external_connector_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external connector.
        :param str external_db_system_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB system.
        :param str grid_home: The directory in which Oracle Grid Infrastructure is installed.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external cluster.
        :param bool is_flex_cluster: Indicates whether the cluster is Oracle Flex Cluster or not.
        :param str lifecycle_details: Additional information about the current lifecycle state.
        :param Sequence['GetExternalClustersExternalClusterCollectionItemNetworkConfigurationArgs'] network_configurations: The list of network address configurations of the external cluster.
        :param str ocr_file_location: The location of the Oracle Cluster Registry (OCR).
        :param Sequence['GetExternalClustersExternalClusterCollectionItemScanConfigurationArgs'] scan_configurations: The list of Single Client Access Name (SCAN) configurations of the external cluster.
        :param str state: The current lifecycle state of the external cluster.
        :param str time_created: The date and time the external cluster was created.
        :param str time_updated: The date and time the external cluster was last updated.
        :param str version: The cluster version.
        :param Sequence['GetExternalClustersExternalClusterCollectionItemVipConfigurationArgs'] vip_configurations: The list of Virtual IP (VIP) configurations of the external cluster.
        """
        pulumi.set(__self__, "additional_details", additional_details)
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "component_name", component_name)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "external_cluster_id", external_cluster_id)
        pulumi.set(__self__, "external_connector_id", external_connector_id)
        pulumi.set(__self__, "external_db_system_id", external_db_system_id)
        pulumi.set(__self__, "grid_home", grid_home)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "is_flex_cluster", is_flex_cluster)
        pulumi.set(__self__, "lifecycle_details", lifecycle_details)
        pulumi.set(__self__, "network_configurations", network_configurations)
        pulumi.set(__self__, "ocr_file_location", ocr_file_location)
        pulumi.set(__self__, "scan_configurations", scan_configurations)
        pulumi.set(__self__, "state", state)
        pulumi.set(__self__, "time_created", time_created)
        pulumi.set(__self__, "time_updated", time_updated)
        pulumi.set(__self__, "version", version)
        pulumi.set(__self__, "vip_configurations", vip_configurations)

    @property
    @pulumi.getter(name="additionalDetails")
    def additional_details(self) -> Mapping[str, Any]:
        """
        The additional details of the external cluster defined in `{"key": "value"}` format. Example: `{"bar-key": "value"}`
        """
        return pulumi.get(self, "additional_details")

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

    @property
    @pulumi.getter(name="componentName")
    def component_name(self) -> str:
        """
        The name of the external cluster.
        """
        return pulumi.get(self, "component_name")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        A filter to only return the resources that match the entire display name.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="externalClusterId")
    def external_cluster_id(self) -> str:
        return pulumi.get(self, "external_cluster_id")

    @property
    @pulumi.getter(name="externalConnectorId")
    def external_connector_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external connector.
        """
        return pulumi.get(self, "external_connector_id")

    @property
    @pulumi.getter(name="externalDbSystemId")
    def external_db_system_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB system.
        """
        return pulumi.get(self, "external_db_system_id")

    @property
    @pulumi.getter(name="gridHome")
    def grid_home(self) -> str:
        """
        The directory in which Oracle Grid Infrastructure is installed.
        """
        return pulumi.get(self, "grid_home")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external cluster.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="isFlexCluster")
    def is_flex_cluster(self) -> bool:
        """
        Indicates whether the cluster is Oracle Flex Cluster or not.
        """
        return pulumi.get(self, "is_flex_cluster")

    @property
    @pulumi.getter(name="lifecycleDetails")
    def lifecycle_details(self) -> str:
        """
        Additional information about the current lifecycle state.
        """
        return pulumi.get(self, "lifecycle_details")

    @property
    @pulumi.getter(name="networkConfigurations")
    def network_configurations(self) -> Sequence['outputs.GetExternalClustersExternalClusterCollectionItemNetworkConfigurationResult']:
        """
        The list of network address configurations of the external cluster.
        """
        return pulumi.get(self, "network_configurations")

    @property
    @pulumi.getter(name="ocrFileLocation")
    def ocr_file_location(self) -> str:
        """
        The location of the Oracle Cluster Registry (OCR).
        """
        return pulumi.get(self, "ocr_file_location")

    @property
    @pulumi.getter(name="scanConfigurations")
    def scan_configurations(self) -> Sequence['outputs.GetExternalClustersExternalClusterCollectionItemScanConfigurationResult']:
        """
        The list of Single Client Access Name (SCAN) configurations of the external cluster.
        """
        return pulumi.get(self, "scan_configurations")

    @property
    @pulumi.getter
    def state(self) -> str:
        """
        The current lifecycle state of the external cluster.
        """
        return pulumi.get(self, "state")

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> str:
        """
        The date and time the external cluster was created.
        """
        return pulumi.get(self, "time_created")

    @property
    @pulumi.getter(name="timeUpdated")
    def time_updated(self) -> str:
        """
        The date and time the external cluster was last updated.
        """
        return pulumi.get(self, "time_updated")

    @property
    @pulumi.getter
    def version(self) -> str:
        """
        The cluster version.
        """
        return pulumi.get(self, "version")

    @property
    @pulumi.getter(name="vipConfigurations")
    def vip_configurations(self) -> Sequence['outputs.GetExternalClustersExternalClusterCollectionItemVipConfigurationResult']:
        """
        The list of Virtual IP (VIP) configurations of the external cluster.
        """
        return pulumi.get(self, "vip_configurations")


@pulumi.output_type
class GetExternalClustersExternalClusterCollectionItemNetworkConfigurationResult(dict):
    def __init__(__self__, *,
                 network_number: int,
                 network_type: str,
                 subnet: str):
        """
        :param int network_number: The network number from which VIPs are obtained.
        :param str network_type: The network type.
        :param str subnet: The subnet for the network.
        """
        pulumi.set(__self__, "network_number", network_number)
        pulumi.set(__self__, "network_type", network_type)
        pulumi.set(__self__, "subnet", subnet)

    @property
    @pulumi.getter(name="networkNumber")
    def network_number(self) -> int:
        """
        The network number from which VIPs are obtained.
        """
        return pulumi.get(self, "network_number")

    @property
    @pulumi.getter(name="networkType")
    def network_type(self) -> str:
        """
        The network type.
        """
        return pulumi.get(self, "network_type")

    @property
    @pulumi.getter
    def subnet(self) -> str:
        """
        The subnet for the network.
        """
        return pulumi.get(self, "subnet")


@pulumi.output_type
class GetExternalClustersExternalClusterCollectionItemScanConfigurationResult(dict):
    def __init__(__self__, *,
                 network_number: int,
                 scan_name: str,
                 scan_port: int,
                 scan_protocol: str):
        """
        :param int network_number: The network number from which VIPs are obtained.
        :param str scan_name: The name of the SCAN listener.
        :param int scan_port: The port number of the SCAN listener.
        :param str scan_protocol: The protocol of the SCAN listener.
        """
        pulumi.set(__self__, "network_number", network_number)
        pulumi.set(__self__, "scan_name", scan_name)
        pulumi.set(__self__, "scan_port", scan_port)
        pulumi.set(__self__, "scan_protocol", scan_protocol)

    @property
    @pulumi.getter(name="networkNumber")
    def network_number(self) -> int:
        """
        The network number from which VIPs are obtained.
        """
        return pulumi.get(self, "network_number")

    @property
    @pulumi.getter(name="scanName")
    def scan_name(self) -> str:
        """
        The name of the SCAN listener.
        """
        return pulumi.get(self, "scan_name")

    @property
    @pulumi.getter(name="scanPort")
    def scan_port(self) -> int:
        """
        The port number of the SCAN listener.
        """
        return pulumi.get(self, "scan_port")

    @property
    @pulumi.getter(name="scanProtocol")
    def scan_protocol(self) -> str:
        """
        The protocol of the SCAN listener.
        """
        return pulumi.get(self, "scan_protocol")


@pulumi.output_type
class GetExternalClustersExternalClusterCollectionItemVipConfigurationResult(dict):
    def __init__(__self__, *,
                 address: str,
                 network_number: int,
                 node_name: str):
        """
        :param str address: The VIP name or IP address.
        :param int network_number: The network number from which VIPs are obtained.
        :param str node_name: The name of the node with the VIP.
        """
        pulumi.set(__self__, "address", address)
        pulumi.set(__self__, "network_number", network_number)
        pulumi.set(__self__, "node_name", node_name)

    @property
    @pulumi.getter
    def address(self) -> str:
        """
        The VIP name or IP address.
        """
        return pulumi.get(self, "address")

    @property
    @pulumi.getter(name="networkNumber")
    def network_number(self) -> int:
        """
        The network number from which VIPs are obtained.
        """
        return pulumi.get(self, "network_number")

    @property
    @pulumi.getter(name="nodeName")
    def node_name(self) -> str:
        """
        The name of the node with the VIP.
        """
        return pulumi.get(self, "node_name")


@pulumi.output_type
class GetExternalClustersFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetExternalDatabasesExternalDatabaseCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetExternalDatabasesExternalDatabaseCollectionItemResult']):
        """
        :param Sequence['GetExternalDatabasesExternalDatabaseCollectionItemArgs'] items: An array of external databases.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetExternalDatabasesExternalDatabaseCollectionItemResult']:
        """
        An array of external databases.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetExternalDatabasesExternalDatabaseCollectionItemResult(dict):
    def __init__(__self__, *,
                 compartment_id: str,
                 database_sub_type: str,
                 database_type: str,
                 db_management_configs: Sequence['outputs.GetExternalDatabasesExternalDatabaseCollectionItemDbManagementConfigResult'],
                 db_system_infos: Sequence['outputs.GetExternalDatabasesExternalDatabaseCollectionItemDbSystemInfoResult'],
                 db_unique_name: str,
                 display_name: str,
                 external_container_database_id: str,
                 external_db_home_id: str,
                 id: str,
                 instance_details: Sequence['outputs.GetExternalDatabasesExternalDatabaseCollectionItemInstanceDetailResult'],
                 state: str,
                 time_created: str):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        :param str database_sub_type: The subtype of Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, or Non-container Database.
        :param str database_type: The type of Oracle Database installation.
        :param Sequence['GetExternalDatabasesExternalDatabaseCollectionItemDbManagementConfigArgs'] db_management_configs: The configuration of the Database Management service.
        :param Sequence['GetExternalDatabasesExternalDatabaseCollectionItemDbSystemInfoArgs'] db_system_infos: The basic information about an external DB system.
        :param str db_unique_name: The `DB_UNIQUE_NAME` of the external database.
        :param str display_name: A filter to only return the resources that match the entire display name.
        :param str external_container_database_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the parent Container Database (CDB) if this is a Pluggable Database (PDB).
        :param str external_db_home_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB home.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB system.
        :param Sequence['GetExternalDatabasesExternalDatabaseCollectionItemInstanceDetailArgs'] instance_details: The list of database instances if the database is a RAC database.
        :param str state: The current lifecycle state of the external database resource.
        :param str time_created: The date and time the external DB system was created.
        """
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "database_sub_type", database_sub_type)
        pulumi.set(__self__, "database_type", database_type)
        pulumi.set(__self__, "db_management_configs", db_management_configs)
        pulumi.set(__self__, "db_system_infos", db_system_infos)
        pulumi.set(__self__, "db_unique_name", db_unique_name)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "external_container_database_id", external_container_database_id)
        pulumi.set(__self__, "external_db_home_id", external_db_home_id)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "instance_details", instance_details)
        pulumi.set(__self__, "state", state)
        pulumi.set(__self__, "time_created", time_created)

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

    @property
    @pulumi.getter(name="databaseSubType")
    def database_sub_type(self) -> str:
        """
        The subtype of Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, or Non-container Database.
        """
        return pulumi.get(self, "database_sub_type")

    @property
    @pulumi.getter(name="databaseType")
    def database_type(self) -> str:
        """
        The type of Oracle Database installation.
        """
        return pulumi.get(self, "database_type")

    @property
    @pulumi.getter(name="dbManagementConfigs")
    def db_management_configs(self) -> Sequence['outputs.GetExternalDatabasesExternalDatabaseCollectionItemDbManagementConfigResult']:
        """
        The configuration of the Database Management service.
        """
        return pulumi.get(self, "db_management_configs")

    @property
    @pulumi.getter(name="dbSystemInfos")
    def db_system_infos(self) -> Sequence['outputs.GetExternalDatabasesExternalDatabaseCollectionItemDbSystemInfoResult']:
        """
        The basic information about an external DB system.
        """
        return pulumi.get(self, "db_system_infos")

    @property
    @pulumi.getter(name="dbUniqueName")
    def db_unique_name(self) -> str:
        """
        The `DB_UNIQUE_NAME` of the external database.
        """
        return pulumi.get(self, "db_unique_name")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        A filter to only return the resources that match the entire display name.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="externalContainerDatabaseId")
    def external_container_database_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the parent Container Database (CDB) if this is a Pluggable Database (PDB).
        """
        return pulumi.get(self, "external_container_database_id")

    @property
    @pulumi.getter(name="externalDbHomeId")
    def external_db_home_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB home.
        """
        return pulumi.get(self, "external_db_home_id")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB system.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="instanceDetails")
    def instance_details(self) -> Sequence['outputs.GetExternalDatabasesExternalDatabaseCollectionItemInstanceDetailResult']:
        """
        The list of database instances if the database is a RAC database.
        """
        return pulumi.get(self, "instance_details")

    @property
    @pulumi.getter
    def state(self) -> str:
        """
        The current lifecycle state of the external database resource.
        """
        return pulumi.get(self, "state")

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> str:
        """
        The date and time the external DB system was created.
        """
        return pulumi.get(self, "time_created")


@pulumi.output_type
class GetExternalDatabasesExternalDatabaseCollectionItemDbManagementConfigResult(dict):
    def __init__(__self__, *,
                 connector_id: str,
                 database_management_status: str,
                 license_model: str):
        """
        :param str connector_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external database connector.
        :param str database_management_status: The status of the Database Management service.
        :param str license_model: The Oracle license model that applies to the external database.
        """
        pulumi.set(__self__, "connector_id", connector_id)
        pulumi.set(__self__, "database_management_status", database_management_status)
        pulumi.set(__self__, "license_model", license_model)

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

    @property
    @pulumi.getter(name="databaseManagementStatus")
    def database_management_status(self) -> str:
        """
        The status of the Database Management service.
        """
        return pulumi.get(self, "database_management_status")

    @property
    @pulumi.getter(name="licenseModel")
    def license_model(self) -> str:
        """
        The Oracle license model that applies to the external database.
        """
        return pulumi.get(self, "license_model")


@pulumi.output_type
class GetExternalDatabasesExternalDatabaseCollectionItemDbSystemInfoResult(dict):
    def __init__(__self__, *,
                 compartment_id: str,
                 display_name: str,
                 id: str):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        :param str display_name: A filter to only return the resources that match the entire display name.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB system.
        """
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "id", id)

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

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        A filter to only return the resources that match the entire display name.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB system.
        """
        return pulumi.get(self, "id")


@pulumi.output_type
class GetExternalDatabasesExternalDatabaseCollectionItemInstanceDetailResult(dict):
    def __init__(__self__, *,
                 host_name: str,
                 instance_name: str,
                 instance_number: int):
        """
        :param str host_name: The name of the host machine.
        :param str instance_name: The name of the database instance.
        :param int instance_number: The instance number of the database instance.
        """
        pulumi.set(__self__, "host_name", host_name)
        pulumi.set(__self__, "instance_name", instance_name)
        pulumi.set(__self__, "instance_number", instance_number)

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> str:
        """
        The name of the host machine.
        """
        return pulumi.get(self, "host_name")

    @property
    @pulumi.getter(name="instanceName")
    def instance_name(self) -> str:
        """
        The name of the database instance.
        """
        return pulumi.get(self, "instance_name")

    @property
    @pulumi.getter(name="instanceNumber")
    def instance_number(self) -> int:
        """
        The instance number of the database instance.
        """
        return pulumi.get(self, "instance_number")


@pulumi.output_type
class GetExternalDatabasesFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetExternalDbHomesExternalDbHomeCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetExternalDbHomesExternalDbHomeCollectionItemResult']):
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetExternalDbHomesExternalDbHomeCollectionItemResult']:
        return pulumi.get(self, "items")


@pulumi.output_type
class GetExternalDbHomesExternalDbHomeCollectionItemResult(dict):
    def __init__(__self__, *,
                 additional_details: Mapping[str, Any],
                 compartment_id: str,
                 component_name: str,
                 display_name: str,
                 external_db_system_id: str,
                 home_directory: str,
                 id: str,
                 lifecycle_details: str,
                 state: str,
                 time_created: str,
                 time_updated: str):
        """
        :param Mapping[str, Any] additional_details: The additional details of the DB home defined in `{"key": "value"}` format. Example: `{"bar-key": "value"}`
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        :param str component_name: The name of the external DB home.
        :param str display_name: A filter to only return the resources that match the entire display name.
        :param str external_db_system_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB system.
        :param str home_directory: The location of the DB home.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB home.
        :param str lifecycle_details: Additional information about the current lifecycle state.
        :param str state: The current lifecycle state of the external DB home.
        :param str time_created: The date and time the external DB home was created.
        :param str time_updated: The date and time the external DB home was last updated.
        """
        pulumi.set(__self__, "additional_details", additional_details)
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "component_name", component_name)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "external_db_system_id", external_db_system_id)
        pulumi.set(__self__, "home_directory", home_directory)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "lifecycle_details", lifecycle_details)
        pulumi.set(__self__, "state", state)
        pulumi.set(__self__, "time_created", time_created)
        pulumi.set(__self__, "time_updated", time_updated)

    @property
    @pulumi.getter(name="additionalDetails")
    def additional_details(self) -> Mapping[str, Any]:
        """
        The additional details of the DB home defined in `{"key": "value"}` format. Example: `{"bar-key": "value"}`
        """
        return pulumi.get(self, "additional_details")

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

    @property
    @pulumi.getter(name="componentName")
    def component_name(self) -> str:
        """
        The name of the external DB home.
        """
        return pulumi.get(self, "component_name")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        A filter to only return the resources that match the entire display name.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="externalDbSystemId")
    def external_db_system_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB system.
        """
        return pulumi.get(self, "external_db_system_id")

    @property
    @pulumi.getter(name="homeDirectory")
    def home_directory(self) -> str:
        """
        The location of the DB home.
        """
        return pulumi.get(self, "home_directory")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB home.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="lifecycleDetails")
    def lifecycle_details(self) -> str:
        """
        Additional information about the current lifecycle state.
        """
        return pulumi.get(self, "lifecycle_details")

    @property
    @pulumi.getter
    def state(self) -> str:
        """
        The current lifecycle state of the external DB home.
        """
        return pulumi.get(self, "state")

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> str:
        """
        The date and time the external DB home was created.
        """
        return pulumi.get(self, "time_created")

    @property
    @pulumi.getter(name="timeUpdated")
    def time_updated(self) -> str:
        """
        The date and time the external DB home was last updated.
        """
        return pulumi.get(self, "time_updated")


@pulumi.output_type
class GetExternalDbHomesFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetExternalDbNodesExternalDbNodeCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetExternalDbNodesExternalDbNodeCollectionItemResult']):
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetExternalDbNodesExternalDbNodeCollectionItemResult']:
        return pulumi.get(self, "items")


@pulumi.output_type
class GetExternalDbNodesExternalDbNodeCollectionItemResult(dict):
    def __init__(__self__, *,
                 additional_details: Mapping[str, Any],
                 compartment_id: str,
                 component_name: str,
                 cpu_core_count: float,
                 display_name: str,
                 external_connector_id: str,
                 external_db_node_id: str,
                 external_db_system_id: str,
                 host_name: str,
                 id: str,
                 lifecycle_details: str,
                 memory_size_in_gbs: float,
                 state: str,
                 time_created: str,
                 time_updated: str):
        """
        :param Mapping[str, Any] additional_details: The additional details of the external DB node defined in `{"key": "value"}` format. Example: `{"bar-key": "value"}`
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        :param str component_name: The name of the external DB node.
        :param float cpu_core_count: The number of CPU cores available on the DB node.
        :param str display_name: A filter to only return the resources that match the entire display name.
        :param str external_connector_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external connector.
        :param str external_db_system_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB system.
        :param str host_name: The host name for the DB node.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB node.
        :param str lifecycle_details: Additional information about the current lifecycle state.
        :param float memory_size_in_gbs: The total memory in gigabytes (GB) on the DB node.
        :param str state: The current lifecycle state of the external DB node.
        :param str time_created: The date and time the external DB node was created.
        :param str time_updated: The date and time the external DB node was last updated.
        """
        pulumi.set(__self__, "additional_details", additional_details)
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "component_name", component_name)
        pulumi.set(__self__, "cpu_core_count", cpu_core_count)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "external_connector_id", external_connector_id)
        pulumi.set(__self__, "external_db_node_id", external_db_node_id)
        pulumi.set(__self__, "external_db_system_id", external_db_system_id)
        pulumi.set(__self__, "host_name", host_name)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "lifecycle_details", lifecycle_details)
        pulumi.set(__self__, "memory_size_in_gbs", memory_size_in_gbs)
        pulumi.set(__self__, "state", state)
        pulumi.set(__self__, "time_created", time_created)
        pulumi.set(__self__, "time_updated", time_updated)

    @property
    @pulumi.getter(name="additionalDetails")
    def additional_details(self) -> Mapping[str, Any]:
        """
        The additional details of the external DB node defined in `{"key": "value"}` format. Example: `{"bar-key": "value"}`
        """
        return pulumi.get(self, "additional_details")

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

    @property
    @pulumi.getter(name="componentName")
    def component_name(self) -> str:
        """
        The name of the external DB node.
        """
        return pulumi.get(self, "component_name")

    @property
    @pulumi.getter(name="cpuCoreCount")
    def cpu_core_count(self) -> float:
        """
        The number of CPU cores available on the DB node.
        """
        return pulumi.get(self, "cpu_core_count")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        A filter to only return the resources that match the entire display name.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="externalConnectorId")
    def external_connector_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external connector.
        """
        return pulumi.get(self, "external_connector_id")

    @property
    @pulumi.getter(name="externalDbNodeId")
    def external_db_node_id(self) -> str:
        return pulumi.get(self, "external_db_node_id")

    @property
    @pulumi.getter(name="externalDbSystemId")
    def external_db_system_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB system.
        """
        return pulumi.get(self, "external_db_system_id")

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> str:
        """
        The host name for the DB node.
        """
        return pulumi.get(self, "host_name")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB node.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="lifecycleDetails")
    def lifecycle_details(self) -> str:
        """
        Additional information about the current lifecycle state.
        """
        return pulumi.get(self, "lifecycle_details")

    @property
    @pulumi.getter(name="memorySizeInGbs")
    def memory_size_in_gbs(self) -> float:
        """
        The total memory in gigabytes (GB) on the DB node.
        """
        return pulumi.get(self, "memory_size_in_gbs")

    @property
    @pulumi.getter
    def state(self) -> str:
        """
        The current lifecycle state of the external DB node.
        """
        return pulumi.get(self, "state")

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> str:
        """
        The date and time the external DB node was created.
        """
        return pulumi.get(self, "time_created")

    @property
    @pulumi.getter(name="timeUpdated")
    def time_updated(self) -> str:
        """
        The date and time the external DB node was last updated.
        """
        return pulumi.get(self, "time_updated")


@pulumi.output_type
class GetExternalDbNodesFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetExternalDbSystemConnectorConnectionInfoResult(dict):
    def __init__(__self__, *,
                 component_type: str,
                 connection_credentials: Sequence['outputs.GetExternalDbSystemConnectorConnectionInfoConnectionCredentialResult'],
                 connection_strings: Sequence['outputs.GetExternalDbSystemConnectorConnectionInfoConnectionStringResult']):
        """
        :param str component_type: The component type.
        :param Sequence['GetExternalDbSystemConnectorConnectionInfoConnectionCredentialArgs'] connection_credentials: The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        :param Sequence['GetExternalDbSystemConnectorConnectionInfoConnectionStringArgs'] connection_strings: The Oracle Database connection string.
        """
        pulumi.set(__self__, "component_type", component_type)
        pulumi.set(__self__, "connection_credentials", connection_credentials)
        pulumi.set(__self__, "connection_strings", connection_strings)

    @property
    @pulumi.getter(name="componentType")
    def component_type(self) -> str:
        """
        The component type.
        """
        return pulumi.get(self, "component_type")

    @property
    @pulumi.getter(name="connectionCredentials")
    def connection_credentials(self) -> Sequence['outputs.GetExternalDbSystemConnectorConnectionInfoConnectionCredentialResult']:
        """
        The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        """
        return pulumi.get(self, "connection_credentials")

    @property
    @pulumi.getter(name="connectionStrings")
    def connection_strings(self) -> Sequence['outputs.GetExternalDbSystemConnectorConnectionInfoConnectionStringResult']:
        """
        The Oracle Database connection string.
        """
        return pulumi.get(self, "connection_strings")


@pulumi.output_type
class GetExternalDbSystemConnectorConnectionInfoConnectionCredentialResult(dict):
    def __init__(__self__, *,
                 credential_name: str,
                 credential_type: str,
                 password_secret_id: str,
                 role: str,
                 ssl_secret_id: str,
                 user_name: str):
        """
        :param str credential_name: The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        :param str credential_type: The type of credential used to connect to the ASM instance.
        :param str password_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        :param str role: The role of the user connecting to the ASM instance.
        :param str ssl_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        :param str user_name: The user name used to connect to the ASM instance.
        """
        pulumi.set(__self__, "credential_name", credential_name)
        pulumi.set(__self__, "credential_type", credential_type)
        pulumi.set(__self__, "password_secret_id", password_secret_id)
        pulumi.set(__self__, "role", role)
        pulumi.set(__self__, "ssl_secret_id", ssl_secret_id)
        pulumi.set(__self__, "user_name", user_name)

    @property
    @pulumi.getter(name="credentialName")
    def credential_name(self) -> str:
        """
        The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        """
        return pulumi.get(self, "credential_name")

    @property
    @pulumi.getter(name="credentialType")
    def credential_type(self) -> str:
        """
        The type of credential used to connect to the ASM instance.
        """
        return pulumi.get(self, "credential_type")

    @property
    @pulumi.getter(name="passwordSecretId")
    def password_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        """
        return pulumi.get(self, "password_secret_id")

    @property
    @pulumi.getter
    def role(self) -> str:
        """
        The role of the user connecting to the ASM instance.
        """
        return pulumi.get(self, "role")

    @property
    @pulumi.getter(name="sslSecretId")
    def ssl_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        """
        return pulumi.get(self, "ssl_secret_id")

    @property
    @pulumi.getter(name="userName")
    def user_name(self) -> str:
        """
        The user name used to connect to the ASM instance.
        """
        return pulumi.get(self, "user_name")


@pulumi.output_type
class GetExternalDbSystemConnectorConnectionInfoConnectionStringResult(dict):
    def __init__(__self__, *,
                 host_name: str,
                 hosts: Sequence[str],
                 port: int,
                 protocol: str,
                 service: str):
        """
        :param str host_name: The host name of the database or the SCAN name in case of a RAC database.
        :param Sequence[str] hosts: The list of host names of the ASM instances.
        :param int port: The port used to connect to the ASM instance.
        :param str protocol: The protocol used to connect to the ASM instance.
        :param str service: The service name of the ASM instance.
        """
        pulumi.set(__self__, "host_name", host_name)
        pulumi.set(__self__, "hosts", hosts)
        pulumi.set(__self__, "port", port)
        pulumi.set(__self__, "protocol", protocol)
        pulumi.set(__self__, "service", service)

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> str:
        """
        The host name of the database or the SCAN name in case of a RAC database.
        """
        return pulumi.get(self, "host_name")

    @property
    @pulumi.getter
    def hosts(self) -> Sequence[str]:
        """
        The list of host names of the ASM instances.
        """
        return pulumi.get(self, "hosts")

    @property
    @pulumi.getter
    def port(self) -> int:
        """
        The port used to connect to the ASM instance.
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter
    def protocol(self) -> str:
        """
        The protocol used to connect to the ASM instance.
        """
        return pulumi.get(self, "protocol")

    @property
    @pulumi.getter
    def service(self) -> str:
        """
        The service name of the ASM instance.
        """
        return pulumi.get(self, "service")


@pulumi.output_type
class GetExternalDbSystemConnectorsExternalDbSystemConnectorCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetExternalDbSystemConnectorsExternalDbSystemConnectorCollectionItemResult']):
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetExternalDbSystemConnectorsExternalDbSystemConnectorCollectionItemResult']:
        return pulumi.get(self, "items")


@pulumi.output_type
class GetExternalDbSystemConnectorsExternalDbSystemConnectorCollectionItemResult(dict):
    def __init__(__self__, *,
                 agent_id: str,
                 compartment_id: str,
                 connection_failure_message: str,
                 connection_infos: Sequence['outputs.GetExternalDbSystemConnectorsExternalDbSystemConnectorCollectionItemConnectionInfoResult'],
                 connection_status: str,
                 connector_type: str,
                 display_name: str,
                 external_db_system_id: str,
                 id: str,
                 lifecycle_details: str,
                 state: str,
                 time_connection_status_last_updated: str,
                 time_created: str,
                 time_updated: str):
        """
        :param str agent_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used for the external DB system connector.
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        :param str connection_failure_message: The error message indicating the reason for connection failure or `null` if the connection was successful.
        :param Sequence['GetExternalDbSystemConnectorsExternalDbSystemConnectorCollectionItemConnectionInfoArgs'] connection_infos: The connection details required to connect to an external DB system component.
        :param str connection_status: The status of connectivity to the external DB system component.
        :param str connector_type: The type of connector.
        :param str display_name: A filter to only return the resources that match the entire display name.
        :param str external_db_system_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB system.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB system connector.
        :param str lifecycle_details: Additional information about the current lifecycle state.
        :param str state: The current lifecycle state of the external DB system connector.
        :param str time_connection_status_last_updated: The date and time the connectionStatus of the external DB system connector was last updated.
        :param str time_created: The date and time the external DB system connector was created.
        :param str time_updated: The date and time the external DB system connector was last updated.
        """
        pulumi.set(__self__, "agent_id", agent_id)
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "connection_failure_message", connection_failure_message)
        pulumi.set(__self__, "connection_infos", connection_infos)
        pulumi.set(__self__, "connection_status", connection_status)
        pulumi.set(__self__, "connector_type", connector_type)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "external_db_system_id", external_db_system_id)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "lifecycle_details", lifecycle_details)
        pulumi.set(__self__, "state", state)
        pulumi.set(__self__, "time_connection_status_last_updated", time_connection_status_last_updated)
        pulumi.set(__self__, "time_created", time_created)
        pulumi.set(__self__, "time_updated", time_updated)

    @property
    @pulumi.getter(name="agentId")
    def agent_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used for the external DB system connector.
        """
        return pulumi.get(self, "agent_id")

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

    @property
    @pulumi.getter(name="connectionFailureMessage")
    def connection_failure_message(self) -> str:
        """
        The error message indicating the reason for connection failure or `null` if the connection was successful.
        """
        return pulumi.get(self, "connection_failure_message")

    @property
    @pulumi.getter(name="connectionInfos")
    def connection_infos(self) -> Sequence['outputs.GetExternalDbSystemConnectorsExternalDbSystemConnectorCollectionItemConnectionInfoResult']:
        """
        The connection details required to connect to an external DB system component.
        """
        return pulumi.get(self, "connection_infos")

    @property
    @pulumi.getter(name="connectionStatus")
    def connection_status(self) -> str:
        """
        The status of connectivity to the external DB system component.
        """
        return pulumi.get(self, "connection_status")

    @property
    @pulumi.getter(name="connectorType")
    def connector_type(self) -> str:
        """
        The type of connector.
        """
        return pulumi.get(self, "connector_type")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        A filter to only return the resources that match the entire display name.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="externalDbSystemId")
    def external_db_system_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB system.
        """
        return pulumi.get(self, "external_db_system_id")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB system connector.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="lifecycleDetails")
    def lifecycle_details(self) -> str:
        """
        Additional information about the current lifecycle state.
        """
        return pulumi.get(self, "lifecycle_details")

    @property
    @pulumi.getter
    def state(self) -> str:
        """
        The current lifecycle state of the external DB system connector.
        """
        return pulumi.get(self, "state")

    @property
    @pulumi.getter(name="timeConnectionStatusLastUpdated")
    def time_connection_status_last_updated(self) -> str:
        """
        The date and time the connectionStatus of the external DB system connector was last updated.
        """
        return pulumi.get(self, "time_connection_status_last_updated")

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> str:
        """
        The date and time the external DB system connector was created.
        """
        return pulumi.get(self, "time_created")

    @property
    @pulumi.getter(name="timeUpdated")
    def time_updated(self) -> str:
        """
        The date and time the external DB system connector was last updated.
        """
        return pulumi.get(self, "time_updated")


@pulumi.output_type
class GetExternalDbSystemConnectorsExternalDbSystemConnectorCollectionItemConnectionInfoResult(dict):
    def __init__(__self__, *,
                 component_type: str,
                 connection_credentials: Sequence['outputs.GetExternalDbSystemConnectorsExternalDbSystemConnectorCollectionItemConnectionInfoConnectionCredentialResult'],
                 connection_strings: Sequence['outputs.GetExternalDbSystemConnectorsExternalDbSystemConnectorCollectionItemConnectionInfoConnectionStringResult']):
        """
        :param str component_type: The component type.
        :param Sequence['GetExternalDbSystemConnectorsExternalDbSystemConnectorCollectionItemConnectionInfoConnectionCredentialArgs'] connection_credentials: The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        :param Sequence['GetExternalDbSystemConnectorsExternalDbSystemConnectorCollectionItemConnectionInfoConnectionStringArgs'] connection_strings: The Oracle Database connection string.
        """
        pulumi.set(__self__, "component_type", component_type)
        pulumi.set(__self__, "connection_credentials", connection_credentials)
        pulumi.set(__self__, "connection_strings", connection_strings)

    @property
    @pulumi.getter(name="componentType")
    def component_type(self) -> str:
        """
        The component type.
        """
        return pulumi.get(self, "component_type")

    @property
    @pulumi.getter(name="connectionCredentials")
    def connection_credentials(self) -> Sequence['outputs.GetExternalDbSystemConnectorsExternalDbSystemConnectorCollectionItemConnectionInfoConnectionCredentialResult']:
        """
        The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        """
        return pulumi.get(self, "connection_credentials")

    @property
    @pulumi.getter(name="connectionStrings")
    def connection_strings(self) -> Sequence['outputs.GetExternalDbSystemConnectorsExternalDbSystemConnectorCollectionItemConnectionInfoConnectionStringResult']:
        """
        The Oracle Database connection string.
        """
        return pulumi.get(self, "connection_strings")


@pulumi.output_type
class GetExternalDbSystemConnectorsExternalDbSystemConnectorCollectionItemConnectionInfoConnectionCredentialResult(dict):
    def __init__(__self__, *,
                 credential_name: str,
                 credential_type: str,
                 password_secret_id: str,
                 role: str,
                 ssl_secret_id: str,
                 user_name: str):
        """
        :param str credential_name: The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        :param str credential_type: The type of credential used to connect to the ASM instance.
        :param str password_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        :param str role: The role of the user connecting to the ASM instance.
        :param str ssl_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        :param str user_name: The user name used to connect to the ASM instance.
        """
        pulumi.set(__self__, "credential_name", credential_name)
        pulumi.set(__self__, "credential_type", credential_type)
        pulumi.set(__self__, "password_secret_id", password_secret_id)
        pulumi.set(__self__, "role", role)
        pulumi.set(__self__, "ssl_secret_id", ssl_secret_id)
        pulumi.set(__self__, "user_name", user_name)

    @property
    @pulumi.getter(name="credentialName")
    def credential_name(self) -> str:
        """
        The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        """
        return pulumi.get(self, "credential_name")

    @property
    @pulumi.getter(name="credentialType")
    def credential_type(self) -> str:
        """
        The type of credential used to connect to the ASM instance.
        """
        return pulumi.get(self, "credential_type")

    @property
    @pulumi.getter(name="passwordSecretId")
    def password_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        """
        return pulumi.get(self, "password_secret_id")

    @property
    @pulumi.getter
    def role(self) -> str:
        """
        The role of the user connecting to the ASM instance.
        """
        return pulumi.get(self, "role")

    @property
    @pulumi.getter(name="sslSecretId")
    def ssl_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        """
        return pulumi.get(self, "ssl_secret_id")

    @property
    @pulumi.getter(name="userName")
    def user_name(self) -> str:
        """
        The user name used to connect to the ASM instance.
        """
        return pulumi.get(self, "user_name")


@pulumi.output_type
class GetExternalDbSystemConnectorsExternalDbSystemConnectorCollectionItemConnectionInfoConnectionStringResult(dict):
    def __init__(__self__, *,
                 host_name: str,
                 hosts: Sequence[str],
                 port: int,
                 protocol: str,
                 service: str):
        """
        :param str host_name: The host name of the database or the SCAN name in case of a RAC database.
        :param Sequence[str] hosts: The list of host names of the ASM instances.
        :param int port: The port used to connect to the ASM instance.
        :param str protocol: The protocol used to connect to the ASM instance.
        :param str service: The service name of the ASM instance.
        """
        pulumi.set(__self__, "host_name", host_name)
        pulumi.set(__self__, "hosts", hosts)
        pulumi.set(__self__, "port", port)
        pulumi.set(__self__, "protocol", protocol)
        pulumi.set(__self__, "service", service)

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> str:
        """
        The host name of the database or the SCAN name in case of a RAC database.
        """
        return pulumi.get(self, "host_name")

    @property
    @pulumi.getter
    def hosts(self) -> Sequence[str]:
        """
        The list of host names of the ASM instances.
        """
        return pulumi.get(self, "hosts")

    @property
    @pulumi.getter
    def port(self) -> int:
        """
        The port used to connect to the ASM instance.
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter
    def protocol(self) -> str:
        """
        The protocol used to connect to the ASM instance.
        """
        return pulumi.get(self, "protocol")

    @property
    @pulumi.getter
    def service(self) -> str:
        """
        The service name of the ASM instance.
        """
        return pulumi.get(self, "service")


@pulumi.output_type
class GetExternalDbSystemConnectorsFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetExternalDbSystemDatabaseManagementConfigResult(dict):
    def __init__(__self__, *,
                 license_model: str):
        """
        :param str license_model: The Oracle license model that applies to the external database.
        """
        pulumi.set(__self__, "license_model", license_model)

    @property
    @pulumi.getter(name="licenseModel")
    def license_model(self) -> str:
        """
        The Oracle license model that applies to the external database.
        """
        return pulumi.get(self, "license_model")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemResult']):
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemResult']:
        return pulumi.get(self, "items")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemResult(dict):
    def __init__(__self__, *,
                 agent_id: str,
                 compartment_id: str,
                 discovered_components: Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentResult'],
                 display_name: str,
                 external_db_system_discovery_id: str,
                 grid_home: str,
                 id: str,
                 lifecycle_details: str,
                 patch_operations: Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemPatchOperationResult'],
                 resource_id: str,
                 state: str,
                 time_created: str,
                 time_updated: str):
        """
        :param str agent_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used for the external DB system connector.
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        :param Sequence['GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentArgs'] discovered_components: The list of DB system components that were found in the DB system discovery.
        :param str display_name: A filter to only return the resources that match the entire display name.
        :param str grid_home: The directory in which Oracle Grid Infrastructure is installed.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB system discovery.
        :param str lifecycle_details: Additional information about the current lifecycle state.
        :param str resource_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the existing Oracle Cloud Infrastructure resource matching the discovered DB system.
        :param str state: The current lifecycle state of the external DB system discovery resource.
        :param str time_created: The date and time the external DB system discovery was created.
        :param str time_updated: The date and time the external DB system discovery was last updated.
        """
        pulumi.set(__self__, "agent_id", agent_id)
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "discovered_components", discovered_components)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "external_db_system_discovery_id", external_db_system_discovery_id)
        pulumi.set(__self__, "grid_home", grid_home)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "lifecycle_details", lifecycle_details)
        pulumi.set(__self__, "patch_operations", patch_operations)
        pulumi.set(__self__, "resource_id", resource_id)
        pulumi.set(__self__, "state", state)
        pulumi.set(__self__, "time_created", time_created)
        pulumi.set(__self__, "time_updated", time_updated)

    @property
    @pulumi.getter(name="agentId")
    def agent_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used for the external DB system connector.
        """
        return pulumi.get(self, "agent_id")

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

    @property
    @pulumi.getter(name="discoveredComponents")
    def discovered_components(self) -> Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentResult']:
        """
        The list of DB system components that were found in the DB system discovery.
        """
        return pulumi.get(self, "discovered_components")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        A filter to only return the resources that match the entire display name.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="externalDbSystemDiscoveryId")
    def external_db_system_discovery_id(self) -> str:
        return pulumi.get(self, "external_db_system_discovery_id")

    @property
    @pulumi.getter(name="gridHome")
    def grid_home(self) -> str:
        """
        The directory in which Oracle Grid Infrastructure is installed.
        """
        return pulumi.get(self, "grid_home")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB system discovery.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="lifecycleDetails")
    def lifecycle_details(self) -> str:
        """
        Additional information about the current lifecycle state.
        """
        return pulumi.get(self, "lifecycle_details")

    @property
    @pulumi.getter(name="patchOperations")
    def patch_operations(self) -> Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemPatchOperationResult']:
        return pulumi.get(self, "patch_operations")

    @property
    @pulumi.getter(name="resourceId")
    def resource_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the existing Oracle Cloud Infrastructure resource matching the discovered DB system.
        """
        return pulumi.get(self, "resource_id")

    @property
    @pulumi.getter
    def state(self) -> str:
        """
        The current lifecycle state of the external DB system discovery resource.
        """
        return pulumi.get(self, "state")

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> str:
        """
        The date and time the external DB system discovery was created.
        """
        return pulumi.get(self, "time_created")

    @property
    @pulumi.getter(name="timeUpdated")
    def time_updated(self) -> str:
        """
        The date and time the external DB system discovery was last updated.
        """
        return pulumi.get(self, "time_updated")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentResult(dict):
    def __init__(__self__, *,
                 adr_home_directory: str,
                 asm_instances: Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentAsmInstanceResult'],
                 associated_components: Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentAssociatedComponentResult'],
                 cluster_id: str,
                 cluster_instances: Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentClusterInstanceResult'],
                 compartment_id: str,
                 component_id: str,
                 component_name: str,
                 component_type: str,
                 connectors: Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentConnectorResult'],
                 container_database_id: str,
                 cpu_core_count: float,
                 crs_base_directory: str,
                 db_edition: str,
                 db_id: str,
                 db_node_name: str,
                 db_packs: str,
                 db_role: str,
                 db_type: str,
                 db_unique_name: str,
                 db_version: str,
                 display_name: str,
                 endpoints: Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentEndpointResult'],
                 grid_home: str,
                 guid: str,
                 home_directory: str,
                 host_name: str,
                 instance_name: str,
                 is_cluster: bool,
                 is_flex_cluster: bool,
                 is_flex_enabled: bool,
                 is_selected_for_monitoring: bool,
                 listener_alias: str,
                 listener_type: str,
                 log_directory: str,
                 memory_size_in_gbs: float,
                 network_configurations: Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentNetworkConfigurationResult'],
                 node_role: str,
                 ocr_file_location: str,
                 oracle_home: str,
                 pluggable_databases: Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentPluggableDatabaseResult'],
                 resource_id: str,
                 scan_configurations: Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentScanConfigurationResult'],
                 status: str,
                 trace_directory: str,
                 version: str,
                 vip_configurations: Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentVipConfigurationResult']):
        """
        :param str adr_home_directory: The Automatic Diagnostic Repository (ADR) home directory for the cluster instance.
        :param Sequence['GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentAssociatedComponentArgs'] associated_components: The list of associated components.
        :param str cluster_id: The unique identifier of the Oracle cluster.
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        :param str component_id: The identifier of the discovered DB system component.
        :param str component_name: The name of the discovered DB system component.
        :param str component_type: The component type.
        :param Sequence['GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentConnectorArgs'] connectors: The connector details used to connect to the external DB system component.
        :param str container_database_id: The unique identifier of the parent Container Database (CDB).
        :param float cpu_core_count: The number of CPU cores available on the DB node.
        :param str crs_base_directory: The Oracle base location of Cluster Ready Services (CRS).
        :param str db_edition: The Oracle Database edition.
        :param str db_id: The Oracle Database ID.
        :param str db_node_name: The name of the DB node.
        :param str db_packs: The database packs licensed for the external Oracle Database.
        :param str db_role: The role of the Oracle Database in Oracle Data Guard configuration.
        :param str db_type: The type of Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, or a Non-container Database.
        :param str db_unique_name: The `DB_UNIQUE_NAME` of the external database.
        :param str db_version: The Oracle Database version.
        :param str display_name: A filter to only return the resources that match the entire display name.
        :param Sequence['GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentEndpointArgs'] endpoints: The list of protocol addresses the listener is configured to listen on.
        :param str grid_home: The directory in which Oracle Grid Infrastructure is installed.
        :param str guid: The unique identifier of the PDB.
        :param str home_directory: The location of the DB home.
        :param str host_name: The host name of the database or the SCAN name in case of a RAC database.
        :param str instance_name: The name of the ASM instance.
        :param bool is_cluster: Indicates whether the Oracle Database is part of a cluster.
        :param bool is_flex_cluster: Indicates whether the cluster is an Oracle Flex Cluster or not.
        :param bool is_flex_enabled: Indicates whether Oracle Flex ASM is enabled or not.
        :param bool is_selected_for_monitoring: Indicates whether the DB system component should be provisioned as an Oracle Cloud Infrastructure resource or not.
        :param str listener_alias: The listener alias.
        :param str listener_type: The type of listener.
        :param str log_directory: The destination directory of the listener log file.
        :param float memory_size_in_gbs: The total memory in gigabytes (GB) on the DB node.
        :param Sequence['GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentNetworkConfigurationArgs'] network_configurations: The list of network address configurations of the external cluster.
        :param str node_role: The role of the cluster node.
        :param str ocr_file_location: The location of the Oracle Cluster Registry (OCR) file.
        :param str oracle_home: The Oracle home location of the listener.
        :param Sequence['GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentPluggableDatabaseArgs'] pluggable_databases: The list of Pluggable Databases.
        :param str resource_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the existing Oracle Cloud Infrastructure resource matching the discovered DB system.
        :param Sequence['GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentScanConfigurationArgs'] scan_configurations: The list of Single Client Access Name (SCAN) configurations of the external cluster.
        :param str status: The state of the discovered DB system component.
        :param str trace_directory: The destination directory of the listener trace file.
        :param str version: The version of Oracle Clusterware running in the cluster.
        :param Sequence['GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentVipConfigurationArgs'] vip_configurations: The list of Virtual IP (VIP) configurations of the external cluster.
        """
        pulumi.set(__self__, "adr_home_directory", adr_home_directory)
        pulumi.set(__self__, "asm_instances", asm_instances)
        pulumi.set(__self__, "associated_components", associated_components)
        pulumi.set(__self__, "cluster_id", cluster_id)
        pulumi.set(__self__, "cluster_instances", cluster_instances)
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "component_id", component_id)
        pulumi.set(__self__, "component_name", component_name)
        pulumi.set(__self__, "component_type", component_type)
        pulumi.set(__self__, "connectors", connectors)
        pulumi.set(__self__, "container_database_id", container_database_id)
        pulumi.set(__self__, "cpu_core_count", cpu_core_count)
        pulumi.set(__self__, "crs_base_directory", crs_base_directory)
        pulumi.set(__self__, "db_edition", db_edition)
        pulumi.set(__self__, "db_id", db_id)
        pulumi.set(__self__, "db_node_name", db_node_name)
        pulumi.set(__self__, "db_packs", db_packs)
        pulumi.set(__self__, "db_role", db_role)
        pulumi.set(__self__, "db_type", db_type)
        pulumi.set(__self__, "db_unique_name", db_unique_name)
        pulumi.set(__self__, "db_version", db_version)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "endpoints", endpoints)
        pulumi.set(__self__, "grid_home", grid_home)
        pulumi.set(__self__, "guid", guid)
        pulumi.set(__self__, "home_directory", home_directory)
        pulumi.set(__self__, "host_name", host_name)
        pulumi.set(__self__, "instance_name", instance_name)
        pulumi.set(__self__, "is_cluster", is_cluster)
        pulumi.set(__self__, "is_flex_cluster", is_flex_cluster)
        pulumi.set(__self__, "is_flex_enabled", is_flex_enabled)
        pulumi.set(__self__, "is_selected_for_monitoring", is_selected_for_monitoring)
        pulumi.set(__self__, "listener_alias", listener_alias)
        pulumi.set(__self__, "listener_type", listener_type)
        pulumi.set(__self__, "log_directory", log_directory)
        pulumi.set(__self__, "memory_size_in_gbs", memory_size_in_gbs)
        pulumi.set(__self__, "network_configurations", network_configurations)
        pulumi.set(__self__, "node_role", node_role)
        pulumi.set(__self__, "ocr_file_location", ocr_file_location)
        pulumi.set(__self__, "oracle_home", oracle_home)
        pulumi.set(__self__, "pluggable_databases", pluggable_databases)
        pulumi.set(__self__, "resource_id", resource_id)
        pulumi.set(__self__, "scan_configurations", scan_configurations)
        pulumi.set(__self__, "status", status)
        pulumi.set(__self__, "trace_directory", trace_directory)
        pulumi.set(__self__, "version", version)
        pulumi.set(__self__, "vip_configurations", vip_configurations)

    @property
    @pulumi.getter(name="adrHomeDirectory")
    def adr_home_directory(self) -> str:
        """
        The Automatic Diagnostic Repository (ADR) home directory for the cluster instance.
        """
        return pulumi.get(self, "adr_home_directory")

    @property
    @pulumi.getter(name="asmInstances")
    def asm_instances(self) -> Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentAsmInstanceResult']:
        return pulumi.get(self, "asm_instances")

    @property
    @pulumi.getter(name="associatedComponents")
    def associated_components(self) -> Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentAssociatedComponentResult']:
        """
        The list of associated components.
        """
        return pulumi.get(self, "associated_components")

    @property
    @pulumi.getter(name="clusterId")
    def cluster_id(self) -> str:
        """
        The unique identifier of the Oracle cluster.
        """
        return pulumi.get(self, "cluster_id")

    @property
    @pulumi.getter(name="clusterInstances")
    def cluster_instances(self) -> Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentClusterInstanceResult']:
        return pulumi.get(self, "cluster_instances")

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

    @property
    @pulumi.getter(name="componentId")
    def component_id(self) -> str:
        """
        The identifier of the discovered DB system component.
        """
        return pulumi.get(self, "component_id")

    @property
    @pulumi.getter(name="componentName")
    def component_name(self) -> str:
        """
        The name of the discovered DB system component.
        """
        return pulumi.get(self, "component_name")

    @property
    @pulumi.getter(name="componentType")
    def component_type(self) -> str:
        """
        The component type.
        """
        return pulumi.get(self, "component_type")

    @property
    @pulumi.getter
    def connectors(self) -> Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentConnectorResult']:
        """
        The connector details used to connect to the external DB system component.
        """
        return pulumi.get(self, "connectors")

    @property
    @pulumi.getter(name="containerDatabaseId")
    def container_database_id(self) -> str:
        """
        The unique identifier of the parent Container Database (CDB).
        """
        return pulumi.get(self, "container_database_id")

    @property
    @pulumi.getter(name="cpuCoreCount")
    def cpu_core_count(self) -> float:
        """
        The number of CPU cores available on the DB node.
        """
        return pulumi.get(self, "cpu_core_count")

    @property
    @pulumi.getter(name="crsBaseDirectory")
    def crs_base_directory(self) -> str:
        """
        The Oracle base location of Cluster Ready Services (CRS).
        """
        return pulumi.get(self, "crs_base_directory")

    @property
    @pulumi.getter(name="dbEdition")
    def db_edition(self) -> str:
        """
        The Oracle Database edition.
        """
        return pulumi.get(self, "db_edition")

    @property
    @pulumi.getter(name="dbId")
    def db_id(self) -> str:
        """
        The Oracle Database ID.
        """
        return pulumi.get(self, "db_id")

    @property
    @pulumi.getter(name="dbNodeName")
    def db_node_name(self) -> str:
        """
        The name of the DB node.
        """
        return pulumi.get(self, "db_node_name")

    @property
    @pulumi.getter(name="dbPacks")
    def db_packs(self) -> str:
        """
        The database packs licensed for the external Oracle Database.
        """
        return pulumi.get(self, "db_packs")

    @property
    @pulumi.getter(name="dbRole")
    def db_role(self) -> str:
        """
        The role of the Oracle Database in Oracle Data Guard configuration.
        """
        return pulumi.get(self, "db_role")

    @property
    @pulumi.getter(name="dbType")
    def db_type(self) -> str:
        """
        The type of Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, or a Non-container Database.
        """
        return pulumi.get(self, "db_type")

    @property
    @pulumi.getter(name="dbUniqueName")
    def db_unique_name(self) -> str:
        """
        The `DB_UNIQUE_NAME` of the external database.
        """
        return pulumi.get(self, "db_unique_name")

    @property
    @pulumi.getter(name="dbVersion")
    def db_version(self) -> str:
        """
        The Oracle Database version.
        """
        return pulumi.get(self, "db_version")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        A filter to only return the resources that match the entire display name.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter
    def endpoints(self) -> Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentEndpointResult']:
        """
        The list of protocol addresses the listener is configured to listen on.
        """
        return pulumi.get(self, "endpoints")

    @property
    @pulumi.getter(name="gridHome")
    def grid_home(self) -> str:
        """
        The directory in which Oracle Grid Infrastructure is installed.
        """
        return pulumi.get(self, "grid_home")

    @property
    @pulumi.getter
    def guid(self) -> str:
        """
        The unique identifier of the PDB.
        """
        return pulumi.get(self, "guid")

    @property
    @pulumi.getter(name="homeDirectory")
    def home_directory(self) -> str:
        """
        The location of the DB home.
        """
        return pulumi.get(self, "home_directory")

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> str:
        """
        The host name of the database or the SCAN name in case of a RAC database.
        """
        return pulumi.get(self, "host_name")

    @property
    @pulumi.getter(name="instanceName")
    def instance_name(self) -> str:
        """
        The name of the ASM instance.
        """
        return pulumi.get(self, "instance_name")

    @property
    @pulumi.getter(name="isCluster")
    def is_cluster(self) -> bool:
        """
        Indicates whether the Oracle Database is part of a cluster.
        """
        return pulumi.get(self, "is_cluster")

    @property
    @pulumi.getter(name="isFlexCluster")
    def is_flex_cluster(self) -> bool:
        """
        Indicates whether the cluster is an Oracle Flex Cluster or not.
        """
        return pulumi.get(self, "is_flex_cluster")

    @property
    @pulumi.getter(name="isFlexEnabled")
    def is_flex_enabled(self) -> bool:
        """
        Indicates whether Oracle Flex ASM is enabled or not.
        """
        return pulumi.get(self, "is_flex_enabled")

    @property
    @pulumi.getter(name="isSelectedForMonitoring")
    def is_selected_for_monitoring(self) -> bool:
        """
        Indicates whether the DB system component should be provisioned as an Oracle Cloud Infrastructure resource or not.
        """
        return pulumi.get(self, "is_selected_for_monitoring")

    @property
    @pulumi.getter(name="listenerAlias")
    def listener_alias(self) -> str:
        """
        The listener alias.
        """
        return pulumi.get(self, "listener_alias")

    @property
    @pulumi.getter(name="listenerType")
    def listener_type(self) -> str:
        """
        The type of listener.
        """
        return pulumi.get(self, "listener_type")

    @property
    @pulumi.getter(name="logDirectory")
    def log_directory(self) -> str:
        """
        The destination directory of the listener log file.
        """
        return pulumi.get(self, "log_directory")

    @property
    @pulumi.getter(name="memorySizeInGbs")
    def memory_size_in_gbs(self) -> float:
        """
        The total memory in gigabytes (GB) on the DB node.
        """
        return pulumi.get(self, "memory_size_in_gbs")

    @property
    @pulumi.getter(name="networkConfigurations")
    def network_configurations(self) -> Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentNetworkConfigurationResult']:
        """
        The list of network address configurations of the external cluster.
        """
        return pulumi.get(self, "network_configurations")

    @property
    @pulumi.getter(name="nodeRole")
    def node_role(self) -> str:
        """
        The role of the cluster node.
        """
        return pulumi.get(self, "node_role")

    @property
    @pulumi.getter(name="ocrFileLocation")
    def ocr_file_location(self) -> str:
        """
        The location of the Oracle Cluster Registry (OCR) file.
        """
        return pulumi.get(self, "ocr_file_location")

    @property
    @pulumi.getter(name="oracleHome")
    def oracle_home(self) -> str:
        """
        The Oracle home location of the listener.
        """
        return pulumi.get(self, "oracle_home")

    @property
    @pulumi.getter(name="pluggableDatabases")
    def pluggable_databases(self) -> Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentPluggableDatabaseResult']:
        """
        The list of Pluggable Databases.
        """
        return pulumi.get(self, "pluggable_databases")

    @property
    @pulumi.getter(name="resourceId")
    def resource_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the existing Oracle Cloud Infrastructure resource matching the discovered DB system.
        """
        return pulumi.get(self, "resource_id")

    @property
    @pulumi.getter(name="scanConfigurations")
    def scan_configurations(self) -> Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentScanConfigurationResult']:
        """
        The list of Single Client Access Name (SCAN) configurations of the external cluster.
        """
        return pulumi.get(self, "scan_configurations")

    @property
    @pulumi.getter
    def status(self) -> str:
        """
        The state of the discovered DB system component.
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter(name="traceDirectory")
    def trace_directory(self) -> str:
        """
        The destination directory of the listener trace file.
        """
        return pulumi.get(self, "trace_directory")

    @property
    @pulumi.getter
    def version(self) -> str:
        """
        The version of Oracle Clusterware running in the cluster.
        """
        return pulumi.get(self, "version")

    @property
    @pulumi.getter(name="vipConfigurations")
    def vip_configurations(self) -> Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentVipConfigurationResult']:
        """
        The list of Virtual IP (VIP) configurations of the external cluster.
        """
        return pulumi.get(self, "vip_configurations")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentAsmInstanceResult(dict):
    def __init__(__self__, *,
                 adr_home_directory: str,
                 host_name: str,
                 instance_name: str):
        """
        :param str adr_home_directory: The Automatic Diagnostic Repository (ADR) home directory for the cluster instance.
        :param str host_name: The host name of the database or the SCAN name in case of a RAC database.
        :param str instance_name: The name of the ASM instance.
        """
        pulumi.set(__self__, "adr_home_directory", adr_home_directory)
        pulumi.set(__self__, "host_name", host_name)
        pulumi.set(__self__, "instance_name", instance_name)

    @property
    @pulumi.getter(name="adrHomeDirectory")
    def adr_home_directory(self) -> str:
        """
        The Automatic Diagnostic Repository (ADR) home directory for the cluster instance.
        """
        return pulumi.get(self, "adr_home_directory")

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> str:
        """
        The host name of the database or the SCAN name in case of a RAC database.
        """
        return pulumi.get(self, "host_name")

    @property
    @pulumi.getter(name="instanceName")
    def instance_name(self) -> str:
        """
        The name of the ASM instance.
        """
        return pulumi.get(self, "instance_name")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentAssociatedComponentResult(dict):
    def __init__(__self__, *,
                 association_type: str,
                 component_id: str,
                 component_type: str):
        """
        :param str association_type: The association type.
        :param str component_id: The identifier of the discovered DB system component.
        :param str component_type: The component type.
        """
        pulumi.set(__self__, "association_type", association_type)
        pulumi.set(__self__, "component_id", component_id)
        pulumi.set(__self__, "component_type", component_type)

    @property
    @pulumi.getter(name="associationType")
    def association_type(self) -> str:
        """
        The association type.
        """
        return pulumi.get(self, "association_type")

    @property
    @pulumi.getter(name="componentId")
    def component_id(self) -> str:
        """
        The identifier of the discovered DB system component.
        """
        return pulumi.get(self, "component_id")

    @property
    @pulumi.getter(name="componentType")
    def component_type(self) -> str:
        """
        The component type.
        """
        return pulumi.get(self, "component_type")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentClusterInstanceResult(dict):
    def __init__(__self__, *,
                 adr_home_directory: str,
                 cluster_id: str,
                 connectors: Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentClusterInstanceConnectorResult'],
                 crs_base_directory: str,
                 host_name: str,
                 node_role: str):
        """
        :param str adr_home_directory: The Automatic Diagnostic Repository (ADR) home directory for the cluster instance.
        :param str cluster_id: The unique identifier of the Oracle cluster.
        :param Sequence['GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentClusterInstanceConnectorArgs'] connectors: The connector details used to connect to the external DB system component.
        :param str crs_base_directory: The Oracle base location of Cluster Ready Services (CRS).
        :param str host_name: The host name of the database or the SCAN name in case of a RAC database.
        :param str node_role: The role of the cluster node.
        """
        pulumi.set(__self__, "adr_home_directory", adr_home_directory)
        pulumi.set(__self__, "cluster_id", cluster_id)
        pulumi.set(__self__, "connectors", connectors)
        pulumi.set(__self__, "crs_base_directory", crs_base_directory)
        pulumi.set(__self__, "host_name", host_name)
        pulumi.set(__self__, "node_role", node_role)

    @property
    @pulumi.getter(name="adrHomeDirectory")
    def adr_home_directory(self) -> str:
        """
        The Automatic Diagnostic Repository (ADR) home directory for the cluster instance.
        """
        return pulumi.get(self, "adr_home_directory")

    @property
    @pulumi.getter(name="clusterId")
    def cluster_id(self) -> str:
        """
        The unique identifier of the Oracle cluster.
        """
        return pulumi.get(self, "cluster_id")

    @property
    @pulumi.getter
    def connectors(self) -> Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentClusterInstanceConnectorResult']:
        """
        The connector details used to connect to the external DB system component.
        """
        return pulumi.get(self, "connectors")

    @property
    @pulumi.getter(name="crsBaseDirectory")
    def crs_base_directory(self) -> str:
        """
        The Oracle base location of Cluster Ready Services (CRS).
        """
        return pulumi.get(self, "crs_base_directory")

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> str:
        """
        The host name of the database or the SCAN name in case of a RAC database.
        """
        return pulumi.get(self, "host_name")

    @property
    @pulumi.getter(name="nodeRole")
    def node_role(self) -> str:
        """
        The role of the cluster node.
        """
        return pulumi.get(self, "node_role")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentClusterInstanceConnectorResult(dict):
    def __init__(__self__, *,
                 agent_id: str,
                 connection_failure_message: str,
                 connection_infos: Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentClusterInstanceConnectorConnectionInfoResult'],
                 connection_status: str,
                 connector_type: str,
                 display_name: str,
                 time_connection_status_last_updated: str):
        """
        :param str agent_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used for the external DB system connector.
        :param str connection_failure_message: The error message indicating the reason for connection failure or `null` if the connection was successful.
        :param Sequence['GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentClusterInstanceConnectorConnectionInfoArgs'] connection_infos: The connection details required to connect to an external DB system component.
        :param str connection_status: The status of connectivity to the external DB system component.
        :param str connector_type: The type of connector.
        :param str display_name: A filter to only return the resources that match the entire display name.
        :param str time_connection_status_last_updated: The date and time the connectionStatus of the external DB system connector was last updated.
        """
        pulumi.set(__self__, "agent_id", agent_id)
        pulumi.set(__self__, "connection_failure_message", connection_failure_message)
        pulumi.set(__self__, "connection_infos", connection_infos)
        pulumi.set(__self__, "connection_status", connection_status)
        pulumi.set(__self__, "connector_type", connector_type)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "time_connection_status_last_updated", time_connection_status_last_updated)

    @property
    @pulumi.getter(name="agentId")
    def agent_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used for the external DB system connector.
        """
        return pulumi.get(self, "agent_id")

    @property
    @pulumi.getter(name="connectionFailureMessage")
    def connection_failure_message(self) -> str:
        """
        The error message indicating the reason for connection failure or `null` if the connection was successful.
        """
        return pulumi.get(self, "connection_failure_message")

    @property
    @pulumi.getter(name="connectionInfos")
    def connection_infos(self) -> Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentClusterInstanceConnectorConnectionInfoResult']:
        """
        The connection details required to connect to an external DB system component.
        """
        return pulumi.get(self, "connection_infos")

    @property
    @pulumi.getter(name="connectionStatus")
    def connection_status(self) -> str:
        """
        The status of connectivity to the external DB system component.
        """
        return pulumi.get(self, "connection_status")

    @property
    @pulumi.getter(name="connectorType")
    def connector_type(self) -> str:
        """
        The type of connector.
        """
        return pulumi.get(self, "connector_type")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        A filter to only return the resources that match the entire display name.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="timeConnectionStatusLastUpdated")
    def time_connection_status_last_updated(self) -> str:
        """
        The date and time the connectionStatus of the external DB system connector was last updated.
        """
        return pulumi.get(self, "time_connection_status_last_updated")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentClusterInstanceConnectorConnectionInfoResult(dict):
    def __init__(__self__, *,
                 component_type: str,
                 connection_credentials: Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionCredentialResult'],
                 connection_strings: Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionStringResult']):
        """
        :param str component_type: The component type.
        :param Sequence['GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionCredentialArgs'] connection_credentials: The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        :param Sequence['GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionStringArgs'] connection_strings: The Oracle Database connection string.
        """
        pulumi.set(__self__, "component_type", component_type)
        pulumi.set(__self__, "connection_credentials", connection_credentials)
        pulumi.set(__self__, "connection_strings", connection_strings)

    @property
    @pulumi.getter(name="componentType")
    def component_type(self) -> str:
        """
        The component type.
        """
        return pulumi.get(self, "component_type")

    @property
    @pulumi.getter(name="connectionCredentials")
    def connection_credentials(self) -> Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionCredentialResult']:
        """
        The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        """
        return pulumi.get(self, "connection_credentials")

    @property
    @pulumi.getter(name="connectionStrings")
    def connection_strings(self) -> Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionStringResult']:
        """
        The Oracle Database connection string.
        """
        return pulumi.get(self, "connection_strings")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionCredentialResult(dict):
    def __init__(__self__, *,
                 credential_name: str,
                 credential_type: str,
                 password_secret_id: str,
                 role: str,
                 ssl_secret_id: str,
                 user_name: str):
        """
        :param str credential_name: The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        :param str credential_type: The type of credential used to connect to the ASM instance.
        :param str password_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        :param str role: The role of the user connecting to the ASM instance.
        :param str ssl_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        :param str user_name: The user name used to connect to the ASM instance.
        """
        pulumi.set(__self__, "credential_name", credential_name)
        pulumi.set(__self__, "credential_type", credential_type)
        pulumi.set(__self__, "password_secret_id", password_secret_id)
        pulumi.set(__self__, "role", role)
        pulumi.set(__self__, "ssl_secret_id", ssl_secret_id)
        pulumi.set(__self__, "user_name", user_name)

    @property
    @pulumi.getter(name="credentialName")
    def credential_name(self) -> str:
        """
        The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        """
        return pulumi.get(self, "credential_name")

    @property
    @pulumi.getter(name="credentialType")
    def credential_type(self) -> str:
        """
        The type of credential used to connect to the ASM instance.
        """
        return pulumi.get(self, "credential_type")

    @property
    @pulumi.getter(name="passwordSecretId")
    def password_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        """
        return pulumi.get(self, "password_secret_id")

    @property
    @pulumi.getter
    def role(self) -> str:
        """
        The role of the user connecting to the ASM instance.
        """
        return pulumi.get(self, "role")

    @property
    @pulumi.getter(name="sslSecretId")
    def ssl_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        """
        return pulumi.get(self, "ssl_secret_id")

    @property
    @pulumi.getter(name="userName")
    def user_name(self) -> str:
        """
        The user name used to connect to the ASM instance.
        """
        return pulumi.get(self, "user_name")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionStringResult(dict):
    def __init__(__self__, *,
                 host_name: str,
                 hosts: Sequence[str],
                 port: int,
                 protocol: str,
                 service: str):
        """
        :param str host_name: The host name of the database or the SCAN name in case of a RAC database.
        :param Sequence[str] hosts: The list of host names of the ASM instances.
        :param int port: The port used to connect to the ASM instance.
        :param str protocol: The protocol used to connect to the ASM instance.
        :param str service: The service name of the ASM instance.
        """
        pulumi.set(__self__, "host_name", host_name)
        pulumi.set(__self__, "hosts", hosts)
        pulumi.set(__self__, "port", port)
        pulumi.set(__self__, "protocol", protocol)
        pulumi.set(__self__, "service", service)

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> str:
        """
        The host name of the database or the SCAN name in case of a RAC database.
        """
        return pulumi.get(self, "host_name")

    @property
    @pulumi.getter
    def hosts(self) -> Sequence[str]:
        """
        The list of host names of the ASM instances.
        """
        return pulumi.get(self, "hosts")

    @property
    @pulumi.getter
    def port(self) -> int:
        """
        The port used to connect to the ASM instance.
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter
    def protocol(self) -> str:
        """
        The protocol used to connect to the ASM instance.
        """
        return pulumi.get(self, "protocol")

    @property
    @pulumi.getter
    def service(self) -> str:
        """
        The service name of the ASM instance.
        """
        return pulumi.get(self, "service")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentConnectorResult(dict):
    def __init__(__self__, *,
                 agent_id: str,
                 connection_failure_message: str,
                 connection_infos: Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentConnectorConnectionInfoResult'],
                 connection_status: str,
                 connector_type: str,
                 display_name: str,
                 time_connection_status_last_updated: str):
        """
        :param str agent_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used for the external DB system connector.
        :param str connection_failure_message: The error message indicating the reason for connection failure or `null` if the connection was successful.
        :param Sequence['GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentConnectorConnectionInfoArgs'] connection_infos: The connection details required to connect to an external DB system component.
        :param str connection_status: The status of connectivity to the external DB system component.
        :param str connector_type: The type of connector.
        :param str display_name: A filter to only return the resources that match the entire display name.
        :param str time_connection_status_last_updated: The date and time the connectionStatus of the external DB system connector was last updated.
        """
        pulumi.set(__self__, "agent_id", agent_id)
        pulumi.set(__self__, "connection_failure_message", connection_failure_message)
        pulumi.set(__self__, "connection_infos", connection_infos)
        pulumi.set(__self__, "connection_status", connection_status)
        pulumi.set(__self__, "connector_type", connector_type)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "time_connection_status_last_updated", time_connection_status_last_updated)

    @property
    @pulumi.getter(name="agentId")
    def agent_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used for the external DB system connector.
        """
        return pulumi.get(self, "agent_id")

    @property
    @pulumi.getter(name="connectionFailureMessage")
    def connection_failure_message(self) -> str:
        """
        The error message indicating the reason for connection failure or `null` if the connection was successful.
        """
        return pulumi.get(self, "connection_failure_message")

    @property
    @pulumi.getter(name="connectionInfos")
    def connection_infos(self) -> Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentConnectorConnectionInfoResult']:
        """
        The connection details required to connect to an external DB system component.
        """
        return pulumi.get(self, "connection_infos")

    @property
    @pulumi.getter(name="connectionStatus")
    def connection_status(self) -> str:
        """
        The status of connectivity to the external DB system component.
        """
        return pulumi.get(self, "connection_status")

    @property
    @pulumi.getter(name="connectorType")
    def connector_type(self) -> str:
        """
        The type of connector.
        """
        return pulumi.get(self, "connector_type")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        A filter to only return the resources that match the entire display name.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="timeConnectionStatusLastUpdated")
    def time_connection_status_last_updated(self) -> str:
        """
        The date and time the connectionStatus of the external DB system connector was last updated.
        """
        return pulumi.get(self, "time_connection_status_last_updated")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentConnectorConnectionInfoResult(dict):
    def __init__(__self__, *,
                 component_type: str,
                 connection_credentials: Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentConnectorConnectionInfoConnectionCredentialResult'],
                 connection_strings: Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentConnectorConnectionInfoConnectionStringResult']):
        """
        :param str component_type: The component type.
        :param Sequence['GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentConnectorConnectionInfoConnectionCredentialArgs'] connection_credentials: The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        :param Sequence['GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentConnectorConnectionInfoConnectionStringArgs'] connection_strings: The Oracle Database connection string.
        """
        pulumi.set(__self__, "component_type", component_type)
        pulumi.set(__self__, "connection_credentials", connection_credentials)
        pulumi.set(__self__, "connection_strings", connection_strings)

    @property
    @pulumi.getter(name="componentType")
    def component_type(self) -> str:
        """
        The component type.
        """
        return pulumi.get(self, "component_type")

    @property
    @pulumi.getter(name="connectionCredentials")
    def connection_credentials(self) -> Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentConnectorConnectionInfoConnectionCredentialResult']:
        """
        The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        """
        return pulumi.get(self, "connection_credentials")

    @property
    @pulumi.getter(name="connectionStrings")
    def connection_strings(self) -> Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentConnectorConnectionInfoConnectionStringResult']:
        """
        The Oracle Database connection string.
        """
        return pulumi.get(self, "connection_strings")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentConnectorConnectionInfoConnectionCredentialResult(dict):
    def __init__(__self__, *,
                 credential_name: str,
                 credential_type: str,
                 password_secret_id: str,
                 role: str,
                 ssl_secret_id: str,
                 user_name: str):
        """
        :param str credential_name: The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        :param str credential_type: The type of credential used to connect to the ASM instance.
        :param str password_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        :param str role: The role of the user connecting to the ASM instance.
        :param str ssl_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        :param str user_name: The user name used to connect to the ASM instance.
        """
        pulumi.set(__self__, "credential_name", credential_name)
        pulumi.set(__self__, "credential_type", credential_type)
        pulumi.set(__self__, "password_secret_id", password_secret_id)
        pulumi.set(__self__, "role", role)
        pulumi.set(__self__, "ssl_secret_id", ssl_secret_id)
        pulumi.set(__self__, "user_name", user_name)

    @property
    @pulumi.getter(name="credentialName")
    def credential_name(self) -> str:
        """
        The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        """
        return pulumi.get(self, "credential_name")

    @property
    @pulumi.getter(name="credentialType")
    def credential_type(self) -> str:
        """
        The type of credential used to connect to the ASM instance.
        """
        return pulumi.get(self, "credential_type")

    @property
    @pulumi.getter(name="passwordSecretId")
    def password_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        """
        return pulumi.get(self, "password_secret_id")

    @property
    @pulumi.getter
    def role(self) -> str:
        """
        The role of the user connecting to the ASM instance.
        """
        return pulumi.get(self, "role")

    @property
    @pulumi.getter(name="sslSecretId")
    def ssl_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        """
        return pulumi.get(self, "ssl_secret_id")

    @property
    @pulumi.getter(name="userName")
    def user_name(self) -> str:
        """
        The user name used to connect to the ASM instance.
        """
        return pulumi.get(self, "user_name")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentConnectorConnectionInfoConnectionStringResult(dict):
    def __init__(__self__, *,
                 host_name: str,
                 hosts: Sequence[str],
                 port: int,
                 protocol: str,
                 service: str):
        """
        :param str host_name: The host name of the database or the SCAN name in case of a RAC database.
        :param Sequence[str] hosts: The list of host names of the ASM instances.
        :param int port: The port used to connect to the ASM instance.
        :param str protocol: The protocol used to connect to the ASM instance.
        :param str service: The service name of the ASM instance.
        """
        pulumi.set(__self__, "host_name", host_name)
        pulumi.set(__self__, "hosts", hosts)
        pulumi.set(__self__, "port", port)
        pulumi.set(__self__, "protocol", protocol)
        pulumi.set(__self__, "service", service)

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> str:
        """
        The host name of the database or the SCAN name in case of a RAC database.
        """
        return pulumi.get(self, "host_name")

    @property
    @pulumi.getter
    def hosts(self) -> Sequence[str]:
        """
        The list of host names of the ASM instances.
        """
        return pulumi.get(self, "hosts")

    @property
    @pulumi.getter
    def port(self) -> int:
        """
        The port used to connect to the ASM instance.
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter
    def protocol(self) -> str:
        """
        The protocol used to connect to the ASM instance.
        """
        return pulumi.get(self, "protocol")

    @property
    @pulumi.getter
    def service(self) -> str:
        """
        The service name of the ASM instance.
        """
        return pulumi.get(self, "service")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentEndpointResult(dict):
    def __init__(__self__, *,
                 host: str,
                 key: str,
                 port: int,
                 protocol: str,
                 services: Sequence[str]):
        """
        :param str host: The host name or IP address.
        :param str key: The unique name of the service.
        :param int port: The port used to connect to the ASM instance.
        :param str protocol: The protocol used to connect to the ASM instance.
        :param Sequence[str] services: The list of services registered with the listener.
        """
        pulumi.set(__self__, "host", host)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "port", port)
        pulumi.set(__self__, "protocol", protocol)
        pulumi.set(__self__, "services", services)

    @property
    @pulumi.getter
    def host(self) -> str:
        """
        The host name or IP address.
        """
        return pulumi.get(self, "host")

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        The unique name of the service.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def port(self) -> int:
        """
        The port used to connect to the ASM instance.
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter
    def protocol(self) -> str:
        """
        The protocol used to connect to the ASM instance.
        """
        return pulumi.get(self, "protocol")

    @property
    @pulumi.getter
    def services(self) -> Sequence[str]:
        """
        The list of services registered with the listener.
        """
        return pulumi.get(self, "services")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentNetworkConfigurationResult(dict):
    def __init__(__self__, *,
                 network_number: int,
                 network_type: str,
                 subnet: str):
        """
        :param int network_number: The network number from which VIPs are obtained.
        :param str network_type: The network type.
        :param str subnet: The subnet for the network.
        """
        pulumi.set(__self__, "network_number", network_number)
        pulumi.set(__self__, "network_type", network_type)
        pulumi.set(__self__, "subnet", subnet)

    @property
    @pulumi.getter(name="networkNumber")
    def network_number(self) -> int:
        """
        The network number from which VIPs are obtained.
        """
        return pulumi.get(self, "network_number")

    @property
    @pulumi.getter(name="networkType")
    def network_type(self) -> str:
        """
        The network type.
        """
        return pulumi.get(self, "network_type")

    @property
    @pulumi.getter
    def subnet(self) -> str:
        """
        The subnet for the network.
        """
        return pulumi.get(self, "subnet")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentPluggableDatabaseResult(dict):
    def __init__(__self__, *,
                 compartment_id: str,
                 connectors: Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentPluggableDatabaseConnectorResult'],
                 container_database_id: str,
                 guid: str):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        :param Sequence['GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentPluggableDatabaseConnectorArgs'] connectors: The connector details used to connect to the external DB system component.
        :param str container_database_id: The unique identifier of the parent Container Database (CDB).
        :param str guid: The unique identifier of the PDB.
        """
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "connectors", connectors)
        pulumi.set(__self__, "container_database_id", container_database_id)
        pulumi.set(__self__, "guid", guid)

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

    @property
    @pulumi.getter
    def connectors(self) -> Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentPluggableDatabaseConnectorResult']:
        """
        The connector details used to connect to the external DB system component.
        """
        return pulumi.get(self, "connectors")

    @property
    @pulumi.getter(name="containerDatabaseId")
    def container_database_id(self) -> str:
        """
        The unique identifier of the parent Container Database (CDB).
        """
        return pulumi.get(self, "container_database_id")

    @property
    @pulumi.getter
    def guid(self) -> str:
        """
        The unique identifier of the PDB.
        """
        return pulumi.get(self, "guid")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentPluggableDatabaseConnectorResult(dict):
    def __init__(__self__, *,
                 agent_id: str,
                 connection_failure_message: str,
                 connection_infos: Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentPluggableDatabaseConnectorConnectionInfoResult'],
                 connection_status: str,
                 connector_type: str,
                 display_name: str,
                 time_connection_status_last_updated: str):
        """
        :param str agent_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used for the external DB system connector.
        :param str connection_failure_message: The error message indicating the reason for connection failure or `null` if the connection was successful.
        :param Sequence['GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentPluggableDatabaseConnectorConnectionInfoArgs'] connection_infos: The connection details required to connect to an external DB system component.
        :param str connection_status: The status of connectivity to the external DB system component.
        :param str connector_type: The type of connector.
        :param str display_name: A filter to only return the resources that match the entire display name.
        :param str time_connection_status_last_updated: The date and time the connectionStatus of the external DB system connector was last updated.
        """
        pulumi.set(__self__, "agent_id", agent_id)
        pulumi.set(__self__, "connection_failure_message", connection_failure_message)
        pulumi.set(__self__, "connection_infos", connection_infos)
        pulumi.set(__self__, "connection_status", connection_status)
        pulumi.set(__self__, "connector_type", connector_type)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "time_connection_status_last_updated", time_connection_status_last_updated)

    @property
    @pulumi.getter(name="agentId")
    def agent_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used for the external DB system connector.
        """
        return pulumi.get(self, "agent_id")

    @property
    @pulumi.getter(name="connectionFailureMessage")
    def connection_failure_message(self) -> str:
        """
        The error message indicating the reason for connection failure or `null` if the connection was successful.
        """
        return pulumi.get(self, "connection_failure_message")

    @property
    @pulumi.getter(name="connectionInfos")
    def connection_infos(self) -> Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentPluggableDatabaseConnectorConnectionInfoResult']:
        """
        The connection details required to connect to an external DB system component.
        """
        return pulumi.get(self, "connection_infos")

    @property
    @pulumi.getter(name="connectionStatus")
    def connection_status(self) -> str:
        """
        The status of connectivity to the external DB system component.
        """
        return pulumi.get(self, "connection_status")

    @property
    @pulumi.getter(name="connectorType")
    def connector_type(self) -> str:
        """
        The type of connector.
        """
        return pulumi.get(self, "connector_type")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        A filter to only return the resources that match the entire display name.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="timeConnectionStatusLastUpdated")
    def time_connection_status_last_updated(self) -> str:
        """
        The date and time the connectionStatus of the external DB system connector was last updated.
        """
        return pulumi.get(self, "time_connection_status_last_updated")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentPluggableDatabaseConnectorConnectionInfoResult(dict):
    def __init__(__self__, *,
                 component_type: str,
                 connection_credentials: Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionCredentialResult'],
                 connection_strings: Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionStringResult']):
        """
        :param str component_type: The component type.
        :param Sequence['GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionCredentialArgs'] connection_credentials: The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        :param Sequence['GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionStringArgs'] connection_strings: The Oracle Database connection string.
        """
        pulumi.set(__self__, "component_type", component_type)
        pulumi.set(__self__, "connection_credentials", connection_credentials)
        pulumi.set(__self__, "connection_strings", connection_strings)

    @property
    @pulumi.getter(name="componentType")
    def component_type(self) -> str:
        """
        The component type.
        """
        return pulumi.get(self, "component_type")

    @property
    @pulumi.getter(name="connectionCredentials")
    def connection_credentials(self) -> Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionCredentialResult']:
        """
        The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        """
        return pulumi.get(self, "connection_credentials")

    @property
    @pulumi.getter(name="connectionStrings")
    def connection_strings(self) -> Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionStringResult']:
        """
        The Oracle Database connection string.
        """
        return pulumi.get(self, "connection_strings")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionCredentialResult(dict):
    def __init__(__self__, *,
                 credential_name: str,
                 credential_type: str,
                 password_secret_id: str,
                 role: str,
                 ssl_secret_id: str,
                 user_name: str):
        """
        :param str credential_name: The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        :param str credential_type: The type of credential used to connect to the ASM instance.
        :param str password_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        :param str role: The role of the user connecting to the ASM instance.
        :param str ssl_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        :param str user_name: The user name used to connect to the ASM instance.
        """
        pulumi.set(__self__, "credential_name", credential_name)
        pulumi.set(__self__, "credential_type", credential_type)
        pulumi.set(__self__, "password_secret_id", password_secret_id)
        pulumi.set(__self__, "role", role)
        pulumi.set(__self__, "ssl_secret_id", ssl_secret_id)
        pulumi.set(__self__, "user_name", user_name)

    @property
    @pulumi.getter(name="credentialName")
    def credential_name(self) -> str:
        """
        The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        """
        return pulumi.get(self, "credential_name")

    @property
    @pulumi.getter(name="credentialType")
    def credential_type(self) -> str:
        """
        The type of credential used to connect to the ASM instance.
        """
        return pulumi.get(self, "credential_type")

    @property
    @pulumi.getter(name="passwordSecretId")
    def password_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        """
        return pulumi.get(self, "password_secret_id")

    @property
    @pulumi.getter
    def role(self) -> str:
        """
        The role of the user connecting to the ASM instance.
        """
        return pulumi.get(self, "role")

    @property
    @pulumi.getter(name="sslSecretId")
    def ssl_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        """
        return pulumi.get(self, "ssl_secret_id")

    @property
    @pulumi.getter(name="userName")
    def user_name(self) -> str:
        """
        The user name used to connect to the ASM instance.
        """
        return pulumi.get(self, "user_name")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionStringResult(dict):
    def __init__(__self__, *,
                 host_name: str,
                 hosts: Sequence[str],
                 port: int,
                 protocol: str,
                 service: str):
        """
        :param str host_name: The host name of the database or the SCAN name in case of a RAC database.
        :param Sequence[str] hosts: The list of host names of the ASM instances.
        :param int port: The port used to connect to the ASM instance.
        :param str protocol: The protocol used to connect to the ASM instance.
        :param str service: The service name of the ASM instance.
        """
        pulumi.set(__self__, "host_name", host_name)
        pulumi.set(__self__, "hosts", hosts)
        pulumi.set(__self__, "port", port)
        pulumi.set(__self__, "protocol", protocol)
        pulumi.set(__self__, "service", service)

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> str:
        """
        The host name of the database or the SCAN name in case of a RAC database.
        """
        return pulumi.get(self, "host_name")

    @property
    @pulumi.getter
    def hosts(self) -> Sequence[str]:
        """
        The list of host names of the ASM instances.
        """
        return pulumi.get(self, "hosts")

    @property
    @pulumi.getter
    def port(self) -> int:
        """
        The port used to connect to the ASM instance.
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter
    def protocol(self) -> str:
        """
        The protocol used to connect to the ASM instance.
        """
        return pulumi.get(self, "protocol")

    @property
    @pulumi.getter
    def service(self) -> str:
        """
        The service name of the ASM instance.
        """
        return pulumi.get(self, "service")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentScanConfigurationResult(dict):
    def __init__(__self__, *,
                 network_number: int,
                 scan_name: str,
                 scan_port: int,
                 scan_protocol: str):
        """
        :param int network_number: The network number from which VIPs are obtained.
        :param str scan_name: The name of the SCAN listener.
        :param int scan_port: The port number of the SCAN listener.
        :param str scan_protocol: The protocol of the SCAN listener.
        """
        pulumi.set(__self__, "network_number", network_number)
        pulumi.set(__self__, "scan_name", scan_name)
        pulumi.set(__self__, "scan_port", scan_port)
        pulumi.set(__self__, "scan_protocol", scan_protocol)

    @property
    @pulumi.getter(name="networkNumber")
    def network_number(self) -> int:
        """
        The network number from which VIPs are obtained.
        """
        return pulumi.get(self, "network_number")

    @property
    @pulumi.getter(name="scanName")
    def scan_name(self) -> str:
        """
        The name of the SCAN listener.
        """
        return pulumi.get(self, "scan_name")

    @property
    @pulumi.getter(name="scanPort")
    def scan_port(self) -> int:
        """
        The port number of the SCAN listener.
        """
        return pulumi.get(self, "scan_port")

    @property
    @pulumi.getter(name="scanProtocol")
    def scan_protocol(self) -> str:
        """
        The protocol of the SCAN listener.
        """
        return pulumi.get(self, "scan_protocol")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemDiscoveredComponentVipConfigurationResult(dict):
    def __init__(__self__, *,
                 address: str,
                 network_number: int,
                 node_name: str):
        """
        :param str address: The VIP name or IP address.
        :param int network_number: The network number from which VIPs are obtained.
        :param str node_name: The name of the node with the VIP.
        """
        pulumi.set(__self__, "address", address)
        pulumi.set(__self__, "network_number", network_number)
        pulumi.set(__self__, "node_name", node_name)

    @property
    @pulumi.getter
    def address(self) -> str:
        """
        The VIP name or IP address.
        """
        return pulumi.get(self, "address")

    @property
    @pulumi.getter(name="networkNumber")
    def network_number(self) -> int:
        """
        The network number from which VIPs are obtained.
        """
        return pulumi.get(self, "network_number")

    @property
    @pulumi.getter(name="nodeName")
    def node_name(self) -> str:
        """
        The name of the node with the VIP.
        """
        return pulumi.get(self, "node_name")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemPatchOperationResult(dict):
    def __init__(__self__, *,
                 operation: str,
                 selection: str,
                 values: Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemPatchOperationValueResult']):
        pulumi.set(__self__, "operation", operation)
        pulumi.set(__self__, "selection", selection)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter
    def operation(self) -> str:
        return pulumi.get(self, "operation")

    @property
    @pulumi.getter
    def selection(self) -> str:
        return pulumi.get(self, "selection")

    @property
    @pulumi.getter
    def values(self) -> Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemPatchOperationValueResult']:
        return pulumi.get(self, "values")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemPatchOperationValueResult(dict):
    def __init__(__self__, *,
                 compartment_id: str,
                 connectors: Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemPatchOperationValueConnectorResult'],
                 display_name: str,
                 is_selected_for_monitoring: bool):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        :param Sequence['GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemPatchOperationValueConnectorArgs'] connectors: The connector details used to connect to the external DB system component.
        :param str display_name: A filter to only return the resources that match the entire display name.
        :param bool is_selected_for_monitoring: Indicates whether the DB system component should be provisioned as an Oracle Cloud Infrastructure resource or not.
        """
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "connectors", connectors)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "is_selected_for_monitoring", is_selected_for_monitoring)

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

    @property
    @pulumi.getter
    def connectors(self) -> Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemPatchOperationValueConnectorResult']:
        """
        The connector details used to connect to the external DB system component.
        """
        return pulumi.get(self, "connectors")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        A filter to only return the resources that match the entire display name.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="isSelectedForMonitoring")
    def is_selected_for_monitoring(self) -> bool:
        """
        Indicates whether the DB system component should be provisioned as an Oracle Cloud Infrastructure resource or not.
        """
        return pulumi.get(self, "is_selected_for_monitoring")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemPatchOperationValueConnectorResult(dict):
    def __init__(__self__, *,
                 agent_id: str,
                 connection_infos: Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemPatchOperationValueConnectorConnectionInfoResult'],
                 connector_type: str,
                 display_name: str):
        """
        :param str agent_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used for the external DB system connector.
        :param Sequence['GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemPatchOperationValueConnectorConnectionInfoArgs'] connection_infos: The connection details required to connect to an external DB system component.
        :param str connector_type: The type of connector.
        :param str display_name: A filter to only return the resources that match the entire display name.
        """
        pulumi.set(__self__, "agent_id", agent_id)
        pulumi.set(__self__, "connection_infos", connection_infos)
        pulumi.set(__self__, "connector_type", connector_type)
        pulumi.set(__self__, "display_name", display_name)

    @property
    @pulumi.getter(name="agentId")
    def agent_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used for the external DB system connector.
        """
        return pulumi.get(self, "agent_id")

    @property
    @pulumi.getter(name="connectionInfos")
    def connection_infos(self) -> Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemPatchOperationValueConnectorConnectionInfoResult']:
        """
        The connection details required to connect to an external DB system component.
        """
        return pulumi.get(self, "connection_infos")

    @property
    @pulumi.getter(name="connectorType")
    def connector_type(self) -> str:
        """
        The type of connector.
        """
        return pulumi.get(self, "connector_type")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        A filter to only return the resources that match the entire display name.
        """
        return pulumi.get(self, "display_name")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemPatchOperationValueConnectorConnectionInfoResult(dict):
    def __init__(__self__, *,
                 component_type: str,
                 connection_credentials: Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemPatchOperationValueConnectorConnectionInfoConnectionCredentialResult'],
                 connection_strings: Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemPatchOperationValueConnectorConnectionInfoConnectionStringResult']):
        """
        :param str component_type: The component type.
        :param Sequence['GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemPatchOperationValueConnectorConnectionInfoConnectionCredentialArgs'] connection_credentials: The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        :param Sequence['GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemPatchOperationValueConnectorConnectionInfoConnectionStringArgs'] connection_strings: The Oracle Database connection string.
        """
        pulumi.set(__self__, "component_type", component_type)
        pulumi.set(__self__, "connection_credentials", connection_credentials)
        pulumi.set(__self__, "connection_strings", connection_strings)

    @property
    @pulumi.getter(name="componentType")
    def component_type(self) -> str:
        """
        The component type.
        """
        return pulumi.get(self, "component_type")

    @property
    @pulumi.getter(name="connectionCredentials")
    def connection_credentials(self) -> Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemPatchOperationValueConnectorConnectionInfoConnectionCredentialResult']:
        """
        The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        """
        return pulumi.get(self, "connection_credentials")

    @property
    @pulumi.getter(name="connectionStrings")
    def connection_strings(self) -> Sequence['outputs.GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemPatchOperationValueConnectorConnectionInfoConnectionStringResult']:
        """
        The Oracle Database connection string.
        """
        return pulumi.get(self, "connection_strings")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemPatchOperationValueConnectorConnectionInfoConnectionCredentialResult(dict):
    def __init__(__self__, *,
                 credential_name: str,
                 credential_type: str,
                 password_secret_id: str,
                 role: str,
                 ssl_secret_id: str,
                 user_name: str):
        """
        :param str credential_name: The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        :param str credential_type: The type of credential used to connect to the ASM instance.
        :param str password_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        :param str role: The role of the user connecting to the ASM instance.
        :param str ssl_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        :param str user_name: The user name used to connect to the ASM instance.
        """
        pulumi.set(__self__, "credential_name", credential_name)
        pulumi.set(__self__, "credential_type", credential_type)
        pulumi.set(__self__, "password_secret_id", password_secret_id)
        pulumi.set(__self__, "role", role)
        pulumi.set(__self__, "ssl_secret_id", ssl_secret_id)
        pulumi.set(__self__, "user_name", user_name)

    @property
    @pulumi.getter(name="credentialName")
    def credential_name(self) -> str:
        """
        The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        """
        return pulumi.get(self, "credential_name")

    @property
    @pulumi.getter(name="credentialType")
    def credential_type(self) -> str:
        """
        The type of credential used to connect to the ASM instance.
        """
        return pulumi.get(self, "credential_type")

    @property
    @pulumi.getter(name="passwordSecretId")
    def password_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        """
        return pulumi.get(self, "password_secret_id")

    @property
    @pulumi.getter
    def role(self) -> str:
        """
        The role of the user connecting to the ASM instance.
        """
        return pulumi.get(self, "role")

    @property
    @pulumi.getter(name="sslSecretId")
    def ssl_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        """
        return pulumi.get(self, "ssl_secret_id")

    @property
    @pulumi.getter(name="userName")
    def user_name(self) -> str:
        """
        The user name used to connect to the ASM instance.
        """
        return pulumi.get(self, "user_name")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesExternalDbSystemDiscoveryCollectionItemPatchOperationValueConnectorConnectionInfoConnectionStringResult(dict):
    def __init__(__self__, *,
                 host_name: str,
                 hosts: Sequence[str],
                 port: int,
                 protocol: str,
                 service: str):
        """
        :param str host_name: The host name of the database or the SCAN name in case of a RAC database.
        :param Sequence[str] hosts: The list of host names of the ASM instances.
        :param int port: The port used to connect to the ASM instance.
        :param str protocol: The protocol used to connect to the ASM instance.
        :param str service: The service name of the ASM instance.
        """
        pulumi.set(__self__, "host_name", host_name)
        pulumi.set(__self__, "hosts", hosts)
        pulumi.set(__self__, "port", port)
        pulumi.set(__self__, "protocol", protocol)
        pulumi.set(__self__, "service", service)

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> str:
        """
        The host name of the database or the SCAN name in case of a RAC database.
        """
        return pulumi.get(self, "host_name")

    @property
    @pulumi.getter
    def hosts(self) -> Sequence[str]:
        """
        The list of host names of the ASM instances.
        """
        return pulumi.get(self, "hosts")

    @property
    @pulumi.getter
    def port(self) -> int:
        """
        The port used to connect to the ASM instance.
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter
    def protocol(self) -> str:
        """
        The protocol used to connect to the ASM instance.
        """
        return pulumi.get(self, "protocol")

    @property
    @pulumi.getter
    def service(self) -> str:
        """
        The service name of the ASM instance.
        """
        return pulumi.get(self, "service")


@pulumi.output_type
class GetExternalDbSystemDiscoveriesFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetExternalDbSystemDiscoveryDiscoveredComponentResult(dict):
    def __init__(__self__, *,
                 adr_home_directory: str,
                 asm_instances: Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentAsmInstanceResult'],
                 associated_components: Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentAssociatedComponentResult'],
                 cluster_id: str,
                 cluster_instances: Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceResult'],
                 compartment_id: str,
                 component_id: str,
                 component_name: str,
                 component_type: str,
                 connectors: Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentConnectorResult'],
                 container_database_id: str,
                 cpu_core_count: float,
                 crs_base_directory: str,
                 db_edition: str,
                 db_id: str,
                 db_node_name: str,
                 db_packs: str,
                 db_role: str,
                 db_type: str,
                 db_unique_name: str,
                 db_version: str,
                 display_name: str,
                 endpoints: Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentEndpointResult'],
                 grid_home: str,
                 guid: str,
                 home_directory: str,
                 host_name: str,
                 instance_name: str,
                 is_cluster: bool,
                 is_flex_cluster: bool,
                 is_flex_enabled: bool,
                 is_selected_for_monitoring: bool,
                 listener_alias: str,
                 listener_type: str,
                 log_directory: str,
                 memory_size_in_gbs: float,
                 network_configurations: Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentNetworkConfigurationResult'],
                 node_role: str,
                 ocr_file_location: str,
                 oracle_home: str,
                 pluggable_databases: Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseResult'],
                 resource_id: str,
                 scan_configurations: Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentScanConfigurationResult'],
                 status: str,
                 trace_directory: str,
                 version: str,
                 vip_configurations: Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentVipConfigurationResult']):
        """
        :param str adr_home_directory: The Automatic Diagnostic Repository (ADR) home directory for the cluster instance.
        :param Sequence['GetExternalDbSystemDiscoveryDiscoveredComponentAssociatedComponentArgs'] associated_components: The list of associated components.
        :param str cluster_id: The unique identifier of the Oracle cluster.
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        :param str component_id: The identifier of the discovered DB system component.
        :param str component_name: The name of the discovered DB system component.
        :param str component_type: The component type.
        :param Sequence['GetExternalDbSystemDiscoveryDiscoveredComponentConnectorArgs'] connectors: The connector details used to connect to the external DB system component.
        :param str container_database_id: The unique identifier of the parent Container Database (CDB).
        :param float cpu_core_count: The number of CPU cores available on the DB node.
        :param str crs_base_directory: The Oracle base location of Cluster Ready Services (CRS).
        :param str db_edition: The Oracle Database edition.
        :param str db_id: The Oracle Database ID.
        :param str db_node_name: The name of the DB node.
        :param str db_packs: The database packs licensed for the external Oracle Database.
        :param str db_role: The role of the Oracle Database in Oracle Data Guard configuration.
        :param str db_type: The type of Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, or a Non-container Database.
        :param str db_unique_name: The `DB_UNIQUE_NAME` of the external database.
        :param str db_version: The Oracle Database version.
        :param str display_name: The user-friendly name for the DB system. The name does not have to be unique.
        :param Sequence['GetExternalDbSystemDiscoveryDiscoveredComponentEndpointArgs'] endpoints: The list of protocol addresses the listener is configured to listen on.
        :param str grid_home: The directory in which Oracle Grid Infrastructure is installed.
        :param str guid: The unique identifier of the PDB.
        :param str home_directory: The location of the DB home.
        :param str host_name: The host name of the database or the SCAN name in case of a RAC database.
        :param str instance_name: The name of the ASM instance.
        :param bool is_cluster: Indicates whether the Oracle Database is part of a cluster.
        :param bool is_flex_cluster: Indicates whether the cluster is an Oracle Flex Cluster or not.
        :param bool is_flex_enabled: Indicates whether Oracle Flex ASM is enabled or not.
        :param bool is_selected_for_monitoring: Indicates whether the DB system component should be provisioned as an Oracle Cloud Infrastructure resource or not.
        :param str listener_alias: The listener alias.
        :param str listener_type: The type of listener.
        :param str log_directory: The destination directory of the listener log file.
        :param float memory_size_in_gbs: The total memory in gigabytes (GB) on the DB node.
        :param Sequence['GetExternalDbSystemDiscoveryDiscoveredComponentNetworkConfigurationArgs'] network_configurations: The list of network address configurations of the external cluster.
        :param str node_role: The role of the cluster node.
        :param str ocr_file_location: The location of the Oracle Cluster Registry (OCR) file.
        :param str oracle_home: The Oracle home location of the listener.
        :param Sequence['GetExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseArgs'] pluggable_databases: The list of Pluggable Databases.
        :param str resource_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the existing Oracle Cloud Infrastructure resource matching the discovered DB system.
        :param Sequence['GetExternalDbSystemDiscoveryDiscoveredComponentScanConfigurationArgs'] scan_configurations: The list of Single Client Access Name (SCAN) configurations of the external cluster.
        :param str status: The state of the discovered DB system component.
        :param str trace_directory: The destination directory of the listener trace file.
        :param str version: The version of Oracle Clusterware running in the cluster.
        :param Sequence['GetExternalDbSystemDiscoveryDiscoveredComponentVipConfigurationArgs'] vip_configurations: The list of Virtual IP (VIP) configurations of the external cluster.
        """
        pulumi.set(__self__, "adr_home_directory", adr_home_directory)
        pulumi.set(__self__, "asm_instances", asm_instances)
        pulumi.set(__self__, "associated_components", associated_components)
        pulumi.set(__self__, "cluster_id", cluster_id)
        pulumi.set(__self__, "cluster_instances", cluster_instances)
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "component_id", component_id)
        pulumi.set(__self__, "component_name", component_name)
        pulumi.set(__self__, "component_type", component_type)
        pulumi.set(__self__, "connectors", connectors)
        pulumi.set(__self__, "container_database_id", container_database_id)
        pulumi.set(__self__, "cpu_core_count", cpu_core_count)
        pulumi.set(__self__, "crs_base_directory", crs_base_directory)
        pulumi.set(__self__, "db_edition", db_edition)
        pulumi.set(__self__, "db_id", db_id)
        pulumi.set(__self__, "db_node_name", db_node_name)
        pulumi.set(__self__, "db_packs", db_packs)
        pulumi.set(__self__, "db_role", db_role)
        pulumi.set(__self__, "db_type", db_type)
        pulumi.set(__self__, "db_unique_name", db_unique_name)
        pulumi.set(__self__, "db_version", db_version)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "endpoints", endpoints)
        pulumi.set(__self__, "grid_home", grid_home)
        pulumi.set(__self__, "guid", guid)
        pulumi.set(__self__, "home_directory", home_directory)
        pulumi.set(__self__, "host_name", host_name)
        pulumi.set(__self__, "instance_name", instance_name)
        pulumi.set(__self__, "is_cluster", is_cluster)
        pulumi.set(__self__, "is_flex_cluster", is_flex_cluster)
        pulumi.set(__self__, "is_flex_enabled", is_flex_enabled)
        pulumi.set(__self__, "is_selected_for_monitoring", is_selected_for_monitoring)
        pulumi.set(__self__, "listener_alias", listener_alias)
        pulumi.set(__self__, "listener_type", listener_type)
        pulumi.set(__self__, "log_directory", log_directory)
        pulumi.set(__self__, "memory_size_in_gbs", memory_size_in_gbs)
        pulumi.set(__self__, "network_configurations", network_configurations)
        pulumi.set(__self__, "node_role", node_role)
        pulumi.set(__self__, "ocr_file_location", ocr_file_location)
        pulumi.set(__self__, "oracle_home", oracle_home)
        pulumi.set(__self__, "pluggable_databases", pluggable_databases)
        pulumi.set(__self__, "resource_id", resource_id)
        pulumi.set(__self__, "scan_configurations", scan_configurations)
        pulumi.set(__self__, "status", status)
        pulumi.set(__self__, "trace_directory", trace_directory)
        pulumi.set(__self__, "version", version)
        pulumi.set(__self__, "vip_configurations", vip_configurations)

    @property
    @pulumi.getter(name="adrHomeDirectory")
    def adr_home_directory(self) -> str:
        """
        The Automatic Diagnostic Repository (ADR) home directory for the cluster instance.
        """
        return pulumi.get(self, "adr_home_directory")

    @property
    @pulumi.getter(name="asmInstances")
    def asm_instances(self) -> Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentAsmInstanceResult']:
        return pulumi.get(self, "asm_instances")

    @property
    @pulumi.getter(name="associatedComponents")
    def associated_components(self) -> Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentAssociatedComponentResult']:
        """
        The list of associated components.
        """
        return pulumi.get(self, "associated_components")

    @property
    @pulumi.getter(name="clusterId")
    def cluster_id(self) -> str:
        """
        The unique identifier of the Oracle cluster.
        """
        return pulumi.get(self, "cluster_id")

    @property
    @pulumi.getter(name="clusterInstances")
    def cluster_instances(self) -> Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceResult']:
        return pulumi.get(self, "cluster_instances")

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

    @property
    @pulumi.getter(name="componentId")
    def component_id(self) -> str:
        """
        The identifier of the discovered DB system component.
        """
        return pulumi.get(self, "component_id")

    @property
    @pulumi.getter(name="componentName")
    def component_name(self) -> str:
        """
        The name of the discovered DB system component.
        """
        return pulumi.get(self, "component_name")

    @property
    @pulumi.getter(name="componentType")
    def component_type(self) -> str:
        """
        The component type.
        """
        return pulumi.get(self, "component_type")

    @property
    @pulumi.getter
    def connectors(self) -> Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentConnectorResult']:
        """
        The connector details used to connect to the external DB system component.
        """
        return pulumi.get(self, "connectors")

    @property
    @pulumi.getter(name="containerDatabaseId")
    def container_database_id(self) -> str:
        """
        The unique identifier of the parent Container Database (CDB).
        """
        return pulumi.get(self, "container_database_id")

    @property
    @pulumi.getter(name="cpuCoreCount")
    def cpu_core_count(self) -> float:
        """
        The number of CPU cores available on the DB node.
        """
        return pulumi.get(self, "cpu_core_count")

    @property
    @pulumi.getter(name="crsBaseDirectory")
    def crs_base_directory(self) -> str:
        """
        The Oracle base location of Cluster Ready Services (CRS).
        """
        return pulumi.get(self, "crs_base_directory")

    @property
    @pulumi.getter(name="dbEdition")
    def db_edition(self) -> str:
        """
        The Oracle Database edition.
        """
        return pulumi.get(self, "db_edition")

    @property
    @pulumi.getter(name="dbId")
    def db_id(self) -> str:
        """
        The Oracle Database ID.
        """
        return pulumi.get(self, "db_id")

    @property
    @pulumi.getter(name="dbNodeName")
    def db_node_name(self) -> str:
        """
        The name of the DB node.
        """
        return pulumi.get(self, "db_node_name")

    @property
    @pulumi.getter(name="dbPacks")
    def db_packs(self) -> str:
        """
        The database packs licensed for the external Oracle Database.
        """
        return pulumi.get(self, "db_packs")

    @property
    @pulumi.getter(name="dbRole")
    def db_role(self) -> str:
        """
        The role of the Oracle Database in Oracle Data Guard configuration.
        """
        return pulumi.get(self, "db_role")

    @property
    @pulumi.getter(name="dbType")
    def db_type(self) -> str:
        """
        The type of Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, or a Non-container Database.
        """
        return pulumi.get(self, "db_type")

    @property
    @pulumi.getter(name="dbUniqueName")
    def db_unique_name(self) -> str:
        """
        The `DB_UNIQUE_NAME` of the external database.
        """
        return pulumi.get(self, "db_unique_name")

    @property
    @pulumi.getter(name="dbVersion")
    def db_version(self) -> str:
        """
        The Oracle Database version.
        """
        return pulumi.get(self, "db_version")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        The user-friendly name for the DB system. The name does not have to be unique.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter
    def endpoints(self) -> Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentEndpointResult']:
        """
        The list of protocol addresses the listener is configured to listen on.
        """
        return pulumi.get(self, "endpoints")

    @property
    @pulumi.getter(name="gridHome")
    def grid_home(self) -> str:
        """
        The directory in which Oracle Grid Infrastructure is installed.
        """
        return pulumi.get(self, "grid_home")

    @property
    @pulumi.getter
    def guid(self) -> str:
        """
        The unique identifier of the PDB.
        """
        return pulumi.get(self, "guid")

    @property
    @pulumi.getter(name="homeDirectory")
    def home_directory(self) -> str:
        """
        The location of the DB home.
        """
        return pulumi.get(self, "home_directory")

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> str:
        """
        The host name of the database or the SCAN name in case of a RAC database.
        """
        return pulumi.get(self, "host_name")

    @property
    @pulumi.getter(name="instanceName")
    def instance_name(self) -> str:
        """
        The name of the ASM instance.
        """
        return pulumi.get(self, "instance_name")

    @property
    @pulumi.getter(name="isCluster")
    def is_cluster(self) -> bool:
        """
        Indicates whether the Oracle Database is part of a cluster.
        """
        return pulumi.get(self, "is_cluster")

    @property
    @pulumi.getter(name="isFlexCluster")
    def is_flex_cluster(self) -> bool:
        """
        Indicates whether the cluster is an Oracle Flex Cluster or not.
        """
        return pulumi.get(self, "is_flex_cluster")

    @property
    @pulumi.getter(name="isFlexEnabled")
    def is_flex_enabled(self) -> bool:
        """
        Indicates whether Oracle Flex ASM is enabled or not.
        """
        return pulumi.get(self, "is_flex_enabled")

    @property
    @pulumi.getter(name="isSelectedForMonitoring")
    def is_selected_for_monitoring(self) -> bool:
        """
        Indicates whether the DB system component should be provisioned as an Oracle Cloud Infrastructure resource or not.
        """
        return pulumi.get(self, "is_selected_for_monitoring")

    @property
    @pulumi.getter(name="listenerAlias")
    def listener_alias(self) -> str:
        """
        The listener alias.
        """
        return pulumi.get(self, "listener_alias")

    @property
    @pulumi.getter(name="listenerType")
    def listener_type(self) -> str:
        """
        The type of listener.
        """
        return pulumi.get(self, "listener_type")

    @property
    @pulumi.getter(name="logDirectory")
    def log_directory(self) -> str:
        """
        The destination directory of the listener log file.
        """
        return pulumi.get(self, "log_directory")

    @property
    @pulumi.getter(name="memorySizeInGbs")
    def memory_size_in_gbs(self) -> float:
        """
        The total memory in gigabytes (GB) on the DB node.
        """
        return pulumi.get(self, "memory_size_in_gbs")

    @property
    @pulumi.getter(name="networkConfigurations")
    def network_configurations(self) -> Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentNetworkConfigurationResult']:
        """
        The list of network address configurations of the external cluster.
        """
        return pulumi.get(self, "network_configurations")

    @property
    @pulumi.getter(name="nodeRole")
    def node_role(self) -> str:
        """
        The role of the cluster node.
        """
        return pulumi.get(self, "node_role")

    @property
    @pulumi.getter(name="ocrFileLocation")
    def ocr_file_location(self) -> str:
        """
        The location of the Oracle Cluster Registry (OCR) file.
        """
        return pulumi.get(self, "ocr_file_location")

    @property
    @pulumi.getter(name="oracleHome")
    def oracle_home(self) -> str:
        """
        The Oracle home location of the listener.
        """
        return pulumi.get(self, "oracle_home")

    @property
    @pulumi.getter(name="pluggableDatabases")
    def pluggable_databases(self) -> Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseResult']:
        """
        The list of Pluggable Databases.
        """
        return pulumi.get(self, "pluggable_databases")

    @property
    @pulumi.getter(name="resourceId")
    def resource_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the existing Oracle Cloud Infrastructure resource matching the discovered DB system.
        """
        return pulumi.get(self, "resource_id")

    @property
    @pulumi.getter(name="scanConfigurations")
    def scan_configurations(self) -> Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentScanConfigurationResult']:
        """
        The list of Single Client Access Name (SCAN) configurations of the external cluster.
        """
        return pulumi.get(self, "scan_configurations")

    @property
    @pulumi.getter
    def status(self) -> str:
        """
        The state of the discovered DB system component.
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter(name="traceDirectory")
    def trace_directory(self) -> str:
        """
        The destination directory of the listener trace file.
        """
        return pulumi.get(self, "trace_directory")

    @property
    @pulumi.getter
    def version(self) -> str:
        """
        The version of Oracle Clusterware running in the cluster.
        """
        return pulumi.get(self, "version")

    @property
    @pulumi.getter(name="vipConfigurations")
    def vip_configurations(self) -> Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentVipConfigurationResult']:
        """
        The list of Virtual IP (VIP) configurations of the external cluster.
        """
        return pulumi.get(self, "vip_configurations")


@pulumi.output_type
class GetExternalDbSystemDiscoveryDiscoveredComponentAsmInstanceResult(dict):
    def __init__(__self__, *,
                 adr_home_directory: str,
                 host_name: str,
                 instance_name: str):
        """
        :param str adr_home_directory: The Automatic Diagnostic Repository (ADR) home directory for the cluster instance.
        :param str host_name: The host name of the database or the SCAN name in case of a RAC database.
        :param str instance_name: The name of the ASM instance.
        """
        pulumi.set(__self__, "adr_home_directory", adr_home_directory)
        pulumi.set(__self__, "host_name", host_name)
        pulumi.set(__self__, "instance_name", instance_name)

    @property
    @pulumi.getter(name="adrHomeDirectory")
    def adr_home_directory(self) -> str:
        """
        The Automatic Diagnostic Repository (ADR) home directory for the cluster instance.
        """
        return pulumi.get(self, "adr_home_directory")

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> str:
        """
        The host name of the database or the SCAN name in case of a RAC database.
        """
        return pulumi.get(self, "host_name")

    @property
    @pulumi.getter(name="instanceName")
    def instance_name(self) -> str:
        """
        The name of the ASM instance.
        """
        return pulumi.get(self, "instance_name")


@pulumi.output_type
class GetExternalDbSystemDiscoveryDiscoveredComponentAssociatedComponentResult(dict):
    def __init__(__self__, *,
                 association_type: str,
                 component_id: str,
                 component_type: str):
        """
        :param str association_type: The association type.
        :param str component_id: The identifier of the discovered DB system component.
        :param str component_type: The component type.
        """
        pulumi.set(__self__, "association_type", association_type)
        pulumi.set(__self__, "component_id", component_id)
        pulumi.set(__self__, "component_type", component_type)

    @property
    @pulumi.getter(name="associationType")
    def association_type(self) -> str:
        """
        The association type.
        """
        return pulumi.get(self, "association_type")

    @property
    @pulumi.getter(name="componentId")
    def component_id(self) -> str:
        """
        The identifier of the discovered DB system component.
        """
        return pulumi.get(self, "component_id")

    @property
    @pulumi.getter(name="componentType")
    def component_type(self) -> str:
        """
        The component type.
        """
        return pulumi.get(self, "component_type")


@pulumi.output_type
class GetExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceResult(dict):
    def __init__(__self__, *,
                 adr_home_directory: str,
                 cluster_id: str,
                 connectors: Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorResult'],
                 crs_base_directory: str,
                 host_name: str,
                 node_role: str):
        """
        :param str adr_home_directory: The Automatic Diagnostic Repository (ADR) home directory for the cluster instance.
        :param str cluster_id: The unique identifier of the Oracle cluster.
        :param Sequence['GetExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorArgs'] connectors: The connector details used to connect to the external DB system component.
        :param str crs_base_directory: The Oracle base location of Cluster Ready Services (CRS).
        :param str host_name: The host name of the database or the SCAN name in case of a RAC database.
        :param str node_role: The role of the cluster node.
        """
        pulumi.set(__self__, "adr_home_directory", adr_home_directory)
        pulumi.set(__self__, "cluster_id", cluster_id)
        pulumi.set(__self__, "connectors", connectors)
        pulumi.set(__self__, "crs_base_directory", crs_base_directory)
        pulumi.set(__self__, "host_name", host_name)
        pulumi.set(__self__, "node_role", node_role)

    @property
    @pulumi.getter(name="adrHomeDirectory")
    def adr_home_directory(self) -> str:
        """
        The Automatic Diagnostic Repository (ADR) home directory for the cluster instance.
        """
        return pulumi.get(self, "adr_home_directory")

    @property
    @pulumi.getter(name="clusterId")
    def cluster_id(self) -> str:
        """
        The unique identifier of the Oracle cluster.
        """
        return pulumi.get(self, "cluster_id")

    @property
    @pulumi.getter
    def connectors(self) -> Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorResult']:
        """
        The connector details used to connect to the external DB system component.
        """
        return pulumi.get(self, "connectors")

    @property
    @pulumi.getter(name="crsBaseDirectory")
    def crs_base_directory(self) -> str:
        """
        The Oracle base location of Cluster Ready Services (CRS).
        """
        return pulumi.get(self, "crs_base_directory")

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> str:
        """
        The host name of the database or the SCAN name in case of a RAC database.
        """
        return pulumi.get(self, "host_name")

    @property
    @pulumi.getter(name="nodeRole")
    def node_role(self) -> str:
        """
        The role of the cluster node.
        """
        return pulumi.get(self, "node_role")


@pulumi.output_type
class GetExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorResult(dict):
    def __init__(__self__, *,
                 agent_id: str,
                 connection_failure_message: str,
                 connection_infos: Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoResult'],
                 connection_status: str,
                 connector_type: str,
                 display_name: str,
                 time_connection_status_last_updated: str):
        """
        :param str agent_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used for the external DB system connector.
        :param str connection_failure_message: The error message indicating the reason for connection failure or `null` if the connection was successful.
        :param Sequence['GetExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoArgs'] connection_infos: The connection details required to connect to an external DB system component.
        :param str connection_status: The status of connectivity to the external DB system component.
        :param str connector_type: The type of connector.
        :param str display_name: The user-friendly name for the DB system. The name does not have to be unique.
        :param str time_connection_status_last_updated: The date and time the connectionStatus of the external DB system connector was last updated.
        """
        pulumi.set(__self__, "agent_id", agent_id)
        pulumi.set(__self__, "connection_failure_message", connection_failure_message)
        pulumi.set(__self__, "connection_infos", connection_infos)
        pulumi.set(__self__, "connection_status", connection_status)
        pulumi.set(__self__, "connector_type", connector_type)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "time_connection_status_last_updated", time_connection_status_last_updated)

    @property
    @pulumi.getter(name="agentId")
    def agent_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used for the external DB system connector.
        """
        return pulumi.get(self, "agent_id")

    @property
    @pulumi.getter(name="connectionFailureMessage")
    def connection_failure_message(self) -> str:
        """
        The error message indicating the reason for connection failure or `null` if the connection was successful.
        """
        return pulumi.get(self, "connection_failure_message")

    @property
    @pulumi.getter(name="connectionInfos")
    def connection_infos(self) -> Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoResult']:
        """
        The connection details required to connect to an external DB system component.
        """
        return pulumi.get(self, "connection_infos")

    @property
    @pulumi.getter(name="connectionStatus")
    def connection_status(self) -> str:
        """
        The status of connectivity to the external DB system component.
        """
        return pulumi.get(self, "connection_status")

    @property
    @pulumi.getter(name="connectorType")
    def connector_type(self) -> str:
        """
        The type of connector.
        """
        return pulumi.get(self, "connector_type")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        The user-friendly name for the DB system. The name does not have to be unique.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="timeConnectionStatusLastUpdated")
    def time_connection_status_last_updated(self) -> str:
        """
        The date and time the connectionStatus of the external DB system connector was last updated.
        """
        return pulumi.get(self, "time_connection_status_last_updated")


@pulumi.output_type
class GetExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoResult(dict):
    def __init__(__self__, *,
                 component_type: str,
                 connection_credentials: Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionCredentialResult'],
                 connection_strings: Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionStringResult']):
        """
        :param str component_type: The component type.
        :param Sequence['GetExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionCredentialArgs'] connection_credentials: The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        :param Sequence['GetExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionStringArgs'] connection_strings: The Oracle Database connection string.
        """
        pulumi.set(__self__, "component_type", component_type)
        pulumi.set(__self__, "connection_credentials", connection_credentials)
        pulumi.set(__self__, "connection_strings", connection_strings)

    @property
    @pulumi.getter(name="componentType")
    def component_type(self) -> str:
        """
        The component type.
        """
        return pulumi.get(self, "component_type")

    @property
    @pulumi.getter(name="connectionCredentials")
    def connection_credentials(self) -> Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionCredentialResult']:
        """
        The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        """
        return pulumi.get(self, "connection_credentials")

    @property
    @pulumi.getter(name="connectionStrings")
    def connection_strings(self) -> Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionStringResult']:
        """
        The Oracle Database connection string.
        """
        return pulumi.get(self, "connection_strings")


@pulumi.output_type
class GetExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionCredentialResult(dict):
    def __init__(__self__, *,
                 credential_name: str,
                 credential_type: str,
                 password_secret_id: str,
                 role: str,
                 ssl_secret_id: str,
                 user_name: str):
        """
        :param str credential_name: The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        :param str credential_type: The type of credential used to connect to the ASM instance.
        :param str password_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        :param str role: The role of the user connecting to the ASM instance.
        :param str ssl_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        :param str user_name: The user name used to connect to the ASM instance.
        """
        pulumi.set(__self__, "credential_name", credential_name)
        pulumi.set(__self__, "credential_type", credential_type)
        pulumi.set(__self__, "password_secret_id", password_secret_id)
        pulumi.set(__self__, "role", role)
        pulumi.set(__self__, "ssl_secret_id", ssl_secret_id)
        pulumi.set(__self__, "user_name", user_name)

    @property
    @pulumi.getter(name="credentialName")
    def credential_name(self) -> str:
        """
        The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        """
        return pulumi.get(self, "credential_name")

    @property
    @pulumi.getter(name="credentialType")
    def credential_type(self) -> str:
        """
        The type of credential used to connect to the ASM instance.
        """
        return pulumi.get(self, "credential_type")

    @property
    @pulumi.getter(name="passwordSecretId")
    def password_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        """
        return pulumi.get(self, "password_secret_id")

    @property
    @pulumi.getter
    def role(self) -> str:
        """
        The role of the user connecting to the ASM instance.
        """
        return pulumi.get(self, "role")

    @property
    @pulumi.getter(name="sslSecretId")
    def ssl_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        """
        return pulumi.get(self, "ssl_secret_id")

    @property
    @pulumi.getter(name="userName")
    def user_name(self) -> str:
        """
        The user name used to connect to the ASM instance.
        """
        return pulumi.get(self, "user_name")


@pulumi.output_type
class GetExternalDbSystemDiscoveryDiscoveredComponentClusterInstanceConnectorConnectionInfoConnectionStringResult(dict):
    def __init__(__self__, *,
                 host_name: str,
                 hosts: Sequence[str],
                 port: int,
                 protocol: str,
                 service: str):
        """
        :param str host_name: The host name of the database or the SCAN name in case of a RAC database.
        :param Sequence[str] hosts: The list of host names of the ASM instances.
        :param int port: The port used to connect to the ASM instance.
        :param str protocol: The protocol used to connect to the ASM instance.
        :param str service: The service name of the ASM instance.
        """
        pulumi.set(__self__, "host_name", host_name)
        pulumi.set(__self__, "hosts", hosts)
        pulumi.set(__self__, "port", port)
        pulumi.set(__self__, "protocol", protocol)
        pulumi.set(__self__, "service", service)

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> str:
        """
        The host name of the database or the SCAN name in case of a RAC database.
        """
        return pulumi.get(self, "host_name")

    @property
    @pulumi.getter
    def hosts(self) -> Sequence[str]:
        """
        The list of host names of the ASM instances.
        """
        return pulumi.get(self, "hosts")

    @property
    @pulumi.getter
    def port(self) -> int:
        """
        The port used to connect to the ASM instance.
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter
    def protocol(self) -> str:
        """
        The protocol used to connect to the ASM instance.
        """
        return pulumi.get(self, "protocol")

    @property
    @pulumi.getter
    def service(self) -> str:
        """
        The service name of the ASM instance.
        """
        return pulumi.get(self, "service")


@pulumi.output_type
class GetExternalDbSystemDiscoveryDiscoveredComponentConnectorResult(dict):
    def __init__(__self__, *,
                 agent_id: str,
                 connection_failure_message: str,
                 connection_infos: Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoResult'],
                 connection_status: str,
                 connector_type: str,
                 display_name: str,
                 time_connection_status_last_updated: str):
        """
        :param str agent_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used for the external DB system connector.
        :param str connection_failure_message: The error message indicating the reason for connection failure or `null` if the connection was successful.
        :param Sequence['GetExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoArgs'] connection_infos: The connection details required to connect to an external DB system component.
        :param str connection_status: The status of connectivity to the external DB system component.
        :param str connector_type: The type of connector.
        :param str display_name: The user-friendly name for the DB system. The name does not have to be unique.
        :param str time_connection_status_last_updated: The date and time the connectionStatus of the external DB system connector was last updated.
        """
        pulumi.set(__self__, "agent_id", agent_id)
        pulumi.set(__self__, "connection_failure_message", connection_failure_message)
        pulumi.set(__self__, "connection_infos", connection_infos)
        pulumi.set(__self__, "connection_status", connection_status)
        pulumi.set(__self__, "connector_type", connector_type)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "time_connection_status_last_updated", time_connection_status_last_updated)

    @property
    @pulumi.getter(name="agentId")
    def agent_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used for the external DB system connector.
        """
        return pulumi.get(self, "agent_id")

    @property
    @pulumi.getter(name="connectionFailureMessage")
    def connection_failure_message(self) -> str:
        """
        The error message indicating the reason for connection failure or `null` if the connection was successful.
        """
        return pulumi.get(self, "connection_failure_message")

    @property
    @pulumi.getter(name="connectionInfos")
    def connection_infos(self) -> Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoResult']:
        """
        The connection details required to connect to an external DB system component.
        """
        return pulumi.get(self, "connection_infos")

    @property
    @pulumi.getter(name="connectionStatus")
    def connection_status(self) -> str:
        """
        The status of connectivity to the external DB system component.
        """
        return pulumi.get(self, "connection_status")

    @property
    @pulumi.getter(name="connectorType")
    def connector_type(self) -> str:
        """
        The type of connector.
        """
        return pulumi.get(self, "connector_type")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        The user-friendly name for the DB system. The name does not have to be unique.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="timeConnectionStatusLastUpdated")
    def time_connection_status_last_updated(self) -> str:
        """
        The date and time the connectionStatus of the external DB system connector was last updated.
        """
        return pulumi.get(self, "time_connection_status_last_updated")


@pulumi.output_type
class GetExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoResult(dict):
    def __init__(__self__, *,
                 component_type: str,
                 connection_credentials: Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoConnectionCredentialResult'],
                 connection_strings: Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoConnectionStringResult']):
        """
        :param str component_type: The component type.
        :param Sequence['GetExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoConnectionCredentialArgs'] connection_credentials: The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        :param Sequence['GetExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoConnectionStringArgs'] connection_strings: The Oracle Database connection string.
        """
        pulumi.set(__self__, "component_type", component_type)
        pulumi.set(__self__, "connection_credentials", connection_credentials)
        pulumi.set(__self__, "connection_strings", connection_strings)

    @property
    @pulumi.getter(name="componentType")
    def component_type(self) -> str:
        """
        The component type.
        """
        return pulumi.get(self, "component_type")

    @property
    @pulumi.getter(name="connectionCredentials")
    def connection_credentials(self) -> Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoConnectionCredentialResult']:
        """
        The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        """
        return pulumi.get(self, "connection_credentials")

    @property
    @pulumi.getter(name="connectionStrings")
    def connection_strings(self) -> Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoConnectionStringResult']:
        """
        The Oracle Database connection string.
        """
        return pulumi.get(self, "connection_strings")


@pulumi.output_type
class GetExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoConnectionCredentialResult(dict):
    def __init__(__self__, *,
                 credential_name: str,
                 credential_type: str,
                 password_secret_id: str,
                 role: str,
                 ssl_secret_id: str,
                 user_name: str):
        """
        :param str credential_name: The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        :param str credential_type: The type of credential used to connect to the ASM instance.
        :param str password_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        :param str role: The role of the user connecting to the ASM instance.
        :param str ssl_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        :param str user_name: The user name used to connect to the ASM instance.
        """
        pulumi.set(__self__, "credential_name", credential_name)
        pulumi.set(__self__, "credential_type", credential_type)
        pulumi.set(__self__, "password_secret_id", password_secret_id)
        pulumi.set(__self__, "role", role)
        pulumi.set(__self__, "ssl_secret_id", ssl_secret_id)
        pulumi.set(__self__, "user_name", user_name)

    @property
    @pulumi.getter(name="credentialName")
    def credential_name(self) -> str:
        """
        The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        """
        return pulumi.get(self, "credential_name")

    @property
    @pulumi.getter(name="credentialType")
    def credential_type(self) -> str:
        """
        The type of credential used to connect to the ASM instance.
        """
        return pulumi.get(self, "credential_type")

    @property
    @pulumi.getter(name="passwordSecretId")
    def password_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        """
        return pulumi.get(self, "password_secret_id")

    @property
    @pulumi.getter
    def role(self) -> str:
        """
        The role of the user connecting to the ASM instance.
        """
        return pulumi.get(self, "role")

    @property
    @pulumi.getter(name="sslSecretId")
    def ssl_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        """
        return pulumi.get(self, "ssl_secret_id")

    @property
    @pulumi.getter(name="userName")
    def user_name(self) -> str:
        """
        The user name used to connect to the ASM instance.
        """
        return pulumi.get(self, "user_name")


@pulumi.output_type
class GetExternalDbSystemDiscoveryDiscoveredComponentConnectorConnectionInfoConnectionStringResult(dict):
    def __init__(__self__, *,
                 host_name: str,
                 hosts: Sequence[str],
                 port: int,
                 protocol: str,
                 service: str):
        """
        :param str host_name: The host name of the database or the SCAN name in case of a RAC database.
        :param Sequence[str] hosts: The list of host names of the ASM instances.
        :param int port: The port used to connect to the ASM instance.
        :param str protocol: The protocol used to connect to the ASM instance.
        :param str service: The service name of the ASM instance.
        """
        pulumi.set(__self__, "host_name", host_name)
        pulumi.set(__self__, "hosts", hosts)
        pulumi.set(__self__, "port", port)
        pulumi.set(__self__, "protocol", protocol)
        pulumi.set(__self__, "service", service)

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> str:
        """
        The host name of the database or the SCAN name in case of a RAC database.
        """
        return pulumi.get(self, "host_name")

    @property
    @pulumi.getter
    def hosts(self) -> Sequence[str]:
        """
        The list of host names of the ASM instances.
        """
        return pulumi.get(self, "hosts")

    @property
    @pulumi.getter
    def port(self) -> int:
        """
        The port used to connect to the ASM instance.
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter
    def protocol(self) -> str:
        """
        The protocol used to connect to the ASM instance.
        """
        return pulumi.get(self, "protocol")

    @property
    @pulumi.getter
    def service(self) -> str:
        """
        The service name of the ASM instance.
        """
        return pulumi.get(self, "service")


@pulumi.output_type
class GetExternalDbSystemDiscoveryDiscoveredComponentEndpointResult(dict):
    def __init__(__self__, *,
                 host: str,
                 key: str,
                 port: int,
                 protocol: str,
                 services: Sequence[str]):
        """
        :param str host: The host name or IP address.
        :param str key: The unique name of the service.
        :param int port: The port used to connect to the ASM instance.
        :param str protocol: The protocol used to connect to the ASM instance.
        :param Sequence[str] services: The list of services registered with the listener.
        """
        pulumi.set(__self__, "host", host)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "port", port)
        pulumi.set(__self__, "protocol", protocol)
        pulumi.set(__self__, "services", services)

    @property
    @pulumi.getter
    def host(self) -> str:
        """
        The host name or IP address.
        """
        return pulumi.get(self, "host")

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        The unique name of the service.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def port(self) -> int:
        """
        The port used to connect to the ASM instance.
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter
    def protocol(self) -> str:
        """
        The protocol used to connect to the ASM instance.
        """
        return pulumi.get(self, "protocol")

    @property
    @pulumi.getter
    def services(self) -> Sequence[str]:
        """
        The list of services registered with the listener.
        """
        return pulumi.get(self, "services")


@pulumi.output_type
class GetExternalDbSystemDiscoveryDiscoveredComponentNetworkConfigurationResult(dict):
    def __init__(__self__, *,
                 network_number: int,
                 network_type: str,
                 subnet: str):
        """
        :param int network_number: The network number from which VIPs are obtained.
        :param str network_type: The network type.
        :param str subnet: The subnet for the network.
        """
        pulumi.set(__self__, "network_number", network_number)
        pulumi.set(__self__, "network_type", network_type)
        pulumi.set(__self__, "subnet", subnet)

    @property
    @pulumi.getter(name="networkNumber")
    def network_number(self) -> int:
        """
        The network number from which VIPs are obtained.
        """
        return pulumi.get(self, "network_number")

    @property
    @pulumi.getter(name="networkType")
    def network_type(self) -> str:
        """
        The network type.
        """
        return pulumi.get(self, "network_type")

    @property
    @pulumi.getter
    def subnet(self) -> str:
        """
        The subnet for the network.
        """
        return pulumi.get(self, "subnet")


@pulumi.output_type
class GetExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseResult(dict):
    def __init__(__self__, *,
                 compartment_id: str,
                 connectors: Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorResult'],
                 container_database_id: str,
                 guid: str):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        :param Sequence['GetExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorArgs'] connectors: The connector details used to connect to the external DB system component.
        :param str container_database_id: The unique identifier of the parent Container Database (CDB).
        :param str guid: The unique identifier of the PDB.
        """
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "connectors", connectors)
        pulumi.set(__self__, "container_database_id", container_database_id)
        pulumi.set(__self__, "guid", guid)

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

    @property
    @pulumi.getter
    def connectors(self) -> Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorResult']:
        """
        The connector details used to connect to the external DB system component.
        """
        return pulumi.get(self, "connectors")

    @property
    @pulumi.getter(name="containerDatabaseId")
    def container_database_id(self) -> str:
        """
        The unique identifier of the parent Container Database (CDB).
        """
        return pulumi.get(self, "container_database_id")

    @property
    @pulumi.getter
    def guid(self) -> str:
        """
        The unique identifier of the PDB.
        """
        return pulumi.get(self, "guid")


@pulumi.output_type
class GetExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorResult(dict):
    def __init__(__self__, *,
                 agent_id: str,
                 connection_failure_message: str,
                 connection_infos: Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoResult'],
                 connection_status: str,
                 connector_type: str,
                 display_name: str,
                 time_connection_status_last_updated: str):
        """
        :param str agent_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used for the external DB system connector.
        :param str connection_failure_message: The error message indicating the reason for connection failure or `null` if the connection was successful.
        :param Sequence['GetExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoArgs'] connection_infos: The connection details required to connect to an external DB system component.
        :param str connection_status: The status of connectivity to the external DB system component.
        :param str connector_type: The type of connector.
        :param str display_name: The user-friendly name for the DB system. The name does not have to be unique.
        :param str time_connection_status_last_updated: The date and time the connectionStatus of the external DB system connector was last updated.
        """
        pulumi.set(__self__, "agent_id", agent_id)
        pulumi.set(__self__, "connection_failure_message", connection_failure_message)
        pulumi.set(__self__, "connection_infos", connection_infos)
        pulumi.set(__self__, "connection_status", connection_status)
        pulumi.set(__self__, "connector_type", connector_type)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "time_connection_status_last_updated", time_connection_status_last_updated)

    @property
    @pulumi.getter(name="agentId")
    def agent_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used for the external DB system connector.
        """
        return pulumi.get(self, "agent_id")

    @property
    @pulumi.getter(name="connectionFailureMessage")
    def connection_failure_message(self) -> str:
        """
        The error message indicating the reason for connection failure or `null` if the connection was successful.
        """
        return pulumi.get(self, "connection_failure_message")

    @property
    @pulumi.getter(name="connectionInfos")
    def connection_infos(self) -> Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoResult']:
        """
        The connection details required to connect to an external DB system component.
        """
        return pulumi.get(self, "connection_infos")

    @property
    @pulumi.getter(name="connectionStatus")
    def connection_status(self) -> str:
        """
        The status of connectivity to the external DB system component.
        """
        return pulumi.get(self, "connection_status")

    @property
    @pulumi.getter(name="connectorType")
    def connector_type(self) -> str:
        """
        The type of connector.
        """
        return pulumi.get(self, "connector_type")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        The user-friendly name for the DB system. The name does not have to be unique.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="timeConnectionStatusLastUpdated")
    def time_connection_status_last_updated(self) -> str:
        """
        The date and time the connectionStatus of the external DB system connector was last updated.
        """
        return pulumi.get(self, "time_connection_status_last_updated")


@pulumi.output_type
class GetExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoResult(dict):
    def __init__(__self__, *,
                 component_type: str,
                 connection_credentials: Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionCredentialResult'],
                 connection_strings: Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionStringResult']):
        """
        :param str component_type: The component type.
        :param Sequence['GetExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionCredentialArgs'] connection_credentials: The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        :param Sequence['GetExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionStringArgs'] connection_strings: The Oracle Database connection string.
        """
        pulumi.set(__self__, "component_type", component_type)
        pulumi.set(__self__, "connection_credentials", connection_credentials)
        pulumi.set(__self__, "connection_strings", connection_strings)

    @property
    @pulumi.getter(name="componentType")
    def component_type(self) -> str:
        """
        The component type.
        """
        return pulumi.get(self, "component_type")

    @property
    @pulumi.getter(name="connectionCredentials")
    def connection_credentials(self) -> Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionCredentialResult']:
        """
        The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        """
        return pulumi.get(self, "connection_credentials")

    @property
    @pulumi.getter(name="connectionStrings")
    def connection_strings(self) -> Sequence['outputs.GetExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionStringResult']:
        """
        The Oracle Database connection string.
        """
        return pulumi.get(self, "connection_strings")


@pulumi.output_type
class GetExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionCredentialResult(dict):
    def __init__(__self__, *,
                 credential_name: str,
                 credential_type: str,
                 password_secret_id: str,
                 role: str,
                 ssl_secret_id: str,
                 user_name: str):
        """
        :param str credential_name: The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        :param str credential_type: The type of credential used to connect to the ASM instance.
        :param str password_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        :param str role: The role of the user connecting to the ASM instance.
        :param str ssl_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        :param str user_name: The user name used to connect to the ASM instance.
        """
        pulumi.set(__self__, "credential_name", credential_name)
        pulumi.set(__self__, "credential_type", credential_type)
        pulumi.set(__self__, "password_secret_id", password_secret_id)
        pulumi.set(__self__, "role", role)
        pulumi.set(__self__, "ssl_secret_id", ssl_secret_id)
        pulumi.set(__self__, "user_name", user_name)

    @property
    @pulumi.getter(name="credentialName")
    def credential_name(self) -> str:
        """
        The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        """
        return pulumi.get(self, "credential_name")

    @property
    @pulumi.getter(name="credentialType")
    def credential_type(self) -> str:
        """
        The type of credential used to connect to the ASM instance.
        """
        return pulumi.get(self, "credential_type")

    @property
    @pulumi.getter(name="passwordSecretId")
    def password_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        """
        return pulumi.get(self, "password_secret_id")

    @property
    @pulumi.getter
    def role(self) -> str:
        """
        The role of the user connecting to the ASM instance.
        """
        return pulumi.get(self, "role")

    @property
    @pulumi.getter(name="sslSecretId")
    def ssl_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        """
        return pulumi.get(self, "ssl_secret_id")

    @property
    @pulumi.getter(name="userName")
    def user_name(self) -> str:
        """
        The user name used to connect to the ASM instance.
        """
        return pulumi.get(self, "user_name")


@pulumi.output_type
class GetExternalDbSystemDiscoveryDiscoveredComponentPluggableDatabaseConnectorConnectionInfoConnectionStringResult(dict):
    def __init__(__self__, *,
                 host_name: str,
                 hosts: Sequence[str],
                 port: int,
                 protocol: str,
                 service: str):
        """
        :param str host_name: The host name of the database or the SCAN name in case of a RAC database.
        :param Sequence[str] hosts: The list of host names of the ASM instances.
        :param int port: The port used to connect to the ASM instance.
        :param str protocol: The protocol used to connect to the ASM instance.
        :param str service: The service name of the ASM instance.
        """
        pulumi.set(__self__, "host_name", host_name)
        pulumi.set(__self__, "hosts", hosts)
        pulumi.set(__self__, "port", port)
        pulumi.set(__self__, "protocol", protocol)
        pulumi.set(__self__, "service", service)

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> str:
        """
        The host name of the database or the SCAN name in case of a RAC database.
        """
        return pulumi.get(self, "host_name")

    @property
    @pulumi.getter
    def hosts(self) -> Sequence[str]:
        """
        The list of host names of the ASM instances.
        """
        return pulumi.get(self, "hosts")

    @property
    @pulumi.getter
    def port(self) -> int:
        """
        The port used to connect to the ASM instance.
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter
    def protocol(self) -> str:
        """
        The protocol used to connect to the ASM instance.
        """
        return pulumi.get(self, "protocol")

    @property
    @pulumi.getter
    def service(self) -> str:
        """
        The service name of the ASM instance.
        """
        return pulumi.get(self, "service")


@pulumi.output_type
class GetExternalDbSystemDiscoveryDiscoveredComponentScanConfigurationResult(dict):
    def __init__(__self__, *,
                 network_number: int,
                 scan_name: str,
                 scan_port: int,
                 scan_protocol: str):
        """
        :param int network_number: The network number from which VIPs are obtained.
        :param str scan_name: The name of the SCAN listener.
        :param int scan_port: The port number of the SCAN listener.
        :param str scan_protocol: The protocol of the SCAN listener.
        """
        pulumi.set(__self__, "network_number", network_number)
        pulumi.set(__self__, "scan_name", scan_name)
        pulumi.set(__self__, "scan_port", scan_port)
        pulumi.set(__self__, "scan_protocol", scan_protocol)

    @property
    @pulumi.getter(name="networkNumber")
    def network_number(self) -> int:
        """
        The network number from which VIPs are obtained.
        """
        return pulumi.get(self, "network_number")

    @property
    @pulumi.getter(name="scanName")
    def scan_name(self) -> str:
        """
        The name of the SCAN listener.
        """
        return pulumi.get(self, "scan_name")

    @property
    @pulumi.getter(name="scanPort")
    def scan_port(self) -> int:
        """
        The port number of the SCAN listener.
        """
        return pulumi.get(self, "scan_port")

    @property
    @pulumi.getter(name="scanProtocol")
    def scan_protocol(self) -> str:
        """
        The protocol of the SCAN listener.
        """
        return pulumi.get(self, "scan_protocol")


@pulumi.output_type
class GetExternalDbSystemDiscoveryDiscoveredComponentVipConfigurationResult(dict):
    def __init__(__self__, *,
                 address: str,
                 network_number: int,
                 node_name: str):
        """
        :param str address: The VIP name or IP address.
        :param int network_number: The network number from which VIPs are obtained.
        :param str node_name: The name of the node with the VIP.
        """
        pulumi.set(__self__, "address", address)
        pulumi.set(__self__, "network_number", network_number)
        pulumi.set(__self__, "node_name", node_name)

    @property
    @pulumi.getter
    def address(self) -> str:
        """
        The VIP name or IP address.
        """
        return pulumi.get(self, "address")

    @property
    @pulumi.getter(name="networkNumber")
    def network_number(self) -> int:
        """
        The network number from which VIPs are obtained.
        """
        return pulumi.get(self, "network_number")

    @property
    @pulumi.getter(name="nodeName")
    def node_name(self) -> str:
        """
        The name of the node with the VIP.
        """
        return pulumi.get(self, "node_name")


@pulumi.output_type
class GetExternalDbSystemDiscoveryPatchOperationResult(dict):
    def __init__(__self__, *,
                 operation: str,
                 selection: str,
                 values: Sequence['outputs.GetExternalDbSystemDiscoveryPatchOperationValueResult']):
        pulumi.set(__self__, "operation", operation)
        pulumi.set(__self__, "selection", selection)
        pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter
    def operation(self) -> str:
        return pulumi.get(self, "operation")

    @property
    @pulumi.getter
    def selection(self) -> str:
        return pulumi.get(self, "selection")

    @property
    @pulumi.getter
    def values(self) -> Sequence['outputs.GetExternalDbSystemDiscoveryPatchOperationValueResult']:
        return pulumi.get(self, "values")


@pulumi.output_type
class GetExternalDbSystemDiscoveryPatchOperationValueResult(dict):
    def __init__(__self__, *,
                 compartment_id: str,
                 connectors: Sequence['outputs.GetExternalDbSystemDiscoveryPatchOperationValueConnectorResult'],
                 display_name: str,
                 is_selected_for_monitoring: bool):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        :param Sequence['GetExternalDbSystemDiscoveryPatchOperationValueConnectorArgs'] connectors: The connector details used to connect to the external DB system component.
        :param str display_name: The user-friendly name for the DB system. The name does not have to be unique.
        :param bool is_selected_for_monitoring: Indicates whether the DB system component should be provisioned as an Oracle Cloud Infrastructure resource or not.
        """
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "connectors", connectors)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "is_selected_for_monitoring", is_selected_for_monitoring)

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

    @property
    @pulumi.getter
    def connectors(self) -> Sequence['outputs.GetExternalDbSystemDiscoveryPatchOperationValueConnectorResult']:
        """
        The connector details used to connect to the external DB system component.
        """
        return pulumi.get(self, "connectors")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        The user-friendly name for the DB system. The name does not have to be unique.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="isSelectedForMonitoring")
    def is_selected_for_monitoring(self) -> bool:
        """
        Indicates whether the DB system component should be provisioned as an Oracle Cloud Infrastructure resource or not.
        """
        return pulumi.get(self, "is_selected_for_monitoring")


@pulumi.output_type
class GetExternalDbSystemDiscoveryPatchOperationValueConnectorResult(dict):
    def __init__(__self__, *,
                 agent_id: str,
                 connection_infos: Sequence['outputs.GetExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoResult'],
                 connector_type: str,
                 display_name: str):
        """
        :param str agent_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used for the external DB system connector.
        :param Sequence['GetExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoArgs'] connection_infos: The connection details required to connect to an external DB system component.
        :param str connector_type: The type of connector.
        :param str display_name: The user-friendly name for the DB system. The name does not have to be unique.
        """
        pulumi.set(__self__, "agent_id", agent_id)
        pulumi.set(__self__, "connection_infos", connection_infos)
        pulumi.set(__self__, "connector_type", connector_type)
        pulumi.set(__self__, "display_name", display_name)

    @property
    @pulumi.getter(name="agentId")
    def agent_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used for the external DB system connector.
        """
        return pulumi.get(self, "agent_id")

    @property
    @pulumi.getter(name="connectionInfos")
    def connection_infos(self) -> Sequence['outputs.GetExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoResult']:
        """
        The connection details required to connect to an external DB system component.
        """
        return pulumi.get(self, "connection_infos")

    @property
    @pulumi.getter(name="connectorType")
    def connector_type(self) -> str:
        """
        The type of connector.
        """
        return pulumi.get(self, "connector_type")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        The user-friendly name for the DB system. The name does not have to be unique.
        """
        return pulumi.get(self, "display_name")


@pulumi.output_type
class GetExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoResult(dict):
    def __init__(__self__, *,
                 component_type: str,
                 connection_credentials: Sequence['outputs.GetExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoConnectionCredentialResult'],
                 connection_strings: Sequence['outputs.GetExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoConnectionStringResult']):
        """
        :param str component_type: The component type.
        :param Sequence['GetExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoConnectionCredentialArgs'] connection_credentials: The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        :param Sequence['GetExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoConnectionStringArgs'] connection_strings: The Oracle Database connection string.
        """
        pulumi.set(__self__, "component_type", component_type)
        pulumi.set(__self__, "connection_credentials", connection_credentials)
        pulumi.set(__self__, "connection_strings", connection_strings)

    @property
    @pulumi.getter(name="componentType")
    def component_type(self) -> str:
        """
        The component type.
        """
        return pulumi.get(self, "component_type")

    @property
    @pulumi.getter(name="connectionCredentials")
    def connection_credentials(self) -> Sequence['outputs.GetExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoConnectionCredentialResult']:
        """
        The credentials used to connect to the ASM instance. Currently only the `DETAILS` type is supported for creating MACS connector credentials.
        """
        return pulumi.get(self, "connection_credentials")

    @property
    @pulumi.getter(name="connectionStrings")
    def connection_strings(self) -> Sequence['outputs.GetExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoConnectionStringResult']:
        """
        The Oracle Database connection string.
        """
        return pulumi.get(self, "connection_strings")


@pulumi.output_type
class GetExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoConnectionCredentialResult(dict):
    def __init__(__self__, *,
                 credential_name: str,
                 credential_type: str,
                 password_secret_id: str,
                 role: str,
                 ssl_secret_id: str,
                 user_name: str):
        """
        :param str credential_name: The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        :param str credential_type: The type of credential used to connect to the ASM instance.
        :param str password_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        :param str role: The role of the user connecting to the ASM instance.
        :param str ssl_secret_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        :param str user_name: The user name used to connect to the ASM instance.
        """
        pulumi.set(__self__, "credential_name", credential_name)
        pulumi.set(__self__, "credential_type", credential_type)
        pulumi.set(__self__, "password_secret_id", password_secret_id)
        pulumi.set(__self__, "role", role)
        pulumi.set(__self__, "ssl_secret_id", ssl_secret_id)
        pulumi.set(__self__, "user_name", user_name)

    @property
    @pulumi.getter(name="credentialName")
    def credential_name(self) -> str:
        """
        The name of the credential information that used to connect to the DB system resource. The name should be in "x.y" format, where the length of "x" has a maximum of 64 characters, and length of "y" has a maximum of 199 characters. The name strings can contain letters, numbers and the underscore character only. Other characters are not valid, except for the "." character that separates the "x" and "y" portions of the name. *IMPORTANT* - The name must be unique within the Oracle Cloud Infrastructure region the credential is being created in. If you specify a name that duplicates the name of another credential within the same Oracle Cloud Infrastructure region, you may overwrite or corrupt the credential that is already using the name.
        """
        return pulumi.get(self, "credential_name")

    @property
    @pulumi.getter(name="credentialType")
    def credential_type(self) -> str:
        """
        The type of credential used to connect to the ASM instance.
        """
        return pulumi.get(self, "credential_type")

    @property
    @pulumi.getter(name="passwordSecretId")
    def password_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the user password.
        """
        return pulumi.get(self, "password_secret_id")

    @property
    @pulumi.getter
    def role(self) -> str:
        """
        The role of the user connecting to the ASM instance.
        """
        return pulumi.get(self, "role")

    @property
    @pulumi.getter(name="sslSecretId")
    def ssl_secret_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the secret containing the SSL keystore and truststore details.
        """
        return pulumi.get(self, "ssl_secret_id")

    @property
    @pulumi.getter(name="userName")
    def user_name(self) -> str:
        """
        The user name used to connect to the ASM instance.
        """
        return pulumi.get(self, "user_name")


@pulumi.output_type
class GetExternalDbSystemDiscoveryPatchOperationValueConnectorConnectionInfoConnectionStringResult(dict):
    def __init__(__self__, *,
                 host_name: str,
                 hosts: Sequence[str],
                 port: int,
                 protocol: str,
                 service: str):
        """
        :param str host_name: The host name of the database or the SCAN name in case of a RAC database.
        :param Sequence[str] hosts: The list of host names of the ASM instances.
        :param int port: The port used to connect to the ASM instance.
        :param str protocol: The protocol used to connect to the ASM instance.
        :param str service: The service name of the ASM instance.
        """
        pulumi.set(__self__, "host_name", host_name)
        pulumi.set(__self__, "hosts", hosts)
        pulumi.set(__self__, "port", port)
        pulumi.set(__self__, "protocol", protocol)
        pulumi.set(__self__, "service", service)

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> str:
        """
        The host name of the database or the SCAN name in case of a RAC database.
        """
        return pulumi.get(self, "host_name")

    @property
    @pulumi.getter
    def hosts(self) -> Sequence[str]:
        """
        The list of host names of the ASM instances.
        """
        return pulumi.get(self, "hosts")

    @property
    @pulumi.getter
    def port(self) -> int:
        """
        The port used to connect to the ASM instance.
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter
    def protocol(self) -> str:
        """
        The protocol used to connect to the ASM instance.
        """
        return pulumi.get(self, "protocol")

    @property
    @pulumi.getter
    def service(self) -> str:
        """
        The service name of the ASM instance.
        """
        return pulumi.get(self, "service")


@pulumi.output_type
class GetExternalDbSystemsExternalDbSystemCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetExternalDbSystemsExternalDbSystemCollectionItemResult']):
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetExternalDbSystemsExternalDbSystemCollectionItemResult']:
        return pulumi.get(self, "items")


@pulumi.output_type
class GetExternalDbSystemsExternalDbSystemCollectionItemResult(dict):
    def __init__(__self__, *,
                 compartment_id: str,
                 database_management_configs: Sequence['outputs.GetExternalDbSystemsExternalDbSystemCollectionItemDatabaseManagementConfigResult'],
                 db_system_discovery_id: str,
                 discovery_agent_id: str,
                 display_name: str,
                 home_directory: str,
                 id: str,
                 is_cluster: bool,
                 lifecycle_details: str,
                 state: str,
                 time_created: str,
                 time_updated: str):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        :param Sequence['GetExternalDbSystemsExternalDbSystemCollectionItemDatabaseManagementConfigArgs'] database_management_configs: The details required to enable Database Management for an external DB system.
        :param str db_system_discovery_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB system discovery.
        :param str discovery_agent_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used during the discovery of the DB system.
        :param str display_name: A filter to only return the resources that match the entire display name.
        :param str home_directory: The Oracle Grid home directory in case of cluster-based DB system and Oracle home directory in case of single instance-based DB system.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB system.
        :param bool is_cluster: Indicates whether the DB system is a cluster DB system or not.
        :param str lifecycle_details: Additional information about the current lifecycle state.
        :param str state: The current lifecycle state of the external DB system resource.
        :param str time_created: The date and time the external DB system was created.
        :param str time_updated: The date and time the external DB system was last updated.
        """
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "database_management_configs", database_management_configs)
        pulumi.set(__self__, "db_system_discovery_id", db_system_discovery_id)
        pulumi.set(__self__, "discovery_agent_id", discovery_agent_id)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "home_directory", home_directory)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "is_cluster", is_cluster)
        pulumi.set(__self__, "lifecycle_details", lifecycle_details)
        pulumi.set(__self__, "state", state)
        pulumi.set(__self__, "time_created", time_created)
        pulumi.set(__self__, "time_updated", time_updated)

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

    @property
    @pulumi.getter(name="databaseManagementConfigs")
    def database_management_configs(self) -> Sequence['outputs.GetExternalDbSystemsExternalDbSystemCollectionItemDatabaseManagementConfigResult']:
        """
        The details required to enable Database Management for an external DB system.
        """
        return pulumi.get(self, "database_management_configs")

    @property
    @pulumi.getter(name="dbSystemDiscoveryId")
    def db_system_discovery_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the DB system discovery.
        """
        return pulumi.get(self, "db_system_discovery_id")

    @property
    @pulumi.getter(name="discoveryAgentId")
    def discovery_agent_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the management agent used during the discovery of the DB system.
        """
        return pulumi.get(self, "discovery_agent_id")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        A filter to only return the resources that match the entire display name.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="homeDirectory")
    def home_directory(self) -> str:
        """
        The Oracle Grid home directory in case of cluster-based DB system and Oracle home directory in case of single instance-based DB system.
        """
        return pulumi.get(self, "home_directory")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB system.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="isCluster")
    def is_cluster(self) -> bool:
        """
        Indicates whether the DB system is a cluster DB system or not.
        """
        return pulumi.get(self, "is_cluster")

    @property
    @pulumi.getter(name="lifecycleDetails")
    def lifecycle_details(self) -> str:
        """
        Additional information about the current lifecycle state.
        """
        return pulumi.get(self, "lifecycle_details")

    @property
    @pulumi.getter
    def state(self) -> str:
        """
        The current lifecycle state of the external DB system resource.
        """
        return pulumi.get(self, "state")

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> str:
        """
        The date and time the external DB system was created.
        """
        return pulumi.get(self, "time_created")

    @property
    @pulumi.getter(name="timeUpdated")
    def time_updated(self) -> str:
        """
        The date and time the external DB system was last updated.
        """
        return pulumi.get(self, "time_updated")


@pulumi.output_type
class GetExternalDbSystemsExternalDbSystemCollectionItemDatabaseManagementConfigResult(dict):
    def __init__(__self__, *,
                 license_model: str):
        """
        :param str license_model: The Oracle license model that applies to the external database.
        """
        pulumi.set(__self__, "license_model", license_model)

    @property
    @pulumi.getter(name="licenseModel")
    def license_model(self) -> str:
        """
        The Oracle license model that applies to the external database.
        """
        return pulumi.get(self, "license_model")


@pulumi.output_type
class GetExternalDbSystemsFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetExternalListenerEndpointResult(dict):
    def __init__(__self__, *,
                 host: str,
                 key: str,
                 port: int,
                 protocol: str,
                 services: Sequence[str]):
        """
        :param str host: The host name or IP address.
        :param str key: The unique name of the service.
        :param int port: The port number.
        :param str protocol: The listener protocol.
        :param Sequence[str] services: The list of services registered with the listener.
        """
        pulumi.set(__self__, "host", host)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "port", port)
        pulumi.set(__self__, "protocol", protocol)
        pulumi.set(__self__, "services", services)

    @property
    @pulumi.getter
    def host(self) -> str:
        """
        The host name or IP address.
        """
        return pulumi.get(self, "host")

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        The unique name of the service.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def port(self) -> int:
        """
        The port number.
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter
    def protocol(self) -> str:
        """
        The listener protocol.
        """
        return pulumi.get(self, "protocol")

    @property
    @pulumi.getter
    def services(self) -> Sequence[str]:
        """
        The list of services registered with the listener.
        """
        return pulumi.get(self, "services")


@pulumi.output_type
class GetExternalListenerServicedAsmResult(dict):
    def __init__(__self__, *,
                 compartment_id: str,
                 display_name: str,
                 id: str):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the external database resides.
        :param str display_name: The user-friendly name for the database. The name does not have to be unique.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external database.
        """
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter(name="compartmentId")
    def compartment_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the external database resides.
        """
        return pulumi.get(self, "compartment_id")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        The user-friendly name for the database. The name does not have to be unique.
        """
        return pulumi.get(self, "display_name")

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


@pulumi.output_type
class GetExternalListenerServicedDatabaseResult(dict):
    def __init__(__self__, *,
                 compartment_id: str,
                 database_sub_type: str,
                 database_type: str,
                 db_unique_name: str,
                 display_name: str,
                 id: str,
                 is_managed: bool):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the external database resides.
        :param str database_sub_type: The subtype of Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, Non-container Database, Autonomous Database, or Autonomous Container Database.
        :param str database_type: The type of Oracle Database installation.
        :param str db_unique_name: The unique name of the external database.
        :param str display_name: The user-friendly name for the database. The name does not have to be unique.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external database.
        :param bool is_managed: Indicates whether the database is a Managed Database or not.
        """
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "database_sub_type", database_sub_type)
        pulumi.set(__self__, "database_type", database_type)
        pulumi.set(__self__, "db_unique_name", db_unique_name)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "is_managed", is_managed)

    @property
    @pulumi.getter(name="compartmentId")
    def compartment_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the external database resides.
        """
        return pulumi.get(self, "compartment_id")

    @property
    @pulumi.getter(name="databaseSubType")
    def database_sub_type(self) -> str:
        """
        The subtype of Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, Non-container Database, Autonomous Database, or Autonomous Container Database.
        """
        return pulumi.get(self, "database_sub_type")

    @property
    @pulumi.getter(name="databaseType")
    def database_type(self) -> str:
        """
        The type of Oracle Database installation.
        """
        return pulumi.get(self, "database_type")

    @property
    @pulumi.getter(name="dbUniqueName")
    def db_unique_name(self) -> str:
        """
        The unique name of the external database.
        """
        return pulumi.get(self, "db_unique_name")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        The user-friendly name for the database. The name does not have to be unique.
        """
        return pulumi.get(self, "display_name")

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

    @property
    @pulumi.getter(name="isManaged")
    def is_managed(self) -> bool:
        """
        Indicates whether the database is a Managed Database or not.
        """
        return pulumi.get(self, "is_managed")


@pulumi.output_type
class GetExternalListenerServicesExternalListenerServiceCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetExternalListenerServicesExternalListenerServiceCollectionItemResult']):
        """
        :param Sequence['GetExternalListenerServicesExternalListenerServiceCollectionItemArgs'] items: An array of external listener services.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetExternalListenerServicesExternalListenerServiceCollectionItemResult']:
        """
        An array of external listener services.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetExternalListenerServicesExternalListenerServiceCollectionItemResult(dict):
    def __init__(__self__, *,
                 listener_id: str,
                 managed_database_id: str,
                 name: str):
        """
        :param str listener_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external listener.
        :param str managed_database_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Managed Database.
        :param str name: The name of the service.
        """
        pulumi.set(__self__, "listener_id", listener_id)
        pulumi.set(__self__, "managed_database_id", managed_database_id)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter(name="listenerId")
    def listener_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external listener.
        """
        return pulumi.get(self, "listener_id")

    @property
    @pulumi.getter(name="managedDatabaseId")
    def managed_database_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Managed Database.
        """
        return pulumi.get(self, "managed_database_id")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the service.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetExternalListenerServicesFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: The name of the service.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the service.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetExternalListenersExternalListenerCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetExternalListenersExternalListenerCollectionItemResult']):
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetExternalListenersExternalListenerCollectionItemResult']:
        return pulumi.get(self, "items")


@pulumi.output_type
class GetExternalListenersExternalListenerCollectionItemResult(dict):
    def __init__(__self__, *,
                 additional_details: Mapping[str, Any],
                 adr_home_directory: str,
                 compartment_id: str,
                 component_name: str,
                 display_name: str,
                 endpoints: Sequence['outputs.GetExternalListenersExternalListenerCollectionItemEndpointResult'],
                 external_connector_id: str,
                 external_db_home_id: str,
                 external_db_node_id: str,
                 external_db_system_id: str,
                 external_listener_id: str,
                 host_name: str,
                 id: str,
                 lifecycle_details: str,
                 listener_alias: str,
                 listener_ora_location: str,
                 listener_type: str,
                 log_directory: str,
                 oracle_home: str,
                 serviced_asms: Sequence['outputs.GetExternalListenersExternalListenerCollectionItemServicedAsmResult'],
                 serviced_databases: Sequence['outputs.GetExternalListenersExternalListenerCollectionItemServicedDatabaseResult'],
                 state: str,
                 time_created: str,
                 time_updated: str,
                 trace_directory: str,
                 version: str):
        """
        :param Mapping[str, Any] additional_details: The additional details of the external listener defined in `{"key": "value"}` format. Example: `{"bar-key": "value"}`
        :param str adr_home_directory: The directory that stores tracing and logging incidents when Automatic Diagnostic Repository (ADR) is enabled.
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        :param str component_name: The name of the external listener.
        :param str display_name: A filter to only return the resources that match the entire display name.
        :param Sequence['GetExternalListenersExternalListenerCollectionItemEndpointArgs'] endpoints: The list of protocol addresses the listener is configured to listen on.
        :param str external_connector_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external connector.
        :param str external_db_home_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB home.
        :param str external_db_node_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB node.
        :param str external_db_system_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB system.
        :param str host_name: The name of the host on which the external listener is running.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external database.
        :param str lifecycle_details: Additional information about the current lifecycle state.
        :param str listener_alias: The listener alias.
        :param str listener_ora_location: The location of the listener configuration file listener.ora.
        :param str listener_type: The type of listener.
        :param str log_directory: The destination directory of the listener log file.
        :param str oracle_home: The Oracle home location of the listener.
        :param Sequence['GetExternalListenersExternalListenerCollectionItemServicedAsmArgs'] serviced_asms: The list of ASMs that are serviced by the listener.
        :param Sequence['GetExternalListenersExternalListenerCollectionItemServicedDatabaseArgs'] serviced_databases: The list of databases that are serviced by the listener.
        :param str state: The current lifecycle state of the external listener.
        :param str time_created: The date and time the external listener was created.
        :param str time_updated: The date and time the external listener was last updated.
        :param str trace_directory: The destination directory of the listener trace file.
        :param str version: The listener version.
        """
        pulumi.set(__self__, "additional_details", additional_details)
        pulumi.set(__self__, "adr_home_directory", adr_home_directory)
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "component_name", component_name)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "endpoints", endpoints)
        pulumi.set(__self__, "external_connector_id", external_connector_id)
        pulumi.set(__self__, "external_db_home_id", external_db_home_id)
        pulumi.set(__self__, "external_db_node_id", external_db_node_id)
        pulumi.set(__self__, "external_db_system_id", external_db_system_id)
        pulumi.set(__self__, "external_listener_id", external_listener_id)
        pulumi.set(__self__, "host_name", host_name)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "lifecycle_details", lifecycle_details)
        pulumi.set(__self__, "listener_alias", listener_alias)
        pulumi.set(__self__, "listener_ora_location", listener_ora_location)
        pulumi.set(__self__, "listener_type", listener_type)
        pulumi.set(__self__, "log_directory", log_directory)
        pulumi.set(__self__, "oracle_home", oracle_home)
        pulumi.set(__self__, "serviced_asms", serviced_asms)
        pulumi.set(__self__, "serviced_databases", serviced_databases)
        pulumi.set(__self__, "state", state)
        pulumi.set(__self__, "time_created", time_created)
        pulumi.set(__self__, "time_updated", time_updated)
        pulumi.set(__self__, "trace_directory", trace_directory)
        pulumi.set(__self__, "version", version)

    @property
    @pulumi.getter(name="additionalDetails")
    def additional_details(self) -> Mapping[str, Any]:
        """
        The additional details of the external listener defined in `{"key": "value"}` format. Example: `{"bar-key": "value"}`
        """
        return pulumi.get(self, "additional_details")

    @property
    @pulumi.getter(name="adrHomeDirectory")
    def adr_home_directory(self) -> str:
        """
        The directory that stores tracing and logging incidents when Automatic Diagnostic Repository (ADR) is enabled.
        """
        return pulumi.get(self, "adr_home_directory")

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

    @property
    @pulumi.getter(name="componentName")
    def component_name(self) -> str:
        """
        The name of the external listener.
        """
        return pulumi.get(self, "component_name")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        A filter to only return the resources that match the entire display name.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter
    def endpoints(self) -> Sequence['outputs.GetExternalListenersExternalListenerCollectionItemEndpointResult']:
        """
        The list of protocol addresses the listener is configured to listen on.
        """
        return pulumi.get(self, "endpoints")

    @property
    @pulumi.getter(name="externalConnectorId")
    def external_connector_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external connector.
        """
        return pulumi.get(self, "external_connector_id")

    @property
    @pulumi.getter(name="externalDbHomeId")
    def external_db_home_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB home.
        """
        return pulumi.get(self, "external_db_home_id")

    @property
    @pulumi.getter(name="externalDbNodeId")
    def external_db_node_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB node.
        """
        return pulumi.get(self, "external_db_node_id")

    @property
    @pulumi.getter(name="externalDbSystemId")
    def external_db_system_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB system.
        """
        return pulumi.get(self, "external_db_system_id")

    @property
    @pulumi.getter(name="externalListenerId")
    def external_listener_id(self) -> str:
        return pulumi.get(self, "external_listener_id")

    @property
    @pulumi.getter(name="hostName")
    def host_name(self) -> str:
        """
        The name of the host on which the external listener is running.
        """
        return pulumi.get(self, "host_name")

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

    @property
    @pulumi.getter(name="lifecycleDetails")
    def lifecycle_details(self) -> str:
        """
        Additional information about the current lifecycle state.
        """
        return pulumi.get(self, "lifecycle_details")

    @property
    @pulumi.getter(name="listenerAlias")
    def listener_alias(self) -> str:
        """
        The listener alias.
        """
        return pulumi.get(self, "listener_alias")

    @property
    @pulumi.getter(name="listenerOraLocation")
    def listener_ora_location(self) -> str:
        """
        The location of the listener configuration file listener.ora.
        """
        return pulumi.get(self, "listener_ora_location")

    @property
    @pulumi.getter(name="listenerType")
    def listener_type(self) -> str:
        """
        The type of listener.
        """
        return pulumi.get(self, "listener_type")

    @property
    @pulumi.getter(name="logDirectory")
    def log_directory(self) -> str:
        """
        The destination directory of the listener log file.
        """
        return pulumi.get(self, "log_directory")

    @property
    @pulumi.getter(name="oracleHome")
    def oracle_home(self) -> str:
        """
        The Oracle home location of the listener.
        """
        return pulumi.get(self, "oracle_home")

    @property
    @pulumi.getter(name="servicedAsms")
    def serviced_asms(self) -> Sequence['outputs.GetExternalListenersExternalListenerCollectionItemServicedAsmResult']:
        """
        The list of ASMs that are serviced by the listener.
        """
        return pulumi.get(self, "serviced_asms")

    @property
    @pulumi.getter(name="servicedDatabases")
    def serviced_databases(self) -> Sequence['outputs.GetExternalListenersExternalListenerCollectionItemServicedDatabaseResult']:
        """
        The list of databases that are serviced by the listener.
        """
        return pulumi.get(self, "serviced_databases")

    @property
    @pulumi.getter
    def state(self) -> str:
        """
        The current lifecycle state of the external listener.
        """
        return pulumi.get(self, "state")

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> str:
        """
        The date and time the external listener was created.
        """
        return pulumi.get(self, "time_created")

    @property
    @pulumi.getter(name="timeUpdated")
    def time_updated(self) -> str:
        """
        The date and time the external listener was last updated.
        """
        return pulumi.get(self, "time_updated")

    @property
    @pulumi.getter(name="traceDirectory")
    def trace_directory(self) -> str:
        """
        The destination directory of the listener trace file.
        """
        return pulumi.get(self, "trace_directory")

    @property
    @pulumi.getter
    def version(self) -> str:
        """
        The listener version.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GetExternalListenersExternalListenerCollectionItemEndpointResult(dict):
    def __init__(__self__, *,
                 host: str,
                 key: str,
                 port: int,
                 protocol: str,
                 services: Sequence[str]):
        """
        :param str host: The host name or IP address.
        :param str key: The unique name of the service.
        :param int port: The port number.
        :param str protocol: The listener protocol.
        :param Sequence[str] services: The list of services registered with the listener.
        """
        pulumi.set(__self__, "host", host)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "port", port)
        pulumi.set(__self__, "protocol", protocol)
        pulumi.set(__self__, "services", services)

    @property
    @pulumi.getter
    def host(self) -> str:
        """
        The host name or IP address.
        """
        return pulumi.get(self, "host")

    @property
    @pulumi.getter
    def key(self) -> str:
        """
        The unique name of the service.
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def port(self) -> int:
        """
        The port number.
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter
    def protocol(self) -> str:
        """
        The listener protocol.
        """
        return pulumi.get(self, "protocol")

    @property
    @pulumi.getter
    def services(self) -> Sequence[str]:
        """
        The list of services registered with the listener.
        """
        return pulumi.get(self, "services")


@pulumi.output_type
class GetExternalListenersExternalListenerCollectionItemServicedAsmResult(dict):
    def __init__(__self__, *,
                 compartment_id: str,
                 display_name: str,
                 id: str):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        :param str display_name: A filter to only return the resources that match the entire display name.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external database.
        """
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "id", id)

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

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        A filter to only return the resources that match the entire display name.
        """
        return pulumi.get(self, "display_name")

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


@pulumi.output_type
class GetExternalListenersExternalListenerCollectionItemServicedDatabaseResult(dict):
    def __init__(__self__, *,
                 compartment_id: str,
                 database_sub_type: str,
                 database_type: str,
                 db_unique_name: str,
                 display_name: str,
                 id: str,
                 is_managed: bool):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        :param str database_sub_type: The subtype of Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, Non-container Database, Autonomous Database, or Autonomous Container Database.
        :param str database_type: The type of Oracle Database installation.
        :param str db_unique_name: The unique name of the external database.
        :param str display_name: A filter to only return the resources that match the entire display name.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external database.
        :param bool is_managed: Indicates whether the database is a Managed Database or not.
        """
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "database_sub_type", database_sub_type)
        pulumi.set(__self__, "database_type", database_type)
        pulumi.set(__self__, "db_unique_name", db_unique_name)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "is_managed", is_managed)

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

    @property
    @pulumi.getter(name="databaseSubType")
    def database_sub_type(self) -> str:
        """
        The subtype of Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, Non-container Database, Autonomous Database, or Autonomous Container Database.
        """
        return pulumi.get(self, "database_sub_type")

    @property
    @pulumi.getter(name="databaseType")
    def database_type(self) -> str:
        """
        The type of Oracle Database installation.
        """
        return pulumi.get(self, "database_type")

    @property
    @pulumi.getter(name="dbUniqueName")
    def db_unique_name(self) -> str:
        """
        The unique name of the external database.
        """
        return pulumi.get(self, "db_unique_name")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        A filter to only return the resources that match the entire display name.
        """
        return pulumi.get(self, "display_name")

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

    @property
    @pulumi.getter(name="isManaged")
    def is_managed(self) -> bool:
        """
        Indicates whether the database is a Managed Database or not.
        """
        return pulumi.get(self, "is_managed")


@pulumi.output_type
class GetExternalListenersFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetJobExecutionsStatusItemResult(dict):
    def __init__(__self__, *,
                 count: int,
                 status: str):
        """
        :param int count: The number of job executions of a particular status.
        :param str status: The status of the job execution.
        """
        pulumi.set(__self__, "count", count)
        pulumi.set(__self__, "status", status)

    @property
    @pulumi.getter
    def count(self) -> int:
        """
        The number of job executions of a particular status.
        """
        return pulumi.get(self, "count")

    @property
    @pulumi.getter
    def status(self) -> str:
        """
        The status of the job execution.
        """
        return pulumi.get(self, "status")


@pulumi.output_type
class GetJobExecutionsStatusesFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: A filter to return only resources that match the entire name.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetJobExecutionsStatusesJobExecutionsStatusSummaryCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetJobExecutionsStatusesJobExecutionsStatusSummaryCollectionItemResult']):
        """
        :param Sequence['GetJobExecutionsStatusesJobExecutionsStatusSummaryCollectionItemArgs'] items: A list of JobExecutionsSummary objects.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetJobExecutionsStatusesJobExecutionsStatusSummaryCollectionItemResult']:
        """
        A list of JobExecutionsSummary objects.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetJobExecutionsStatusesJobExecutionsStatusSummaryCollectionItemResult(dict):
    def __init__(__self__, *,
                 count: int,
                 status: str):
        """
        :param int count: The number of job executions of a particular status.
        :param str status: The status of the job execution.
        """
        pulumi.set(__self__, "count", count)
        pulumi.set(__self__, "status", status)

    @property
    @pulumi.getter
    def count(self) -> int:
        """
        The number of job executions of a particular status.
        """
        return pulumi.get(self, "count")

    @property
    @pulumi.getter
    def status(self) -> str:
        """
        The status of the job execution.
        """
        return pulumi.get(self, "status")


@pulumi.output_type
class GetManagedDatabaseAddmTaskItemResult(dict):
    def __init__(__self__, *,
                 begin_snapshot_id: str,
                 db_user: str,
                 description: str,
                 end_snapshot_id: str,
                 end_snapshot_time: str,
                 findings: str,
                 how_created: str,
                 start_snapshot_time: str,
                 status: str,
                 task_id: str,
                 task_name: str,
                 time_created: str):
        """
        :param str begin_snapshot_id: The ID number of the beginning AWR snapshot.
        :param str db_user: The database user who owns the ADDM task.
        :param str description: The description of the ADDM task.
        :param str end_snapshot_id: The ID number of the ending AWR snapshot.
        :param str end_snapshot_time: The timestamp of the ending AWR snapshot used in the ADDM task as defined by date-time RFC3339 format.
        :param str findings: The number of ADDM findings.
        :param str how_created: A description of how the task was created.
        :param str start_snapshot_time: The timestamp of the beginning AWR snapshot used in the ADDM task as defined by date-time RFC3339 format.
        :param str status: The status of the ADDM task.
        :param str task_id: The ID number of the ADDM task.
        :param str task_name: The name of the ADDM task.
        :param str time_created: The creation date of the ADDM task.
        """
        pulumi.set(__self__, "begin_snapshot_id", begin_snapshot_id)
        pulumi.set(__self__, "db_user", db_user)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "end_snapshot_id", end_snapshot_id)
        pulumi.set(__self__, "end_snapshot_time", end_snapshot_time)
        pulumi.set(__self__, "findings", findings)
        pulumi.set(__self__, "how_created", how_created)
        pulumi.set(__self__, "start_snapshot_time", start_snapshot_time)
        pulumi.set(__self__, "status", status)
        pulumi.set(__self__, "task_id", task_id)
        pulumi.set(__self__, "task_name", task_name)
        pulumi.set(__self__, "time_created", time_created)

    @property
    @pulumi.getter(name="beginSnapshotId")
    def begin_snapshot_id(self) -> str:
        """
        The ID number of the beginning AWR snapshot.
        """
        return pulumi.get(self, "begin_snapshot_id")

    @property
    @pulumi.getter(name="dbUser")
    def db_user(self) -> str:
        """
        The database user who owns the ADDM task.
        """
        return pulumi.get(self, "db_user")

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        The description of the ADDM task.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="endSnapshotId")
    def end_snapshot_id(self) -> str:
        """
        The ID number of the ending AWR snapshot.
        """
        return pulumi.get(self, "end_snapshot_id")

    @property
    @pulumi.getter(name="endSnapshotTime")
    def end_snapshot_time(self) -> str:
        """
        The timestamp of the ending AWR snapshot used in the ADDM task as defined by date-time RFC3339 format.
        """
        return pulumi.get(self, "end_snapshot_time")

    @property
    @pulumi.getter
    def findings(self) -> str:
        """
        The number of ADDM findings.
        """
        return pulumi.get(self, "findings")

    @property
    @pulumi.getter(name="howCreated")
    def how_created(self) -> str:
        """
        A description of how the task was created.
        """
        return pulumi.get(self, "how_created")

    @property
    @pulumi.getter(name="startSnapshotTime")
    def start_snapshot_time(self) -> str:
        """
        The timestamp of the beginning AWR snapshot used in the ADDM task as defined by date-time RFC3339 format.
        """
        return pulumi.get(self, "start_snapshot_time")

    @property
    @pulumi.getter
    def status(self) -> str:
        """
        The status of the ADDM task.
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter(name="taskId")
    def task_id(self) -> str:
        """
        The ID number of the ADDM task.
        """
        return pulumi.get(self, "task_id")

    @property
    @pulumi.getter(name="taskName")
    def task_name(self) -> str:
        """
        The name of the ADDM task.
        """
        return pulumi.get(self, "task_name")

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> str:
        """
        The creation date of the ADDM task.
        """
        return pulumi.get(self, "time_created")


@pulumi.output_type
class GetManagedDatabaseAddmTasksAddmTasksCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetManagedDatabaseAddmTasksAddmTasksCollectionItemResult']):
        """
        :param Sequence['GetManagedDatabaseAddmTasksAddmTasksCollectionItemArgs'] items: The list of ADDM task metadata.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetManagedDatabaseAddmTasksAddmTasksCollectionItemResult']:
        """
        The list of ADDM task metadata.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetManagedDatabaseAddmTasksAddmTasksCollectionItemResult(dict):
    def __init__(__self__, *,
                 begin_snapshot_id: str,
                 db_user: str,
                 description: str,
                 end_snapshot_id: str,
                 end_snapshot_time: str,
                 findings: str,
                 how_created: str,
                 start_snapshot_time: str,
                 status: str,
                 task_id: str,
                 task_name: str,
                 time_created: str):
        """
        :param str begin_snapshot_id: The ID number of the beginning AWR snapshot.
        :param str db_user: The database user who owns the ADDM task.
        :param str description: The description of the ADDM task.
        :param str end_snapshot_id: The ID number of the ending AWR snapshot.
        :param str end_snapshot_time: The timestamp of the ending AWR snapshot used in the ADDM task as defined by date-time RFC3339 format.
        :param str findings: The number of ADDM findings.
        :param str how_created: A description of how the task was created.
        :param str start_snapshot_time: The timestamp of the beginning AWR snapshot used in the ADDM task as defined by date-time RFC3339 format.
        :param str status: The status of the ADDM task.
        :param str task_id: The ID number of the ADDM task.
        :param str task_name: The name of the ADDM task.
        :param str time_created: The creation date of the ADDM task.
        """
        pulumi.set(__self__, "begin_snapshot_id", begin_snapshot_id)
        pulumi.set(__self__, "db_user", db_user)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "end_snapshot_id", end_snapshot_id)
        pulumi.set(__self__, "end_snapshot_time", end_snapshot_time)
        pulumi.set(__self__, "findings", findings)
        pulumi.set(__self__, "how_created", how_created)
        pulumi.set(__self__, "start_snapshot_time", start_snapshot_time)
        pulumi.set(__self__, "status", status)
        pulumi.set(__self__, "task_id", task_id)
        pulumi.set(__self__, "task_name", task_name)
        pulumi.set(__self__, "time_created", time_created)

    @property
    @pulumi.getter(name="beginSnapshotId")
    def begin_snapshot_id(self) -> str:
        """
        The ID number of the beginning AWR snapshot.
        """
        return pulumi.get(self, "begin_snapshot_id")

    @property
    @pulumi.getter(name="dbUser")
    def db_user(self) -> str:
        """
        The database user who owns the ADDM task.
        """
        return pulumi.get(self, "db_user")

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        The description of the ADDM task.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="endSnapshotId")
    def end_snapshot_id(self) -> str:
        """
        The ID number of the ending AWR snapshot.
        """
        return pulumi.get(self, "end_snapshot_id")

    @property
    @pulumi.getter(name="endSnapshotTime")
    def end_snapshot_time(self) -> str:
        """
        The timestamp of the ending AWR snapshot used in the ADDM task as defined by date-time RFC3339 format.
        """
        return pulumi.get(self, "end_snapshot_time")

    @property
    @pulumi.getter
    def findings(self) -> str:
        """
        The number of ADDM findings.
        """
        return pulumi.get(self, "findings")

    @property
    @pulumi.getter(name="howCreated")
    def how_created(self) -> str:
        """
        A description of how the task was created.
        """
        return pulumi.get(self, "how_created")

    @property
    @pulumi.getter(name="startSnapshotTime")
    def start_snapshot_time(self) -> str:
        """
        The timestamp of the beginning AWR snapshot used in the ADDM task as defined by date-time RFC3339 format.
        """
        return pulumi.get(self, "start_snapshot_time")

    @property
    @pulumi.getter
    def status(self) -> str:
        """
        The status of the ADDM task.
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter(name="taskId")
    def task_id(self) -> str:
        """
        The ID number of the ADDM task.
        """
        return pulumi.get(self, "task_id")

    @property
    @pulumi.getter(name="taskName")
    def task_name(self) -> str:
        """
        The name of the ADDM task.
        """
        return pulumi.get(self, "task_name")

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> str:
        """
        The creation date of the ADDM task.
        """
        return pulumi.get(self, "time_created")


@pulumi.output_type
class GetManagedDatabaseAddmTasksFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetManagedDatabaseAlertLogCountItemResult(dict):
    def __init__(__self__, *,
                 category: str,
                 count: int):
        """
        :param str category: The category of different alert logs.
        :param int count: The count of alert logs with specific category.
        """
        pulumi.set(__self__, "category", category)
        pulumi.set(__self__, "count", count)

    @property
    @pulumi.getter
    def category(self) -> str:
        """
        The category of different alert logs.
        """
        return pulumi.get(self, "category")

    @property
    @pulumi.getter
    def count(self) -> int:
        """
        The count of alert logs with specific category.
        """
        return pulumi.get(self, "count")


@pulumi.output_type
class GetManagedDatabaseAlertLogCountsAlertLogCountsCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetManagedDatabaseAlertLogCountsAlertLogCountsCollectionItemResult']):
        """
        :param Sequence['GetManagedDatabaseAlertLogCountsAlertLogCountsCollectionItemArgs'] items: An array of the counts of different urgency or type of alert logs.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetManagedDatabaseAlertLogCountsAlertLogCountsCollectionItemResult']:
        """
        An array of the counts of different urgency or type of alert logs.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetManagedDatabaseAlertLogCountsAlertLogCountsCollectionItemResult(dict):
    def __init__(__self__, *,
                 category: str,
                 count: int):
        """
        :param str category: The category of different alert logs.
        :param int count: The count of alert logs with specific category.
        """
        pulumi.set(__self__, "category", category)
        pulumi.set(__self__, "count", count)

    @property
    @pulumi.getter
    def category(self) -> str:
        """
        The category of different alert logs.
        """
        return pulumi.get(self, "category")

    @property
    @pulumi.getter
    def count(self) -> int:
        """
        The count of alert logs with specific category.
        """
        return pulumi.get(self, "count")


@pulumi.output_type
class GetManagedDatabaseAlertLogCountsFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetManagedDatabaseAttentionLogCountItemResult(dict):
    def __init__(__self__, *,
                 category: str,
                 count: int):
        """
        :param str category: The category of different attention logs.
        :param int count: The count of attention logs with specific category.
        """
        pulumi.set(__self__, "category", category)
        pulumi.set(__self__, "count", count)

    @property
    @pulumi.getter
    def category(self) -> str:
        """
        The category of different attention logs.
        """
        return pulumi.get(self, "category")

    @property
    @pulumi.getter
    def count(self) -> int:
        """
        The count of attention logs with specific category.
        """
        return pulumi.get(self, "count")


@pulumi.output_type
class GetManagedDatabaseAttentionLogCountsAttentionLogCountsCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetManagedDatabaseAttentionLogCountsAttentionLogCountsCollectionItemResult']):
        """
        :param Sequence['GetManagedDatabaseAttentionLogCountsAttentionLogCountsCollectionItemArgs'] items: An array of the counts of different urgency or type of attention logs.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetManagedDatabaseAttentionLogCountsAttentionLogCountsCollectionItemResult']:
        """
        An array of the counts of different urgency or type of attention logs.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetManagedDatabaseAttentionLogCountsAttentionLogCountsCollectionItemResult(dict):
    def __init__(__self__, *,
                 category: str,
                 count: int):
        """
        :param str category: The category of different attention logs.
        :param int count: The count of attention logs with specific category.
        """
        pulumi.set(__self__, "category", category)
        pulumi.set(__self__, "count", count)

    @property
    @pulumi.getter
    def category(self) -> str:
        """
        The category of different attention logs.
        """
        return pulumi.get(self, "category")

    @property
    @pulumi.getter
    def count(self) -> int:
        """
        The count of attention logs with specific category.
        """
        return pulumi.get(self, "count")


@pulumi.output_type
class GetManagedDatabaseAttentionLogCountsFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetManagedDatabaseGroupManagedDatabaseResult(dict):
    def __init__(__self__, *,
                 compartment_id: str,
                 database_sub_type: str,
                 database_type: str,
                 deployment_type: str,
                 id: str,
                 name: str,
                 time_added: str,
                 workload_type: str):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the Managed Database resides.
        :param str database_sub_type: The subtype of the Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, Non-container Database, Autonomous Database, or Autonomous Container Database.
        :param str database_type: The type of Oracle Database installation.
        :param str deployment_type: The infrastructure used to deploy the Oracle Database.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Managed Database.
        :param str name: The name of the Managed Database Group.
        :param str time_added: The date and time the Managed Database was added to the group.
        :param str workload_type: The workload type of the Autonomous Database.
        """
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "database_sub_type", database_sub_type)
        pulumi.set(__self__, "database_type", database_type)
        pulumi.set(__self__, "deployment_type", deployment_type)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "time_added", time_added)
        pulumi.set(__self__, "workload_type", workload_type)

    @property
    @pulumi.getter(name="compartmentId")
    def compartment_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the Managed Database resides.
        """
        return pulumi.get(self, "compartment_id")

    @property
    @pulumi.getter(name="databaseSubType")
    def database_sub_type(self) -> str:
        """
        The subtype of the Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, Non-container Database, Autonomous Database, or Autonomous Container Database.
        """
        return pulumi.get(self, "database_sub_type")

    @property
    @pulumi.getter(name="databaseType")
    def database_type(self) -> str:
        """
        The type of Oracle Database installation.
        """
        return pulumi.get(self, "database_type")

    @property
    @pulumi.getter(name="deploymentType")
    def deployment_type(self) -> str:
        """
        The infrastructure used to deploy the Oracle Database.
        """
        return pulumi.get(self, "deployment_type")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Managed Database.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the Managed Database Group.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="timeAdded")
    def time_added(self) -> str:
        """
        The date and time the Managed Database was added to the group.
        """
        return pulumi.get(self, "time_added")

    @property
    @pulumi.getter(name="workloadType")
    def workload_type(self) -> str:
        """
        The workload type of the Autonomous Database.
        """
        return pulumi.get(self, "workload_type")


@pulumi.output_type
class GetManagedDatabaseGroupsFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: A filter to return only resources that match the entire name. Only one of the parameters, id or name should be provided
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name. Only one of the parameters, id or name should be provided
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetManagedDatabaseGroupsManagedDatabaseGroupCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetManagedDatabaseGroupsManagedDatabaseGroupCollectionItemResult']):
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetManagedDatabaseGroupsManagedDatabaseGroupCollectionItemResult']:
        return pulumi.get(self, "items")


@pulumi.output_type
class GetManagedDatabaseGroupsManagedDatabaseGroupCollectionItemResult(dict):
    def __init__(__self__, *,
                 compartment_id: str,
                 description: str,
                 id: str,
                 managed_databases: Sequence['outputs.GetManagedDatabaseGroupsManagedDatabaseGroupCollectionItemManagedDatabaseResult'],
                 name: str,
                 state: str,
                 time_created: str,
                 time_updated: str):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        :param str description: The information specified by the user about the Managed Database Group.
        :param str id: The identifier of the resource. Only one of the parameters, id or name should be provided.
        :param Sequence['GetManagedDatabaseGroupsManagedDatabaseGroupCollectionItemManagedDatabaseArgs'] managed_databases: A list of Managed Databases in the Managed Database Group.
        :param str name: A filter to return only resources that match the entire name. Only one of the parameters, id or name should be provided
        :param str state: The lifecycle state of a resource.
        :param str time_created: The date and time the Managed Database Group was created.
        :param str time_updated: The date and time the Managed Database Group was last updated.
        """
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "managed_databases", managed_databases)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "state", state)
        pulumi.set(__self__, "time_created", time_created)
        pulumi.set(__self__, "time_updated", time_updated)

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

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        The information specified by the user about the Managed Database Group.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The identifier of the resource. Only one of the parameters, id or name should be provided.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="managedDatabases")
    def managed_databases(self) -> Sequence['outputs.GetManagedDatabaseGroupsManagedDatabaseGroupCollectionItemManagedDatabaseResult']:
        """
        A list of Managed Databases in the Managed Database Group.
        """
        return pulumi.get(self, "managed_databases")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name. Only one of the parameters, id or name should be provided
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def state(self) -> str:
        """
        The lifecycle state of a resource.
        """
        return pulumi.get(self, "state")

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> str:
        """
        The date and time the Managed Database Group was created.
        """
        return pulumi.get(self, "time_created")

    @property
    @pulumi.getter(name="timeUpdated")
    def time_updated(self) -> str:
        """
        The date and time the Managed Database Group was last updated.
        """
        return pulumi.get(self, "time_updated")


@pulumi.output_type
class GetManagedDatabaseGroupsManagedDatabaseGroupCollectionItemManagedDatabaseResult(dict):
    def __init__(__self__, *,
                 compartment_id: str,
                 database_sub_type: str,
                 database_type: str,
                 deployment_type: str,
                 id: str,
                 name: str,
                 time_added: str,
                 workload_type: str):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        :param str database_sub_type: The subtype of the Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, Non-container Database, Autonomous Database, or Autonomous Container Database.
        :param str database_type: The type of Oracle Database installation.
        :param str deployment_type: The infrastructure used to deploy the Oracle Database.
        :param str id: The identifier of the resource. Only one of the parameters, id or name should be provided.
        :param str name: A filter to return only resources that match the entire name. Only one of the parameters, id or name should be provided
        :param str time_added: The date and time the Managed Database was added to the group.
        :param str workload_type: The workload type of the Autonomous Database.
        """
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "database_sub_type", database_sub_type)
        pulumi.set(__self__, "database_type", database_type)
        pulumi.set(__self__, "deployment_type", deployment_type)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "time_added", time_added)
        pulumi.set(__self__, "workload_type", workload_type)

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

    @property
    @pulumi.getter(name="databaseSubType")
    def database_sub_type(self) -> str:
        """
        The subtype of the Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, Non-container Database, Autonomous Database, or Autonomous Container Database.
        """
        return pulumi.get(self, "database_sub_type")

    @property
    @pulumi.getter(name="databaseType")
    def database_type(self) -> str:
        """
        The type of Oracle Database installation.
        """
        return pulumi.get(self, "database_type")

    @property
    @pulumi.getter(name="deploymentType")
    def deployment_type(self) -> str:
        """
        The infrastructure used to deploy the Oracle Database.
        """
        return pulumi.get(self, "deployment_type")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The identifier of the resource. Only one of the parameters, id or name should be provided.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name. Only one of the parameters, id or name should be provided
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="timeAdded")
    def time_added(self) -> str:
        """
        The date and time the Managed Database was added to the group.
        """
        return pulumi.get(self, "time_added")

    @property
    @pulumi.getter(name="workloadType")
    def workload_type(self) -> str:
        """
        The workload type of the Autonomous Database.
        """
        return pulumi.get(self, "workload_type")


@pulumi.output_type
class GetManagedDatabaseManagedDatabaseGroupResult(dict):
    def __init__(__self__, *,
                 compartment_id: str,
                 id: str,
                 name: str):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the Managed Database Group resides.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Managed Database Group.
        :param str name: The name of the Managed Database.
        """
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter(name="compartmentId")
    def compartment_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the Managed Database Group resides.
        """
        return pulumi.get(self, "compartment_id")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Managed Database Group.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the Managed Database.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsAdvisorExecutionDatabaseResult(dict):
    def __init__(__self__, *,
                 compartment_id: str,
                 db_deployment_type: str,
                 db_sub_type: str,
                 db_type: str,
                 db_version: str,
                 id: str,
                 name: str):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the Managed Database resides.
        :param str db_deployment_type: The infrastructure used to deploy the Oracle Database.
        :param str db_sub_type: The subtype of the Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, Non-container Database, Autonomous Database, or Autonomous Container Database.
        :param str db_type: The type of Oracle Database installation.
        :param str db_version: The version of the Oracle Database.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Managed Database.
        :param str name: The name of the rule.
        """
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "db_deployment_type", db_deployment_type)
        pulumi.set(__self__, "db_sub_type", db_sub_type)
        pulumi.set(__self__, "db_type", db_type)
        pulumi.set(__self__, "db_version", db_version)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter(name="compartmentId")
    def compartment_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the Managed Database resides.
        """
        return pulumi.get(self, "compartment_id")

    @property
    @pulumi.getter(name="dbDeploymentType")
    def db_deployment_type(self) -> str:
        """
        The infrastructure used to deploy the Oracle Database.
        """
        return pulumi.get(self, "db_deployment_type")

    @property
    @pulumi.getter(name="dbSubType")
    def db_sub_type(self) -> str:
        """
        The subtype of the Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, Non-container Database, Autonomous Database, or Autonomous Container Database.
        """
        return pulumi.get(self, "db_sub_type")

    @property
    @pulumi.getter(name="dbType")
    def db_type(self) -> str:
        """
        The type of Oracle Database installation.
        """
        return pulumi.get(self, "db_type")

    @property
    @pulumi.getter(name="dbVersion")
    def db_version(self) -> str:
        """
        The version of the Oracle Database.
        """
        return pulumi.get(self, "db_version")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Managed Database.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the rule.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportResult(dict):
    def __init__(__self__, *,
                 rules: Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleResult'],
                 summary: str):
        """
        :param Sequence['GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleArgs'] rules: The list of rules that were not adhered to by the Optimizer Statistics Collection.
        :param str summary: A summary of the Optimizer Statistics Advisor execution.
        """
        pulumi.set(__self__, "rules", rules)
        pulumi.set(__self__, "summary", summary)

    @property
    @pulumi.getter
    def rules(self) -> Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleResult']:
        """
        The list of rules that were not adhered to by the Optimizer Statistics Collection.
        """
        return pulumi.get(self, "rules")

    @property
    @pulumi.getter
    def summary(self) -> str:
        """
        A summary of the Optimizer Statistics Advisor execution.
        """
        return pulumi.get(self, "summary")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleResult(dict):
    def __init__(__self__, *,
                 description: str,
                 findings: Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingResult'],
                 name: str):
        """
        :param str description: The description of the rule.
        :param Sequence['GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingArgs'] findings: The list of findings for the rule.
        :param str name: The name of the rule.
        """
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "findings", findings)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        The description of the rule.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def findings(self) -> Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingResult']:
        """
        The list of findings for the rule.
        """
        return pulumi.get(self, "findings")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the rule.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingResult(dict):
    def __init__(__self__, *,
                 details: Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingDetailResult'],
                 message: str,
                 recommendations: Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingRecommendationResult']):
        """
        :param Sequence['GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingDetailArgs'] details: The details of the schema or operation.
        :param str message: The message of the rationale.
        :param Sequence['GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingRecommendationArgs'] recommendations: The list of recommendations.
        """
        pulumi.set(__self__, "details", details)
        pulumi.set(__self__, "message", message)
        pulumi.set(__self__, "recommendations", recommendations)

    @property
    @pulumi.getter
    def details(self) -> Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingDetailResult']:
        """
        The details of the schema or operation.
        """
        return pulumi.get(self, "details")

    @property
    @pulumi.getter
    def message(self) -> str:
        """
        The message of the rationale.
        """
        return pulumi.get(self, "message")

    @property
    @pulumi.getter
    def recommendations(self) -> Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingRecommendationResult']:
        """
        The list of recommendations.
        """
        return pulumi.get(self, "recommendations")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingDetailResult(dict):
    def __init__(__self__, *,
                 operations: Sequence[str],
                 schemas: Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingDetailSchemaResult']):
        """
        :param Sequence[str] operations: The list of operation details.
        :param Sequence['GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingDetailSchemaArgs'] schemas: The names of the impacted database schemas and their objects.
        """
        pulumi.set(__self__, "operations", operations)
        pulumi.set(__self__, "schemas", schemas)

    @property
    @pulumi.getter
    def operations(self) -> Sequence[str]:
        """
        The list of operation details.
        """
        return pulumi.get(self, "operations")

    @property
    @pulumi.getter
    def schemas(self) -> Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingDetailSchemaResult']:
        """
        The names of the impacted database schemas and their objects.
        """
        return pulumi.get(self, "schemas")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingDetailSchemaResult(dict):
    def __init__(__self__, *,
                 name: str,
                 objects: Sequence[str]):
        """
        :param str name: The name of the rule.
        :param Sequence[str] objects: The names of schema objects.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "objects", objects)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the rule.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def objects(self) -> Sequence[str]:
        """
        The names of schema objects.
        """
        return pulumi.get(self, "objects")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingRecommendationResult(dict):
    def __init__(__self__, *,
                 examples: Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingRecommendationExampleResult'],
                 message: str,
                 rationales: Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingRecommendationRationaleResult']):
        """
        :param Sequence['GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingRecommendationExampleArgs'] examples: An example of the recommendation.
        :param str message: The message of the rationale.
        :param Sequence['GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingRecommendationRationaleArgs'] rationales: The rationale of the recommendation.
        """
        pulumi.set(__self__, "examples", examples)
        pulumi.set(__self__, "message", message)
        pulumi.set(__self__, "rationales", rationales)

    @property
    @pulumi.getter
    def examples(self) -> Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingRecommendationExampleResult']:
        """
        An example of the recommendation.
        """
        return pulumi.get(self, "examples")

    @property
    @pulumi.getter
    def message(self) -> str:
        """
        The message of the rationale.
        """
        return pulumi.get(self, "message")

    @property
    @pulumi.getter
    def rationales(self) -> Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingRecommendationRationaleResult']:
        """
        The rationale of the recommendation.
        """
        return pulumi.get(self, "rationales")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingRecommendationExampleResult(dict):
    def __init__(__self__, *,
                 lines: Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingRecommendationExampleLineResult']):
        """
        :param Sequence['GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingRecommendationExampleLineArgs'] lines: The list of examples for the recommendation.
        """
        pulumi.set(__self__, "lines", lines)

    @property
    @pulumi.getter
    def lines(self) -> Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingRecommendationExampleLineResult']:
        """
        The list of examples for the recommendation.
        """
        return pulumi.get(self, "lines")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingRecommendationExampleLineResult(dict):
    def __init__(__self__, *,
                 comment: str,
                 operation: str):
        """
        :param str comment: The comments about the operation.
        :param str operation: The details of the example operation.
        """
        pulumi.set(__self__, "comment", comment)
        pulumi.set(__self__, "operation", operation)

    @property
    @pulumi.getter
    def comment(self) -> str:
        """
        The comments about the operation.
        """
        return pulumi.get(self, "comment")

    @property
    @pulumi.getter
    def operation(self) -> str:
        """
        The details of the example operation.
        """
        return pulumi.get(self, "operation")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsAdvisorExecutionReportRuleFindingRecommendationRationaleResult(dict):
    def __init__(__self__, *,
                 message: str):
        """
        :param str message: The message of the rationale.
        """
        pulumi.set(__self__, "message", message)

    @property
    @pulumi.getter
    def message(self) -> str:
        """
        The message of the rationale.
        """
        return pulumi.get(self, "message")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: The name of the rule.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the rule.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemResult']):
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemResult']:
        return pulumi.get(self, "items")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemResult(dict):
    def __init__(__self__, *,
                 databases: Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemDatabaseResult'],
                 error_message: str,
                 execution_name: str,
                 findings: int,
                 reports: Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportResult'],
                 status: str,
                 status_message: str,
                 task_name: str,
                 time_end: str,
                 time_start: str):
        """
        :param Sequence['GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemDatabaseArgs'] databases: The summary of the Managed Database resource.
        :param str error_message: The errors in the Optimizer Statistics Advisor execution, if any.
        :param str execution_name: The name of the Optimizer Statistics Advisor execution.
        :param int findings: The list of findings for the rule.
        :param Sequence['GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportArgs'] reports: A report that includes the rules, findings, recommendations, and actions discovered during the execution of the Optimizer Statistics Advisor.
        :param str status: The status of the Optimizer Statistics Advisor execution.
        :param str status_message: The Optimizer Statistics Advisor execution status message, if any.
        :param str task_name: The name of the Optimizer Statistics Advisor task.
        :param str time_end: The end time of the time range to retrieve the Optimizer Statistics Advisor execution of a Managed Database in UTC in ISO-8601 format, which is "yyyy-MM-dd'T'hh:mm:ss.sss'Z'".
        :param str time_start: The start time of the time range to retrieve the Optimizer Statistics Advisor execution of a Managed Database in UTC in ISO-8601 format, which is "yyyy-MM-dd'T'hh:mm:ss.sss'Z'".
        """
        pulumi.set(__self__, "databases", databases)
        pulumi.set(__self__, "error_message", error_message)
        pulumi.set(__self__, "execution_name", execution_name)
        pulumi.set(__self__, "findings", findings)
        pulumi.set(__self__, "reports", reports)
        pulumi.set(__self__, "status", status)
        pulumi.set(__self__, "status_message", status_message)
        pulumi.set(__self__, "task_name", task_name)
        pulumi.set(__self__, "time_end", time_end)
        pulumi.set(__self__, "time_start", time_start)

    @property
    @pulumi.getter
    def databases(self) -> Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemDatabaseResult']:
        """
        The summary of the Managed Database resource.
        """
        return pulumi.get(self, "databases")

    @property
    @pulumi.getter(name="errorMessage")
    def error_message(self) -> str:
        """
        The errors in the Optimizer Statistics Advisor execution, if any.
        """
        return pulumi.get(self, "error_message")

    @property
    @pulumi.getter(name="executionName")
    def execution_name(self) -> str:
        """
        The name of the Optimizer Statistics Advisor execution.
        """
        return pulumi.get(self, "execution_name")

    @property
    @pulumi.getter
    def findings(self) -> int:
        """
        The list of findings for the rule.
        """
        return pulumi.get(self, "findings")

    @property
    @pulumi.getter
    def reports(self) -> Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportResult']:
        """
        A report that includes the rules, findings, recommendations, and actions discovered during the execution of the Optimizer Statistics Advisor.
        """
        return pulumi.get(self, "reports")

    @property
    @pulumi.getter
    def status(self) -> str:
        """
        The status of the Optimizer Statistics Advisor execution.
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter(name="statusMessage")
    def status_message(self) -> str:
        """
        The Optimizer Statistics Advisor execution status message, if any.
        """
        return pulumi.get(self, "status_message")

    @property
    @pulumi.getter(name="taskName")
    def task_name(self) -> str:
        """
        The name of the Optimizer Statistics Advisor task.
        """
        return pulumi.get(self, "task_name")

    @property
    @pulumi.getter(name="timeEnd")
    def time_end(self) -> str:
        """
        The end time of the time range to retrieve the Optimizer Statistics Advisor execution of a Managed Database in UTC in ISO-8601 format, which is "yyyy-MM-dd'T'hh:mm:ss.sss'Z'".
        """
        return pulumi.get(self, "time_end")

    @property
    @pulumi.getter(name="timeStart")
    def time_start(self) -> str:
        """
        The start time of the time range to retrieve the Optimizer Statistics Advisor execution of a Managed Database in UTC in ISO-8601 format, which is "yyyy-MM-dd'T'hh:mm:ss.sss'Z'".
        """
        return pulumi.get(self, "time_start")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemDatabaseResult(dict):
    def __init__(__self__, *,
                 compartment_id: str,
                 db_deployment_type: str,
                 db_sub_type: str,
                 db_type: str,
                 db_version: str,
                 id: str,
                 name: str):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the Managed Database resides.
        :param str db_deployment_type: The infrastructure used to deploy the Oracle Database.
        :param str db_sub_type: The subtype of the Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, Non-container Database, Autonomous Database, or Autonomous Container Database.
        :param str db_type: The type of Oracle Database installation.
        :param str db_version: The version of the Oracle Database.
        :param str id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Managed Database.
        :param str name: The name of the rule.
        """
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "db_deployment_type", db_deployment_type)
        pulumi.set(__self__, "db_sub_type", db_sub_type)
        pulumi.set(__self__, "db_type", db_type)
        pulumi.set(__self__, "db_version", db_version)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter(name="compartmentId")
    def compartment_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the Managed Database resides.
        """
        return pulumi.get(self, "compartment_id")

    @property
    @pulumi.getter(name="dbDeploymentType")
    def db_deployment_type(self) -> str:
        """
        The infrastructure used to deploy the Oracle Database.
        """
        return pulumi.get(self, "db_deployment_type")

    @property
    @pulumi.getter(name="dbSubType")
    def db_sub_type(self) -> str:
        """
        The subtype of the Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, Non-container Database, Autonomous Database, or Autonomous Container Database.
        """
        return pulumi.get(self, "db_sub_type")

    @property
    @pulumi.getter(name="dbType")
    def db_type(self) -> str:
        """
        The type of Oracle Database installation.
        """
        return pulumi.get(self, "db_type")

    @property
    @pulumi.getter(name="dbVersion")
    def db_version(self) -> str:
        """
        The version of the Oracle Database.
        """
        return pulumi.get(self, "db_version")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Managed Database.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the rule.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportResult(dict):
    def __init__(__self__, *,
                 rules: Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleResult'],
                 summary: str):
        """
        :param Sequence['GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleArgs'] rules: The list of rules that were not adhered to by the Optimizer Statistics Collection.
        :param str summary: A summary of the Optimizer Statistics Advisor execution.
        """
        pulumi.set(__self__, "rules", rules)
        pulumi.set(__self__, "summary", summary)

    @property
    @pulumi.getter
    def rules(self) -> Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleResult']:
        """
        The list of rules that were not adhered to by the Optimizer Statistics Collection.
        """
        return pulumi.get(self, "rules")

    @property
    @pulumi.getter
    def summary(self) -> str:
        """
        A summary of the Optimizer Statistics Advisor execution.
        """
        return pulumi.get(self, "summary")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleResult(dict):
    def __init__(__self__, *,
                 description: str,
                 findings: Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingResult'],
                 name: str):
        """
        :param str description: The description of the rule.
        :param Sequence['GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingArgs'] findings: The list of findings for the rule.
        :param str name: The name of the rule.
        """
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "findings", findings)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        The description of the rule.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def findings(self) -> Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingResult']:
        """
        The list of findings for the rule.
        """
        return pulumi.get(self, "findings")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the rule.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingResult(dict):
    def __init__(__self__, *,
                 details: Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingDetailResult'],
                 message: str,
                 recommendations: Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingRecommendationResult']):
        """
        :param Sequence['GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingDetailArgs'] details: The details of the schema or operation.
        :param str message: The message of the rationale.
        :param Sequence['GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingRecommendationArgs'] recommendations: The list of recommendations.
        """
        pulumi.set(__self__, "details", details)
        pulumi.set(__self__, "message", message)
        pulumi.set(__self__, "recommendations", recommendations)

    @property
    @pulumi.getter
    def details(self) -> Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingDetailResult']:
        """
        The details of the schema or operation.
        """
        return pulumi.get(self, "details")

    @property
    @pulumi.getter
    def message(self) -> str:
        """
        The message of the rationale.
        """
        return pulumi.get(self, "message")

    @property
    @pulumi.getter
    def recommendations(self) -> Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingRecommendationResult']:
        """
        The list of recommendations.
        """
        return pulumi.get(self, "recommendations")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingDetailResult(dict):
    def __init__(__self__, *,
                 operations: Sequence[str],
                 schemas: Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingDetailSchemaResult']):
        """
        :param Sequence[str] operations: The list of operation details.
        :param Sequence['GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingDetailSchemaArgs'] schemas: The names of the impacted database schemas and their objects.
        """
        pulumi.set(__self__, "operations", operations)
        pulumi.set(__self__, "schemas", schemas)

    @property
    @pulumi.getter
    def operations(self) -> Sequence[str]:
        """
        The list of operation details.
        """
        return pulumi.get(self, "operations")

    @property
    @pulumi.getter
    def schemas(self) -> Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingDetailSchemaResult']:
        """
        The names of the impacted database schemas and their objects.
        """
        return pulumi.get(self, "schemas")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingDetailSchemaResult(dict):
    def __init__(__self__, *,
                 name: str,
                 objects: Sequence[str]):
        """
        :param str name: The name of the rule.
        :param Sequence[str] objects: The names of schema objects.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "objects", objects)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the rule.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def objects(self) -> Sequence[str]:
        """
        The names of schema objects.
        """
        return pulumi.get(self, "objects")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingRecommendationResult(dict):
    def __init__(__self__, *,
                 examples: Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingRecommendationExampleResult'],
                 message: str,
                 rationales: Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingRecommendationRationaleResult']):
        """
        :param Sequence['GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingRecommendationExampleArgs'] examples: An example of the recommendation.
        :param str message: The message of the rationale.
        :param Sequence['GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingRecommendationRationaleArgs'] rationales: The rationale of the recommendation.
        """
        pulumi.set(__self__, "examples", examples)
        pulumi.set(__self__, "message", message)
        pulumi.set(__self__, "rationales", rationales)

    @property
    @pulumi.getter
    def examples(self) -> Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingRecommendationExampleResult']:
        """
        An example of the recommendation.
        """
        return pulumi.get(self, "examples")

    @property
    @pulumi.getter
    def message(self) -> str:
        """
        The message of the rationale.
        """
        return pulumi.get(self, "message")

    @property
    @pulumi.getter
    def rationales(self) -> Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingRecommendationRationaleResult']:
        """
        The rationale of the recommendation.
        """
        return pulumi.get(self, "rationales")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingRecommendationExampleResult(dict):
    def __init__(__self__, *,
                 lines: Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingRecommendationExampleLineResult']):
        """
        :param Sequence['GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingRecommendationExampleLineArgs'] lines: The list of examples for the recommendation.
        """
        pulumi.set(__self__, "lines", lines)

    @property
    @pulumi.getter
    def lines(self) -> Sequence['outputs.GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingRecommendationExampleLineResult']:
        """
        The list of examples for the recommendation.
        """
        return pulumi.get(self, "lines")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingRecommendationExampleLineResult(dict):
    def __init__(__self__, *,
                 comment: str,
                 operation: str):
        """
        :param str comment: The comments about the operation.
        :param str operation: The details of the example operation.
        """
        pulumi.set(__self__, "comment", comment)
        pulumi.set(__self__, "operation", operation)

    @property
    @pulumi.getter
    def comment(self) -> str:
        """
        The comments about the operation.
        """
        return pulumi.get(self, "comment")

    @property
    @pulumi.getter
    def operation(self) -> str:
        """
        The details of the example operation.
        """
        return pulumi.get(self, "operation")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsAdvisorExecutionsOptimizerStatisticsAdvisorExecutionsCollectionItemReportRuleFindingRecommendationRationaleResult(dict):
    def __init__(__self__, *,
                 message: str):
        """
        :param str message: The message of the rationale.
        """
        pulumi.set(__self__, "message", message)

    @property
    @pulumi.getter
    def message(self) -> str:
        """
        The message of the rationale.
        """
        return pulumi.get(self, "message")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsCollectionAggregationsFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsCollectionAggregationsOptimizerStatisticsCollectionAggregationsCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetManagedDatabaseOptimizerStatisticsCollectionAggregationsOptimizerStatisticsCollectionAggregationsCollectionItemResult']):
        """
        :param Sequence['GetManagedDatabaseOptimizerStatisticsCollectionAggregationsOptimizerStatisticsCollectionAggregationsCollectionItemArgs'] items: The list of Optimizer Statistics Collection details.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetManagedDatabaseOptimizerStatisticsCollectionAggregationsOptimizerStatisticsCollectionAggregationsCollectionItemResult']:
        """
        The list of Optimizer Statistics Collection details.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsCollectionAggregationsOptimizerStatisticsCollectionAggregationsCollectionItemResult(dict):
    def __init__(__self__, *,
                 completed: int,
                 failed: int,
                 group_by: str,
                 in_progress: int,
                 pending: int,
                 skipped: int,
                 time_end: str,
                 time_start: str,
                 timed_out: int,
                 total: int,
                 unknown: int):
        """
        :param int completed: The number of tasks or objects for which statistics gathering is completed.
        :param int failed: The number of tasks or objects for which statistics gathering failed.
        :param str group_by: The optimizer statistics tasks grouped by type.
        :param int in_progress: The number of tasks or objects for which statistics gathering is in progress.
        :param int pending: The number of tasks or objects for which statistics are yet to be gathered.
        :param int skipped: The number of tasks or objects for which statistics gathering was skipped.
        :param str time_end: Indicates the end of the hour as the statistics are aggregated per hour.
        :param str time_start: Indicates the start of the hour as the statistics are aggregated per hour.
        :param int timed_out: The number of tasks or objects for which statistics gathering timed out.
        :param int total: The total number of tasks or objects for which statistics collection is finished. This number is the sum of all the tasks or objects with various statuses: pending, inProgress, completed, failed, skipped, timedOut, and unknown.
        :param int unknown: The number of tasks or objects for which the status of statistics gathering is unknown.
        """
        pulumi.set(__self__, "completed", completed)
        pulumi.set(__self__, "failed", failed)
        pulumi.set(__self__, "group_by", group_by)
        pulumi.set(__self__, "in_progress", in_progress)
        pulumi.set(__self__, "pending", pending)
        pulumi.set(__self__, "skipped", skipped)
        pulumi.set(__self__, "time_end", time_end)
        pulumi.set(__self__, "time_start", time_start)
        pulumi.set(__self__, "timed_out", timed_out)
        pulumi.set(__self__, "total", total)
        pulumi.set(__self__, "unknown", unknown)

    @property
    @pulumi.getter
    def completed(self) -> int:
        """
        The number of tasks or objects for which statistics gathering is completed.
        """
        return pulumi.get(self, "completed")

    @property
    @pulumi.getter
    def failed(self) -> int:
        """
        The number of tasks or objects for which statistics gathering failed.
        """
        return pulumi.get(self, "failed")

    @property
    @pulumi.getter(name="groupBy")
    def group_by(self) -> str:
        """
        The optimizer statistics tasks grouped by type.
        """
        return pulumi.get(self, "group_by")

    @property
    @pulumi.getter(name="inProgress")
    def in_progress(self) -> int:
        """
        The number of tasks or objects for which statistics gathering is in progress.
        """
        return pulumi.get(self, "in_progress")

    @property
    @pulumi.getter
    def pending(self) -> int:
        """
        The number of tasks or objects for which statistics are yet to be gathered.
        """
        return pulumi.get(self, "pending")

    @property
    @pulumi.getter
    def skipped(self) -> int:
        """
        The number of tasks or objects for which statistics gathering was skipped.
        """
        return pulumi.get(self, "skipped")

    @property
    @pulumi.getter(name="timeEnd")
    def time_end(self) -> str:
        """
        Indicates the end of the hour as the statistics are aggregated per hour.
        """
        return pulumi.get(self, "time_end")

    @property
    @pulumi.getter(name="timeStart")
    def time_start(self) -> str:
        """
        Indicates the start of the hour as the statistics are aggregated per hour.
        """
        return pulumi.get(self, "time_start")

    @property
    @pulumi.getter(name="timedOut")
    def timed_out(self) -> int:
        """
        The number of tasks or objects for which statistics gathering timed out.
        """
        return pulumi.get(self, "timed_out")

    @property
    @pulumi.getter
    def total(self) -> int:
        """
        The total number of tasks or objects for which statistics collection is finished. This number is the sum of all the tasks or objects with various statuses: pending, inProgress, completed, failed, skipped, timedOut, and unknown.
        """
        return pulumi.get(self, "total")

    @property
    @pulumi.getter
    def unknown(self) -> int:
        """
        The number of tasks or objects for which the status of statistics gathering is unknown.
        """
        return pulumi.get(self, "unknown")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsCollectionOperationDatabaseResult(dict):
    def __init__(__self__, *,
                 compartment_id: str,
                 db_deployment_type: str,
                 db_sub_type: str,
                 db_type: str,
                 db_version: str,
                 id: str,
                 name: str):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the Managed Database resides.
        :param str db_deployment_type: The infrastructure used to deploy the Oracle Database.
        :param str db_sub_type: The subtype of the Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, Non-container Database, Autonomous Database, or Autonomous Container Database.
        :param str db_type: The type of Oracle Database installation.
        :param str db_version: The version of the Oracle Database.
        :param str id: The ID of the operation.
        :param str name: The name of the Managed Database.
        """
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "db_deployment_type", db_deployment_type)
        pulumi.set(__self__, "db_sub_type", db_sub_type)
        pulumi.set(__self__, "db_type", db_type)
        pulumi.set(__self__, "db_version", db_version)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter(name="compartmentId")
    def compartment_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the Managed Database resides.
        """
        return pulumi.get(self, "compartment_id")

    @property
    @pulumi.getter(name="dbDeploymentType")
    def db_deployment_type(self) -> str:
        """
        The infrastructure used to deploy the Oracle Database.
        """
        return pulumi.get(self, "db_deployment_type")

    @property
    @pulumi.getter(name="dbSubType")
    def db_sub_type(self) -> str:
        """
        The subtype of the Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, Non-container Database, Autonomous Database, or Autonomous Container Database.
        """
        return pulumi.get(self, "db_sub_type")

    @property
    @pulumi.getter(name="dbType")
    def db_type(self) -> str:
        """
        The type of Oracle Database installation.
        """
        return pulumi.get(self, "db_type")

    @property
    @pulumi.getter(name="dbVersion")
    def db_version(self) -> str:
        """
        The version of the Oracle Database.
        """
        return pulumi.get(self, "db_version")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the operation.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the Managed Database.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsCollectionOperationTaskResult(dict):
    def __init__(__self__, *,
                 status: str,
                 target: str,
                 target_type: str,
                 time_end: str,
                 time_start: str):
        """
        :param str status: The status of the Optimizer Statistics Collection task.
        :param str target: The name of the target object for which statistics are gathered.
        :param str target_type: The type of target object.
        :param str time_end: The end time of the Optimizer Statistics Collection task.
        :param str time_start: The start time of the Optimizer Statistics Collection task.
        """
        pulumi.set(__self__, "status", status)
        pulumi.set(__self__, "target", target)
        pulumi.set(__self__, "target_type", target_type)
        pulumi.set(__self__, "time_end", time_end)
        pulumi.set(__self__, "time_start", time_start)

    @property
    @pulumi.getter
    def status(self) -> str:
        """
        The status of the Optimizer Statistics Collection task.
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter
    def target(self) -> str:
        """
        The name of the target object for which statistics are gathered.
        """
        return pulumi.get(self, "target")

    @property
    @pulumi.getter(name="targetType")
    def target_type(self) -> str:
        """
        The type of target object.
        """
        return pulumi.get(self, "target_type")

    @property
    @pulumi.getter(name="timeEnd")
    def time_end(self) -> str:
        """
        The end time of the Optimizer Statistics Collection task.
        """
        return pulumi.get(self, "time_end")

    @property
    @pulumi.getter(name="timeStart")
    def time_start(self) -> str:
        """
        The start time of the Optimizer Statistics Collection task.
        """
        return pulumi.get(self, "time_start")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsCollectionOperationsFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: The name of the Managed Database.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the Managed Database.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsCollectionOperationsOptimizerStatisticsCollectionOperationsCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetManagedDatabaseOptimizerStatisticsCollectionOperationsOptimizerStatisticsCollectionOperationsCollectionItemResult']):
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetManagedDatabaseOptimizerStatisticsCollectionOperationsOptimizerStatisticsCollectionOperationsCollectionItemResult']:
        return pulumi.get(self, "items")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsCollectionOperationsOptimizerStatisticsCollectionOperationsCollectionItemResult(dict):
    def __init__(__self__, *,
                 completed_count: int,
                 databases: Sequence['outputs.GetManagedDatabaseOptimizerStatisticsCollectionOperationsOptimizerStatisticsCollectionOperationsCollectionItemDatabaseResult'],
                 duration_in_seconds: float,
                 end_time: str,
                 failed_count: int,
                 id: int,
                 in_progress_count: int,
                 job_name: str,
                 operation_name: str,
                 start_time: str,
                 status: str,
                 target: str,
                 tasks: Sequence['outputs.GetManagedDatabaseOptimizerStatisticsCollectionOperationsOptimizerStatisticsCollectionOperationsCollectionItemTaskResult'],
                 timed_out_count: int,
                 total_objects_count: int):
        """
        :param int completed_count: The number of objects for which statistics collection is completed.
        :param Sequence['GetManagedDatabaseOptimizerStatisticsCollectionOperationsOptimizerStatisticsCollectionOperationsCollectionItemDatabaseArgs'] databases: The summary of the Managed Database resource.
        :param float duration_in_seconds: The time it takes to complete the operation (in seconds).
        :param str end_time: The end time of the operation.
        :param int failed_count: The number of objects for which statistics collection failed.
        :param int id: The ID of the operation.
        :param int in_progress_count: The number of objects for which statistics collection is in progress.
        :param str job_name: The name of the job.
        :param str operation_name: The name of the operation.
        :param str start_time: The start time of the operation.
        :param str status: The status of the Optimizer Statistics Collection task.
        :param str target: The name of the target object for which statistics are gathered.
        :param Sequence['GetManagedDatabaseOptimizerStatisticsCollectionOperationsOptimizerStatisticsCollectionOperationsCollectionItemTaskArgs'] tasks: An array of Optimizer Statistics Collection task details.
        :param int timed_out_count: The number of objects for which statistics collection timed out.
        :param int total_objects_count: The total number of objects for which statistics is collected. This number is the sum of all the objects with various statuses: completed, inProgress, failed, and timedOut.
        """
        pulumi.set(__self__, "completed_count", completed_count)
        pulumi.set(__self__, "databases", databases)
        pulumi.set(__self__, "duration_in_seconds", duration_in_seconds)
        pulumi.set(__self__, "end_time", end_time)
        pulumi.set(__self__, "failed_count", failed_count)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "in_progress_count", in_progress_count)
        pulumi.set(__self__, "job_name", job_name)
        pulumi.set(__self__, "operation_name", operation_name)
        pulumi.set(__self__, "start_time", start_time)
        pulumi.set(__self__, "status", status)
        pulumi.set(__self__, "target", target)
        pulumi.set(__self__, "tasks", tasks)
        pulumi.set(__self__, "timed_out_count", timed_out_count)
        pulumi.set(__self__, "total_objects_count", total_objects_count)

    @property
    @pulumi.getter(name="completedCount")
    def completed_count(self) -> int:
        """
        The number of objects for which statistics collection is completed.
        """
        return pulumi.get(self, "completed_count")

    @property
    @pulumi.getter
    def databases(self) -> Sequence['outputs.GetManagedDatabaseOptimizerStatisticsCollectionOperationsOptimizerStatisticsCollectionOperationsCollectionItemDatabaseResult']:
        """
        The summary of the Managed Database resource.
        """
        return pulumi.get(self, "databases")

    @property
    @pulumi.getter(name="durationInSeconds")
    def duration_in_seconds(self) -> float:
        """
        The time it takes to complete the operation (in seconds).
        """
        return pulumi.get(self, "duration_in_seconds")

    @property
    @pulumi.getter(name="endTime")
    def end_time(self) -> str:
        """
        The end time of the operation.
        """
        return pulumi.get(self, "end_time")

    @property
    @pulumi.getter(name="failedCount")
    def failed_count(self) -> int:
        """
        The number of objects for which statistics collection failed.
        """
        return pulumi.get(self, "failed_count")

    @property
    @pulumi.getter
    def id(self) -> int:
        """
        The ID of the operation.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="inProgressCount")
    def in_progress_count(self) -> int:
        """
        The number of objects for which statistics collection is in progress.
        """
        return pulumi.get(self, "in_progress_count")

    @property
    @pulumi.getter(name="jobName")
    def job_name(self) -> str:
        """
        The name of the job.
        """
        return pulumi.get(self, "job_name")

    @property
    @pulumi.getter(name="operationName")
    def operation_name(self) -> str:
        """
        The name of the operation.
        """
        return pulumi.get(self, "operation_name")

    @property
    @pulumi.getter(name="startTime")
    def start_time(self) -> str:
        """
        The start time of the operation.
        """
        return pulumi.get(self, "start_time")

    @property
    @pulumi.getter
    def status(self) -> str:
        """
        The status of the Optimizer Statistics Collection task.
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter
    def target(self) -> str:
        """
        The name of the target object for which statistics are gathered.
        """
        return pulumi.get(self, "target")

    @property
    @pulumi.getter
    def tasks(self) -> Sequence['outputs.GetManagedDatabaseOptimizerStatisticsCollectionOperationsOptimizerStatisticsCollectionOperationsCollectionItemTaskResult']:
        """
        An array of Optimizer Statistics Collection task details.
        """
        return pulumi.get(self, "tasks")

    @property
    @pulumi.getter(name="timedOutCount")
    def timed_out_count(self) -> int:
        """
        The number of objects for which statistics collection timed out.
        """
        return pulumi.get(self, "timed_out_count")

    @property
    @pulumi.getter(name="totalObjectsCount")
    def total_objects_count(self) -> int:
        """
        The total number of objects for which statistics is collected. This number is the sum of all the objects with various statuses: completed, inProgress, failed, and timedOut.
        """
        return pulumi.get(self, "total_objects_count")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsCollectionOperationsOptimizerStatisticsCollectionOperationsCollectionItemDatabaseResult(dict):
    def __init__(__self__, *,
                 compartment_id: str,
                 db_deployment_type: str,
                 db_sub_type: str,
                 db_type: str,
                 db_version: str,
                 id: str,
                 name: str):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the Managed Database resides.
        :param str db_deployment_type: The infrastructure used to deploy the Oracle Database.
        :param str db_sub_type: The subtype of the Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, Non-container Database, Autonomous Database, or Autonomous Container Database.
        :param str db_type: The type of Oracle Database installation.
        :param str db_version: The version of the Oracle Database.
        :param str id: The ID of the operation.
        :param str name: The name of the Managed Database.
        """
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "db_deployment_type", db_deployment_type)
        pulumi.set(__self__, "db_sub_type", db_sub_type)
        pulumi.set(__self__, "db_type", db_type)
        pulumi.set(__self__, "db_version", db_version)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter(name="compartmentId")
    def compartment_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the Managed Database resides.
        """
        return pulumi.get(self, "compartment_id")

    @property
    @pulumi.getter(name="dbDeploymentType")
    def db_deployment_type(self) -> str:
        """
        The infrastructure used to deploy the Oracle Database.
        """
        return pulumi.get(self, "db_deployment_type")

    @property
    @pulumi.getter(name="dbSubType")
    def db_sub_type(self) -> str:
        """
        The subtype of the Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, Non-container Database, Autonomous Database, or Autonomous Container Database.
        """
        return pulumi.get(self, "db_sub_type")

    @property
    @pulumi.getter(name="dbType")
    def db_type(self) -> str:
        """
        The type of Oracle Database installation.
        """
        return pulumi.get(self, "db_type")

    @property
    @pulumi.getter(name="dbVersion")
    def db_version(self) -> str:
        """
        The version of the Oracle Database.
        """
        return pulumi.get(self, "db_version")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the operation.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the Managed Database.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetManagedDatabaseOptimizerStatisticsCollectionOperationsOptimizerStatisticsCollectionOperationsCollectionItemTaskResult(dict):
    def __init__(__self__, *,
                 status: str,
                 target: str,
                 target_type: str,
                 time_end: str,
                 time_start: str):
        """
        :param str status: The status of the Optimizer Statistics Collection task.
        :param str target: The name of the target object for which statistics are gathered.
        :param str target_type: The type of target object.
        :param str time_end: The end time of the Optimizer Statistics Collection task.
        :param str time_start: The start time of the Optimizer Statistics Collection task.
        """
        pulumi.set(__self__, "status", status)
        pulumi.set(__self__, "target", target)
        pulumi.set(__self__, "target_type", target_type)
        pulumi.set(__self__, "time_end", time_end)
        pulumi.set(__self__, "time_start", time_start)

    @property
    @pulumi.getter
    def status(self) -> str:
        """
        The status of the Optimizer Statistics Collection task.
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter
    def target(self) -> str:
        """
        The name of the target object for which statistics are gathered.
        """
        return pulumi.get(self, "target")

    @property
    @pulumi.getter(name="targetType")
    def target_type(self) -> str:
        """
        The type of target object.
        """
        return pulumi.get(self, "target_type")

    @property
    @pulumi.getter(name="timeEnd")
    def time_end(self) -> str:
        """
        The end time of the Optimizer Statistics Collection task.
        """
        return pulumi.get(self, "time_end")

    @property
    @pulumi.getter(name="timeStart")
    def time_start(self) -> str:
        """
        The start time of the Optimizer Statistics Collection task.
        """
        return pulumi.get(self, "time_start")


@pulumi.output_type
class GetManagedDatabaseSqlTuningAdvisorTaskItemResult(dict):
    def __init__(__self__, *,
                 days_to_expire: int,
                 description: str,
                 instance_id: int,
                 name: str,
                 owner: str,
                 recommendation_count: int,
                 sql_tuning_advisor_task_id: str,
                 task_status: str,
                 time_created: str,
                 time_execution_ended: str,
                 time_execution_started: str,
                 total_sql_statements: int):
        """
        :param int days_to_expire: The number of days left before the task expires. If the value equals -1, then the task has no expiration time (UNLIMITED).
        :param str description: The description of the SQL Tuning Advisor task.
        :param int instance_id: The instance ID of the SQL Tuning Advisor task. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        :param str name: The optional query parameter to filter the SQL Tuning Advisor task list by name.
        :param str owner: The owner of the SQL Tuning Advisor task.
        :param int recommendation_count: The number of recommendations provided for the SQL Tuning Advisor task.
        :param str sql_tuning_advisor_task_id: The unique identifier of the SQL Tuning Advisor task. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        :param str task_status: The status of the SQL Tuning Advisor task.
        :param str time_created: The Creation date of the SQL Tuning Advisor task.
        :param str time_execution_ended: The end time of the task execution.
        :param str time_execution_started: The start time of the task execution.
        :param int total_sql_statements: The total number of SQL statements related to the SQL Tuning Advisor task.
        """
        pulumi.set(__self__, "days_to_expire", days_to_expire)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "instance_id", instance_id)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "owner", owner)
        pulumi.set(__self__, "recommendation_count", recommendation_count)
        pulumi.set(__self__, "sql_tuning_advisor_task_id", sql_tuning_advisor_task_id)
        pulumi.set(__self__, "task_status", task_status)
        pulumi.set(__self__, "time_created", time_created)
        pulumi.set(__self__, "time_execution_ended", time_execution_ended)
        pulumi.set(__self__, "time_execution_started", time_execution_started)
        pulumi.set(__self__, "total_sql_statements", total_sql_statements)

    @property
    @pulumi.getter(name="daysToExpire")
    def days_to_expire(self) -> int:
        """
        The number of days left before the task expires. If the value equals -1, then the task has no expiration time (UNLIMITED).
        """
        return pulumi.get(self, "days_to_expire")

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        The description of the SQL Tuning Advisor task.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="instanceId")
    def instance_id(self) -> int:
        """
        The instance ID of the SQL Tuning Advisor task. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        """
        return pulumi.get(self, "instance_id")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The optional query parameter to filter the SQL Tuning Advisor task list by name.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def owner(self) -> str:
        """
        The owner of the SQL Tuning Advisor task.
        """
        return pulumi.get(self, "owner")

    @property
    @pulumi.getter(name="recommendationCount")
    def recommendation_count(self) -> int:
        """
        The number of recommendations provided for the SQL Tuning Advisor task.
        """
        return pulumi.get(self, "recommendation_count")

    @property
    @pulumi.getter(name="sqlTuningAdvisorTaskId")
    def sql_tuning_advisor_task_id(self) -> str:
        """
        The unique identifier of the SQL Tuning Advisor task. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        """
        return pulumi.get(self, "sql_tuning_advisor_task_id")

    @property
    @pulumi.getter(name="taskStatus")
    def task_status(self) -> str:
        """
        The status of the SQL Tuning Advisor task.
        """
        return pulumi.get(self, "task_status")

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> str:
        """
        The Creation date of the SQL Tuning Advisor task.
        """
        return pulumi.get(self, "time_created")

    @property
    @pulumi.getter(name="timeExecutionEnded")
    def time_execution_ended(self) -> str:
        """
        The end time of the task execution.
        """
        return pulumi.get(self, "time_execution_ended")

    @property
    @pulumi.getter(name="timeExecutionStarted")
    def time_execution_started(self) -> str:
        """
        The start time of the task execution.
        """
        return pulumi.get(self, "time_execution_started")

    @property
    @pulumi.getter(name="totalSqlStatements")
    def total_sql_statements(self) -> int:
        """
        The total number of SQL statements related to the SQL Tuning Advisor task.
        """
        return pulumi.get(self, "total_sql_statements")


@pulumi.output_type
class GetManagedDatabaseSqlTuningAdvisorTasksExecutionPlanStatsComparisonModifiedResult(dict):
    def __init__(__self__, *,
                 plan_stats: Mapping[str, Any],
                 plan_status: str,
                 plan_type: str):
        """
        :param Mapping[str, Any] plan_stats: A map contains the statistics for the SQL execution using the plan. The key of the map is the metric's name. The value of the map is the metric's value.
        :param str plan_status: The status of the execution using the plan.
        :param str plan_type: The type of the original or modified plan with profile, index, and so on.
        """
        pulumi.set(__self__, "plan_stats", plan_stats)
        pulumi.set(__self__, "plan_status", plan_status)
        pulumi.set(__self__, "plan_type", plan_type)

    @property
    @pulumi.getter(name="planStats")
    def plan_stats(self) -> Mapping[str, Any]:
        """
        A map contains the statistics for the SQL execution using the plan. The key of the map is the metric's name. The value of the map is the metric's value.
        """
        return pulumi.get(self, "plan_stats")

    @property
    @pulumi.getter(name="planStatus")
    def plan_status(self) -> str:
        """
        The status of the execution using the plan.
        """
        return pulumi.get(self, "plan_status")

    @property
    @pulumi.getter(name="planType")
    def plan_type(self) -> str:
        """
        The type of the original or modified plan with profile, index, and so on.
        """
        return pulumi.get(self, "plan_type")


@pulumi.output_type
class GetManagedDatabaseSqlTuningAdvisorTasksExecutionPlanStatsComparisonOriginalResult(dict):
    def __init__(__self__, *,
                 plan_stats: Mapping[str, Any],
                 plan_status: str,
                 plan_type: str):
        """
        :param Mapping[str, Any] plan_stats: A map contains the statistics for the SQL execution using the plan. The key of the map is the metric's name. The value of the map is the metric's value.
        :param str plan_status: The status of the execution using the plan.
        :param str plan_type: The type of the original or modified plan with profile, index, and so on.
        """
        pulumi.set(__self__, "plan_stats", plan_stats)
        pulumi.set(__self__, "plan_status", plan_status)
        pulumi.set(__self__, "plan_type", plan_type)

    @property
    @pulumi.getter(name="planStats")
    def plan_stats(self) -> Mapping[str, Any]:
        """
        A map contains the statistics for the SQL execution using the plan. The key of the map is the metric's name. The value of the map is the metric's value.
        """
        return pulumi.get(self, "plan_stats")

    @property
    @pulumi.getter(name="planStatus")
    def plan_status(self) -> str:
        """
        The status of the execution using the plan.
        """
        return pulumi.get(self, "plan_status")

    @property
    @pulumi.getter(name="planType")
    def plan_type(self) -> str:
        """
        The type of the original or modified plan with profile, index, and so on.
        """
        return pulumi.get(self, "plan_type")


@pulumi.output_type
class GetManagedDatabaseSqlTuningAdvisorTasksFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: The optional query parameter to filter the SQL Tuning Advisor task list by name.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The optional query parameter to filter the SQL Tuning Advisor task list by name.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetManagedDatabaseSqlTuningAdvisorTasksFindingItemResult(dict):
    def __init__(__self__, *,
                 db_time_benefit: float,
                 is_alternative_plan_finding_present: bool,
                 is_error_finding_present: bool,
                 is_index_finding_present: bool,
                 is_miscellaneous_finding_present: bool,
                 is_restructure_sql_finding_present: bool,
                 is_sql_profile_finding_implemented: bool,
                 is_sql_profile_finding_present: bool,
                 is_stats_finding_present: bool,
                 is_timeout_finding_present: bool,
                 parsing_schema: str,
                 per_execution_percentage: int,
                 sql_key: str,
                 sql_text: str,
                 sql_tuning_advisor_task_id: str,
                 sql_tuning_advisor_task_object_execution_id: str,
                 sql_tuning_advisor_task_object_id: str):
        """
        :param float db_time_benefit: The time benefit (in seconds) for the highest-rated finding for this object.
        :param bool is_alternative_plan_finding_present: Indicates whether an alternative execution plan was reported for this SQL statement.
        :param bool is_error_finding_present: Indicates whether there is an error in this SQL statement.
        :param bool is_index_finding_present: Indicates whether an index recommendation was reported for this SQL statement.
        :param bool is_miscellaneous_finding_present: Indicates whether a miscellaneous finding was reported for this SQL statement.
        :param bool is_restructure_sql_finding_present: Indicates whether a restructure SQL recommendation was reported for this SQL statement.
        :param bool is_sql_profile_finding_implemented: Indicates whether a SQL Profile recommendation has been implemented for this SQL statement.
        :param bool is_sql_profile_finding_present: Indicates whether a SQL Profile recommendation was reported for this SQL statement.
        :param bool is_stats_finding_present: Indicates whether a statistics recommendation was reported for this SQL statement.
        :param bool is_timeout_finding_present: Indicates whether the task timed out.
        :param str parsing_schema: The parsing schema of the object.
        :param int per_execution_percentage: The per-execution percentage benefit.
        :param str sql_key: The unique key of this SQL statement.
        :param str sql_text: The text of the SQL statement.
        :param str sql_tuning_advisor_task_id: The SQL tuning task identifier. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        :param str sql_tuning_advisor_task_object_execution_id: The execution id of the analyzed SQL object. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        :param str sql_tuning_advisor_task_object_id: The key of the object to which these recommendations apply. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        """
        pulumi.set(__self__, "db_time_benefit", db_time_benefit)
        pulumi.set(__self__, "is_alternative_plan_finding_present", is_alternative_plan_finding_present)
        pulumi.set(__self__, "is_error_finding_present", is_error_finding_present)
        pulumi.set(__self__, "is_index_finding_present", is_index_finding_present)
        pulumi.set(__self__, "is_miscellaneous_finding_present", is_miscellaneous_finding_present)
        pulumi.set(__self__, "is_restructure_sql_finding_present", is_restructure_sql_finding_present)
        pulumi.set(__self__, "is_sql_profile_finding_implemented", is_sql_profile_finding_implemented)
        pulumi.set(__self__, "is_sql_profile_finding_present", is_sql_profile_finding_present)
        pulumi.set(__self__, "is_stats_finding_present", is_stats_finding_present)
        pulumi.set(__self__, "is_timeout_finding_present", is_timeout_finding_present)
        pulumi.set(__self__, "parsing_schema", parsing_schema)
        pulumi.set(__self__, "per_execution_percentage", per_execution_percentage)
        pulumi.set(__self__, "sql_key", sql_key)
        pulumi.set(__self__, "sql_text", sql_text)
        pulumi.set(__self__, "sql_tuning_advisor_task_id", sql_tuning_advisor_task_id)
        pulumi.set(__self__, "sql_tuning_advisor_task_object_execution_id", sql_tuning_advisor_task_object_execution_id)
        pulumi.set(__self__, "sql_tuning_advisor_task_object_id", sql_tuning_advisor_task_object_id)

    @property
    @pulumi.getter(name="dbTimeBenefit")
    def db_time_benefit(self) -> float:
        """
        The time benefit (in seconds) for the highest-rated finding for this object.
        """
        return pulumi.get(self, "db_time_benefit")

    @property
    @pulumi.getter(name="isAlternativePlanFindingPresent")
    def is_alternative_plan_finding_present(self) -> bool:
        """
        Indicates whether an alternative execution plan was reported for this SQL statement.
        """
        return pulumi.get(self, "is_alternative_plan_finding_present")

    @property
    @pulumi.getter(name="isErrorFindingPresent")
    def is_error_finding_present(self) -> bool:
        """
        Indicates whether there is an error in this SQL statement.
        """
        return pulumi.get(self, "is_error_finding_present")

    @property
    @pulumi.getter(name="isIndexFindingPresent")
    def is_index_finding_present(self) -> bool:
        """
        Indicates whether an index recommendation was reported for this SQL statement.
        """
        return pulumi.get(self, "is_index_finding_present")

    @property
    @pulumi.getter(name="isMiscellaneousFindingPresent")
    def is_miscellaneous_finding_present(self) -> bool:
        """
        Indicates whether a miscellaneous finding was reported for this SQL statement.
        """
        return pulumi.get(self, "is_miscellaneous_finding_present")

    @property
    @pulumi.getter(name="isRestructureSqlFindingPresent")
    def is_restructure_sql_finding_present(self) -> bool:
        """
        Indicates whether a restructure SQL recommendation was reported for this SQL statement.
        """
        return pulumi.get(self, "is_restructure_sql_finding_present")

    @property
    @pulumi.getter(name="isSqlProfileFindingImplemented")
    def is_sql_profile_finding_implemented(self) -> bool:
        """
        Indicates whether a SQL Profile recommendation has been implemented for this SQL statement.
        """
        return pulumi.get(self, "is_sql_profile_finding_implemented")

    @property
    @pulumi.getter(name="isSqlProfileFindingPresent")
    def is_sql_profile_finding_present(self) -> bool:
        """
        Indicates whether a SQL Profile recommendation was reported for this SQL statement.
        """
        return pulumi.get(self, "is_sql_profile_finding_present")

    @property
    @pulumi.getter(name="isStatsFindingPresent")
    def is_stats_finding_present(self) -> bool:
        """
        Indicates whether a statistics recommendation was reported for this SQL statement.
        """
        return pulumi.get(self, "is_stats_finding_present")

    @property
    @pulumi.getter(name="isTimeoutFindingPresent")
    def is_timeout_finding_present(self) -> bool:
        """
        Indicates whether the task timed out.
        """
        return pulumi.get(self, "is_timeout_finding_present")

    @property
    @pulumi.getter(name="parsingSchema")
    def parsing_schema(self) -> str:
        """
        The parsing schema of the object.
        """
        return pulumi.get(self, "parsing_schema")

    @property
    @pulumi.getter(name="perExecutionPercentage")
    def per_execution_percentage(self) -> int:
        """
        The per-execution percentage benefit.
        """
        return pulumi.get(self, "per_execution_percentage")

    @property
    @pulumi.getter(name="sqlKey")
    def sql_key(self) -> str:
        """
        The unique key of this SQL statement.
        """
        return pulumi.get(self, "sql_key")

    @property
    @pulumi.getter(name="sqlText")
    def sql_text(self) -> str:
        """
        The text of the SQL statement.
        """
        return pulumi.get(self, "sql_text")

    @property
    @pulumi.getter(name="sqlTuningAdvisorTaskId")
    def sql_tuning_advisor_task_id(self) -> str:
        """
        The SQL tuning task identifier. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        """
        return pulumi.get(self, "sql_tuning_advisor_task_id")

    @property
    @pulumi.getter(name="sqlTuningAdvisorTaskObjectExecutionId")
    def sql_tuning_advisor_task_object_execution_id(self) -> str:
        """
        The execution id of the analyzed SQL object. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        """
        return pulumi.get(self, "sql_tuning_advisor_task_object_execution_id")

    @property
    @pulumi.getter(name="sqlTuningAdvisorTaskObjectId")
    def sql_tuning_advisor_task_object_id(self) -> str:
        """
        The key of the object to which these recommendations apply. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        """
        return pulumi.get(self, "sql_tuning_advisor_task_object_id")


@pulumi.output_type
class GetManagedDatabaseSqlTuningAdvisorTasksFindingsFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetManagedDatabaseSqlTuningAdvisorTasksFindingsSqlTuningAdvisorTaskFindingCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetManagedDatabaseSqlTuningAdvisorTasksFindingsSqlTuningAdvisorTaskFindingCollectionItemResult']):
        """
        :param Sequence['GetManagedDatabaseSqlTuningAdvisorTasksFindingsSqlTuningAdvisorTaskFindingCollectionItemArgs'] items: An array of the findings for a tuning task.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetManagedDatabaseSqlTuningAdvisorTasksFindingsSqlTuningAdvisorTaskFindingCollectionItemResult']:
        """
        An array of the findings for a tuning task.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetManagedDatabaseSqlTuningAdvisorTasksFindingsSqlTuningAdvisorTaskFindingCollectionItemResult(dict):
    def __init__(__self__, *,
                 db_time_benefit: float,
                 is_alternative_plan_finding_present: bool,
                 is_error_finding_present: bool,
                 is_index_finding_present: bool,
                 is_miscellaneous_finding_present: bool,
                 is_restructure_sql_finding_present: bool,
                 is_sql_profile_finding_implemented: bool,
                 is_sql_profile_finding_present: bool,
                 is_stats_finding_present: bool,
                 is_timeout_finding_present: bool,
                 parsing_schema: str,
                 per_execution_percentage: int,
                 sql_key: str,
                 sql_text: str,
                 sql_tuning_advisor_task_id: str,
                 sql_tuning_advisor_task_object_execution_id: str,
                 sql_tuning_advisor_task_object_id: str):
        """
        :param float db_time_benefit: The time benefit (in seconds) for the highest-rated finding for this object.
        :param bool is_alternative_plan_finding_present: Indicates whether an alternative execution plan was reported for this SQL statement.
        :param bool is_error_finding_present: Indicates whether there is an error in this SQL statement.
        :param bool is_index_finding_present: Indicates whether an index recommendation was reported for this SQL statement.
        :param bool is_miscellaneous_finding_present: Indicates whether a miscellaneous finding was reported for this SQL statement.
        :param bool is_restructure_sql_finding_present: Indicates whether a restructure SQL recommendation was reported for this SQL statement.
        :param bool is_sql_profile_finding_implemented: Indicates whether a SQL Profile recommendation has been implemented for this SQL statement.
        :param bool is_sql_profile_finding_present: Indicates whether a SQL Profile recommendation was reported for this SQL statement.
        :param bool is_stats_finding_present: Indicates whether a statistics recommendation was reported for this SQL statement.
        :param bool is_timeout_finding_present: Indicates whether the task timed out.
        :param str parsing_schema: The parsing schema of the object.
        :param int per_execution_percentage: The per-execution percentage benefit.
        :param str sql_key: The unique key of this SQL statement.
        :param str sql_text: The text of the SQL statement.
        :param str sql_tuning_advisor_task_id: The SQL tuning task identifier. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        :param str sql_tuning_advisor_task_object_execution_id: The execution id of the analyzed SQL object. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        :param str sql_tuning_advisor_task_object_id: The key of the object to which these recommendations apply. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        """
        pulumi.set(__self__, "db_time_benefit", db_time_benefit)
        pulumi.set(__self__, "is_alternative_plan_finding_present", is_alternative_plan_finding_present)
        pulumi.set(__self__, "is_error_finding_present", is_error_finding_present)
        pulumi.set(__self__, "is_index_finding_present", is_index_finding_present)
        pulumi.set(__self__, "is_miscellaneous_finding_present", is_miscellaneous_finding_present)
        pulumi.set(__self__, "is_restructure_sql_finding_present", is_restructure_sql_finding_present)
        pulumi.set(__self__, "is_sql_profile_finding_implemented", is_sql_profile_finding_implemented)
        pulumi.set(__self__, "is_sql_profile_finding_present", is_sql_profile_finding_present)
        pulumi.set(__self__, "is_stats_finding_present", is_stats_finding_present)
        pulumi.set(__self__, "is_timeout_finding_present", is_timeout_finding_present)
        pulumi.set(__self__, "parsing_schema", parsing_schema)
        pulumi.set(__self__, "per_execution_percentage", per_execution_percentage)
        pulumi.set(__self__, "sql_key", sql_key)
        pulumi.set(__self__, "sql_text", sql_text)
        pulumi.set(__self__, "sql_tuning_advisor_task_id", sql_tuning_advisor_task_id)
        pulumi.set(__self__, "sql_tuning_advisor_task_object_execution_id", sql_tuning_advisor_task_object_execution_id)
        pulumi.set(__self__, "sql_tuning_advisor_task_object_id", sql_tuning_advisor_task_object_id)

    @property
    @pulumi.getter(name="dbTimeBenefit")
    def db_time_benefit(self) -> float:
        """
        The time benefit (in seconds) for the highest-rated finding for this object.
        """
        return pulumi.get(self, "db_time_benefit")

    @property
    @pulumi.getter(name="isAlternativePlanFindingPresent")
    def is_alternative_plan_finding_present(self) -> bool:
        """
        Indicates whether an alternative execution plan was reported for this SQL statement.
        """
        return pulumi.get(self, "is_alternative_plan_finding_present")

    @property
    @pulumi.getter(name="isErrorFindingPresent")
    def is_error_finding_present(self) -> bool:
        """
        Indicates whether there is an error in this SQL statement.
        """
        return pulumi.get(self, "is_error_finding_present")

    @property
    @pulumi.getter(name="isIndexFindingPresent")
    def is_index_finding_present(self) -> bool:
        """
        Indicates whether an index recommendation was reported for this SQL statement.
        """
        return pulumi.get(self, "is_index_finding_present")

    @property
    @pulumi.getter(name="isMiscellaneousFindingPresent")
    def is_miscellaneous_finding_present(self) -> bool:
        """
        Indicates whether a miscellaneous finding was reported for this SQL statement.
        """
        return pulumi.get(self, "is_miscellaneous_finding_present")

    @property
    @pulumi.getter(name="isRestructureSqlFindingPresent")
    def is_restructure_sql_finding_present(self) -> bool:
        """
        Indicates whether a restructure SQL recommendation was reported for this SQL statement.
        """
        return pulumi.get(self, "is_restructure_sql_finding_present")

    @property
    @pulumi.getter(name="isSqlProfileFindingImplemented")
    def is_sql_profile_finding_implemented(self) -> bool:
        """
        Indicates whether a SQL Profile recommendation has been implemented for this SQL statement.
        """
        return pulumi.get(self, "is_sql_profile_finding_implemented")

    @property
    @pulumi.getter(name="isSqlProfileFindingPresent")
    def is_sql_profile_finding_present(self) -> bool:
        """
        Indicates whether a SQL Profile recommendation was reported for this SQL statement.
        """
        return pulumi.get(self, "is_sql_profile_finding_present")

    @property
    @pulumi.getter(name="isStatsFindingPresent")
    def is_stats_finding_present(self) -> bool:
        """
        Indicates whether a statistics recommendation was reported for this SQL statement.
        """
        return pulumi.get(self, "is_stats_finding_present")

    @property
    @pulumi.getter(name="isTimeoutFindingPresent")
    def is_timeout_finding_present(self) -> bool:
        """
        Indicates whether the task timed out.
        """
        return pulumi.get(self, "is_timeout_finding_present")

    @property
    @pulumi.getter(name="parsingSchema")
    def parsing_schema(self) -> str:
        """
        The parsing schema of the object.
        """
        return pulumi.get(self, "parsing_schema")

    @property
    @pulumi.getter(name="perExecutionPercentage")
    def per_execution_percentage(self) -> int:
        """
        The per-execution percentage benefit.
        """
        return pulumi.get(self, "per_execution_percentage")

    @property
    @pulumi.getter(name="sqlKey")
    def sql_key(self) -> str:
        """
        The unique key of this SQL statement.
        """
        return pulumi.get(self, "sql_key")

    @property
    @pulumi.getter(name="sqlText")
    def sql_text(self) -> str:
        """
        The text of the SQL statement.
        """
        return pulumi.get(self, "sql_text")

    @property
    @pulumi.getter(name="sqlTuningAdvisorTaskId")
    def sql_tuning_advisor_task_id(self) -> str:
        """
        The SQL tuning task identifier. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        """
        return pulumi.get(self, "sql_tuning_advisor_task_id")

    @property
    @pulumi.getter(name="sqlTuningAdvisorTaskObjectExecutionId")
    def sql_tuning_advisor_task_object_execution_id(self) -> str:
        """
        The execution id of the analyzed SQL object. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        """
        return pulumi.get(self, "sql_tuning_advisor_task_object_execution_id")

    @property
    @pulumi.getter(name="sqlTuningAdvisorTaskObjectId")
    def sql_tuning_advisor_task_object_id(self) -> str:
        """
        The key of the object to which these recommendations apply. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        """
        return pulumi.get(self, "sql_tuning_advisor_task_object_id")


@pulumi.output_type
class GetManagedDatabaseSqlTuningAdvisorTasksRecommendationItemResult(dict):
    def __init__(__self__, *,
                 benefit: float,
                 finding: str,
                 implement_action_sql: str,
                 is_parallel_execution: bool,
                 rationale: str,
                 recommendation: str,
                 recommendation_key: int,
                 recommendation_type: str,
                 sql_tuning_advisor_task_id: str,
                 sql_tuning_advisor_task_object_id: str):
        """
        :param float benefit: The percentage benefit of this implementation.
        :param str finding: Summary of the issue found in the SQL statement.
        :param str implement_action_sql: Action sql to be implemented based on the recommendation result.
        :param bool is_parallel_execution: Indicates whether a SQL Profile recommendation uses parallel execution.
        :param str rationale: Describes the reasoning behind the recommendation and how it relates to the finding.
        :param str recommendation: The recommendation for a specific finding.
        :param int recommendation_key: The unique identifier of the recommendation in the scope of the task.
        :param str recommendation_type: Type of recommendation.
        :param str sql_tuning_advisor_task_id: The SQL tuning task identifier. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        :param str sql_tuning_advisor_task_object_id: The key of the object to which these recommendations apply. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        """
        pulumi.set(__self__, "benefit", benefit)
        pulumi.set(__self__, "finding", finding)
        pulumi.set(__self__, "implement_action_sql", implement_action_sql)
        pulumi.set(__self__, "is_parallel_execution", is_parallel_execution)
        pulumi.set(__self__, "rationale", rationale)
        pulumi.set(__self__, "recommendation", recommendation)
        pulumi.set(__self__, "recommendation_key", recommendation_key)
        pulumi.set(__self__, "recommendation_type", recommendation_type)
        pulumi.set(__self__, "sql_tuning_advisor_task_id", sql_tuning_advisor_task_id)
        pulumi.set(__self__, "sql_tuning_advisor_task_object_id", sql_tuning_advisor_task_object_id)

    @property
    @pulumi.getter
    def benefit(self) -> float:
        """
        The percentage benefit of this implementation.
        """
        return pulumi.get(self, "benefit")

    @property
    @pulumi.getter
    def finding(self) -> str:
        """
        Summary of the issue found in the SQL statement.
        """
        return pulumi.get(self, "finding")

    @property
    @pulumi.getter(name="implementActionSql")
    def implement_action_sql(self) -> str:
        """
        Action sql to be implemented based on the recommendation result.
        """
        return pulumi.get(self, "implement_action_sql")

    @property
    @pulumi.getter(name="isParallelExecution")
    def is_parallel_execution(self) -> bool:
        """
        Indicates whether a SQL Profile recommendation uses parallel execution.
        """
        return pulumi.get(self, "is_parallel_execution")

    @property
    @pulumi.getter
    def rationale(self) -> str:
        """
        Describes the reasoning behind the recommendation and how it relates to the finding.
        """
        return pulumi.get(self, "rationale")

    @property
    @pulumi.getter
    def recommendation(self) -> str:
        """
        The recommendation for a specific finding.
        """
        return pulumi.get(self, "recommendation")

    @property
    @pulumi.getter(name="recommendationKey")
    def recommendation_key(self) -> int:
        """
        The unique identifier of the recommendation in the scope of the task.
        """
        return pulumi.get(self, "recommendation_key")

    @property
    @pulumi.getter(name="recommendationType")
    def recommendation_type(self) -> str:
        """
        Type of recommendation.
        """
        return pulumi.get(self, "recommendation_type")

    @property
    @pulumi.getter(name="sqlTuningAdvisorTaskId")
    def sql_tuning_advisor_task_id(self) -> str:
        """
        The SQL tuning task identifier. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        """
        return pulumi.get(self, "sql_tuning_advisor_task_id")

    @property
    @pulumi.getter(name="sqlTuningAdvisorTaskObjectId")
    def sql_tuning_advisor_task_object_id(self) -> str:
        """
        The key of the object to which these recommendations apply. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        """
        return pulumi.get(self, "sql_tuning_advisor_task_object_id")


@pulumi.output_type
class GetManagedDatabaseSqlTuningAdvisorTasksRecommendationsFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetManagedDatabaseSqlTuningAdvisorTasksRecommendationsSqlTuningAdvisorTaskRecommendationCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetManagedDatabaseSqlTuningAdvisorTasksRecommendationsSqlTuningAdvisorTaskRecommendationCollectionItemResult']):
        """
        :param Sequence['GetManagedDatabaseSqlTuningAdvisorTasksRecommendationsSqlTuningAdvisorTaskRecommendationCollectionItemArgs'] items: A list of SQL Tuning Advisor recommendations.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetManagedDatabaseSqlTuningAdvisorTasksRecommendationsSqlTuningAdvisorTaskRecommendationCollectionItemResult']:
        """
        A list of SQL Tuning Advisor recommendations.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetManagedDatabaseSqlTuningAdvisorTasksRecommendationsSqlTuningAdvisorTaskRecommendationCollectionItemResult(dict):
    def __init__(__self__, *,
                 benefit: float,
                 finding: str,
                 implement_action_sql: str,
                 is_parallel_execution: bool,
                 rationale: str,
                 recommendation: str,
                 recommendation_key: int,
                 recommendation_type: str,
                 sql_tuning_advisor_task_id: str,
                 sql_tuning_advisor_task_object_id: str):
        """
        :param float benefit: The percentage benefit of this implementation.
        :param str finding: Summary of the issue found in the SQL statement.
        :param str implement_action_sql: Action sql to be implemented based on the recommendation result.
        :param bool is_parallel_execution: Indicates whether a SQL Profile recommendation uses parallel execution.
        :param str rationale: Describes the reasoning behind the recommendation and how it relates to the finding.
        :param str recommendation: The recommendation for a specific finding.
        :param int recommendation_key: The unique identifier of the recommendation in the scope of the task.
        :param str recommendation_type: Type of recommendation.
        :param str sql_tuning_advisor_task_id: The SQL tuning task identifier. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        :param str sql_tuning_advisor_task_object_id: The key of the object to which these recommendations apply. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        """
        pulumi.set(__self__, "benefit", benefit)
        pulumi.set(__self__, "finding", finding)
        pulumi.set(__self__, "implement_action_sql", implement_action_sql)
        pulumi.set(__self__, "is_parallel_execution", is_parallel_execution)
        pulumi.set(__self__, "rationale", rationale)
        pulumi.set(__self__, "recommendation", recommendation)
        pulumi.set(__self__, "recommendation_key", recommendation_key)
        pulumi.set(__self__, "recommendation_type", recommendation_type)
        pulumi.set(__self__, "sql_tuning_advisor_task_id", sql_tuning_advisor_task_id)
        pulumi.set(__self__, "sql_tuning_advisor_task_object_id", sql_tuning_advisor_task_object_id)

    @property
    @pulumi.getter
    def benefit(self) -> float:
        """
        The percentage benefit of this implementation.
        """
        return pulumi.get(self, "benefit")

    @property
    @pulumi.getter
    def finding(self) -> str:
        """
        Summary of the issue found in the SQL statement.
        """
        return pulumi.get(self, "finding")

    @property
    @pulumi.getter(name="implementActionSql")
    def implement_action_sql(self) -> str:
        """
        Action sql to be implemented based on the recommendation result.
        """
        return pulumi.get(self, "implement_action_sql")

    @property
    @pulumi.getter(name="isParallelExecution")
    def is_parallel_execution(self) -> bool:
        """
        Indicates whether a SQL Profile recommendation uses parallel execution.
        """
        return pulumi.get(self, "is_parallel_execution")

    @property
    @pulumi.getter
    def rationale(self) -> str:
        """
        Describes the reasoning behind the recommendation and how it relates to the finding.
        """
        return pulumi.get(self, "rationale")

    @property
    @pulumi.getter
    def recommendation(self) -> str:
        """
        The recommendation for a specific finding.
        """
        return pulumi.get(self, "recommendation")

    @property
    @pulumi.getter(name="recommendationKey")
    def recommendation_key(self) -> int:
        """
        The unique identifier of the recommendation in the scope of the task.
        """
        return pulumi.get(self, "recommendation_key")

    @property
    @pulumi.getter(name="recommendationType")
    def recommendation_type(self) -> str:
        """
        Type of recommendation.
        """
        return pulumi.get(self, "recommendation_type")

    @property
    @pulumi.getter(name="sqlTuningAdvisorTaskId")
    def sql_tuning_advisor_task_id(self) -> str:
        """
        The SQL tuning task identifier. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        """
        return pulumi.get(self, "sql_tuning_advisor_task_id")

    @property
    @pulumi.getter(name="sqlTuningAdvisorTaskObjectId")
    def sql_tuning_advisor_task_object_id(self) -> str:
        """
        The key of the object to which these recommendations apply. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        """
        return pulumi.get(self, "sql_tuning_advisor_task_object_id")


@pulumi.output_type
class GetManagedDatabaseSqlTuningAdvisorTasksSqlExecutionPlanPlanResult(dict):
    def __init__(__self__, *,
                 access_predicates: str,
                 attribute: str,
                 bytes: str,
                 cardinality: str,
                 cost: float,
                 cpu_cost: float,
                 filter_predicates: str,
                 io_cost: float,
                 number_of_search_column: int,
                 object: str,
                 object_node: str,
                 object_owner: str,
                 object_position: int,
                 object_type: str,
                 operation: str,
                 optimizer_mode: str,
                 options: str,
                 other: str,
                 other_tag: str,
                 parent_step_id: int,
                 partition_id: int,
                 partition_start: str,
                 partition_stop: str,
                 plan_hash_value: str,
                 position: int,
                 remarks: str,
                 step_id: int,
                 temp_space: str,
                 time: str):
        """
        :param str access_predicates: The predicates used to locate rows in an access structure. For example, start or stop predicates for an index range scan.
        :param str attribute: The attribute of the SQL execution plan.
        :param str bytes: The number of bytes returned by the current operation.
        :param str cardinality: The number of rows returned by the current operation (estimated by the CBO).
        :param float cost: The cost of the current operation estimated by the cost-based optimizer (CBO).
        :param float cpu_cost: The CPU cost of the current operation.
        :param str filter_predicates: The predicates used to filter rows before producing them.
        :param float io_cost: The I/O cost of the current operation.
        :param int number_of_search_column: Number of index columns with start and stop keys (that is, the number of columns with matching predicates).
        :param str object: The name of the object.
        :param str object_node: The name of the database link used to reference the object.
        :param str object_owner: The owner of the object.
        :param int object_position: The numbered position of the object name in the original SQL statement.
        :param str object_type: The descriptive modifier that further describes the type of object.
        :param str operation: The name of the operation performed at this step.
        :param str optimizer_mode: The current mode of the optimizer, such as all_rows, first_rows_n (where n = 1, 10, 100, 1000, and so on).
        :param str options: The options used for the operation performed at this step.
        :param str other: Information about parallel execution servers and parallel queries
        :param str other_tag: Describes the function of the SQL text in the OTHER column.
        :param int parent_step_id: The ID of the next step that operates on the results of this step. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        :param int partition_id: The ID of the step in the execution plan that has computed the pair of values of partitionStart and partitionStop.
        :param str partition_start: A step may get data from a range of partitions of a partitioned object, such as table or index, based on predicates and sorting order. The partionStart is the starting partition of the range. The partitionStop is the ending partition of the range.
        :param str partition_stop: A step may get data from a range of partitions of a partitioned object, such as table or index, based on predicates and sorting order. The partionStart is the starting partition of the range. The partitionStop is the ending partition of the range.
        :param str plan_hash_value: The numerical representation of the SQL execution plan.
        :param int position: The order of processing for steps with the same parent ID.
        :param str remarks: The place for comments that can be added to the steps of the execution plan.
        :param int step_id: The identification number of a step in the SQL execution plan. This is unique within the SQL execution plan. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        :param str temp_space: The temporary space usage (in bytes) of the operation (sort or hash-join) as estimated by the CBO.
        :param str time: The elapsed time (in seconds) of the operation as estimated by the CBO.
        """
        pulumi.set(__self__, "access_predicates", access_predicates)
        pulumi.set(__self__, "attribute", attribute)
        pulumi.set(__self__, "bytes", bytes)
        pulumi.set(__self__, "cardinality", cardinality)
        pulumi.set(__self__, "cost", cost)
        pulumi.set(__self__, "cpu_cost", cpu_cost)
        pulumi.set(__self__, "filter_predicates", filter_predicates)
        pulumi.set(__self__, "io_cost", io_cost)
        pulumi.set(__self__, "number_of_search_column", number_of_search_column)
        pulumi.set(__self__, "object", object)
        pulumi.set(__self__, "object_node", object_node)
        pulumi.set(__self__, "object_owner", object_owner)
        pulumi.set(__self__, "object_position", object_position)
        pulumi.set(__self__, "object_type", object_type)
        pulumi.set(__self__, "operation", operation)
        pulumi.set(__self__, "optimizer_mode", optimizer_mode)
        pulumi.set(__self__, "options", options)
        pulumi.set(__self__, "other", other)
        pulumi.set(__self__, "other_tag", other_tag)
        pulumi.set(__self__, "parent_step_id", parent_step_id)
        pulumi.set(__self__, "partition_id", partition_id)
        pulumi.set(__self__, "partition_start", partition_start)
        pulumi.set(__self__, "partition_stop", partition_stop)
        pulumi.set(__self__, "plan_hash_value", plan_hash_value)
        pulumi.set(__self__, "position", position)
        pulumi.set(__self__, "remarks", remarks)
        pulumi.set(__self__, "step_id", step_id)
        pulumi.set(__self__, "temp_space", temp_space)
        pulumi.set(__self__, "time", time)

    @property
    @pulumi.getter(name="accessPredicates")
    def access_predicates(self) -> str:
        """
        The predicates used to locate rows in an access structure. For example, start or stop predicates for an index range scan.
        """
        return pulumi.get(self, "access_predicates")

    @property
    @pulumi.getter
    def attribute(self) -> str:
        """
        The attribute of the SQL execution plan.
        """
        return pulumi.get(self, "attribute")

    @property
    @pulumi.getter
    def bytes(self) -> str:
        """
        The number of bytes returned by the current operation.
        """
        return pulumi.get(self, "bytes")

    @property
    @pulumi.getter
    def cardinality(self) -> str:
        """
        The number of rows returned by the current operation (estimated by the CBO).
        """
        return pulumi.get(self, "cardinality")

    @property
    @pulumi.getter
    def cost(self) -> float:
        """
        The cost of the current operation estimated by the cost-based optimizer (CBO).
        """
        return pulumi.get(self, "cost")

    @property
    @pulumi.getter(name="cpuCost")
    def cpu_cost(self) -> float:
        """
        The CPU cost of the current operation.
        """
        return pulumi.get(self, "cpu_cost")

    @property
    @pulumi.getter(name="filterPredicates")
    def filter_predicates(self) -> str:
        """
        The predicates used to filter rows before producing them.
        """
        return pulumi.get(self, "filter_predicates")

    @property
    @pulumi.getter(name="ioCost")
    def io_cost(self) -> float:
        """
        The I/O cost of the current operation.
        """
        return pulumi.get(self, "io_cost")

    @property
    @pulumi.getter(name="numberOfSearchColumn")
    def number_of_search_column(self) -> int:
        """
        Number of index columns with start and stop keys (that is, the number of columns with matching predicates).
        """
        return pulumi.get(self, "number_of_search_column")

    @property
    @pulumi.getter
    def object(self) -> str:
        """
        The name of the object.
        """
        return pulumi.get(self, "object")

    @property
    @pulumi.getter(name="objectNode")
    def object_node(self) -> str:
        """
        The name of the database link used to reference the object.
        """
        return pulumi.get(self, "object_node")

    @property
    @pulumi.getter(name="objectOwner")
    def object_owner(self) -> str:
        """
        The owner of the object.
        """
        return pulumi.get(self, "object_owner")

    @property
    @pulumi.getter(name="objectPosition")
    def object_position(self) -> int:
        """
        The numbered position of the object name in the original SQL statement.
        """
        return pulumi.get(self, "object_position")

    @property
    @pulumi.getter(name="objectType")
    def object_type(self) -> str:
        """
        The descriptive modifier that further describes the type of object.
        """
        return pulumi.get(self, "object_type")

    @property
    @pulumi.getter
    def operation(self) -> str:
        """
        The name of the operation performed at this step.
        """
        return pulumi.get(self, "operation")

    @property
    @pulumi.getter(name="optimizerMode")
    def optimizer_mode(self) -> str:
        """
        The current mode of the optimizer, such as all_rows, first_rows_n (where n = 1, 10, 100, 1000, and so on).
        """
        return pulumi.get(self, "optimizer_mode")

    @property
    @pulumi.getter
    def options(self) -> str:
        """
        The options used for the operation performed at this step.
        """
        return pulumi.get(self, "options")

    @property
    @pulumi.getter
    def other(self) -> str:
        """
        Information about parallel execution servers and parallel queries
        """
        return pulumi.get(self, "other")

    @property
    @pulumi.getter(name="otherTag")
    def other_tag(self) -> str:
        """
        Describes the function of the SQL text in the OTHER column.
        """
        return pulumi.get(self, "other_tag")

    @property
    @pulumi.getter(name="parentStepId")
    def parent_step_id(self) -> int:
        """
        The ID of the next step that operates on the results of this step. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        """
        return pulumi.get(self, "parent_step_id")

    @property
    @pulumi.getter(name="partitionId")
    def partition_id(self) -> int:
        """
        The ID of the step in the execution plan that has computed the pair of values of partitionStart and partitionStop.
        """
        return pulumi.get(self, "partition_id")

    @property
    @pulumi.getter(name="partitionStart")
    def partition_start(self) -> str:
        """
        A step may get data from a range of partitions of a partitioned object, such as table or index, based on predicates and sorting order. The partionStart is the starting partition of the range. The partitionStop is the ending partition of the range.
        """
        return pulumi.get(self, "partition_start")

    @property
    @pulumi.getter(name="partitionStop")
    def partition_stop(self) -> str:
        """
        A step may get data from a range of partitions of a partitioned object, such as table or index, based on predicates and sorting order. The partionStart is the starting partition of the range. The partitionStop is the ending partition of the range.
        """
        return pulumi.get(self, "partition_stop")

    @property
    @pulumi.getter(name="planHashValue")
    def plan_hash_value(self) -> str:
        """
        The numerical representation of the SQL execution plan.
        """
        return pulumi.get(self, "plan_hash_value")

    @property
    @pulumi.getter
    def position(self) -> int:
        """
        The order of processing for steps with the same parent ID.
        """
        return pulumi.get(self, "position")

    @property
    @pulumi.getter
    def remarks(self) -> str:
        """
        The place for comments that can be added to the steps of the execution plan.
        """
        return pulumi.get(self, "remarks")

    @property
    @pulumi.getter(name="stepId")
    def step_id(self) -> int:
        """
        The identification number of a step in the SQL execution plan. This is unique within the SQL execution plan. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        """
        return pulumi.get(self, "step_id")

    @property
    @pulumi.getter(name="tempSpace")
    def temp_space(self) -> str:
        """
        The temporary space usage (in bytes) of the operation (sort or hash-join) as estimated by the CBO.
        """
        return pulumi.get(self, "temp_space")

    @property
    @pulumi.getter
    def time(self) -> str:
        """
        The elapsed time (in seconds) of the operation as estimated by the CBO.
        """
        return pulumi.get(self, "time")


@pulumi.output_type
class GetManagedDatabaseSqlTuningAdvisorTasksSqlTuningAdvisorTaskCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetManagedDatabaseSqlTuningAdvisorTasksSqlTuningAdvisorTaskCollectionItemResult']):
        """
        :param Sequence['GetManagedDatabaseSqlTuningAdvisorTasksSqlTuningAdvisorTaskCollectionItemArgs'] items: A list of SQL Tuning Advisor tasks.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetManagedDatabaseSqlTuningAdvisorTasksSqlTuningAdvisorTaskCollectionItemResult']:
        """
        A list of SQL Tuning Advisor tasks.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetManagedDatabaseSqlTuningAdvisorTasksSqlTuningAdvisorTaskCollectionItemResult(dict):
    def __init__(__self__, *,
                 days_to_expire: int,
                 description: str,
                 instance_id: int,
                 name: str,
                 owner: str,
                 recommendation_count: int,
                 sql_tuning_advisor_task_id: str,
                 task_status: str,
                 time_created: str,
                 time_execution_ended: str,
                 time_execution_started: str,
                 total_sql_statements: int):
        """
        :param int days_to_expire: The number of days left before the task expires. If the value equals -1, then the task has no expiration time (UNLIMITED).
        :param str description: The description of the SQL Tuning Advisor task.
        :param int instance_id: The instance ID of the SQL Tuning Advisor task. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        :param str name: The optional query parameter to filter the SQL Tuning Advisor task list by name.
        :param str owner: The owner of the SQL Tuning Advisor task.
        :param int recommendation_count: The number of recommendations provided for the SQL Tuning Advisor task.
        :param str sql_tuning_advisor_task_id: The unique identifier of the SQL Tuning Advisor task. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        :param str task_status: The status of the SQL Tuning Advisor task.
        :param str time_created: The Creation date of the SQL Tuning Advisor task.
        :param str time_execution_ended: The end time of the task execution.
        :param str time_execution_started: The start time of the task execution.
        :param int total_sql_statements: The total number of SQL statements related to the SQL Tuning Advisor task.
        """
        pulumi.set(__self__, "days_to_expire", days_to_expire)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "instance_id", instance_id)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "owner", owner)
        pulumi.set(__self__, "recommendation_count", recommendation_count)
        pulumi.set(__self__, "sql_tuning_advisor_task_id", sql_tuning_advisor_task_id)
        pulumi.set(__self__, "task_status", task_status)
        pulumi.set(__self__, "time_created", time_created)
        pulumi.set(__self__, "time_execution_ended", time_execution_ended)
        pulumi.set(__self__, "time_execution_started", time_execution_started)
        pulumi.set(__self__, "total_sql_statements", total_sql_statements)

    @property
    @pulumi.getter(name="daysToExpire")
    def days_to_expire(self) -> int:
        """
        The number of days left before the task expires. If the value equals -1, then the task has no expiration time (UNLIMITED).
        """
        return pulumi.get(self, "days_to_expire")

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        The description of the SQL Tuning Advisor task.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="instanceId")
    def instance_id(self) -> int:
        """
        The instance ID of the SQL Tuning Advisor task. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        """
        return pulumi.get(self, "instance_id")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The optional query parameter to filter the SQL Tuning Advisor task list by name.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def owner(self) -> str:
        """
        The owner of the SQL Tuning Advisor task.
        """
        return pulumi.get(self, "owner")

    @property
    @pulumi.getter(name="recommendationCount")
    def recommendation_count(self) -> int:
        """
        The number of recommendations provided for the SQL Tuning Advisor task.
        """
        return pulumi.get(self, "recommendation_count")

    @property
    @pulumi.getter(name="sqlTuningAdvisorTaskId")
    def sql_tuning_advisor_task_id(self) -> str:
        """
        The unique identifier of the SQL Tuning Advisor task. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        """
        return pulumi.get(self, "sql_tuning_advisor_task_id")

    @property
    @pulumi.getter(name="taskStatus")
    def task_status(self) -> str:
        """
        The status of the SQL Tuning Advisor task.
        """
        return pulumi.get(self, "task_status")

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> str:
        """
        The Creation date of the SQL Tuning Advisor task.
        """
        return pulumi.get(self, "time_created")

    @property
    @pulumi.getter(name="timeExecutionEnded")
    def time_execution_ended(self) -> str:
        """
        The end time of the task execution.
        """
        return pulumi.get(self, "time_execution_ended")

    @property
    @pulumi.getter(name="timeExecutionStarted")
    def time_execution_started(self) -> str:
        """
        The start time of the task execution.
        """
        return pulumi.get(self, "time_execution_started")

    @property
    @pulumi.getter(name="totalSqlStatements")
    def total_sql_statements(self) -> int:
        """
        The total number of SQL statements related to the SQL Tuning Advisor task.
        """
        return pulumi.get(self, "total_sql_statements")


@pulumi.output_type
class GetManagedDatabaseSqlTuningAdvisorTasksSummaryReportIndexFindingResult(dict):
    def __init__(__self__, *,
                 index_columns: Sequence[str],
                 index_hash_value: str,
                 index_name: str,
                 reference_count: int,
                 schema: str,
                 table_name: str):
        """
        :param Sequence[str] index_columns: Columns of the index.
        :param str index_hash_value: Numerical representation of the index.
        :param str index_name: Name of the index.
        :param int reference_count: The number of the times the object is referenced within the SQL Tuning advisor task findings.
        :param str schema: Schema of the object.
        :param str table_name: Table's name related to the index.
        """
        pulumi.set(__self__, "index_columns", index_columns)
        pulumi.set(__self__, "index_hash_value", index_hash_value)
        pulumi.set(__self__, "index_name", index_name)
        pulumi.set(__self__, "reference_count", reference_count)
        pulumi.set(__self__, "schema", schema)
        pulumi.set(__self__, "table_name", table_name)

    @property
    @pulumi.getter(name="indexColumns")
    def index_columns(self) -> Sequence[str]:
        """
        Columns of the index.
        """
        return pulumi.get(self, "index_columns")

    @property
    @pulumi.getter(name="indexHashValue")
    def index_hash_value(self) -> str:
        """
        Numerical representation of the index.
        """
        return pulumi.get(self, "index_hash_value")

    @property
    @pulumi.getter(name="indexName")
    def index_name(self) -> str:
        """
        Name of the index.
        """
        return pulumi.get(self, "index_name")

    @property
    @pulumi.getter(name="referenceCount")
    def reference_count(self) -> int:
        """
        The number of the times the object is referenced within the SQL Tuning advisor task findings.
        """
        return pulumi.get(self, "reference_count")

    @property
    @pulumi.getter
    def schema(self) -> str:
        """
        Schema of the object.
        """
        return pulumi.get(self, "schema")

    @property
    @pulumi.getter(name="tableName")
    def table_name(self) -> str:
        """
        Table's name related to the index.
        """
        return pulumi.get(self, "table_name")


@pulumi.output_type
class GetManagedDatabaseSqlTuningAdvisorTasksSummaryReportObjectStatFindingResult(dict):
    def __init__(__self__, *,
                 object: str,
                 object_hash_value: str,
                 object_type: str,
                 problem_type: str,
                 reference_count: int,
                 schema: str):
        """
        :param str object: Name of the object.
        :param str object_hash_value: Numerical representation of the object.
        :param str object_type: Type of the object.
        :param str problem_type: Type of statistics problem related to the object.
        :param int reference_count: The number of the times the object is referenced within the SQL Tuning advisor task findings.
        :param str schema: Schema of the object.
        """
        pulumi.set(__self__, "object", object)
        pulumi.set(__self__, "object_hash_value", object_hash_value)
        pulumi.set(__self__, "object_type", object_type)
        pulumi.set(__self__, "problem_type", problem_type)
        pulumi.set(__self__, "reference_count", reference_count)
        pulumi.set(__self__, "schema", schema)

    @property
    @pulumi.getter
    def object(self) -> str:
        """
        Name of the object.
        """
        return pulumi.get(self, "object")

    @property
    @pulumi.getter(name="objectHashValue")
    def object_hash_value(self) -> str:
        """
        Numerical representation of the object.
        """
        return pulumi.get(self, "object_hash_value")

    @property
    @pulumi.getter(name="objectType")
    def object_type(self) -> str:
        """
        Type of the object.
        """
        return pulumi.get(self, "object_type")

    @property
    @pulumi.getter(name="problemType")
    def problem_type(self) -> str:
        """
        Type of statistics problem related to the object.
        """
        return pulumi.get(self, "problem_type")

    @property
    @pulumi.getter(name="referenceCount")
    def reference_count(self) -> int:
        """
        The number of the times the object is referenced within the SQL Tuning advisor task findings.
        """
        return pulumi.get(self, "reference_count")

    @property
    @pulumi.getter
    def schema(self) -> str:
        """
        Schema of the object.
        """
        return pulumi.get(self, "schema")


@pulumi.output_type
class GetManagedDatabaseSqlTuningAdvisorTasksSummaryReportStatisticResult(dict):
    def __init__(__self__, *,
                 finding_benefits: Sequence['outputs.GetManagedDatabaseSqlTuningAdvisorTasksSummaryReportStatisticFindingBenefitResult'],
                 finding_counts: Sequence['outputs.GetManagedDatabaseSqlTuningAdvisorTasksSummaryReportStatisticFindingCountResult'],
                 statement_counts: Sequence['outputs.GetManagedDatabaseSqlTuningAdvisorTasksSummaryReportStatisticStatementCountResult']):
        """
        :param Sequence['GetManagedDatabaseSqlTuningAdvisorTasksSummaryReportStatisticFindingBenefitArgs'] finding_benefits: The benefits of the findings in the SQL Tuning Advisor summary report.
        :param Sequence['GetManagedDatabaseSqlTuningAdvisorTasksSummaryReportStatisticFindingCountArgs'] finding_counts: The number of findings in the SQL Tuning Advisor summary report.
        :param Sequence['GetManagedDatabaseSqlTuningAdvisorTasksSummaryReportStatisticStatementCountArgs'] statement_counts: The number of statements in the SQL Tuning Advisor summary report.
        """
        pulumi.set(__self__, "finding_benefits", finding_benefits)
        pulumi.set(__self__, "finding_counts", finding_counts)
        pulumi.set(__self__, "statement_counts", statement_counts)

    @property
    @pulumi.getter(name="findingBenefits")
    def finding_benefits(self) -> Sequence['outputs.GetManagedDatabaseSqlTuningAdvisorTasksSummaryReportStatisticFindingBenefitResult']:
        """
        The benefits of the findings in the SQL Tuning Advisor summary report.
        """
        return pulumi.get(self, "finding_benefits")

    @property
    @pulumi.getter(name="findingCounts")
    def finding_counts(self) -> Sequence['outputs.GetManagedDatabaseSqlTuningAdvisorTasksSummaryReportStatisticFindingCountResult']:
        """
        The number of findings in the SQL Tuning Advisor summary report.
        """
        return pulumi.get(self, "finding_counts")

    @property
    @pulumi.getter(name="statementCounts")
    def statement_counts(self) -> Sequence['outputs.GetManagedDatabaseSqlTuningAdvisorTasksSummaryReportStatisticStatementCountResult']:
        """
        The number of statements in the SQL Tuning Advisor summary report.
        """
        return pulumi.get(self, "statement_counts")


@pulumi.output_type
class GetManagedDatabaseSqlTuningAdvisorTasksSummaryReportStatisticFindingBenefitResult(dict):
    def __init__(__self__, *,
                 db_time_after_implemented: int,
                 db_time_after_recommended: int,
                 db_time_before_implemented: int,
                 db_time_before_recommended: int):
        """
        :param int db_time_after_implemented: The actual database time of the SQL statements for which SQL Tuning Advisor recommendations are implemented.
        :param int db_time_after_recommended: The estimated database time of the above SQL statements, if SQL Tuning Advisor recommendations are implemented.
        :param int db_time_before_implemented: The actual database time of the above SQL statements, before SQL Tuning Advisor recommendations are implemented.
        :param int db_time_before_recommended: The actual database time of the SQL statements for which SQL Tuning Advisor recommendations are not implemented.
        """
        pulumi.set(__self__, "db_time_after_implemented", db_time_after_implemented)
        pulumi.set(__self__, "db_time_after_recommended", db_time_after_recommended)
        pulumi.set(__self__, "db_time_before_implemented", db_time_before_implemented)
        pulumi.set(__self__, "db_time_before_recommended", db_time_before_recommended)

    @property
    @pulumi.getter(name="dbTimeAfterImplemented")
    def db_time_after_implemented(self) -> int:
        """
        The actual database time of the SQL statements for which SQL Tuning Advisor recommendations are implemented.
        """
        return pulumi.get(self, "db_time_after_implemented")

    @property
    @pulumi.getter(name="dbTimeAfterRecommended")
    def db_time_after_recommended(self) -> int:
        """
        The estimated database time of the above SQL statements, if SQL Tuning Advisor recommendations are implemented.
        """
        return pulumi.get(self, "db_time_after_recommended")

    @property
    @pulumi.getter(name="dbTimeBeforeImplemented")
    def db_time_before_implemented(self) -> int:
        """
        The actual database time of the above SQL statements, before SQL Tuning Advisor recommendations are implemented.
        """
        return pulumi.get(self, "db_time_before_implemented")

    @property
    @pulumi.getter(name="dbTimeBeforeRecommended")
    def db_time_before_recommended(self) -> int:
        """
        The actual database time of the SQL statements for which SQL Tuning Advisor recommendations are not implemented.
        """
        return pulumi.get(self, "db_time_before_recommended")


@pulumi.output_type
class GetManagedDatabaseSqlTuningAdvisorTasksSummaryReportStatisticFindingCountResult(dict):
    def __init__(__self__, *,
                 alternate_plan: int,
                 implemented_sql_profile: int,
                 index: int,
                 recommended_sql_profile: int,
                 restructure: int,
                 statistics: int):
        """
        :param int alternate_plan: The number of distinct SQL statements with alternative plan recommendations.
        :param int implemented_sql_profile: The number of distinct SQL statements with implemented SQL profiles.
        :param int index: The number of distinct SQL statements with index recommendations.
        :param int recommended_sql_profile: The number of distinct SQL statements with recommended SQL profiles.
        :param int restructure: The number of distinct SQL statements with restructured SQL recommendations.
        :param int statistics: The number of distinct SQL statements with stale or missing optimizer statistics recommendations.
        """
        pulumi.set(__self__, "alternate_plan", alternate_plan)
        pulumi.set(__self__, "implemented_sql_profile", implemented_sql_profile)
        pulumi.set(__self__, "index", index)
        pulumi.set(__self__, "recommended_sql_profile", recommended_sql_profile)
        pulumi.set(__self__, "restructure", restructure)
        pulumi.set(__self__, "statistics", statistics)

    @property
    @pulumi.getter(name="alternatePlan")
    def alternate_plan(self) -> int:
        """
        The number of distinct SQL statements with alternative plan recommendations.
        """
        return pulumi.get(self, "alternate_plan")

    @property
    @pulumi.getter(name="implementedSqlProfile")
    def implemented_sql_profile(self) -> int:
        """
        The number of distinct SQL statements with implemented SQL profiles.
        """
        return pulumi.get(self, "implemented_sql_profile")

    @property
    @pulumi.getter
    def index(self) -> int:
        """
        The number of distinct SQL statements with index recommendations.
        """
        return pulumi.get(self, "index")

    @property
    @pulumi.getter(name="recommendedSqlProfile")
    def recommended_sql_profile(self) -> int:
        """
        The number of distinct SQL statements with recommended SQL profiles.
        """
        return pulumi.get(self, "recommended_sql_profile")

    @property
    @pulumi.getter
    def restructure(self) -> int:
        """
        The number of distinct SQL statements with restructured SQL recommendations.
        """
        return pulumi.get(self, "restructure")

    @property
    @pulumi.getter
    def statistics(self) -> int:
        """
        The number of distinct SQL statements with stale or missing optimizer statistics recommendations.
        """
        return pulumi.get(self, "statistics")


@pulumi.output_type
class GetManagedDatabaseSqlTuningAdvisorTasksSummaryReportStatisticStatementCountResult(dict):
    def __init__(__self__, *,
                 distinct_sql: int,
                 error_count: int,
                 finding_count: int,
                 total_sql: int):
        """
        :param int distinct_sql: The number of distinct SQL statements.
        :param int error_count: The number of distinct SQL statements with errors.
        :param int finding_count: The number of distinct SQL statements with findings.
        :param int total_sql: The total number of SQL statements.
        """
        pulumi.set(__self__, "distinct_sql", distinct_sql)
        pulumi.set(__self__, "error_count", error_count)
        pulumi.set(__self__, "finding_count", finding_count)
        pulumi.set(__self__, "total_sql", total_sql)

    @property
    @pulumi.getter(name="distinctSql")
    def distinct_sql(self) -> int:
        """
        The number of distinct SQL statements.
        """
        return pulumi.get(self, "distinct_sql")

    @property
    @pulumi.getter(name="errorCount")
    def error_count(self) -> int:
        """
        The number of distinct SQL statements with errors.
        """
        return pulumi.get(self, "error_count")

    @property
    @pulumi.getter(name="findingCount")
    def finding_count(self) -> int:
        """
        The number of distinct SQL statements with findings.
        """
        return pulumi.get(self, "finding_count")

    @property
    @pulumi.getter(name="totalSql")
    def total_sql(self) -> int:
        """
        The total number of SQL statements.
        """
        return pulumi.get(self, "total_sql")


@pulumi.output_type
class GetManagedDatabaseSqlTuningAdvisorTasksSummaryReportTaskInfoResult(dict):
    def __init__(__self__, *,
                 description: str,
                 id: str,
                 name: str,
                 owner: str,
                 running_time: int,
                 status: str,
                 time_ended: str,
                 time_started: str):
        """
        :param str description: The description of the SQL Tuning Advisor task. This is not defined for Auto SQL Tuning tasks.
        :param str id: The ID of the SQL Tuning Advisor task. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        :param str name: The name of the SQL Tuning Advisor task.
        :param str owner: The owner of the SQL Tuning Advisor task.
        :param int running_time: The total running time in seconds. This is not defined for Auto SQL Tuning tasks.
        :param str status: The status of the SQL Tuning Advisor task. This is not defined for Auto SQL Tuning tasks.
        :param str time_ended: The end time of the task execution.
        :param str time_started: The start time of the task execution.
        """
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "owner", owner)
        pulumi.set(__self__, "running_time", running_time)
        pulumi.set(__self__, "status", status)
        pulumi.set(__self__, "time_ended", time_ended)
        pulumi.set(__self__, "time_started", time_started)

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        The description of the SQL Tuning Advisor task. This is not defined for Auto SQL Tuning tasks.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the SQL Tuning Advisor task. This is not the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the SQL Tuning Advisor task.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def owner(self) -> str:
        """
        The owner of the SQL Tuning Advisor task.
        """
        return pulumi.get(self, "owner")

    @property
    @pulumi.getter(name="runningTime")
    def running_time(self) -> int:
        """
        The total running time in seconds. This is not defined for Auto SQL Tuning tasks.
        """
        return pulumi.get(self, "running_time")

    @property
    @pulumi.getter
    def status(self) -> str:
        """
        The status of the SQL Tuning Advisor task. This is not defined for Auto SQL Tuning tasks.
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter(name="timeEnded")
    def time_ended(self) -> str:
        """
        The end time of the task execution.
        """
        return pulumi.get(self, "time_ended")

    @property
    @pulumi.getter(name="timeStarted")
    def time_started(self) -> str:
        """
        The start time of the task execution.
        """
        return pulumi.get(self, "time_started")


@pulumi.output_type
class GetManagedDatabaseSqlTuningSetItemResult(dict):
    def __init__(__self__, *,
                 description: str,
                 name: str,
                 owner: str,
                 statement_counts: int):
        """
        :param str description: The description of the SQL tuning set.
        :param str name: The name of the SQL tuning set.
        :param str owner: The owner of the SQL tuning set.
        :param int statement_counts: The number of SQL statements in the SQL tuning set.
        """
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "owner", owner)
        pulumi.set(__self__, "statement_counts", statement_counts)

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        The description of the SQL tuning set.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the SQL tuning set.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def owner(self) -> str:
        """
        The owner of the SQL tuning set.
        """
        return pulumi.get(self, "owner")

    @property
    @pulumi.getter(name="statementCounts")
    def statement_counts(self) -> int:
        """
        The number of SQL statements in the SQL tuning set.
        """
        return pulumi.get(self, "statement_counts")


@pulumi.output_type
class GetManagedDatabaseSqlTuningSetsFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: The name of the SQL tuning set.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the SQL tuning set.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetManagedDatabaseSqlTuningSetsSqlTuningSetCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetManagedDatabaseSqlTuningSetsSqlTuningSetCollectionItemResult']):
        """
        :param Sequence['GetManagedDatabaseSqlTuningSetsSqlTuningSetCollectionItemArgs'] items: The details in the SQL tuning set summary.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetManagedDatabaseSqlTuningSetsSqlTuningSetCollectionItemResult']:
        """
        The details in the SQL tuning set summary.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetManagedDatabaseSqlTuningSetsSqlTuningSetCollectionItemResult(dict):
    def __init__(__self__, *,
                 description: str,
                 name: str,
                 owner: str,
                 statement_counts: int):
        """
        :param str description: The description of the SQL tuning set.
        :param str name: The name of the SQL tuning set.
        :param str owner: The owner of the SQL tuning set.
        :param int statement_counts: The number of SQL statements in the SQL tuning set.
        """
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "owner", owner)
        pulumi.set(__self__, "statement_counts", statement_counts)

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        The description of the SQL tuning set.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the SQL tuning set.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def owner(self) -> str:
        """
        The owner of the SQL tuning set.
        """
        return pulumi.get(self, "owner")

    @property
    @pulumi.getter(name="statementCounts")
    def statement_counts(self) -> int:
        """
        The number of SQL statements in the SQL tuning set.
        """
        return pulumi.get(self, "statement_counts")


@pulumi.output_type
class GetManagedDatabaseTableStatisticsFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetManagedDatabaseTableStatisticsTableStatisticsCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetManagedDatabaseTableStatisticsTableStatisticsCollectionItemResult']):
        """
        :param Sequence['GetManagedDatabaseTableStatisticsTableStatisticsCollectionItemArgs'] items: The list of table statistics statuses.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetManagedDatabaseTableStatisticsTableStatisticsCollectionItemResult']:
        """
        The list of table statistics statuses.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetManagedDatabaseTableStatisticsTableStatisticsCollectionItemResult(dict):
    def __init__(__self__, *,
                 count: int,
                 percentage: float,
                 type: str):
        """
        :param int count: The number of objects aggregated by status category.
        :param float percentage: The percentage of objects with a particular status.
        :param str type: The valid status categories of table statistics.
        """
        pulumi.set(__self__, "count", count)
        pulumi.set(__self__, "percentage", percentage)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def count(self) -> int:
        """
        The number of objects aggregated by status category.
        """
        return pulumi.get(self, "count")

    @property
    @pulumi.getter
    def percentage(self) -> float:
        """
        The percentage of objects with a particular status.
        """
        return pulumi.get(self, "percentage")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        The valid status categories of table statistics.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetManagedDatabaseUserConsumerGroupPrivilegeItemResult(dict):
    def __init__(__self__, *,
                 grant_option: str,
                 initial_group: str,
                 name: str):
        """
        :param str grant_option: Indicates whether the privilege is granted with the GRANT option (YES) or not (NO).
        :param str initial_group: Indicates whether the consumer group is designated as the default for this user or role (YES) or not (NO).
        :param str name: A filter to return only resources that match the entire name.
        """
        pulumi.set(__self__, "grant_option", grant_option)
        pulumi.set(__self__, "initial_group", initial_group)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter(name="grantOption")
    def grant_option(self) -> str:
        """
        Indicates whether the privilege is granted with the GRANT option (YES) or not (NO).
        """
        return pulumi.get(self, "grant_option")

    @property
    @pulumi.getter(name="initialGroup")
    def initial_group(self) -> str:
        """
        Indicates whether the consumer group is designated as the default for this user or role (YES) or not (NO).
        """
        return pulumi.get(self, "initial_group")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetManagedDatabaseUserConsumerGroupPrivilegesConsumerGroupPrivilegeCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetManagedDatabaseUserConsumerGroupPrivilegesConsumerGroupPrivilegeCollectionItemResult']):
        """
        :param Sequence['GetManagedDatabaseUserConsumerGroupPrivilegesConsumerGroupPrivilegeCollectionItemArgs'] items: An array of consumer group privileges.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetManagedDatabaseUserConsumerGroupPrivilegesConsumerGroupPrivilegeCollectionItemResult']:
        """
        An array of consumer group privileges.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetManagedDatabaseUserConsumerGroupPrivilegesConsumerGroupPrivilegeCollectionItemResult(dict):
    def __init__(__self__, *,
                 grant_option: str,
                 initial_group: str,
                 name: str):
        """
        :param str grant_option: Indicates whether the privilege is granted with the GRANT option (YES) or not (NO).
        :param str initial_group: Indicates whether the consumer group is designated as the default for this user or role (YES) or not (NO).
        :param str name: A filter to return only resources that match the entire name.
        """
        pulumi.set(__self__, "grant_option", grant_option)
        pulumi.set(__self__, "initial_group", initial_group)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter(name="grantOption")
    def grant_option(self) -> str:
        """
        Indicates whether the privilege is granted with the GRANT option (YES) or not (NO).
        """
        return pulumi.get(self, "grant_option")

    @property
    @pulumi.getter(name="initialGroup")
    def initial_group(self) -> str:
        """
        Indicates whether the consumer group is designated as the default for this user or role (YES) or not (NO).
        """
        return pulumi.get(self, "initial_group")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetManagedDatabaseUserConsumerGroupPrivilegesFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: A filter to return only resources that match the entire name.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetManagedDatabaseUserDataAccessContainerItemResult(dict):
    def __init__(__self__, *,
                 name: str):
        """
        :param str name: A filter to return only resources that match the entire name.
        """
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetManagedDatabaseUserDataAccessContainersDataAccessContainerCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetManagedDatabaseUserDataAccessContainersDataAccessContainerCollectionItemResult']):
        """
        :param Sequence['GetManagedDatabaseUserDataAccessContainersDataAccessContainerCollectionItemArgs'] items: An array of container resources.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetManagedDatabaseUserDataAccessContainersDataAccessContainerCollectionItemResult']:
        """
        An array of container resources.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetManagedDatabaseUserDataAccessContainersDataAccessContainerCollectionItemResult(dict):
    def __init__(__self__, *,
                 name: str):
        """
        :param str name: A filter to return only resources that match the entire name.
        """
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetManagedDatabaseUserDataAccessContainersFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: A filter to return only resources that match the entire name.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetManagedDatabaseUserObjectPrivilegeItemResult(dict):
    def __init__(__self__, *,
                 common: str,
                 grant_option: str,
                 grantor: str,
                 hierarchy: str,
                 inherited: str,
                 name: str,
                 object: str,
                 owner: str,
                 schema_type: str):
        """
        :param str common: Indicates how the object privilege was granted. Possible values: YES if the role is granted commonly (CONTAINER=ALL is used) NO if the role is granted locally (CONTAINER=ALL is not used)
        :param str grant_option: Indicates whether the privilege is granted with the GRANT OPTION (YES) or not (NO).
        :param str grantor: The name of the user who granted the object privilege.
        :param str hierarchy: Indicates whether the privilege is granted with the HIERARCHY OPTION (YES) or not (NO).
        :param str inherited: Indicates whether the granted privilege is inherited from another container (YES) or not (NO).
        :param str name: A filter to return only resources that match the entire name.
        :param str object: The name of the object. The object can be any object, including tables, packages, indexes, sequences, and so on.
        :param str owner: The owner of the object.
        :param str schema_type: The type of object.
        """
        pulumi.set(__self__, "common", common)
        pulumi.set(__self__, "grant_option", grant_option)
        pulumi.set(__self__, "grantor", grantor)
        pulumi.set(__self__, "hierarchy", hierarchy)
        pulumi.set(__self__, "inherited", inherited)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "object", object)
        pulumi.set(__self__, "owner", owner)
        pulumi.set(__self__, "schema_type", schema_type)

    @property
    @pulumi.getter
    def common(self) -> str:
        """
        Indicates how the object privilege was granted. Possible values: YES if the role is granted commonly (CONTAINER=ALL is used) NO if the role is granted locally (CONTAINER=ALL is not used)
        """
        return pulumi.get(self, "common")

    @property
    @pulumi.getter(name="grantOption")
    def grant_option(self) -> str:
        """
        Indicates whether the privilege is granted with the GRANT OPTION (YES) or not (NO).
        """
        return pulumi.get(self, "grant_option")

    @property
    @pulumi.getter
    def grantor(self) -> str:
        """
        The name of the user who granted the object privilege.
        """
        return pulumi.get(self, "grantor")

    @property
    @pulumi.getter
    def hierarchy(self) -> str:
        """
        Indicates whether the privilege is granted with the HIERARCHY OPTION (YES) or not (NO).
        """
        return pulumi.get(self, "hierarchy")

    @property
    @pulumi.getter
    def inherited(self) -> str:
        """
        Indicates whether the granted privilege is inherited from another container (YES) or not (NO).
        """
        return pulumi.get(self, "inherited")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def object(self) -> str:
        """
        The name of the object. The object can be any object, including tables, packages, indexes, sequences, and so on.
        """
        return pulumi.get(self, "object")

    @property
    @pulumi.getter
    def owner(self) -> str:
        """
        The owner of the object.
        """
        return pulumi.get(self, "owner")

    @property
    @pulumi.getter(name="schemaType")
    def schema_type(self) -> str:
        """
        The type of object.
        """
        return pulumi.get(self, "schema_type")


@pulumi.output_type
class GetManagedDatabaseUserObjectPrivilegesFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: A filter to return only resources that match the entire name.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetManagedDatabaseUserObjectPrivilegesObjectPrivilegeCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetManagedDatabaseUserObjectPrivilegesObjectPrivilegeCollectionItemResult']):
        """
        :param Sequence['GetManagedDatabaseUserObjectPrivilegesObjectPrivilegeCollectionItemArgs'] items: An array of object privileges.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetManagedDatabaseUserObjectPrivilegesObjectPrivilegeCollectionItemResult']:
        """
        An array of object privileges.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetManagedDatabaseUserObjectPrivilegesObjectPrivilegeCollectionItemResult(dict):
    def __init__(__self__, *,
                 common: str,
                 grant_option: str,
                 grantor: str,
                 hierarchy: str,
                 inherited: str,
                 name: str,
                 object: str,
                 owner: str,
                 schema_type: str):
        """
        :param str common: Indicates how the object privilege was granted. Possible values: YES if the role is granted commonly (CONTAINER=ALL is used) NO if the role is granted locally (CONTAINER=ALL is not used)
        :param str grant_option: Indicates whether the privilege is granted with the GRANT OPTION (YES) or not (NO).
        :param str grantor: The name of the user who granted the object privilege.
        :param str hierarchy: Indicates whether the privilege is granted with the HIERARCHY OPTION (YES) or not (NO).
        :param str inherited: Indicates whether the granted privilege is inherited from another container (YES) or not (NO).
        :param str name: A filter to return only resources that match the entire name.
        :param str object: The name of the object. The object can be any object, including tables, packages, indexes, sequences, and so on.
        :param str owner: The owner of the object.
        :param str schema_type: The type of object.
        """
        pulumi.set(__self__, "common", common)
        pulumi.set(__self__, "grant_option", grant_option)
        pulumi.set(__self__, "grantor", grantor)
        pulumi.set(__self__, "hierarchy", hierarchy)
        pulumi.set(__self__, "inherited", inherited)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "object", object)
        pulumi.set(__self__, "owner", owner)
        pulumi.set(__self__, "schema_type", schema_type)

    @property
    @pulumi.getter
    def common(self) -> str:
        """
        Indicates how the object privilege was granted. Possible values: YES if the role is granted commonly (CONTAINER=ALL is used) NO if the role is granted locally (CONTAINER=ALL is not used)
        """
        return pulumi.get(self, "common")

    @property
    @pulumi.getter(name="grantOption")
    def grant_option(self) -> str:
        """
        Indicates whether the privilege is granted with the GRANT OPTION (YES) or not (NO).
        """
        return pulumi.get(self, "grant_option")

    @property
    @pulumi.getter
    def grantor(self) -> str:
        """
        The name of the user who granted the object privilege.
        """
        return pulumi.get(self, "grantor")

    @property
    @pulumi.getter
    def hierarchy(self) -> str:
        """
        Indicates whether the privilege is granted with the HIERARCHY OPTION (YES) or not (NO).
        """
        return pulumi.get(self, "hierarchy")

    @property
    @pulumi.getter
    def inherited(self) -> str:
        """
        Indicates whether the granted privilege is inherited from another container (YES) or not (NO).
        """
        return pulumi.get(self, "inherited")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def object(self) -> str:
        """
        The name of the object. The object can be any object, including tables, packages, indexes, sequences, and so on.
        """
        return pulumi.get(self, "object")

    @property
    @pulumi.getter
    def owner(self) -> str:
        """
        The owner of the object.
        """
        return pulumi.get(self, "owner")

    @property
    @pulumi.getter(name="schemaType")
    def schema_type(self) -> str:
        """
        The type of object.
        """
        return pulumi.get(self, "schema_type")


@pulumi.output_type
class GetManagedDatabaseUserProxiedForUserItemResult(dict):
    def __init__(__self__, *,
                 authentication: str,
                 flags: str,
                 name: str):
        """
        :param str authentication: Indicates whether the proxy is required to supply the client credentials (YES) or not (NO).
        :param str flags: The flags associated with the proxy/client pair.
        :param str name: A filter to return only resources that match the entire name.
        """
        pulumi.set(__self__, "authentication", authentication)
        pulumi.set(__self__, "flags", flags)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def authentication(self) -> str:
        """
        Indicates whether the proxy is required to supply the client credentials (YES) or not (NO).
        """
        return pulumi.get(self, "authentication")

    @property
    @pulumi.getter
    def flags(self) -> str:
        """
        The flags associated with the proxy/client pair.
        """
        return pulumi.get(self, "flags")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetManagedDatabaseUserProxiedForUsersFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: A filter to return only resources that match the entire name.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetManagedDatabaseUserProxiedForUsersProxiedForUserCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetManagedDatabaseUserProxiedForUsersProxiedForUserCollectionItemResult']):
        """
        :param Sequence['GetManagedDatabaseUserProxiedForUsersProxiedForUserCollectionItemArgs'] items: An array of user resources.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetManagedDatabaseUserProxiedForUsersProxiedForUserCollectionItemResult']:
        """
        An array of user resources.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetManagedDatabaseUserProxiedForUsersProxiedForUserCollectionItemResult(dict):
    def __init__(__self__, *,
                 authentication: str,
                 flags: str,
                 name: str):
        """
        :param str authentication: Indicates whether the proxy is required to supply the client credentials (YES) or not (NO).
        :param str flags: The flags associated with the proxy/client pair.
        :param str name: A filter to return only resources that match the entire name.
        """
        pulumi.set(__self__, "authentication", authentication)
        pulumi.set(__self__, "flags", flags)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def authentication(self) -> str:
        """
        Indicates whether the proxy is required to supply the client credentials (YES) or not (NO).
        """
        return pulumi.get(self, "authentication")

    @property
    @pulumi.getter
    def flags(self) -> str:
        """
        The flags associated with the proxy/client pair.
        """
        return pulumi.get(self, "flags")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetManagedDatabaseUserRoleItemResult(dict):
    def __init__(__self__, *,
                 admin_option: str,
                 common: str,
                 default_role: str,
                 delegate_option: str,
                 inherited: str,
                 name: str):
        """
        :param str admin_option: Indicates whether the role is granted with the ADMIN OPTION (YES) or not (NO).
        :param str common: Indicates how the role was granted. Possible values: YES if the role is granted commonly (CONTAINER=ALL is used) NO if the role is granted locally (CONTAINER=ALL is not used)
        :param str default_role: Indicates whether the role is designated as a DEFAULT ROLE for the user (YES) or not (NO).
        :param str delegate_option: Indicates whether the role is granted with the DELEGATE OPTION (YES) or not (NO).
        :param str inherited: Indicates whether the granted role is inherited from another container (YES) or not (NO).
        :param str name: A filter to return only resources that match the entire name.
        """
        pulumi.set(__self__, "admin_option", admin_option)
        pulumi.set(__self__, "common", common)
        pulumi.set(__self__, "default_role", default_role)
        pulumi.set(__self__, "delegate_option", delegate_option)
        pulumi.set(__self__, "inherited", inherited)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter(name="adminOption")
    def admin_option(self) -> str:
        """
        Indicates whether the role is granted with the ADMIN OPTION (YES) or not (NO).
        """
        return pulumi.get(self, "admin_option")

    @property
    @pulumi.getter
    def common(self) -> str:
        """
        Indicates how the role was granted. Possible values: YES if the role is granted commonly (CONTAINER=ALL is used) NO if the role is granted locally (CONTAINER=ALL is not used)
        """
        return pulumi.get(self, "common")

    @property
    @pulumi.getter(name="defaultRole")
    def default_role(self) -> str:
        """
        Indicates whether the role is designated as a DEFAULT ROLE for the user (YES) or not (NO).
        """
        return pulumi.get(self, "default_role")

    @property
    @pulumi.getter(name="delegateOption")
    def delegate_option(self) -> str:
        """
        Indicates whether the role is granted with the DELEGATE OPTION (YES) or not (NO).
        """
        return pulumi.get(self, "delegate_option")

    @property
    @pulumi.getter
    def inherited(self) -> str:
        """
        Indicates whether the granted role is inherited from another container (YES) or not (NO).
        """
        return pulumi.get(self, "inherited")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetManagedDatabaseUserRolesFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: A filter to return only resources that match the entire name.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetManagedDatabaseUserRolesRoleCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetManagedDatabaseUserRolesRoleCollectionItemResult']):
        """
        :param Sequence['GetManagedDatabaseUserRolesRoleCollectionItemArgs'] items: An array of roles.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetManagedDatabaseUserRolesRoleCollectionItemResult']:
        """
        An array of roles.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetManagedDatabaseUserRolesRoleCollectionItemResult(dict):
    def __init__(__self__, *,
                 admin_option: str,
                 common: str,
                 default_role: str,
                 delegate_option: str,
                 inherited: str,
                 name: str):
        """
        :param str admin_option: Indicates whether the role is granted with the ADMIN OPTION (YES) or not (NO).
        :param str common: Indicates how the role was granted. Possible values: YES if the role is granted commonly (CONTAINER=ALL is used) NO if the role is granted locally (CONTAINER=ALL is not used)
        :param str default_role: Indicates whether the role is designated as a DEFAULT ROLE for the user (YES) or not (NO).
        :param str delegate_option: Indicates whether the role is granted with the DELEGATE OPTION (YES) or not (NO).
        :param str inherited: Indicates whether the granted role is inherited from another container (YES) or not (NO).
        :param str name: A filter to return only resources that match the entire name.
        """
        pulumi.set(__self__, "admin_option", admin_option)
        pulumi.set(__self__, "common", common)
        pulumi.set(__self__, "default_role", default_role)
        pulumi.set(__self__, "delegate_option", delegate_option)
        pulumi.set(__self__, "inherited", inherited)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter(name="adminOption")
    def admin_option(self) -> str:
        """
        Indicates whether the role is granted with the ADMIN OPTION (YES) or not (NO).
        """
        return pulumi.get(self, "admin_option")

    @property
    @pulumi.getter
    def common(self) -> str:
        """
        Indicates how the role was granted. Possible values: YES if the role is granted commonly (CONTAINER=ALL is used) NO if the role is granted locally (CONTAINER=ALL is not used)
        """
        return pulumi.get(self, "common")

    @property
    @pulumi.getter(name="defaultRole")
    def default_role(self) -> str:
        """
        Indicates whether the role is designated as a DEFAULT ROLE for the user (YES) or not (NO).
        """
        return pulumi.get(self, "default_role")

    @property
    @pulumi.getter(name="delegateOption")
    def delegate_option(self) -> str:
        """
        Indicates whether the role is granted with the DELEGATE OPTION (YES) or not (NO).
        """
        return pulumi.get(self, "delegate_option")

    @property
    @pulumi.getter
    def inherited(self) -> str:
        """
        Indicates whether the granted role is inherited from another container (YES) or not (NO).
        """
        return pulumi.get(self, "inherited")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetManagedDatabaseUsersFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: A filter to return only resources that match the entire name.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetManagedDatabaseUsersUserCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetManagedDatabaseUsersUserCollectionItemResult']):
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetManagedDatabaseUsersUserCollectionItemResult']:
        return pulumi.get(self, "items")


@pulumi.output_type
class GetManagedDatabaseUsersUserCollectionItemResult(dict):
    def __init__(__self__, *,
                 all_shared: str,
                 authentication: str,
                 common: str,
                 consumer_group: str,
                 default_collation: str,
                 default_tablespace: str,
                 editions_enabled: str,
                 external_name: str,
                 external_shared: str,
                 implicit: str,
                 inherited: str,
                 local_temp_tablespace: str,
                 name: str,
                 oracle_maintained: str,
                 password_versions: str,
                 profile: str,
                 proxy_connect: str,
                 status: str,
                 temp_tablespace: str,
                 time_created: str,
                 time_expiring: str,
                 time_last_login: str,
                 time_locked: str,
                 time_password_changed: str):
        """
        :param str all_shared: In a sharded database, indicates whether the user is created with shard DDL enabled (YES) or not (NO).
        :param str authentication: The authentication mechanism for the user.
        :param str common: Indicates whether a given user is common(Y) or local(N).
        :param str consumer_group: The initial resource consumer group for the User.
        :param str default_collation: The default collation for the user schema.
        :param str default_tablespace: The default tablespace for data.
        :param str editions_enabled: Indicates whether editions have been enabled for the corresponding user (Y) or not (N).
        :param str external_name: The external name of the user.
        :param str external_shared: In a federated sharded database, indicates whether the user is an external shard user (YES) or not (NO).
        :param str implicit: Indicates whether the user is a common user created by an implicit application (YES) or not (NO).
        :param str inherited: Indicates whether the user definition is inherited from another container (YES) or not (NO).
        :param str local_temp_tablespace: The default local temporary tablespace for the user.
        :param str name: A filter to return only resources that match the entire name.
        :param str oracle_maintained: Indicates whether the user was created and is maintained by Oracle-supplied scripts (such as catalog.sql or catproc.sql).
        :param str password_versions: The list of existing versions of the password hashes (also known as "verifiers") for the account.
        :param str profile: The profile name of the user.
        :param str proxy_connect: Indicates whether a user can connect directly (N) or whether the account can only be proxied (Y) by users who have proxy privileges for this account (that is, by users who have been granted the "connect through" privilege for this account).
        :param str status: The status of the user account.
        :param str temp_tablespace: The name of the default tablespace for temporary tables or the name of a tablespace group.
        :param str time_created: The date and time the user was created.
        :param str time_expiring: The date and time of the expiration of the user account.
        :param str time_last_login: The date and time of the last user login. This column is not populated when a user connects to the database with administrative privileges, that is, AS { SYSASM | SYSBACKUP | SYSDBA | SYSDG | SYSOPER | SYSRAC | SYSKM }.
        :param str time_locked: The date the account was locked, if the status of the account is LOCKED.
        :param str time_password_changed: The date and time when the user password was last set. This column is populated only when the value of the AUTHENTICATION_TYPE column is PASSWORD. Otherwise, this column is null.
        """
        pulumi.set(__self__, "all_shared", all_shared)
        pulumi.set(__self__, "authentication", authentication)
        pulumi.set(__self__, "common", common)
        pulumi.set(__self__, "consumer_group", consumer_group)
        pulumi.set(__self__, "default_collation", default_collation)
        pulumi.set(__self__, "default_tablespace", default_tablespace)
        pulumi.set(__self__, "editions_enabled", editions_enabled)
        pulumi.set(__self__, "external_name", external_name)
        pulumi.set(__self__, "external_shared", external_shared)
        pulumi.set(__self__, "implicit", implicit)
        pulumi.set(__self__, "inherited", inherited)
        pulumi.set(__self__, "local_temp_tablespace", local_temp_tablespace)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "oracle_maintained", oracle_maintained)
        pulumi.set(__self__, "password_versions", password_versions)
        pulumi.set(__self__, "profile", profile)
        pulumi.set(__self__, "proxy_connect", proxy_connect)
        pulumi.set(__self__, "status", status)
        pulumi.set(__self__, "temp_tablespace", temp_tablespace)
        pulumi.set(__self__, "time_created", time_created)
        pulumi.set(__self__, "time_expiring", time_expiring)
        pulumi.set(__self__, "time_last_login", time_last_login)
        pulumi.set(__self__, "time_locked", time_locked)
        pulumi.set(__self__, "time_password_changed", time_password_changed)

    @property
    @pulumi.getter(name="allShared")
    def all_shared(self) -> str:
        """
        In a sharded database, indicates whether the user is created with shard DDL enabled (YES) or not (NO).
        """
        return pulumi.get(self, "all_shared")

    @property
    @pulumi.getter
    def authentication(self) -> str:
        """
        The authentication mechanism for the user.
        """
        return pulumi.get(self, "authentication")

    @property
    @pulumi.getter
    def common(self) -> str:
        """
        Indicates whether a given user is common(Y) or local(N).
        """
        return pulumi.get(self, "common")

    @property
    @pulumi.getter(name="consumerGroup")
    def consumer_group(self) -> str:
        """
        The initial resource consumer group for the User.
        """
        return pulumi.get(self, "consumer_group")

    @property
    @pulumi.getter(name="defaultCollation")
    def default_collation(self) -> str:
        """
        The default collation for the user schema.
        """
        return pulumi.get(self, "default_collation")

    @property
    @pulumi.getter(name="defaultTablespace")
    def default_tablespace(self) -> str:
        """
        The default tablespace for data.
        """
        return pulumi.get(self, "default_tablespace")

    @property
    @pulumi.getter(name="editionsEnabled")
    def editions_enabled(self) -> str:
        """
        Indicates whether editions have been enabled for the corresponding user (Y) or not (N).
        """
        return pulumi.get(self, "editions_enabled")

    @property
    @pulumi.getter(name="externalName")
    def external_name(self) -> str:
        """
        The external name of the user.
        """
        return pulumi.get(self, "external_name")

    @property
    @pulumi.getter(name="externalShared")
    def external_shared(self) -> str:
        """
        In a federated sharded database, indicates whether the user is an external shard user (YES) or not (NO).
        """
        return pulumi.get(self, "external_shared")

    @property
    @pulumi.getter
    def implicit(self) -> str:
        """
        Indicates whether the user is a common user created by an implicit application (YES) or not (NO).
        """
        return pulumi.get(self, "implicit")

    @property
    @pulumi.getter
    def inherited(self) -> str:
        """
        Indicates whether the user definition is inherited from another container (YES) or not (NO).
        """
        return pulumi.get(self, "inherited")

    @property
    @pulumi.getter(name="localTempTablespace")
    def local_temp_tablespace(self) -> str:
        """
        The default local temporary tablespace for the user.
        """
        return pulumi.get(self, "local_temp_tablespace")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="oracleMaintained")
    def oracle_maintained(self) -> str:
        """
        Indicates whether the user was created and is maintained by Oracle-supplied scripts (such as catalog.sql or catproc.sql).
        """
        return pulumi.get(self, "oracle_maintained")

    @property
    @pulumi.getter(name="passwordVersions")
    def password_versions(self) -> str:
        """
        The list of existing versions of the password hashes (also known as "verifiers") for the account.
        """
        return pulumi.get(self, "password_versions")

    @property
    @pulumi.getter
    def profile(self) -> str:
        """
        The profile name of the user.
        """
        return pulumi.get(self, "profile")

    @property
    @pulumi.getter(name="proxyConnect")
    def proxy_connect(self) -> str:
        """
        Indicates whether a user can connect directly (N) or whether the account can only be proxied (Y) by users who have proxy privileges for this account (that is, by users who have been granted the "connect through" privilege for this account).
        """
        return pulumi.get(self, "proxy_connect")

    @property
    @pulumi.getter
    def status(self) -> str:
        """
        The status of the user account.
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter(name="tempTablespace")
    def temp_tablespace(self) -> str:
        """
        The name of the default tablespace for temporary tables or the name of a tablespace group.
        """
        return pulumi.get(self, "temp_tablespace")

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

    @property
    @pulumi.getter(name="timeExpiring")
    def time_expiring(self) -> str:
        """
        The date and time of the expiration of the user account.
        """
        return pulumi.get(self, "time_expiring")

    @property
    @pulumi.getter(name="timeLastLogin")
    def time_last_login(self) -> str:
        """
        The date and time of the last user login. This column is not populated when a user connects to the database with administrative privileges, that is, AS { SYSASM | SYSBACKUP | SYSDBA | SYSDG | SYSOPER | SYSRAC | SYSKM }.
        """
        return pulumi.get(self, "time_last_login")

    @property
    @pulumi.getter(name="timeLocked")
    def time_locked(self) -> str:
        """
        The date the account was locked, if the status of the account is LOCKED.
        """
        return pulumi.get(self, "time_locked")

    @property
    @pulumi.getter(name="timePasswordChanged")
    def time_password_changed(self) -> str:
        """
        The date and time when the user password was last set. This column is populated only when the value of the AUTHENTICATION_TYPE column is PASSWORD. Otherwise, this column is null.
        """
        return pulumi.get(self, "time_password_changed")


@pulumi.output_type
class GetManagedDatabasesAsmPropertiesAsmPropertyCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetManagedDatabasesAsmPropertiesAsmPropertyCollectionItemResult']):
        """
        :param Sequence['GetManagedDatabasesAsmPropertiesAsmPropertyCollectionItemArgs'] items: An array of AsmPropertySummary resources.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetManagedDatabasesAsmPropertiesAsmPropertyCollectionItemResult']:
        """
        An array of AsmPropertySummary resources.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetManagedDatabasesAsmPropertiesAsmPropertyCollectionItemResult(dict):
    def __init__(__self__, *,
                 disk_group: str):
        """
        :param str disk_group: The name of the disk group.
        """
        pulumi.set(__self__, "disk_group", disk_group)

    @property
    @pulumi.getter(name="diskGroup")
    def disk_group(self) -> str:
        """
        The name of the disk group.
        """
        return pulumi.get(self, "disk_group")


@pulumi.output_type
class GetManagedDatabasesAsmPropertiesFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: A filter to return only resources that match the entire name.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetManagedDatabasesAsmPropertyItemResult(dict):
    def __init__(__self__, *,
                 disk_group: str):
        """
        :param str disk_group: The name of the disk group.
        """
        pulumi.set(__self__, "disk_group", disk_group)

    @property
    @pulumi.getter(name="diskGroup")
    def disk_group(self) -> str:
        """
        The name of the disk group.
        """
        return pulumi.get(self, "disk_group")


@pulumi.output_type
class GetManagedDatabasesDatabaseParameterItemResult(dict):
    def __init__(__self__, *,
                 allowed_values: Sequence['outputs.GetManagedDatabasesDatabaseParameterItemAllowedValueResult'],
                 category: str,
                 constraint: str,
                 container_id: float,
                 description: str,
                 display_value: str,
                 is_adjusted: bool,
                 is_basic: bool,
                 is_default: bool,
                 is_deprecated: bool,
                 is_instance_modifiable: bool,
                 is_modified: str,
                 is_pdb_modifiable: bool,
                 is_session_modifiable: bool,
                 is_specified: bool,
                 is_system_modifiable: str,
                 name: str,
                 number: float,
                 ordinal: float,
                 sid: str,
                 type: str,
                 update_comment: str,
                 value: str):
        """
        :param Sequence['GetManagedDatabasesDatabaseParameterItemAllowedValueArgs'] allowed_values: A list of allowed values for this parameter.
        :param str category: The parameter category.
        :param str constraint: Applicable in case of Oracle Real Application Clusters (Oracle RAC) databases. A `UNIQUE` parameter is one which is unique to each Oracle Real Application Clusters (Oracle RAC) instance. For example, the parameter `INSTANCE_NUMBER` must have different values in each instance. An `IDENTICAL` parameter must have the same value for every instance. For example, the parameter `DB_BLOCK_SIZE` must have the same value in all instances.
        :param float container_id: The ID of the database container to which the data pertains. Possible values include:
        :param str description: The description of the parameter.
        :param str display_value: The parameter value in a user-friendly format. For example, if the `value` property shows the value 262144 for a big integer parameter, then the `displayValue` property will show the value 256K.
        :param bool is_adjusted: Indicates whether Oracle adjusted the input value to a more suitable value.
        :param bool is_basic: Indicates whether the parameter is a basic parameter (`TRUE`) or not (`FALSE`).
        :param bool is_default: Indicates whether the parameter is set to the default value (`TRUE`) or the parameter value was specified in the parameter file (`FALSE`).
        :param bool is_deprecated: Indicates whether the parameter has been deprecated (`TRUE`) or not (`FALSE`).
        :param bool is_instance_modifiable: For parameters that can be changed with `ALTER SYSTEM`, indicates whether the value of the parameter can be different for every instance (`TRUE`) or whether the parameter must have the same value for all Real Application Clusters instances (`FALSE`). For other parameters, this is always `FALSE`.
        :param str is_modified: Indicates how the parameter was modified. If an `ALTER SYSTEM` was performed, the value will be `MODIFIED`.
        :param bool is_pdb_modifiable: Indicates whether the parameter can be modified on a per-PDB basis (`TRUE`) or not (`FALSE`). In a non-CDB, the value of this property is `null`.
        :param bool is_session_modifiable: Indicates whether the parameter can be changed with `ALTER SESSION` (`TRUE`) or not (`FALSE`)
        :param bool is_specified: Indicates whether the parameter was specified in the server parameter file (`TRUE`) or not (`FALSE`). Applicable only when the parameter source is `SPFILE`.
        :param str is_system_modifiable: Indicates whether the parameter can be changed with `ALTER SYSTEM` and when the change takes effect:
               * IMMEDIATE: Parameter can be changed with `ALTER SYSTEM` regardless of the type of parameter file used to start the instance. The change takes effect immediately.
               * DEFERRED: Parameter can be changed with `ALTER SYSTEM` regardless of the type of parameter file used to start the instance. The change takes effect in subsequent sessions.
               * FALSE: Parameter cannot be changed with `ALTER SYSTEM` unless a server parameter file was used to start the instance. The change takes effect in subsequent instances.
        :param str name: A filter to return all parameters that have the text given in their names.
        :param float number: The parameter number.
        :param float ordinal: The position (ordinal number) of the parameter value. Useful only for parameters whose values are lists of strings.
        :param str sid: The database instance SID for which the parameter is defined.
        :param str type: The parameter type.
        :param str update_comment: The comments associated with the most recent update.
        :param str value: The parameter value.
        """
        pulumi.set(__self__, "allowed_values", allowed_values)
        pulumi.set(__self__, "category", category)
        pulumi.set(__self__, "constraint", constraint)
        pulumi.set(__self__, "container_id", container_id)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "display_value", display_value)
        pulumi.set(__self__, "is_adjusted", is_adjusted)
        pulumi.set(__self__, "is_basic", is_basic)
        pulumi.set(__self__, "is_default", is_default)
        pulumi.set(__self__, "is_deprecated", is_deprecated)
        pulumi.set(__self__, "is_instance_modifiable", is_instance_modifiable)
        pulumi.set(__self__, "is_modified", is_modified)
        pulumi.set(__self__, "is_pdb_modifiable", is_pdb_modifiable)
        pulumi.set(__self__, "is_session_modifiable", is_session_modifiable)
        pulumi.set(__self__, "is_specified", is_specified)
        pulumi.set(__self__, "is_system_modifiable", is_system_modifiable)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "number", number)
        pulumi.set(__self__, "ordinal", ordinal)
        pulumi.set(__self__, "sid", sid)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "update_comment", update_comment)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter(name="allowedValues")
    def allowed_values(self) -> Sequence['outputs.GetManagedDatabasesDatabaseParameterItemAllowedValueResult']:
        """
        A list of allowed values for this parameter.
        """
        return pulumi.get(self, "allowed_values")

    @property
    @pulumi.getter
    def category(self) -> str:
        """
        The parameter category.
        """
        return pulumi.get(self, "category")

    @property
    @pulumi.getter
    def constraint(self) -> str:
        """
        Applicable in case of Oracle Real Application Clusters (Oracle RAC) databases. A `UNIQUE` parameter is one which is unique to each Oracle Real Application Clusters (Oracle RAC) instance. For example, the parameter `INSTANCE_NUMBER` must have different values in each instance. An `IDENTICAL` parameter must have the same value for every instance. For example, the parameter `DB_BLOCK_SIZE` must have the same value in all instances.
        """
        return pulumi.get(self, "constraint")

    @property
    @pulumi.getter(name="containerId")
    def container_id(self) -> float:
        """
        The ID of the database container to which the data pertains. Possible values include:
        """
        return pulumi.get(self, "container_id")

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        The description of the parameter.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayValue")
    def display_value(self) -> str:
        """
        The parameter value in a user-friendly format. For example, if the `value` property shows the value 262144 for a big integer parameter, then the `displayValue` property will show the value 256K.
        """
        return pulumi.get(self, "display_value")

    @property
    @pulumi.getter(name="isAdjusted")
    def is_adjusted(self) -> bool:
        """
        Indicates whether Oracle adjusted the input value to a more suitable value.
        """
        return pulumi.get(self, "is_adjusted")

    @property
    @pulumi.getter(name="isBasic")
    def is_basic(self) -> bool:
        """
        Indicates whether the parameter is a basic parameter (`TRUE`) or not (`FALSE`).
        """
        return pulumi.get(self, "is_basic")

    @property
    @pulumi.getter(name="isDefault")
    def is_default(self) -> bool:
        """
        Indicates whether the parameter is set to the default value (`TRUE`) or the parameter value was specified in the parameter file (`FALSE`).
        """
        return pulumi.get(self, "is_default")

    @property
    @pulumi.getter(name="isDeprecated")
    def is_deprecated(self) -> bool:
        """
        Indicates whether the parameter has been deprecated (`TRUE`) or not (`FALSE`).
        """
        return pulumi.get(self, "is_deprecated")

    @property
    @pulumi.getter(name="isInstanceModifiable")
    def is_instance_modifiable(self) -> bool:
        """
        For parameters that can be changed with `ALTER SYSTEM`, indicates whether the value of the parameter can be different for every instance (`TRUE`) or whether the parameter must have the same value for all Real Application Clusters instances (`FALSE`). For other parameters, this is always `FALSE`.
        """
        return pulumi.get(self, "is_instance_modifiable")

    @property
    @pulumi.getter(name="isModified")
    def is_modified(self) -> str:
        """
        Indicates how the parameter was modified. If an `ALTER SYSTEM` was performed, the value will be `MODIFIED`.
        """
        return pulumi.get(self, "is_modified")

    @property
    @pulumi.getter(name="isPdbModifiable")
    def is_pdb_modifiable(self) -> bool:
        """
        Indicates whether the parameter can be modified on a per-PDB basis (`TRUE`) or not (`FALSE`). In a non-CDB, the value of this property is `null`.
        """
        return pulumi.get(self, "is_pdb_modifiable")

    @property
    @pulumi.getter(name="isSessionModifiable")
    def is_session_modifiable(self) -> bool:
        """
        Indicates whether the parameter can be changed with `ALTER SESSION` (`TRUE`) or not (`FALSE`)
        """
        return pulumi.get(self, "is_session_modifiable")

    @property
    @pulumi.getter(name="isSpecified")
    def is_specified(self) -> bool:
        """
        Indicates whether the parameter was specified in the server parameter file (`TRUE`) or not (`FALSE`). Applicable only when the parameter source is `SPFILE`.
        """
        return pulumi.get(self, "is_specified")

    @property
    @pulumi.getter(name="isSystemModifiable")
    def is_system_modifiable(self) -> str:
        """
        Indicates whether the parameter can be changed with `ALTER SYSTEM` and when the change takes effect:
        * IMMEDIATE: Parameter can be changed with `ALTER SYSTEM` regardless of the type of parameter file used to start the instance. The change takes effect immediately.
        * DEFERRED: Parameter can be changed with `ALTER SYSTEM` regardless of the type of parameter file used to start the instance. The change takes effect in subsequent sessions.
        * FALSE: Parameter cannot be changed with `ALTER SYSTEM` unless a server parameter file was used to start the instance. The change takes effect in subsequent instances.
        """
        return pulumi.get(self, "is_system_modifiable")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return all parameters that have the text given in their names.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def number(self) -> float:
        """
        The parameter number.
        """
        return pulumi.get(self, "number")

    @property
    @pulumi.getter
    def ordinal(self) -> float:
        """
        The position (ordinal number) of the parameter value. Useful only for parameters whose values are lists of strings.
        """
        return pulumi.get(self, "ordinal")

    @property
    @pulumi.getter
    def sid(self) -> str:
        """
        The database instance SID for which the parameter is defined.
        """
        return pulumi.get(self, "sid")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        The parameter type.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="updateComment")
    def update_comment(self) -> str:
        """
        The comments associated with the most recent update.
        """
        return pulumi.get(self, "update_comment")

    @property
    @pulumi.getter
    def value(self) -> str:
        """
        The parameter value.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetManagedDatabasesDatabaseParameterItemAllowedValueResult(dict):
    def __init__(__self__, *,
                 is_default: bool,
                 ordinal: float,
                 value: str):
        """
        :param bool is_default: Indicates whether the parameter is set to the default value (`TRUE`) or the parameter value was specified in the parameter file (`FALSE`).
        :param float ordinal: The position (ordinal number) of the parameter value. Useful only for parameters whose values are lists of strings.
        :param str value: The parameter value.
        """
        pulumi.set(__self__, "is_default", is_default)
        pulumi.set(__self__, "ordinal", ordinal)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter(name="isDefault")
    def is_default(self) -> bool:
        """
        Indicates whether the parameter is set to the default value (`TRUE`) or the parameter value was specified in the parameter file (`FALSE`).
        """
        return pulumi.get(self, "is_default")

    @property
    @pulumi.getter
    def ordinal(self) -> float:
        """
        The position (ordinal number) of the parameter value. Useful only for parameters whose values are lists of strings.
        """
        return pulumi.get(self, "ordinal")

    @property
    @pulumi.getter
    def value(self) -> str:
        """
        The parameter value.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetManagedDatabasesDatabaseParametersDatabaseParametersCollectionResult(dict):
    def __init__(__self__, *,
                 database_name: str,
                 database_sub_type: str,
                 database_type: str,
                 database_version: str,
                 items: Sequence['outputs.GetManagedDatabasesDatabaseParametersDatabaseParametersCollectionItemResult']):
        """
        :param str database_name: The name of the Managed Database.
        :param str database_sub_type: The subtype of the Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, or a Non-container Database.
        :param str database_type: The type of Oracle Database installation.
        :param str database_version: The Oracle Database version.
        :param Sequence['GetManagedDatabasesDatabaseParametersDatabaseParametersCollectionItemArgs'] items: An array of DatabaseParameterSummary objects.
        """
        pulumi.set(__self__, "database_name", database_name)
        pulumi.set(__self__, "database_sub_type", database_sub_type)
        pulumi.set(__self__, "database_type", database_type)
        pulumi.set(__self__, "database_version", database_version)
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter(name="databaseName")
    def database_name(self) -> str:
        """
        The name of the Managed Database.
        """
        return pulumi.get(self, "database_name")

    @property
    @pulumi.getter(name="databaseSubType")
    def database_sub_type(self) -> str:
        """
        The subtype of the Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, or a Non-container Database.
        """
        return pulumi.get(self, "database_sub_type")

    @property
    @pulumi.getter(name="databaseType")
    def database_type(self) -> str:
        """
        The type of Oracle Database installation.
        """
        return pulumi.get(self, "database_type")

    @property
    @pulumi.getter(name="databaseVersion")
    def database_version(self) -> str:
        """
        The Oracle Database version.
        """
        return pulumi.get(self, "database_version")

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetManagedDatabasesDatabaseParametersDatabaseParametersCollectionItemResult']:
        """
        An array of DatabaseParameterSummary objects.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetManagedDatabasesDatabaseParametersDatabaseParametersCollectionItemResult(dict):
    def __init__(__self__, *,
                 allowed_values: Sequence['outputs.GetManagedDatabasesDatabaseParametersDatabaseParametersCollectionItemAllowedValueResult'],
                 category: str,
                 constraint: str,
                 container_id: float,
                 description: str,
                 display_value: str,
                 is_adjusted: bool,
                 is_basic: bool,
                 is_default: bool,
                 is_deprecated: bool,
                 is_instance_modifiable: bool,
                 is_modified: str,
                 is_pdb_modifiable: bool,
                 is_session_modifiable: bool,
                 is_specified: bool,
                 is_system_modifiable: str,
                 name: str,
                 number: float,
                 ordinal: float,
                 sid: str,
                 type: str,
                 update_comment: str,
                 value: str):
        """
        :param Sequence['GetManagedDatabasesDatabaseParametersDatabaseParametersCollectionItemAllowedValueArgs'] allowed_values: A list of allowed values for this parameter.
        :param str category: The parameter category.
        :param str constraint: Applicable in case of Oracle Real Application Clusters (Oracle RAC) databases. A `UNIQUE` parameter is one which is unique to each Oracle Real Application Clusters (Oracle RAC) instance. For example, the parameter `INSTANCE_NUMBER` must have different values in each instance. An `IDENTICAL` parameter must have the same value for every instance. For example, the parameter `DB_BLOCK_SIZE` must have the same value in all instances.
        :param float container_id: The ID of the database container to which the data pertains. Possible values include:
        :param str description: The description of the parameter.
        :param str display_value: The parameter value in a user-friendly format. For example, if the `value` property shows the value 262144 for a big integer parameter, then the `displayValue` property will show the value 256K.
        :param bool is_adjusted: Indicates whether Oracle adjusted the input value to a more suitable value.
        :param bool is_basic: Indicates whether the parameter is a basic parameter (`TRUE`) or not (`FALSE`).
        :param bool is_default: Indicates whether the parameter is set to the default value (`TRUE`) or the parameter value was specified in the parameter file (`FALSE`).
        :param bool is_deprecated: Indicates whether the parameter has been deprecated (`TRUE`) or not (`FALSE`).
        :param bool is_instance_modifiable: For parameters that can be changed with `ALTER SYSTEM`, indicates whether the value of the parameter can be different for every instance (`TRUE`) or whether the parameter must have the same value for all Real Application Clusters instances (`FALSE`). For other parameters, this is always `FALSE`.
        :param str is_modified: Indicates how the parameter was modified. If an `ALTER SYSTEM` was performed, the value will be `MODIFIED`.
        :param bool is_pdb_modifiable: Indicates whether the parameter can be modified on a per-PDB basis (`TRUE`) or not (`FALSE`). In a non-CDB, the value of this property is `null`.
        :param bool is_session_modifiable: Indicates whether the parameter can be changed with `ALTER SESSION` (`TRUE`) or not (`FALSE`)
        :param bool is_specified: Indicates whether the parameter was specified in the server parameter file (`TRUE`) or not (`FALSE`). Applicable only when the parameter source is `SPFILE`.
        :param str is_system_modifiable: Indicates whether the parameter can be changed with `ALTER SYSTEM` and when the change takes effect:
               * IMMEDIATE: Parameter can be changed with `ALTER SYSTEM` regardless of the type of parameter file used to start the instance. The change takes effect immediately.
               * DEFERRED: Parameter can be changed with `ALTER SYSTEM` regardless of the type of parameter file used to start the instance. The change takes effect in subsequent sessions.
               * FALSE: Parameter cannot be changed with `ALTER SYSTEM` unless a server parameter file was used to start the instance. The change takes effect in subsequent instances.
        :param str name: A filter to return all parameters that have the text given in their names.
        :param float number: The parameter number.
        :param float ordinal: The position (ordinal number) of the parameter value. Useful only for parameters whose values are lists of strings.
        :param str sid: The database instance SID for which the parameter is defined.
        :param str type: The parameter type.
        :param str update_comment: The comments associated with the most recent update.
        :param str value: The parameter value.
        """
        pulumi.set(__self__, "allowed_values", allowed_values)
        pulumi.set(__self__, "category", category)
        pulumi.set(__self__, "constraint", constraint)
        pulumi.set(__self__, "container_id", container_id)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "display_value", display_value)
        pulumi.set(__self__, "is_adjusted", is_adjusted)
        pulumi.set(__self__, "is_basic", is_basic)
        pulumi.set(__self__, "is_default", is_default)
        pulumi.set(__self__, "is_deprecated", is_deprecated)
        pulumi.set(__self__, "is_instance_modifiable", is_instance_modifiable)
        pulumi.set(__self__, "is_modified", is_modified)
        pulumi.set(__self__, "is_pdb_modifiable", is_pdb_modifiable)
        pulumi.set(__self__, "is_session_modifiable", is_session_modifiable)
        pulumi.set(__self__, "is_specified", is_specified)
        pulumi.set(__self__, "is_system_modifiable", is_system_modifiable)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "number", number)
        pulumi.set(__self__, "ordinal", ordinal)
        pulumi.set(__self__, "sid", sid)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "update_comment", update_comment)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter(name="allowedValues")
    def allowed_values(self) -> Sequence['outputs.GetManagedDatabasesDatabaseParametersDatabaseParametersCollectionItemAllowedValueResult']:
        """
        A list of allowed values for this parameter.
        """
        return pulumi.get(self, "allowed_values")

    @property
    @pulumi.getter
    def category(self) -> str:
        """
        The parameter category.
        """
        return pulumi.get(self, "category")

    @property
    @pulumi.getter
    def constraint(self) -> str:
        """
        Applicable in case of Oracle Real Application Clusters (Oracle RAC) databases. A `UNIQUE` parameter is one which is unique to each Oracle Real Application Clusters (Oracle RAC) instance. For example, the parameter `INSTANCE_NUMBER` must have different values in each instance. An `IDENTICAL` parameter must have the same value for every instance. For example, the parameter `DB_BLOCK_SIZE` must have the same value in all instances.
        """
        return pulumi.get(self, "constraint")

    @property
    @pulumi.getter(name="containerId")
    def container_id(self) -> float:
        """
        The ID of the database container to which the data pertains. Possible values include:
        """
        return pulumi.get(self, "container_id")

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        The description of the parameter.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayValue")
    def display_value(self) -> str:
        """
        The parameter value in a user-friendly format. For example, if the `value` property shows the value 262144 for a big integer parameter, then the `displayValue` property will show the value 256K.
        """
        return pulumi.get(self, "display_value")

    @property
    @pulumi.getter(name="isAdjusted")
    def is_adjusted(self) -> bool:
        """
        Indicates whether Oracle adjusted the input value to a more suitable value.
        """
        return pulumi.get(self, "is_adjusted")

    @property
    @pulumi.getter(name="isBasic")
    def is_basic(self) -> bool:
        """
        Indicates whether the parameter is a basic parameter (`TRUE`) or not (`FALSE`).
        """
        return pulumi.get(self, "is_basic")

    @property
    @pulumi.getter(name="isDefault")
    def is_default(self) -> bool:
        """
        Indicates whether the parameter is set to the default value (`TRUE`) or the parameter value was specified in the parameter file (`FALSE`).
        """
        return pulumi.get(self, "is_default")

    @property
    @pulumi.getter(name="isDeprecated")
    def is_deprecated(self) -> bool:
        """
        Indicates whether the parameter has been deprecated (`TRUE`) or not (`FALSE`).
        """
        return pulumi.get(self, "is_deprecated")

    @property
    @pulumi.getter(name="isInstanceModifiable")
    def is_instance_modifiable(self) -> bool:
        """
        For parameters that can be changed with `ALTER SYSTEM`, indicates whether the value of the parameter can be different for every instance (`TRUE`) or whether the parameter must have the same value for all Real Application Clusters instances (`FALSE`). For other parameters, this is always `FALSE`.
        """
        return pulumi.get(self, "is_instance_modifiable")

    @property
    @pulumi.getter(name="isModified")
    def is_modified(self) -> str:
        """
        Indicates how the parameter was modified. If an `ALTER SYSTEM` was performed, the value will be `MODIFIED`.
        """
        return pulumi.get(self, "is_modified")

    @property
    @pulumi.getter(name="isPdbModifiable")
    def is_pdb_modifiable(self) -> bool:
        """
        Indicates whether the parameter can be modified on a per-PDB basis (`TRUE`) or not (`FALSE`). In a non-CDB, the value of this property is `null`.
        """
        return pulumi.get(self, "is_pdb_modifiable")

    @property
    @pulumi.getter(name="isSessionModifiable")
    def is_session_modifiable(self) -> bool:
        """
        Indicates whether the parameter can be changed with `ALTER SESSION` (`TRUE`) or not (`FALSE`)
        """
        return pulumi.get(self, "is_session_modifiable")

    @property
    @pulumi.getter(name="isSpecified")
    def is_specified(self) -> bool:
        """
        Indicates whether the parameter was specified in the server parameter file (`TRUE`) or not (`FALSE`). Applicable only when the parameter source is `SPFILE`.
        """
        return pulumi.get(self, "is_specified")

    @property
    @pulumi.getter(name="isSystemModifiable")
    def is_system_modifiable(self) -> str:
        """
        Indicates whether the parameter can be changed with `ALTER SYSTEM` and when the change takes effect:
        * IMMEDIATE: Parameter can be changed with `ALTER SYSTEM` regardless of the type of parameter file used to start the instance. The change takes effect immediately.
        * DEFERRED: Parameter can be changed with `ALTER SYSTEM` regardless of the type of parameter file used to start the instance. The change takes effect in subsequent sessions.
        * FALSE: Parameter cannot be changed with `ALTER SYSTEM` unless a server parameter file was used to start the instance. The change takes effect in subsequent instances.
        """
        return pulumi.get(self, "is_system_modifiable")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return all parameters that have the text given in their names.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def number(self) -> float:
        """
        The parameter number.
        """
        return pulumi.get(self, "number")

    @property
    @pulumi.getter
    def ordinal(self) -> float:
        """
        The position (ordinal number) of the parameter value. Useful only for parameters whose values are lists of strings.
        """
        return pulumi.get(self, "ordinal")

    @property
    @pulumi.getter
    def sid(self) -> str:
        """
        The database instance SID for which the parameter is defined.
        """
        return pulumi.get(self, "sid")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        The parameter type.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="updateComment")
    def update_comment(self) -> str:
        """
        The comments associated with the most recent update.
        """
        return pulumi.get(self, "update_comment")

    @property
    @pulumi.getter
    def value(self) -> str:
        """
        The parameter value.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetManagedDatabasesDatabaseParametersDatabaseParametersCollectionItemAllowedValueResult(dict):
    def __init__(__self__, *,
                 is_default: bool,
                 ordinal: float,
                 value: str):
        """
        :param bool is_default: Indicates whether the parameter is set to the default value (`TRUE`) or the parameter value was specified in the parameter file (`FALSE`).
        :param float ordinal: The position (ordinal number) of the parameter value. Useful only for parameters whose values are lists of strings.
        :param str value: The parameter value.
        """
        pulumi.set(__self__, "is_default", is_default)
        pulumi.set(__self__, "ordinal", ordinal)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter(name="isDefault")
    def is_default(self) -> bool:
        """
        Indicates whether the parameter is set to the default value (`TRUE`) or the parameter value was specified in the parameter file (`FALSE`).
        """
        return pulumi.get(self, "is_default")

    @property
    @pulumi.getter
    def ordinal(self) -> float:
        """
        The position (ordinal number) of the parameter value. Useful only for parameters whose values are lists of strings.
        """
        return pulumi.get(self, "ordinal")

    @property
    @pulumi.getter
    def value(self) -> str:
        """
        The parameter value.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetManagedDatabasesDatabaseParametersFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: A filter to return all parameters that have the text given in their names.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return all parameters that have the text given in their names.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetManagedDatabasesFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: A filter to return only resources that match the entire name.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetManagedDatabasesManagedDatabaseCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetManagedDatabasesManagedDatabaseCollectionItemResult']):
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetManagedDatabasesManagedDatabaseCollectionItemResult']:
        return pulumi.get(self, "items")


@pulumi.output_type
class GetManagedDatabasesManagedDatabaseCollectionItemResult(dict):
    def __init__(__self__, *,
                 additional_details: Mapping[str, Any],
                 compartment_id: str,
                 database_status: str,
                 database_sub_type: str,
                 database_type: str,
                 db_system_id: str,
                 deployment_type: str,
                 id: str,
                 is_cluster: bool,
                 managed_database_groups: Sequence['outputs.GetManagedDatabasesManagedDatabaseCollectionItemManagedDatabaseGroupResult'],
                 management_option: str,
                 name: str,
                 parent_container_id: str,
                 storage_system_id: str,
                 time_created: str,
                 workload_type: str):
        """
        :param Mapping[str, Any] additional_details: The additional details specific to a type of database defined in `{"key": "value"}` format. Example: `{"bar-key": "value"}`
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        :param str database_status: The status of the Oracle Database. Indicates whether the status of the database is UP, DOWN, or UNKNOWN at the current time.
        :param str database_sub_type: The subtype of the Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, Non-container Database, Autonomous Database, or Autonomous Container Database.
        :param str database_type: The type of Oracle Database installation.
        :param str db_system_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB system that this Managed Database is part of.
        :param str deployment_type: A filter to return Managed Databases of the specified deployment type.
        :param str id: The identifier of the resource.
        :param bool is_cluster: Indicates whether the Oracle Database is part of a cluster.
        :param Sequence['GetManagedDatabasesManagedDatabaseCollectionItemManagedDatabaseGroupArgs'] managed_database_groups: A list of Managed Database Groups that the Managed Database belongs to.
        :param str management_option: A filter to return Managed Databases with the specified management option.
        :param str name: A filter to return only resources that match the entire name.
        :param str parent_container_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the parent Container Database if Managed Database is a Pluggable Database.
        :param str storage_system_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the storage DB system.
        :param str time_created: The date and time the Managed Database was created.
        :param str workload_type: The workload type of the Autonomous Database.
        """
        pulumi.set(__self__, "additional_details", additional_details)
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "database_status", database_status)
        pulumi.set(__self__, "database_sub_type", database_sub_type)
        pulumi.set(__self__, "database_type", database_type)
        pulumi.set(__self__, "db_system_id", db_system_id)
        pulumi.set(__self__, "deployment_type", deployment_type)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "is_cluster", is_cluster)
        pulumi.set(__self__, "managed_database_groups", managed_database_groups)
        pulumi.set(__self__, "management_option", management_option)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "parent_container_id", parent_container_id)
        pulumi.set(__self__, "storage_system_id", storage_system_id)
        pulumi.set(__self__, "time_created", time_created)
        pulumi.set(__self__, "workload_type", workload_type)

    @property
    @pulumi.getter(name="additionalDetails")
    def additional_details(self) -> Mapping[str, Any]:
        """
        The additional details specific to a type of database defined in `{"key": "value"}` format. Example: `{"bar-key": "value"}`
        """
        return pulumi.get(self, "additional_details")

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

    @property
    @pulumi.getter(name="databaseStatus")
    def database_status(self) -> str:
        """
        The status of the Oracle Database. Indicates whether the status of the database is UP, DOWN, or UNKNOWN at the current time.
        """
        return pulumi.get(self, "database_status")

    @property
    @pulumi.getter(name="databaseSubType")
    def database_sub_type(self) -> str:
        """
        The subtype of the Oracle Database. Indicates whether the database is a Container Database, Pluggable Database, Non-container Database, Autonomous Database, or Autonomous Container Database.
        """
        return pulumi.get(self, "database_sub_type")

    @property
    @pulumi.getter(name="databaseType")
    def database_type(self) -> str:
        """
        The type of Oracle Database installation.
        """
        return pulumi.get(self, "database_type")

    @property
    @pulumi.getter(name="dbSystemId")
    def db_system_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the external DB system that this Managed Database is part of.
        """
        return pulumi.get(self, "db_system_id")

    @property
    @pulumi.getter(name="deploymentType")
    def deployment_type(self) -> str:
        """
        A filter to return Managed Databases of the specified deployment type.
        """
        return pulumi.get(self, "deployment_type")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The identifier of the resource.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="isCluster")
    def is_cluster(self) -> bool:
        """
        Indicates whether the Oracle Database is part of a cluster.
        """
        return pulumi.get(self, "is_cluster")

    @property
    @pulumi.getter(name="managedDatabaseGroups")
    def managed_database_groups(self) -> Sequence['outputs.GetManagedDatabasesManagedDatabaseCollectionItemManagedDatabaseGroupResult']:
        """
        A list of Managed Database Groups that the Managed Database belongs to.
        """
        return pulumi.get(self, "managed_database_groups")

    @property
    @pulumi.getter(name="managementOption")
    def management_option(self) -> str:
        """
        A filter to return Managed Databases with the specified management option.
        """
        return pulumi.get(self, "management_option")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="parentContainerId")
    def parent_container_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the parent Container Database if Managed Database is a Pluggable Database.
        """
        return pulumi.get(self, "parent_container_id")

    @property
    @pulumi.getter(name="storageSystemId")
    def storage_system_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the storage DB system.
        """
        return pulumi.get(self, "storage_system_id")

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> str:
        """
        The date and time the Managed Database was created.
        """
        return pulumi.get(self, "time_created")

    @property
    @pulumi.getter(name="workloadType")
    def workload_type(self) -> str:
        """
        The workload type of the Autonomous Database.
        """
        return pulumi.get(self, "workload_type")


@pulumi.output_type
class GetManagedDatabasesManagedDatabaseCollectionItemManagedDatabaseGroupResult(dict):
    def __init__(__self__, *,
                 compartment_id: str,
                 id: str,
                 name: str):
        """
        :param str compartment_id: The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        :param str id: The identifier of the resource.
        :param str name: A filter to return only resources that match the entire name.
        """
        pulumi.set(__self__, "compartment_id", compartment_id)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "name", name)

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

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The identifier of the resource.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetManagedDatabasesUserProxyUserItemResult(dict):
    def __init__(__self__, *,
                 authentication: str,
                 flags: str,
                 name: str):
        """
        :param str authentication: Indicates whether the proxy is required to supply the client credentials (YES) or not (NO).
        :param str flags: The flags associated with the proxy/client pair.
        :param str name: A filter to return only resources that match the entire name.
        """
        pulumi.set(__self__, "authentication", authentication)
        pulumi.set(__self__, "flags", flags)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def authentication(self) -> str:
        """
        Indicates whether the proxy is required to supply the client credentials (YES) or not (NO).
        """
        return pulumi.get(self, "authentication")

    @property
    @pulumi.getter
    def flags(self) -> str:
        """
        The flags associated with the proxy/client pair.
        """
        return pulumi.get(self, "flags")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetManagedDatabasesUserProxyUsersFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: A filter to return only resources that match the entire name.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetManagedDatabasesUserProxyUsersProxyUserCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetManagedDatabasesUserProxyUsersProxyUserCollectionItemResult']):
        """
        :param Sequence['GetManagedDatabasesUserProxyUsersProxyUserCollectionItemArgs'] items: An array of user resources.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetManagedDatabasesUserProxyUsersProxyUserCollectionItemResult']:
        """
        An array of user resources.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetManagedDatabasesUserProxyUsersProxyUserCollectionItemResult(dict):
    def __init__(__self__, *,
                 authentication: str,
                 flags: str,
                 name: str):
        """
        :param str authentication: Indicates whether the proxy is required to supply the client credentials (YES) or not (NO).
        :param str flags: The flags associated with the proxy/client pair.
        :param str name: A filter to return only resources that match the entire name.
        """
        pulumi.set(__self__, "authentication", authentication)
        pulumi.set(__self__, "flags", flags)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def authentication(self) -> str:
        """
        Indicates whether the proxy is required to supply the client credentials (YES) or not (NO).
        """
        return pulumi.get(self, "authentication")

    @property
    @pulumi.getter
    def flags(self) -> str:
        """
        The flags associated with the proxy/client pair.
        """
        return pulumi.get(self, "flags")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetManagedDatabasesUserSystemPrivilegeItemResult(dict):
    def __init__(__self__, *,
                 admin_option: str,
                 common: str,
                 inherited: str,
                 name: str):
        """
        :param str admin_option: Indicates whether the system privilege is granted with the ADMIN option (YES) or not (NO).
        :param str common: Indicates how the system privilege was granted. Possible values: YES if the system privilege is granted commonly (CONTAINER=ALL is used) NO if the system privilege is granted locally (CONTAINER=ALL is not used)
        :param str inherited: Indicates whether the granted system privilege is inherited from another container (YES) or not (NO).
        :param str name: A filter to return only resources that match the entire name.
        """
        pulumi.set(__self__, "admin_option", admin_option)
        pulumi.set(__self__, "common", common)
        pulumi.set(__self__, "inherited", inherited)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter(name="adminOption")
    def admin_option(self) -> str:
        """
        Indicates whether the system privilege is granted with the ADMIN option (YES) or not (NO).
        """
        return pulumi.get(self, "admin_option")

    @property
    @pulumi.getter
    def common(self) -> str:
        """
        Indicates how the system privilege was granted. Possible values: YES if the system privilege is granted commonly (CONTAINER=ALL is used) NO if the system privilege is granted locally (CONTAINER=ALL is not used)
        """
        return pulumi.get(self, "common")

    @property
    @pulumi.getter
    def inherited(self) -> str:
        """
        Indicates whether the granted system privilege is inherited from another container (YES) or not (NO).
        """
        return pulumi.get(self, "inherited")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetManagedDatabasesUserSystemPrivilegesFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: A filter to return only resources that match the entire name.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetManagedDatabasesUserSystemPrivilegesSystemPrivilegeCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetManagedDatabasesUserSystemPrivilegesSystemPrivilegeCollectionItemResult']):
        """
        :param Sequence['GetManagedDatabasesUserSystemPrivilegesSystemPrivilegeCollectionItemArgs'] items: An array of system privileges.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetManagedDatabasesUserSystemPrivilegesSystemPrivilegeCollectionItemResult']:
        """
        An array of system privileges.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetManagedDatabasesUserSystemPrivilegesSystemPrivilegeCollectionItemResult(dict):
    def __init__(__self__, *,
                 admin_option: str,
                 common: str,
                 inherited: str,
                 name: str):
        """
        :param str admin_option: Indicates whether the system privilege is granted with the ADMIN option (YES) or not (NO).
        :param str common: Indicates how the system privilege was granted. Possible values: YES if the system privilege is granted commonly (CONTAINER=ALL is used) NO if the system privilege is granted locally (CONTAINER=ALL is not used)
        :param str inherited: Indicates whether the granted system privilege is inherited from another container (YES) or not (NO).
        :param str name: A filter to return only resources that match the entire name.
        """
        pulumi.set(__self__, "admin_option", admin_option)
        pulumi.set(__self__, "common", common)
        pulumi.set(__self__, "inherited", inherited)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter(name="adminOption")
    def admin_option(self) -> str:
        """
        Indicates whether the system privilege is granted with the ADMIN option (YES) or not (NO).
        """
        return pulumi.get(self, "admin_option")

    @property
    @pulumi.getter
    def common(self) -> str:
        """
        Indicates how the system privilege was granted. Possible values: YES if the system privilege is granted commonly (CONTAINER=ALL is used) NO if the system privilege is granted locally (CONTAINER=ALL is not used)
        """
        return pulumi.get(self, "common")

    @property
    @pulumi.getter
    def inherited(self) -> str:
        """
        Indicates whether the granted system privilege is inherited from another container (YES) or not (NO).
        """
        return pulumi.get(self, "inherited")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A filter to return only resources that match the entire name.
        """
        return pulumi.get(self, "name")


