

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 連線至 Oracle 資料庫執行個體
<a name="USER_ConnectToOracleInstance"></a>

在 Amazon RDS 佈建您的 Oracle 資料庫執行個體之後，您就可以使用任何標準 SQL 用戶端應用程式來登入您的資料庫執行個體。由於 RDS 是受管理的服務，因此您無法以 SYS 或 SYSTEM 的身分登入。如需更多詳細資訊，請參閱 [RDS for Oracle 的使用者和權限](Oracle.Concepts.Privileges.md)。

在本主題中，您將學習如何使用 Oracle SQL Developer 或 SQL\$1Plus 連線至 RDS for Oracle 資料庫執行個體。如需引導您進行建立和連線至範例資料庫執行個體的程序範例，請參閱 [建立並連線至 Oracle 資料庫執行個體](CHAP_GettingStarted.CreatingConnecting.Oracle.md)。

**Topics**
+ [

# 尋找您的 RDS for Oracle 資料庫執行個體的端點
](USER_Endpoint.md)
+ [

# 使用 Oracle SQL Developer 連線至您的資料庫執行個體
](USER_ConnectToOracleInstance.SQLDeveloper.md)
+ [

# 使用 SQL\$1Plus 連線至您的資料庫執行個體
](USER_ConnectToOracleInstance.SQLPlus.md)
+ [

# 安全群組的考量
](USER_ConnectToOracleInstance.Security.md)
+ [

# 程序架構的考量
](USER_ConnectToOracleInstance.SharedServer.md)
+ [

# 對您的 Oracle 資料庫執行個體的連線進行故障診斷
](USER_ConnectToOracleInstance.Troubleshooting.md)
+ [

# 使用 sqlnet.ora 參數修改連線屬性
](USER_ModifyInstance.Oracle.sqlnet.md)

# 尋找您的 RDS for Oracle 資料庫執行個體的端點
<a name="USER_Endpoint"></a>

每個 Amazon RDS 資料庫執行個體會有端點，並且每個端點有資料庫執行個體的 DNS 名稱和連接埠號碼。若要使用 SQL 用戶端應用程式連線至您的資料庫執行個體，您需要資料庫執行個體的 DNS 名稱和連接埠號碼。

您可以使用 Amazon RDS 主控台或 AWS CLI，藉此尋找資料庫執行個體的端點。

**注意**  
如果您是使用 Kerberos 身分驗證，請參閱[使用 Kerberos 身分驗證連接至 Oracle](oracle-kerberos-connecting.md)。

## 主控台
<a name="USER_Endpoint.Console"></a>

**使用主控台尋找端點**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在主控台的右上角，選擇資料庫執行個體的 AWS 區域。

1. 尋找您的資料庫執行個體的 DNS 名稱和連接埠號碼。

   1. 選擇 **Databases** (資料庫) 來顯示資料庫執行個體的清單。

   1. 選擇 Oracle 資料庫執行個體名稱以顯示執行個體詳細資訊。

   1. 在 **Connectivity & security (連線能力和安全性)** 索引標籤上，複製該端點。另外，請記下連接埠號碼。您需要同時有端點和連接埠號碼，才能連線至資料庫執行個體。  
![\[尋找資料庫執行個體的端點和連接埠\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/OracleConnect1.png)

## AWS CLI
<a name="USER_Endpoint.CLI"></a>

若要使用 AWS CLI 來尋找 Oracle 資料庫執行個體的端點，請呼叫 [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 命令。

**Example 使用 AWS CLI 尋找端點**  

```
1. aws rds describe-db-instances
```
在輸出中搜尋 `Endpoint` 以尋找資料庫執行個體的 DNS 名稱和連接埠號碼。輸出中的 `Address` 行包含 DNS 名稱。下列是 JSON 端點輸出的範例。  

```
"Endpoint": {
    "HostedZoneId": "Z1PVIF0B656C1W",
    "Port": 3306,
    "Address": "myinstance.123456789012.us-west-2.rds.amazonaws.com"
},
```

**注意**  
輸出可能包含多個資料庫執行個體的資訊。

# 使用 Oracle SQL Developer 連線至您的資料庫執行個體
<a name="USER_ConnectToOracleInstance.SQLDeveloper"></a>

在此程序中，您會使用 Oracle SQL Developer 連接至資料庫執行個體。若要下載此公用程式的獨立版本，請參閱 [Oracle SQL 開發人員下載頁面](https://www.oracle.com/tools/downloads/sqldev-downloads.html)。

若要連接至資料庫執行個體，您需要其 DNS 名稱和連接埠號碼。如需尋找資料庫執行個體的 DNS 名稱和連接埠號碼的詳細資訊，請參閱 [尋找您的 RDS for Oracle 資料庫執行個體的端點](USER_Endpoint.md)。

**使用 SQL Developer 連線至資料庫執行個體**

1. 啟動 Oracle SQL Developer。

1. 在 **Connections (連接)** 標籤上，選擇 **add (\$1) (新增 (\$1))** 圖示。  
![\[Oracle SQL Developer 的新增圖示將反白顯示\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/oracle-sqldev-plus.png)

1. 在 **New/Select Database Connection (新增/選取資料庫連接)** 對話方塊中，提供資料庫執行個體的資訊：
   + 針對 **Connection Name (連線名稱)**，輸入可描述連線的名稱，例如 `Oracle-RDS`。
   + 針對 **Username (使用者名稱)**，輸入資料庫執行個體之資料庫管理員的名稱。
   + 針對 **Password (密碼)**，輸入資料庫管理員的密碼。
   + 針對 **Hostname (主機名稱)**，輸入資料庫執行個體的 DNS 名稱。
   + 針對 **Port (連接埠)**，輸入連接埠號碼。
   + 對於 **SID**，輸入資料庫名稱。您可以在資料庫詳細資訊頁面的 **Configuration** (組態) 索引標籤上尋找資料庫名稱。

   完成的對話方塊看起來應與下列類似。  
![\[在 Oracle SQL Developer 中建立新連線\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/oracle-sqldev-newcon.png)

1. 選擇 **Connect (連線)**。

1. 您現在可以開始建立您自己的資料庫，並照常對您的資料庫執行個體和資料庫執行查詢。若要對您的資料庫執行個體執行測試查詢，請執行下列動作：

   1. 在連線的 **Worksheet (工作表)** 標籤中，輸入下列 SQL 查詢。

      ```
      SELECT NAME FROM V$DATABASE;
      ```

   1. 選擇 **execute (執行)** 圖示來執行查詢。  
![\[使用執行圖示，以便在 Oracle SQL Developer 中執行查詢\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/oracle-sqldev-run.png)

      SQL Developer 會傳回資料庫名稱。  
![\[在 Oracle SQL Developer 中查詢結果\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/oracle-sqldev-results.png)

# 使用 SQL\$1Plus 連線至您的資料庫執行個體
<a name="USER_ConnectToOracleInstance.SQLPlus"></a>

您可以使用 SQL\$1Plus 之類的公用程式來連接至執行 Oracle 的 Amazon RDS 資料庫執行個體。若要下載包含獨立版 SQL\$1Plus 的 Oracle 即時用戶端，請參閱 [Oracle 即時用戶端下載](https://www.oracle.com/database/technologies/instant-client/downloads.html)。

若要連接至資料庫執行個體，您需要其 DNS 名稱和連接埠號碼。如需尋找資料庫執行個體的 DNS 名稱和連接埠號碼的詳細資訊，請參閱 [尋找您的 RDS for Oracle 資料庫執行個體的端點](USER_Endpoint.md)。

**Example 使用 SQL\$1Plus 連接至 Oracle 資料庫執行個體**  
在下列範例中，替代資料庫執行個體管理員的使用者名稱。同時，替代資料庫執行個體的 DNS 名稱，然後包含連接埠號碼和 Oracle SID。SID 值為建立資料庫執行個體時所指定之資料庫執行個體的資料庫名稱，而不是資料庫執行個體的名稱。  
針對 Linux、macOS 或 Unix：  

```
1. sqlplus 'user_name@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dns_name)(PORT=port))(CONNECT_DATA=(SID=database_name)))'
```
針對 Windows：  

```
1. sqlplus user_name@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dns_name)(PORT=port))(CONNECT_DATA=(SID=database_name)))
```
您應該會看到類似下列的輸出。  

```
SQL*Plus: Release 12.1.0.2.0 Production on Mon Aug 21 09:42:20 2017
```
輸入使用者的密碼之後，隨即會出現 SQL 提示。  

```
SQL>
```

**注意**  
較短格式連線字串 (EZ connect) (例如 `sqlplus USER/PASSWORD@longer-than-63-chars-rds-endpoint-here:1521/database-identifier`) 可能遇到字元數上限，因此建議您不要將其用來連線。

# 安全群組的考量
<a name="USER_ConnectToOracleInstance.Security"></a>

為了讓您連接至資料庫執行個體，它必須與安全群組關聯，該群組包含必要的 IP 地址和網路組態。您的資料庫執行個體可能會使用預設安全群組。如果在建立資料庫執行個體時指派預設、非設定的安全群組，防火牆會阻止連線。如需建立新安全群組的詳細資訊，請參閱[使用安全群組控制存取](Overview.RDSSecurityGroups.md)。

建立新安全群組之後，您可以修改資料庫執行個體，讓它與該安全群組建立關聯。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

您可以使用 SSL 來加密對資料庫執行個體的連線，藉此增強安全性。如需更多詳細資訊，請參閱 [Oracle Secure Sockets Layer](Appendix.Oracle.Options.SSL.md)。

# 程序架構的考量
<a name="USER_ConnectToOracleInstance.SharedServer"></a>

伺服器程序會處理對 Oracle 資料庫執行個體的使用者連線。依預設，Oracle 資料庫執行個體會使用專用伺服器程序。利用專用伺服器程序，每個伺服器程序只會服務一個使用者程序。您可以選擇性地設定共用伺服器程序。利用共用伺服器程序，每個伺服器程序可以服務多個使用者程序。

當伺服器上大量的使用者工作階段使用太多記憶體時，您可能會考慮使用共用伺服器程序。當工作階段經常連接和中斷連接，而造成效能問題時，您可能也會考慮共用伺服器程序。使用共用伺服器程序也有缺點。例如，它們可能拖累 CPU 資源，且它們的設定和管理較為複雜。

如需專用和共用伺服器程序的詳細資訊，請參閱 Oracle 文件中的[關於專用和共用伺服器程序](https://docs.oracle.com/database/121/ADMIN/manproc.htm#ADMIN11166)。如需在 Oracle 資料庫執行個體上設定共用伺服器程序的詳細資訊，請參閱知識中心的​[如何設定 Amazon RDS for Oracle Database 以搭配使用共用伺服器？](https://aws.amazon.com/premiumsupport/knowledge-center/oracle-db-shared/)一文。

# 對您的 Oracle 資料庫執行個體的連線進行故障診斷
<a name="USER_ConnectToOracleInstance.Troubleshooting"></a>

下列是在您嘗試連接至 Oracle 資料庫執行個體時可能遇到的問題。


****  

| 問題 | 故障診斷建議 | 
| --- | --- | 
|  無法連接至資料庫執行個體。  |  對於新建立的資料庫執行個體，資料庫執行個體的狀態為 **creating (建立中)**，直到它可供使用為止。狀態變更為 **Available (可用)** 時，您便能連線至資料庫執行個體。視資料庫執行個體類別和儲存體數量而定，可能需要最多 20 分鐘的時間，新的資料庫執行個體才會可用。  | 
|  無法連接至資料庫執行個體。  |  如果您無法透過建立資料庫執行個體時指定的連接埠傳送或接收通訊，則無法連接至資料庫執行個體。請洽詢您的網路管理員，以驗證您為資料庫執行個體指定的連接埠可允許傳入和傳出通訊。  | 
|  無法連接至資料庫執行個體。  |  您的本機防火牆強制執行的存取規則，與您獲授權可存取資料庫執行個體安全群組中資料庫執行個體的 IP 地址可能不符。問題很可能是您防火牆上的傳入或傳出規則引起的。 您可以新增或編輯安全群組中的傳入規則。針對 **Source (來源)**，選擇 **My IP (我的 IP)**。此舉允許透過您的瀏覽器中偵測到的 IP 地址存取資料庫執行個體。如需更多詳細資訊，請參閱 [Amazon VPC 和 Amazon RDS](USER_VPC.md)。 如需安全群組的詳細資訊，請參閱[使用安全群組控制存取](Overview.RDSSecurityGroups.md)。 若要逐步進行設定安全群組規則的程序，請參閱 [教學課程：建立要與資料庫執行個體搭配使用的 VPC (僅限 IPv4)](CHAP_Tutorials.WebServerDB.CreateVPC.md)。  | 
|  **Connect failed because target host or object does not exist – Oracle, Error: ORA-12545 (連接失敗，因為目標主機或物件不存在 - Oracle 發生錯誤：ORA-12545)**   |  確定您正確指定伺服器名稱和連接埠號碼。針對 **Server name (伺服器名稱)**，輸入來自主控台的 DNS 名稱。 如需尋找資料庫執行個體的 DNS 名稱和連接埠號碼的詳細資訊，請參閱 [尋找您的 RDS for Oracle 資料庫執行個體的端點](USER_Endpoint.md)。  | 
|  **Invalid username/password; logon denied – Oracle, Error: ORA-01017 (無效的使用者名稱/密碼；登入遭拒 - Oracle 發生錯誤：ORA-01017)**   |  您可以連接資料庫執行個體，但連線被拒。這通常是因為提供了錯誤的使用者名稱或密碼所造成。驗證使用者名稱和密碼，然後重試。  | 
|  **TNS:listener 目前不知道在連線描述項中指定的 SID - Oracle，錯誤：ORA-12505**   |  請確定輸入的 SID 是正確的。SID 與您的資料庫名稱相同。在執行個體之 **Databases** (資料庫) 頁面的 **Configuration** (組態) 索引標籤中尋找資料庫名稱。您也可以使用 AWS CLI尋找資料庫名稱： <pre>aws rds describe-db-instances --query 'DBInstances[*].[DBInstanceIdentifier,DBName]' --output text</pre>  | 

如需連線問題的詳細資訊，請參閱 [無法連線至 Amazon RDS 資料庫執行個體](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting)。

# 使用 sqlnet.ora 參數修改連線屬性
<a name="USER_ModifyInstance.Oracle.sqlnet"></a>

sqlnet.ora 檔案包括在 Oracle 資料庫伺服器和用戶端上設定 Oracle Net 功能的參數。使用 sqlnet.ora 檔案中的參數，您可以修改進出資料庫的連線屬性。

如需為何您可能設定 sqlnet.ora 參數的詳細資訊，請參閱 Oracle 文件中的[設定描述檔參數](https://docs.oracle.com/database/121/NETAG/profile.htm#NETAG009)。

## 設定 sqlnet.ora 參數
<a name="USER_ModifyInstance.Oracle.sqlnet.Setting"></a>

Amazon RDS for Oracle 參數群組包括 sqlnet.ora 參數的子集。您可以使用與您設定其他 Oracle 參數相同的方式來設定它們。`sqlnetora.` 字首識別哪些參數是 sqlnet.ora 參數。例如，在 Amazon RDS 的 Oracle 參數群組中，`default_sdu_size` sqlnet.ora 參數是 `sqlnetora.default_sdu_size`。

如需管理參數群組和設定參數值的相關資訊，請參閱[Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。

## 支援的 sqlnet.ora 參數
<a name="USER_ModifyInstance.Oracle.sqlnet.Supported"></a>

Amazon RDS 支援下列 sqlnet.ora 參數。動態 sqlnet.ora 參數的變更會立即生效。


****  

| 參數 | 有效值 | 靜態/動態 | Description | 
| --- | --- | --- | --- | 
|  `sqlnetora.default_sdu_size`  |  `512` 至 `2097152`   |  動態  |  工作階段資料單位 (SDU) 大小，以位元組為單位。 SDU 是一次放入緩衝區並跨網路傳送的資料數量。  | 
|  `sqlnetora.diag_adr_enabled`  |  `ON`, `OFF`   |  動態  |  啟用或停用自動診斷儲存庫 (ADR) 追蹤。 `ON` 指定使用 ADR 檔案追蹤。 `OFF` 指定使用非 ADR 檔案追蹤。  | 
|  `sqlnetora.recv_buf_size`  |  `8192` 至 `268435456`   |  動態  |  工作階段之接收操作的緩衝區空間限制，受 TCP/IP、TCP/IP (含 SSL) 和 SDP 通訊協定支援。  | 
|  `sqlnetora.send_buf_size`  |  `8192` 至 `268435456`   |  動態  |  工作階段之傳送操作的緩衝區空間限制，受 TCP/IP、TCP/IP (含 SSL) 和 SDP 通訊協定支援。  | 
|  `sqlnetora.sqlnet.allowed_logon_version_client`  |  `8`, `10`, `11`, `12`   |  動態  |  為了讓用戶端及扮演用戶端的伺服器對 Oracle 資料庫執行個體建立連線，所允許的最低驗證通訊協定版本。  | 
|  `sqlnetora.sqlnet.allowed_logon_version_server`  |  `8`, `9`, `10`, `11`, `12`, `12a`   |  動態  |  允許對 Oracle 資料庫執行個體建立連線的最低驗證通訊協定版本。  | 
|  `sqlnetora.sqlnet.expire_time`  |  `0` 至 `1440`   |  動態  |  傳送檢查以驗證用戶端-伺服器連線是否作用中的時間間隔 (以分鐘為單位)。  | 
|  `sqlnetora.sqlnet.inbound_connect_timeout`  |  `0` 或 `10` 到 `7200`   |  動態  |  用戶端與資料庫伺服器連線，並提供必要身分驗證資訊的時間 (以秒為單位)。  | 
|  `sqlnetora.sqlnet.outbound_connect_timeout`  |  `0` 或 `10` 到 `7200`   |  動態  |  用戶端建立 Oracle Net 與資料庫執行個體連線的時間 (以秒為單位)。  | 
|  `sqlnetora.sqlnet.recv_timeout`  |  `0` 或 `10` 到 `7200`   |  動態  |  在建立連線之後，資料庫伺服器等待用戶端資料的時間 (以秒為單位)。  | 
|  `sqlnetora.sqlnet.send_timeout`  |  `0` 或 `10` 到 `7200`   |  動態  |  在建立連線之後，資料庫伺服器對用戶端完成傳送操作的時間 (以秒為單位)。  | 
|  `sqlnetora.tcp.connect_timeout`  |  `0` 或 `10` 到 `7200`   |  動態  |  用戶端建立資料庫伺服器之 TCP 連線的時間 (以秒為單位)。  | 
|  `sqlnetora.trace_level_server`  |  `0`, `4`, `10`, `16`, `OFF`, `USER`, `ADMIN`, `SUPPORT`  |  動態  | 對於非 ADR 追蹤，在指定的間隔開啟伺服器追蹤或關閉它。 | 

每個支援的 sqlnet.ora 參數的預設值為此版本的 Oracle Database 預設值。

## 檢視 sqlnet.ora 參數
<a name="USER_ModifyInstance.Oracle.sqlnet.Viewing"></a>

您可以使用 AWS 管理主控台 AWS CLI、 或 SQL 用戶端來檢視 sqlnet.ora 參數及其設定。

### 使用主控台檢視 sqlnet.ora 參數
<a name="USER_ModifyInstance.Oracle.sqlnet.Viewing.Console"></a>

如需檢視參數群組中參數的相關資訊，請參閱[Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。

在 Oracle 參數群組中，`sqlnetora.` 字首識別哪些參數是 sqlnet.ora 參數。

### 使用 檢視 sqlnet.ora 參數 AWS CLI
<a name="USER_ModifyInstance.Oracle.sqlnet.Viewing.CLI"></a>

若要檢視 Oracle 參數群組中設定的 sqlnet.ora 參數，請使用 AWS CLI [describe-db-parameters](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-parameters.html) 命令。

若要檢視 Oracle 資料庫執行個體的所有 sqlnet.ora 參數，請呼叫 AWS CLI [download-db-log-file-portion](https://docs.aws.amazon.com/cli/latest/reference/rds/download-db-log-file-portion.html) 命令。指定資料庫執行個體識別符、日誌檔案名稱和輸出類型。

**Example**  
下列代碼列出 `mydbinstance` 的所有 sqlnet.ora 參數。  
針對 Linux、macOS 或 Unix：  

```
aws rds download-db-log-file-portion \
    --db-instance-identifier mydbinstance \
    --log-file-name trace/sqlnet-parameters \
    --output text
```
在 Windows 中：  

```
aws rds download-db-log-file-portion ^
    --db-instance-identifier mydbinstance ^
    --log-file-name trace/sqlnet-parameters ^
    --output text
```

### 使用 SQL 用戶端檢視 sqlnet.ora 參數
<a name="USER_ModifyInstance.Oracle.sqlnet.Viewing.SQL"></a>

在您連接至 SQL 用戶端的 Oracle 資料庫執行個體之後，下列查詢會列出 sqlnet.ora 參數。

```
1. SELECT * FROM TABLE
2.    (rdsadmin.rds_file_util.read_text_file(
3.         p_directory => 'BDUMP',
4.         p_filename  => 'sqlnet-parameters'));
```

如需連接至 SQL 用戶端中 Oracle 資料庫執行個體的相關資訊，請參閱[連線至 Oracle 資料庫執行個體](USER_ConnectToOracleInstance.md)。