连接数据库
连接到 VM 后,您可以连接到数据基础结构中的数据库,也可以使用 Oracle Net Services 远程连接到数据库。
在连接到数据库之前,如果需要操作系统访问,请使用 SSH 连接到 VM。需要从客户机进行远程数据库访问时,请使用 Oracle Net Services。
连接到 VM 后连接到数据库
连接到 VM 后,可以使用操作系统命令来标识数据库并连接到它。
-
以
opc用户身份连接到 VM。有关详细步骤,请参见 Connect to a VM with SSH 。
-
切换到
oracle用户。sudo su - oracle -
使用 Oracle Grid Infrastructure 主目录下的
srvctl实用程序列出 VM 集群中的数据库。grid-home/bin/srvctl config database -v -
确定要访问的数据库的数据库实例。
grid-home/bin/srvctl status database -d <dbname> -
为要访问的数据库配置环境设置。
. oraenv在提示符下,输入数据库的 Oracle 系统标识符 (System Identifier,SID)。
ORACLE_SID = [oracle] ? <dbname> -
将
ORACLE_SID环境变量设置为要访问的数据库实例。export ORACLE_SID=<dbname1> -
(可选)使用
srvctl命令显示有关数据库的更多详细信息。srvctl config database -d <dbname> -
使用 SQL*Plus 身份连接到数据库。
sqlplus / as sysdba
使用 Oracle Net Services 连接到数据库
您可以使用 Oracle Net Services 远程连接到 Data Infrastructure 中的数据库。
由于 Data Infrastructure 使用 Oracle Grid Infrastructure,因此您可以使用单客户机访问名称 (SCAN) 连接创建 Oracle Net Services 连接。SCAN 提供了一种一致的机制,供客户机访问在 VM 集群中运行的数据库实例。
默认情况下,SCAN 与三个虚拟 IP 地址 (virtual IP address,VIP) 关联。每个 SCAN VIP 与一个 SCAN 监听程序关联,该监听程序为使用 Oracle Net Services 的数据库连接提供连接端点。为了充分提高可用性,Oracle Grid Infrastructure 将 SCAN VIP 和 SCAN 监听程序分发到可用的 VM 集群节点中。如果节点关闭或失败,则 SCAN VIP 和 SCAN 监听程序将自动迁移到可用节点。
通过使用 SCAN 连接,Oracle AI Database 客户端拥有一组可靠的连接端点,可以为 VM 集群中运行的数据库提供服务。
SCAN 监听程序是 VM 集群中每个节点上运行的 Oracle Net 监听程序的补充,也称为节点监听程序。当 Oracle Net Services 连接通过 SCAN 连接时,SCAN 侦听器将连接路由到其中一个节点侦听器,并且在连接中不再起任何作用。包括监听程序可用性、数据库实例放置和工作量分布在内的多种因素组合决定了哪个节点监听程序接收每个连接。
本文档提供了使用 Oracle Net Services 连接到数据基础设施中数据库的基本要求。
使用 Oracle Net Services 连接到数据库的先决条件
- SCAN VIP 的 IP 地址,或托管要访问的数据库的 VM 的主机名或 IP 地址。
- 数据库标识符,即数据库系统标识符 (SID) 或服务名称。
使用 SCAN 连接到数据库
要使用 SCAN 监听程序创建 Oracle Net Services 连接,可以在以下方法之间进行选择:
- 定义引用所有 SCAN VIP 的连接描述符。
- 定义引用定制 SCAN 名称的连接描述符。
使用引用所有 SCAN VIP 的连接描述符连接到数据库
可以使用多个 SCAN 监听程序设置连接描述符。
此方法要求您提供所有 SCAN VIP 地址,并允许 Oracle Net Services 连接到可用的 SCAN 监听程序。
-
使用以下模板定义 Net Services 别名:
<alias-name> = (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=<SCAN-VIP-1>)(PORT=1521)) (ADDRESS=(PROTOCOL=tcp)(HOST=<SCAN-VIP-2>)(PORT=1521)) (ADDRESS=(PROTOCOL=tcp)(HOST=<SCAN-VIP-3>)(PORT=1521))) (CONNECT_DATA=(<sid-or-service-entry>)))其中:
<alias-name>是用于标识别名的名称。<SCAN-VIP-1>、<SCAN-VIP-2>和<SCAN-VIP-3>是 SCAN VIP 的 IP 地址。<sid-or-service-entry>使用以下格式之一标识数据库 SID 或服务名称:SID=sid-name. 例如:SID=DBNAME1。SERVICE_NAME=service-name. 例如:SERVICE_NAME=pdb1.example.com。
默认情况下,Oracle Net Services 会随机选择地址列表中的一个地址,以在 SCAN 监听程序之间平衡负载。
使用引用定制 SCAN 名称的连接描述符连接到数据库
可以使用定制 SCAN 名称设置连接描述符。
使用此方法,可以在域名服务器 (Domain Name Server,DNS) 中定义定制 SCAN 名称。定制 SCAN 名称解析为三个 SCAN VIP 地址。
-
使用以下模板定义引用自定义 SCAN 名称的 Net Services 别名:
<alias-name> = (DESCRIPTION= (ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=<scan-name>)(PORT=1521))) (CONNECT_DATA=(<sid-or-service-entry>)))其中:
<alias-name>是用于标识别名的名称。<scan-name>是定制 SCAN 名称。<sid-or-service-entry>使用以下格式之一标识数据库 SID 或服务名称:SID=sid-name. 例如:SID=DBNAME1。SERVICE_NAME=service-name. 例如:SERVICE_NAME=pdb1.example.com。
-
或者,使用“轻松连接”方法以以下格式指定连接描述符:
<scan-name>:1521/<sid-or-service-entry>例如:
dbscan.example.com:1521/DBNAME1或:
dbscan.example.com:1521/pdb1.example.com
使用节点监听程序连接到数据库
要使用绕过 SCAN 监听程序的连接描述符连接到数据库,请将连接直接路由到节点监听程序。
通过使用此方法,您将放弃 SCAN 提供的高可用性和负载平衡。但是,当您要将连接定向到特定节点或网络接口时,此方法可能很有用。
-
使用以下模板定义直接引用节点的 Net Services 别名:
<alias-name> = (DESCRIPTION= (CONNECT_TIMEOUT=<timeout>) (ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=<node>)(PORT=1521))) (CONNECT_DATA=(<sid-or-service-entry>)))其中:
<alias-name>是用于标识别名的名称。<timeout>指定一个超时时段(以秒为单位),使您能够在不等待 TCP 超时的情况下终止连接尝试。(CONNECT_TIMEOUT=timeout)参数是可选的。<node>是要使用的 VM 的主机名或 IP 地址。<sid-or-service-entry>使用以下格式之一标识数据库 SID 或服务名称:SID=sid-name. 例如:SID=DBNAME1。SERVICE_NAME=service-name. 例如:SERVICE_NAME=pdb1.example.com。
-
或者,使用“轻松连接”方法以以下格式指定连接描述符:
<node>:1521/<sid-or-service-entry>例如:
node01.example.com:1521/DBNAME1或:
node01.example.com:1521/pdb1.example.com