"with-new-db-system"
********************

* Description

* Usage

* Required Parameters

* Optional Parameters

* Global Parameters

* Example using required parameter


Description
===========

Creates a new Data Guard association with a new DB System.  A Data
Guard association represents the replication relationship between the
specified database and a peer database. For more information, see
Using Oracle Data Guard.

All Oracle Cloud Infrastructue resources, including Data Guard
associations, get an Oracle-assigned, unique ID called an Oracle Cloud
Identifier (OCID). When you create a resource, you can find its OCID
in the response. You can also retrieve a resource’s OCID by using a
List API operation on that resource type, or by viewing the resource
in the Console. Fore more information, see Resource Identifiers.


Usage
=====

   oci db data-guard-association create with-new-db-system [OPTIONS]


Required Parameters
===================

--availability-domain [text]

The name of the Availability Domain that the standby database DB
System will be located in.

--creation-type [text]

Specifies whether to create the peer database in an existing DB system
or in a new DB system.

--database-admin-password [text]

A strong password for the *SYS*, *SYSTEM*, and *PDB Admin* users to
apply during standby creation.

The password must contain no fewer than nine characters and include:

* At least two uppercase characters.

* At least two lowercase characters.

* At least two numeric characters.

* At least two special characters. Valid special characters include
  “_”, “#”, and “-” only.

**The password MUST be the same as the primary admin password.**

--database-id [text]

The database OCID.

--display-name [text]

The user-friendly name for the DB System to create the standby
database on. It does not have to be unique.

--hostname [text]

The host name for the DB Node.

--protection-mode [text]

The protection mode to set up between the primary and standby
databases. For more information, see Oracle Data Guard Protection
Modes in the Oracle Data Guard documentation.

**IMPORTANT** - The only protection mode currently supported by the
Database service is MAXIMUM_PERFORMANCE.

Accepted values are:

   MAXIMUM_AVAILABILITY, MAXIMUM_PERFORMANCE, MAXIMUM_PROTECTION

--subnet-id [text]

The OCID of the subnet the DB System is associated with. **Subnet
Restrictions:** - For 1- and 2-node RAC DB Systems, do not use a
subnet that overlaps with 192.168.16.16/28

These subnets are used by the Oracle Clusterware private interconnect
on the database instance. Specifying an overlapping subnet will cause
the private interconnect to malfunction. This restriction applies to
both the client subnet and backup subnet.

--transport-type [text]

The redo transport type to use for this Data Guard association.  Valid
values depend on the specified *protectionMode*:

* MAXIMUM_AVAILABILITY - SYNC or FASTSYNC * MAXIMUM_PERFORMANCE -
  ASYNC * MAXIMUM_PROTECTION - SYNC

For more information, see Redo Transport Services in the Oracle Data
Guard documentation.

**IMPORTANT** - The only transport type currently supported by the
Database service is ASYNC.

Accepted values are:

   ASYNC, FASTSYNC, SYNC


Optional Parameters
===================

--cpu-core-count [integer]

The number of OCPU cores available for AMD-based virtual machine DB
systems.

--database-defined-tags [complex type]

Defined tags for this resource. Each key is predefined and scoped to a
namespace. For more information, see Resource Tags. This is a complex
type whose value must be valid JSON. The value can be provided as a
string on the command line or passed in as a file using the
file://path/to/file syntax.

The "--generate-param-json-input" option can be used to generate an
example of the JSON which must be provided. We recommend storing this
example in a file, modifying it as needed and then passing it back in
via the file:// syntax.

--database-freeform-tags [complex type]

Free-form tags for this resource. Each tag is a simple key-value pair
with no predefined name, type, or namespace. For more information, see
Resource Tags.

Example:

   {"Department": "Finance"}

This is a complex type whose value must be valid JSON. The value can
be provided as a string on the command line or passed in as a file
using the file://path/to/file syntax.

The "--generate-param-json-input" option can be used to generate an
example of the JSON which must be provided. We recommend storing this
example in a file, modifying it as needed and then passing it back in
via the file:// syntax.

--database-software-image-id [text]

The database software image OCID

--db-system-defined-tags [complex type]

Defined tags for this resource. Each key is predefined and scoped to a
namespace. For more information, see Resource Tags. This is a complex
type whose value must be valid JSON. The value can be provided as a
string on the command line or passed in as a file using the
file://path/to/file syntax.

The "--generate-param-json-input" option can be used to generate an
example of the JSON which must be provided. We recommend storing this
example in a file, modifying it as needed and then passing it back in
via the file:// syntax.

--db-system-freeform-tags [complex type]

Free-form tags for this resource. Each tag is a simple key-value pair
with no predefined name, type, or namespace. For more information, see
Resource Tags.

Example:

   {"Department": "Finance"}

This is a complex type whose value must be valid JSON. The value can
be provided as a string on the command line or passed in as a file
using the file://path/to/file syntax.

The "--generate-param-json-input" option can be used to generate an
example of the JSON which must be provided. We recommend storing this
example in a file, modifying it as needed and then passing it back in
via the file:// syntax.

--fault-domains [complex type]

A Fault Domain is a grouping of hardware and infrastructure within an
availability domain. Fault Domains let you distribute your instances
so that they are not on the same physical hardware within a single
availability domain. A hardware failure or maintenance that affects
one Fault Domain does not affect DB systems in other Fault Domains.

If you do not specify the Fault Domain, the system selects one for
you. To change the Fault Domain for a DB system, terminate it and
launch a new DB system in the preferred Fault Domain.

If the node count is greater than 1, you can specify which Fault
Domains these nodes will be distributed into. The system assigns your
nodes automatically to the Fault Domains you specify so that no Fault
Domain contains more than one node.

To get a list of Fault Domains, use the ListFaultDomains operation in
the Identity and Access Management Service API.

Example:

   FAULT-DOMAIN-1

This is a complex type whose value must be valid JSON. The value can
be provided as a string on the command line or passed in as a file
using the file://path/to/file syntax.

The "--generate-param-json-input" option can be used to generate an
example of the JSON which must be provided. We recommend storing this
example in a file, modifying it as needed and then passing it back in
via the file:// syntax.

--from-json [text]

Provide input to this command as a JSON document from a file using the
file://path-to/file syntax.

The "--generate-full-command-json-input" option can be used to
generate a sample json file to be used with this command option. The
key names are pre-populated and match the command option names
(converted to camelCase format, e.g. compartment-id –> compartmentId),
while the values of the keys need to be populated by the user before
using the sample file as an input to this command. For any command
option that accepts multiple values, the value of the key can be a
JSON array.

Options can still be provided on the command line. If an option exists
in both the JSON document and the command line then the command line
specified value will be used.

For examples on usage of this option, please see our “using CLI with
advanced JSON options” link: https://docs.cloud.oracle.com/iaas/Conte
nt/API/SDKDocs/cliusing.htm#AdvancedJSONOptions

--is-active-data-guard-enabled [boolean]

True if active Data Guard is enabled.

--is-active-data-guard-enabled [boolean]

True if active Data Guard is enabled.

--is-diagnostics-events-enabled [boolean]

Enables customer to receive Events service notifications for guest VM
issues

--is-health-monitoring-enabled [boolean]

Enables Oracle to receive diagnostic data and share it with its
operations and support personnel

--is-incident-logs-enabled [boolean]

Enables Oracle to receive Events service notifications for guest VM
issues, collect incident logs and traces

--license-model [text]

The Oracle license model that applies to all the databases on the
dataguard standby DB system. The default is LICENSE_INCLUDED.

Accepted values are:

   BRING_YOUR_OWN_LICENSE, LICENSE_INCLUDED

--node-count [integer]

The number of nodes to launch for the DB system of the standby in the
Data Guard association. For a 2-node RAC virtual machine DB system,
specify either 1 or 2. If you do not supply this parameter, the
default is the node count of the primary DB system.

--private-ip [text]

The IPv4 address from the provided OCI subnet which needs to be
assigned to the VNIC. If not provided, it will be auto-assigned with
an available IPv4 address from the subnet.

--shape [text]

The shape of the DB system to launch to set up the Data Guard
association. The shape determines the number of CPU cores and the
amount of memory available for the DB system. Only virtual machine
shapes are valid shapes. If you do not supply this parameter, the
default shape is the shape of the primary DB system. To get a list of
all shapes, use the ListDbSystemShapes operation.

--storage-performance [text]

The block storage volume performance level. Valid values are
*BALANCED* and *HIGH_PERFORMANCE*. See Block Volume Performance for
more information.

Accepted values are:

   BALANCED, HIGH_PERFORMANCE

--time-zone [text]

The time zone of the dataguard standby DB system. For details, see DB
System Time Zones.


Global Parameters
=================

Use "oci --help" for help on global parameters.

"--auth-purpose", "--auth", "--cert-bundle", "--cli-auto-prompt", "--
cli-rc-file", "--config-file", "--connection-timeout", "--debug", "--
defaults-file", "--endpoint", "--generate-full-command-json-input", "
--generate-param-json-input", "--help", "--latest-version", "--max-
retries", "--no-retry", "--opc-client-request-id", "--opc-request-id",
"--output", "--profile", "--query", "--raw-output", "--read-timeout",
"--region", "--release-info", "--request-id", "--version", "-?", "-d",
"-h", "-i", "-v"


Example using required parameter
================================

Copy the following CLI commands into a file named example.sh. Run the
command by typing “bash example.sh” and replacing the example
parameters with your own.

Please note this sample will only work in the POSIX-compliant bash-
like shell. You need to set up the OCI configuration and appropriate
security policies before trying the examples.

       export db_system_id=<substitute-value-of-db_system_id> # https://docs.cloud.oracle.com/en-us/iaas/tools/oci-cli/latest/oci_cli_docs/cmdref/db/db-home/create.html#cmdoption-db-system-id
       export admin_password=<substitute-value-of-admin_password> # https://docs.cloud.oracle.com/en-us/iaas/tools/oci-cli/latest/oci_cli_docs/cmdref/db/database/create.html#cmdoption-admin-password
       export db_name=<substitute-value-of-db_name> # https://docs.cloud.oracle.com/en-us/iaas/tools/oci-cli/latest/oci_cli_docs/cmdref/db/database/create.html#cmdoption-db-name
       export availability_domain=<substitute-value-of-availability_domain> # https://docs.cloud.oracle.com/en-us/iaas/tools/oci-cli/latest/oci_cli_docs/cmdref/db/data-guard-association/create/with-new-db-system.html#cmdoption-availability-domain
       export creation_type=<substitute-value-of-creation_type> # https://docs.cloud.oracle.com/en-us/iaas/tools/oci-cli/latest/oci_cli_docs/cmdref/db/data-guard-association/create/with-new-db-system.html#cmdoption-creation-type
       export database_admin_password=<substitute-value-of-database_admin_password> # https://docs.cloud.oracle.com/en-us/iaas/tools/oci-cli/latest/oci_cli_docs/cmdref/db/data-guard-association/create/with-new-db-system.html#cmdoption-database-admin-password
       export display_name=<substitute-value-of-display_name> # https://docs.cloud.oracle.com/en-us/iaas/tools/oci-cli/latest/oci_cli_docs/cmdref/db/data-guard-association/create/with-new-db-system.html#cmdoption-display-name
       export hostname=<substitute-value-of-hostname> # https://docs.cloud.oracle.com/en-us/iaas/tools/oci-cli/latest/oci_cli_docs/cmdref/db/data-guard-association/create/with-new-db-system.html#cmdoption-hostname
       export protection_mode=<substitute-value-of-protection_mode> # https://docs.cloud.oracle.com/en-us/iaas/tools/oci-cli/latest/oci_cli_docs/cmdref/db/data-guard-association/create/with-new-db-system.html#cmdoption-protection-mode
       export subnet_id=<substitute-value-of-subnet_id> # https://docs.cloud.oracle.com/en-us/iaas/tools/oci-cli/latest/oci_cli_docs/cmdref/db/data-guard-association/create/with-new-db-system.html#cmdoption-subnet-id
       export transport_type=<substitute-value-of-transport_type> # https://docs.cloud.oracle.com/en-us/iaas/tools/oci-cli/latest/oci_cli_docs/cmdref/db/data-guard-association/create/with-new-db-system.html#cmdoption-transport-type

       db_home_id=$(oci db db-home create --db-system-id $db_system_id --query data.id --raw-output)

       database_id=$(oci db database create --admin-password $admin_password --db-home-id $db_home_id --db-name $db_name --db-system-id $db_system_id --query data.id --raw-output)

       oci db data-guard-association create with-new-db-system --availability-domain $availability_domain --creation-type $creation_type --database-admin-password $database_admin_password --database-id $database_id --display-name $display_name --hostname $hostname --protection-mode $protection_mode --subnet-id $subnet_id --transport-type $transport_type
