连接到 Oracle 数据库实例
在 Amazon RDS 配置 Oracle 数据库实例后,您可以使用任何标准 SQL 客户端应用程序连接到数据库实例。在本主题中,您将使用 Oracle SQL Developer 或 SQL*Plus 连接到运行 Oracle 数据库引擎的数据库实例。
有关指导您完成创建和连接到示例数据库实例的示例,请参阅 创建 Oracle 数据库实例并连接到 Oracle 数据库实例上的数据库。
主题
查找 Oracle 数据库实例的终端节点
每个 Amazon RDS 数据库实例都有一个终端节点,每个终端节点都包含数据库实例的 DNS 名称和端口号。要使用 SQL 客户端应用程序连接到数据库实例,您需要该数据库实例的 DNS 名称和端口号。
您可使用 Amazon RDS 控制台或 Amazon CLI 查找数据库实例的终端节点。
如果您使用的是 Kerberos 身份验证,请参阅使用 Kerberos 身份验证连接到 Oracle。
Console
使用控制台查找终端节点
登录Amazon Web Services Management Console并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
在控制台的右上角,选择数据库实例的 Amazon 区域。
-
找到数据库实例的 DNS 名称和端口号。
-
选择 Databases (数据库) 以显示您的数据库实例的列表。
-
选择 Oracle 数据库实例名称以显示实例详细信息。
-
在连接和安全性选项卡上,复制终端节点。另请注意端口号。您需要终端节点和端口号才能连接到数据库实例。
-
Amazon CLI
要使用 Amazon CLI 查找 Oracle 数据库实例的终端节点,请调用 describe-db-instances 命令。
例 使用 Amazon CLI 查找终端节点
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 连接到数据库实例
在此过程中,您将使用 Oracle SQL Developer 连接到数据库实例。要下载此实用工具的独立版本,请参阅 Oracle SQL 开发人员下载页
要连接到数据库实例,您需要该实例的 DNS 名称和端口号。有关查找数据库实例的 DNS 名称和端口号的信息,请参阅查找 Oracle 数据库实例的终端节点。
使用 SQL Developer 连接到数据库实例
-
启动 Oracle SQL Developer。
-
在 Connections 选项卡上,选择 add (+) 图标。
-
在 New/Select Database Connection 对话框中,提供您的数据库实例的信息:
对于 Connection Name (连接名称),输入可描述连接的名称,如
Oracle-RDS
。对于 Username (用户名),输入数据库实例的数据库管理员的名称。
对于 Password (密码),输入数据库管理员的密码。
对于 Hostname (主机名),输入数据库实例的 DNS 名称。
对于 Port (端口),输入端口号。
对于 SID,输入 Oracle 数据库 SID。
完成后的对话框应该与下面类似。
-
选择 Connect。
-
您现在可以开始创建您自己的数据库并像往常一样对数据库实例和数据库运行查询。要对数据库实例运行测试查询,请执行以下操作:
-
在您的连接的 Worksheet (工作表) 选项卡中,输入以下 SQL 查询。
SELECT NAME FROM V$DATABASE;
-
选择 execute (执行) 图标以运行查询。
SQL Developer 将返回数据库名称。
-
使用 SQL*Plus 连接到数据库实例
您可以使用实用程序 (如 SQL*Plus) 连接到运行 Oracle 的 Amazon RDS 数据库实例。要下载包含独立版本 SQL*Plus 的 Oracle 即时客户端,请参阅 Oracle 即时客户端下载
要连接到数据库实例,您需要该实例的 DNS 名称和端口号。有关查找数据库实例的 DNS 名称和端口号的信息,请参阅查找 Oracle 数据库实例的终端节点。
例 使用 SQL*Plus 连接到 Oracle 数据库实例
在以下示例中,请将用户名替换为您的数据库实例管理员。另外,请将 DNS 名称替换为您的数据库实例,然后包含端口号和 Oracle SID。SID 值是您创建数据库实例时指定的数据库实例数据库的名称,而不是数据库实例的名称。
对于 Linux、macOS 或 Unix:
sqlplus '
user_name
@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dns_name
)(PORT=port
))(CONNECT_DATA=(SID=database_name
)))'
对于 Windows:
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>
较短格式连接字符串 (Easy connect 或 EZCONNECT) (如 sqlplus USER/PASSWORD@LONGER-THAN-63-CHARS-RDS-ENDPOINT-HERE:1521/DATABASE_IDENTIFIER
) 可能会遇到最大字符限制,不应用于连接。
安全组注意事项
要连接到数据库实例,它必须与包含必要的 IP 地址和网络配置的安全组关联。您的数据库实例可能使用默认安全组。如果在创建数据库实例时分配了一个默认的未配置安全组,则防火墙将阻止连接。
要创建新的安全组,您创建的安全组取决于 Amazon EC2 数据库实例的平台。要确定您的平台,请参阅 确定您使用的是 EC2-VPC 还是 EC2-Classic 平台。一般而言,如果数据库实例位于 EC2-Classic 平台上,则创建数据库安全组;如果数据库实例位于 VPC 平台上,则创建 VPC 安全组。有关创建新安全组的信息,请参阅 使用安全组控制访问权限。
在创建新安全组后,您应修改数据库实例以使其与该安全组关联。有关更多信息,请参阅“修改 Amazon RDS 数据库实例”。
可通过使用 SSL 加密与数据库实例的连接来增强安全性。有关更多信息,请参阅“Oracle 安全套接字层”。
进程架构注意事项
服务器进程处理与 Oracle 数据库实例的用户连接。默认情况下,Oracle 数据库实例使用专用服务器进程。使用专用服务器进程,每个服务器进程仅服务一个用户进程。您可以选择配置共享服务器进程。使用共享服务器进程,每个服务器进程可服务多个用户进程。
当大量用户会话占用服务器上的太多内存时,您可以考虑使用共享服务器进程。当会话非常频繁时连接和断开连接,从而导致性能问题时,您也可以考虑使用共享服务器进程。使用共享服务器进程也有缺点。例如,它们可能会耗尽 CPU 资源,并且配置和管理起来更加复杂。
有关专用和共享服务器进程的更多信息,请参阅 Oracle 文档中的关于专用和共享服务器进程
排除与 Oracle 数据库实例的连接故障
下面是您在尝试连接到您的 Oracle 数据库实例时可能遇到的问题。
问题 | 故障排除建议 |
---|---|
无法连接到数据库实例。 |
对于新创建的数据库实例,数据库实例的状态为 creating,直到该数据库实例可供使用。当状态变为 Available 时,您可以连接到该数据库实例。根据数据库实例类和存储量,新数据库实例可能需要等待 20 分钟时间才可用。 |
无法连接到数据库实例。 |
如果您不能通过在创建数据库实例时指定的端口收发消息,您就无法连接到数据库实例。请联系您的网络管理员,核对您为数据库实例指定的端口是否可以进行入站和出站通信。 |
无法连接到数据库实例。 |
由本地防火墙强制执行的访问规则与您在数据库实例的安全组中授权用于访问数据库实例的 IP 地址可能不匹配。此问题很可能是由防火墙上的入站或出站规则所致。 您可以在安全组中添加或编辑入站规则。对于 Source,选择 My IP。这允许从浏览器中检测到的 IP 地址访问数据库实例。有关更多信息,请参阅“Amazon Virtual Private Cloud VPC 和 Amazon RDS”。 有关安全组的更多信息,请参阅 使用安全组控制访问权限。 要演练为您的安全组设置规则的过程,请参阅教程:创建 Amazon VPC 以用于数据库实例。 |
Connect failed because target host or object does not exist – Oracle,错误:ORA-12545 |
确保您指定了正确的服务器名称和端口号。对于 Server name (服务器名称),输入来自控制台的 DNS 名称。 有关查找数据库实例的 DNS 名称和端口号的信息,请参阅查找 Oracle 数据库实例的终端节点。 |
无效用户名称/密码;登录失败 – Oracle, 错误: ORA-01017 |
您可以访问数据库实例,但连接已被拒绝。这通常是提供的用户名或密码不正确导致的。请验证用户名和密码,然后重试。 |
TNS:listener 目前不知道连接描述符中给出的 SID – 错误: ORA-12505 |
确保输入了正确的 SID。SID 与您的数据库名称相同。在数据库页面的配置选项卡中找到您实例的数据库名称。您还可以使用 Amazon CLI: aws rds describe-db-instances --query 'DBInstances[*].[DBInstanceIdentifier,DBName]' --output text 查找数据库名称 |
有关连接问题的更多信息,请参阅无法连接到 Amazon RDS 数据库实例。
使用 sqlnet.ora 参数修改连接属性
sqlnet.ora 文件包括在 Oracle 数据库服务器和客户端上配置 Oracle Net 功能的参数。使用 sqlnet.ora 文件中的参数,您可以修改传入和传出数据库的连接的属性。
有关可能需要设置 sqlnet.ora 参数的原因的更多信息,请参阅 Oracle 文档中的对配置文件参数进行配置
设置 sqlnet.ora 参数
Amazon RDS for Oracle 参数组包含一个 sqlnet.ora 参数子集。您可以使用与设置其他 Oracle 参数相同的方法来设置它们。sqlnetora.
前缀标识哪些参数是 sqlnet.ora 参数。例如,在 Amazon RDS 的 Oracle 参数组中,default_sdu_size
sqlnet.ora 参数为 sqlnetora.default_sdu_size
。
有关管理参数组和设置参数值的信息,请参阅 使用参数组。
支持的 sqlnet.ora 参数
Amazon RDS 支持以下 sqlnet.ora 参数。对动态 sqlnet.ora 参数的更改立即生效。
参数 | 有效值 | 静态/动态 | 描述 |
---|---|---|---|
|
Oracle 12c – |
动态 |
会话数据单位 (SDU) 大小 (字节)。 SDU 是一次性放入缓冲区并通过网络发送的数据量。 |
|
|
动态 |
一个值,用于启用或禁用自动诊断存储库 (ADR) 跟踪。
|
|
|
动态 |
用于会话接收操作的缓冲区空间限制,支持 TCP/IP、使用 SSL 的 TCP/IP 以及 SDP 协议。 |
|
|
动态 |
用于会话发送操作的缓冲区空间限制,支持 TCP/IP、使用 SSL 的 TCP/IP 以及 SDP 协议。 |
|
|
动态 |
客户端和充当客户端的服务器与 Oracle 数据库实例建立连接所允许的最低身份验证协议版本。 |
|
|
动态 |
与 Oracle 数据库实例建立连接所允许的最低身份验证协议版本。 |
|
|
动态 |
发送检查以验证客户端/服务器连接是否活动的时间间隔,以分钟为单位。 |
|
|
动态 |
客户端连接到数据库服务器并提供所需身份验证信息的时间,以秒为单位。 |
|
|
动态 |
客户端建立与数据库实例的 Oracle Net 连接的时间,以秒为单位。 |
|
|
动态 |
数据库服务器在建立连接之后等待客户端数据的时间,以秒为单位。 |
|
|
动态 |
数据库服务器在建立连接之后,完成对客户端的发送操作的时间,以秒为单位。 |
|
|
动态 |
客户端建立与数据库服务器的 TCP 连接的时间,以秒为单位。 |
|
|
动态 |
对于非 ADR 跟踪,在指定级别启用服务器跟踪或禁用服务器跟踪。 |
每个支持的 sqlnet.ora 参数的默认值是该版本的 Oracle 默认值。有关 Oracle Database 12c 默认值的信息,请参阅 Oracle Database 12c 文档中的 sqlnet.ora 文件的参数
查看 sqlnet.ora 参数
您可以使用 Amazon Web Services Management Console、Amazon CLI 或 SQL 客户端查看 sqlnet.ora 参数及其设置。
使用控制台查看 sqlnet.ora 参数
有关查看参数组中参数的信息,请参阅使用参数组。
在 Oracle 参数组中,sqlnetora.
前缀标识哪些参数是 sqlnet.ora 参数。
使用 Amazon CLI 查看 sqlnet.ora 参数
要查看在 Oracle 参数组中配置的 sqlnet.ora 参数,请使用 Amazon CLI describe-db-parameters 命令。
要查看 Oracle 数据库实例的所有 sqlnet.ora 参数,请调用 Amazon CLI download-db-log-file-portion 命令。指定数据库实例标识符、日志文件名和输出的类型。
例
以下代码列出 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 参数
在 SQL 客户端中连接到 Oracle 数据库实例之后,以下查询列出 sqlnet.ora 参数。
SELECT * FROM TABLE (rdsadmin.rds_file_util.read_text_file( p_directory => 'BDUMP', p_filename => 'sqlnet-parameters'));
有关在 SQL 客户端中连接到 Oracle 数据库实例的信息,请参阅连接到 Oracle 数据库实例。