Skip to content

Commit 6c09ac8

Browse files
authored
Merge pull request #295683 from Clare-Zheng82/0304-Add_oracle_upgrade_section
[Doc update] Add upgrade section and update server configuration section in Oracle
2 parents 39e3ca1 + ab2dda9 commit 6c09ac8

File tree

5 files changed

+171
-27
lines changed

5 files changed

+171
-27
lines changed

articles/data-factory/connector-oracle.md

Lines changed: 171 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ author: jianleishen
66
ms.subservice: data-movement
77
ms.custom: synapse
88
ms.topic: conceptual
9-
ms.date: 02/13/2025
9+
ms.date: 03/04/2025
1010
ms.author: jianleishen
1111
---
1212

@@ -102,7 +102,7 @@ The Oracle linked service supports the following properties when apply version 2
102102
| server | The location of Oracle database you want to connect to. You can refer to [server property configuration](#server-property-configuration) to specify it. | Yes |
103103
| authenticationType | Authentication type for connecting to the Oracle database. Only **Basic** auth is supported now. | Yes |
104104
| username | The Oracle database username. | Yes |
105-
| password | The Oracle database password. | Yes |
105+
| password | The Oracle database password. Mark this field as **SecureString** to store it securely. Or, you can [reference a secret stored in Azure Key Vault](store-credentials-in-key-vault.md).| Yes |
106106
| connectVia | The [integration runtime](concepts-integration-runtime.md) to be used to connect to the data store. Learn more from [Prerequisites](#prerequisites) section. If not specified, the default Azure Integration Runtime is used. |No |
107107

108108
More connection properties you can set in linked service per your case:
@@ -121,25 +121,6 @@ More connection properties you can set in linked service per your case:
121121
| supportV1DataTypes | Specifies whether to use the version 1.0 data type mappings. Do not set this to true unless you want to keep backward compatibility with version 1.0's data type mappings. Type: boolean | No, this property is for backward compatibility use only | false |
122122
| fetchTswtzAsTimestamp | Specifies whether the driver returns column value with the TIMESTAMP WITH TIME ZONE data type as DateTime or string. This setting is ignored if supportV1DataTypes is not true. Type: boolean | No, this property is for backward compatibility use only | true |
123123

124-
#### `server` property configuration
125-
126-
For `server` property, you can specify it in one of the following three formats:
127-
128-
| Format | Example |
129-
|:--- |:--- |
130-
|[Connect Descriptor](https://docs.oracle.com/en/database/oracle/oracle-database/23/netag/identifying-and-accessing-database.html#GUID-8D28E91B-CB72-4DC8-AEFC-F5D583626CF6)| (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=sales.us.acme.com)))|
131-
|[Easy Connect (Plus) Naming](https://download.oracle.com/ocomdocs/global/Oracle-Net-Easy-Connect-Plus.pdf)|salesserver1:1521/sales.us.example.com|
132-
|[Oracle Net Services Name (TNS Alias)](https://docs.oracle.com/en/database/oracle/oracle-database/23/netrf/local-naming-parameters-in-tns-ora-file.html#GUID-12C94B15-2CE1-4B98-9D0C-8226A9DDF4CB) (only for the self-hosted integration runtime)|sales|
133-
134-
For the parameters used in `server`, we provide an allowlist to avoid security risks, as shown below. You can refer to it to determine which parameters to be set. If the disallowed parameter is set, the connection will fail.
135-
136-
- Allowlist for using the Azure integration runtime:
137-
138-
HOST,PORT,PROTOCOL,SERVICE_NAME,SID,INSTANCE_NAME,SERVER,CONNECT_TIMEOUT,RETRY_COUNT,RETRY_DELAY,SSL_VERSION,SSL_SERVER_DN_MATCH,SSL_SERVER_CERT_DN
139-
- Allowlist for using the self-hosted integration runtime:
140-
141-
HOST,PORT,PROTOCOL,ENABLE,EXPIRE_TIME,FAILOVER,LOAD_BALANCE,RECV_BUF_SIZE,SDU,SEND_BUF_SIZE,SOURCE_ROUTE,TYPE_OF_SERVICE,COLOCATION_TAG,CONNECTION_ID_PREFIX,FAILOVER_MODE,GLOBAL_NAME,HS,INSTANCE_NAME,POOL_BOUNDARY,POOL_CONNECTION_CLASS,POOL_NAME,POOL_PURITY,RDB_DATABASE,SHARDING_KEY,SHARDING_KEY_ID,SUPER_SHARDING_KEY,SERVER,SERVICE_NAME,SID,TUNNEL_SERVICE_NAME,SSL_CLIENT_AUTHENTICATION,SSL_CERTIFICATE_ALIAS,SSL_CERTIFICATE_THUMBPRINT,SSL_VERSION,SSL_SERVER_DN_MATCH,SSL_SERVER_CERT_DN,WALLET_LOCATION,CONNECT_TIMEOUT,RETRY_COUNT,RETRY_DELAY,TRANSPORT_CONNECT_TIMEOUT,RECV_TIMEOUT,COMPRESSION,COMPRESSION_LEVELS
142-
143124
**Example:**
144125

145126
```json
@@ -191,6 +172,27 @@ For the parameters used in `server`, we provide an allowlist to avoid security r
191172
}
192173
```
193174

175+
#### `server` property configuration
176+
177+
For `server` property, you can specify it in one of the following three formats:
178+
179+
| Format | Example |
180+
|:--- |:--- |
181+
|[Connect Descriptor](https://docs.oracle.com/en/database/oracle/oracle-database/23/netag/identifying-and-accessing-database.html#GUID-8D28E91B-CB72-4DC8-AEFC-F5D583626CF6)| (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=sales.us.acme.com)))|
182+
|[Easy Connect (Plus) Naming](https://download.oracle.com/ocomdocs/global/Oracle-Net-Easy-Connect-Plus.pdf)|salesserver1:1521/sales.us.example.com|
183+
|[Oracle Net Services Name (TNS Alias)](https://docs.oracle.com/en/database/oracle/oracle-database/23/netrf/local-naming-parameters-in-tns-ora-file.html#GUID-12C94B15-2CE1-4B98-9D0C-8226A9DDF4CB) (only for the self-hosted integration runtime)|sales|
184+
185+
The following list shows the supported parameters used in `server`. If you use parameters that are not in the following list, your connection fails.
186+
187+
- When using the Azure integration runtime:
188+
189+
HOST<br>PORT<br>PROTOCOL<br>SERVICE_NAME<br>SID<br>INSTANCE_NAME<br>SERVER<br>CONNECT_TIMEOUT<br>RETRY_COUNT<br>RETRY_DELAY<br>SSL_VERSION<br>SSL_SERVER_DN_MATCH<br>SSL_SERVER_CERT_DN
190+
191+
- When using the self-hosted integration runtime:
192+
193+
HOST<br>PORT<br>PROTOCOL<br>ENABLE<br>EXPIRE_TIME<br>FAILOVER<br>LOAD_BALANCE<br>RECV_BUF_SIZE<br>SDU<br>SEND_BUF_SIZE<br>SOURCE_ROUTE<br>TYPE_OF_SERVICE<br>COLOCATION_TAG<br>CONNECTION_ID_PREFIX<br>FAILOVER_MODE<br>GLOBAL_NAME<br>HS<br>INSTANCE_NAME<br>POOL_BOUNDARY<br>POOL_CONNECTION_CLASS<br>POOL_NAME<br>POOL_PURITY<br>RDB_DATABASE<br>SHARDING_KEY<br>SHARDING_KEY_ID<br>SUPER_SHARDING_KEY<br>SERVER<br>SERVICE_NAME<br>SID<br>TUNNEL_SERVICE_NAME<br>SSL_CLIENT_AUTHENTICATION<br>SSL_CERTIFICATE_ALIAS<br>SSL_CERTIFICATE_THUMBPRINT<br>SSL_VERSION<br>SSL_SERVER_DN_MATCH<br>SSL_SERVER_CERT_DN<br>WALLET_LOCATION<br>CONNECT_TIMEOUT<br>RETRY_COUNT<br>RETRY_DELAY<br>TRANSPORT_CONNECT_TIMEOUT<br>RECV_TIMEOUT<br>COMPRESSION<br>COMPRESSION_LEVELS
194+
195+
194196
### Version 1.0
195197

196198
The Oracle linked service supports the following properties when apply version 1.0:
@@ -519,12 +521,154 @@ When you copy data from and to Oracle, the following interim data type mappings
519521

520522
To learn details about the properties, check [Lookup activity](control-flow-lookup-activity.md).
521523

522-
## Upgrade the Oracle connector
524+
## Upgrade the Oracle connector
523525

524-
Here are steps that help you upgrade the Oracle connector:
526+
Here are steps that help you upgrade the Oracle connector:
525527

526-
1. In **Edit linked service** page, select **2.0 (Preview)** under **Version** and configure the linked service by referring to [Linked service properties version 2.0](#version-20).
527-
1. The data type mapping for the Oracle linked service version 2.0 is different from that for the version 1.0. To learn the latest data type mapping, see [Data type mapping for Oracle](#data-type-mapping-for-oracle).
528+
1. In **Edit linked service** page, select **2.0 (Preview)** under **Version** and configure the linked service by referring to [Linked service properties version 2.0](#version-20).
528529

529-
## Related content
530-
For a list of data stores supported as sources and sinks by the copy activity, see [Supported data stores](copy-activity-overview.md#supported-data-stores-and-formats).
530+
For the authentication related properties including username and password, specify the original values in the corresponding fields in version 2.0. Other connection properties such as host, port, and Oracle Service Name/Oracle SID in version 1.0 are now parameters of the [`server` property in version 2.0](#server-property-configuration).
531+
532+
For example, if you configure the version 1.0 linked service as shown below:
533+
534+
:::image type="content" source="media/connector-oracle/version-1-linked-service.png" alt-text="Screenshot of version 1.0 linked service.":::
535+
536+
```json
537+
{
538+
"name": "OracleLinkedService",
539+
"properties": {
540+
"type": "Oracle",
541+
"typeProperties": {
542+
"connectionString": "host=oraclesample.com;port=1521;servicename=db1"
543+
},
544+
"connectVia": {
545+
"referenceName": "<name of Integration Runtime>",
546+
"type": "IntegrationRuntimeReference"
547+
}
548+
}
549+
}
550+
```
551+
552+
The identical version 2.0 linked service configuration using **Easy Connect (Plus) Naming** is:
553+
554+
:::image type="content" source="media/connector-oracle/easy-connect-naming-linked-service.png" alt-text="Screenshot of linked service using easy connector (Plus) naming.":::
555+
556+
```json
557+
{
558+
"name": "OracleLinkedService",
559+
"properties": {
560+
"type": "Oracle",
561+
"version": "2.0",
562+
"typeProperties": {
563+
"server": "oraclesample.com:1521/db1",
564+
"username": "<user name>",
565+
"password": "<password>",
566+
"authenticationType": "<authentication type>"
567+
},
568+
"connectVia": {
569+
"referenceName": "<name of Integration Runtime>",
570+
"type": "IntegrationRuntimeReference"
571+
}
572+
}
573+
}
574+
```
575+
576+
The identical version 2.0 linked service configuration using **Connector Descriptor** is:
577+
578+
:::image type="content" source="media/connector-oracle/connector-descriptor-linked-service.png" alt-text="Screenshot of linked service using connector descriptor.":::
579+
580+
```json
581+
{
582+
"name": "OracleLinkedService",
583+
"properties": {
584+
"type": "Oracle",
585+
"version": "2.0",
586+
"typeProperties": {
587+
"server": "(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST= oraclesample.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=db1)))",
588+
"username": "<user name>",
589+
"password": "<password>",
590+
"authenticationType": "<authentication type>"
591+
},
592+
"connectVia": {
593+
"referenceName": "<name of Integration Runtime>",
594+
"type": "IntegrationRuntimeReference"
595+
}
596+
}
597+
}
598+
```
599+
600+
> [!TIP]
601+
> Azure Key Vault is supported for the `server` property. You can edit the linked service JSON to add the Azure Key Vault reference, as shown below:<br>
602+
> :::image type="content" source="media/connector-oracle/azure-key-vault-server.png" alt-text="Screenshot of using Azure Key Vault in server.":::
603+
604+
Note that:
605+
606+
- If you use **Oracle Service Name** in version 1.0, you can use **Easy Connect (Plus) Naming** or **Connector Descriptor** as the server format in version 2.0.
607+
608+
- If you use **Oracle SID** in version 1.0, you need to use **Connector Descriptor** as the server format in version 2.0.
609+
610+
- For some additional connection properties in version 1.0, we provide alternative properties or parameters in the `server` property in version 2.0. You can refer to the table below to upgrade the version 1.0 properties.
611+
612+
| Version 1.0 | Version 2.0  |
613+
|:--- |:--- |
614+
| encryptionmethod| PROTOCOL (parameter in `server`) |
615+
| tnsnamesfile | TNS_ADMIN (environment variable supported on the self-hosted integration runtime)  |
616+
| servername | server |
617+
| enablebulkload<br>Value: 1, 0 | enableBulkLoad <br>Value: true, false |
618+
| fetchtswtzastimestamp<br>Value: 1, 0 | fetchTswtzAsTimestamp <br>Value: true, false |
619+
| alternateservers | DESCRIPTION_LIST (parameter in `server`) |
620+
| arraysize | fetchSize |
621+
| cachedcursorlimit | statementCacheSize |
622+
| connectionretrycount | RETRY_COUNT (parameter in `server`) |
623+
| initializationstring | initializationString |
624+
| logintimeout | CONNECT_TIMEOUT (parameter in `server`) |
625+
| cryptoprotocolversion | SSL_VERSION (parameter in `server`) |
626+
| truststore | WALLET_LOCATION (parameter in `server`) |
627+
628+
For example, if you use `alternateservers` in version 1.0, you can set the `DESCRIPTION_LIST` parameter in the server property in version 2.0:
629+
630+
Version 1.0 linked service using `alternateservers`:
631+
632+
```json
633+
{
634+
"name": "OracleV1",
635+
"properties": {
636+
"type": "Oracle",
637+
"typeProperties": {
638+
"connectionString": "host=oraclesample.com;port=1521;servicename=db1;alternateservers=(HostName= oraclesample2.com:PortNumber=1521:SID=db2,HostName=255.201.11.24:PortNumber=1522:ServiceName=db3)"
639+
}
640+
}
641+
}
642+
```
643+
644+
Identical version 2.0 linked service using `DESCRIPTION_LIST` parameter in **Connector Descriptor**:
645+
646+
```json
647+
{
648+
"name": "OracleV2",
649+
"properties": {
650+
"type": "Oracle",
651+
"version": "2.0",
652+
"typeProperties": {
653+
"server": "(DESCRIPTION_LIST=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oraclesample.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=db1)))(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oraclesample2.com)(PORT=1521))(CONNECT_DATA=(SID=db2)))(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=255.201.11.24)(PORT=1522))(CONNECT_DATA=(SERVICE_NAME=db3))))",
654+
"username": "<user name>",
655+
"password": "<password>",
656+
"authenticationType": "<authentication type>"
657+
}
658+
}
659+
}
660+
```
661+
662+
2. The data type mapping for the Oracle linked service version 2.0 is different from that for the version 1.0. To learn the latest data type mapping, see [Data type mapping for Oracle](#data-type-mapping-for-oracle).
663+
664+
An additional connection property `supportV1DataTypes` in version 2.0 can reduce upgrade difficulties caused by data type changes. Setting this property to `true` ensures that the data type in version 2.0 remains consistent with version 1.0.
665+
666+
## Differences between Oracle version 2.0 and version 1.0
667+
668+
The Oracle connector version 2.0 offers new functionalities and is compatible with most features of version 1.0. The following table shows the feature differences between version 2.0 and version 1.0.
669+
670+
| Version 2.0 | Version 1.0  |
671+
|:--- |:--- |
672+
|The following mappings are used from Oracle data types to interim service data types used by the service internally. <br><br>NUMBER(p,s) -> Int16, Int32, Int64, Double, Single, Decimal <br>FLOAT(p)-> Double or Decimal based on its precision <br>NUMBER -> Decimal <br>TIMESTAMP WITH TIME ZONE -> DateTimeOffset <br>INTERVAL YEAR TO MONTH -> Int64 <br>INTERVAL DAY TO SECOND -> TimeSpan |The following mappings are used from Oracle data types to interim service data types used by the service internally. <br><br>NUMBER(p,s) -> Decimal or String based on its precision <br>FLOAT(p)-> Double <br>NUMBER -> Double <br>TIMESTAMP WITH TIME ZONE -> DateTime <br>INTERVAL YEAR TO MONTH -> String <br>INTERVAL DAY TO SECOND -> String |
673+
| Support convertDecimalToInteger in copy source when `supportV1DataTypes` is set to `true`. | Support convertDecimalToInteger in copy source.  |
674+
| Using `?` as a placeholder for script activity query parameters is not support. You can use the named parameter (such as `:paramA`) or the positional parameter (such as `:1`) as a replacement. | Support using `?` as a placeholder for script activity query parameters.  |
30.1 KB
Loading
16.8 KB
Loading
12.6 KB
Loading
21.2 KB
Loading

0 commit comments

Comments
 (0)