You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从SSH实例访问Oracle Cloud Infrastructure中的自治数据库?

如何从SSH实例访问OCI自治数据库

我来一步步帮你解决这个问题,毕竟从SSH实例连自治DB需要兼顾网络、用户权限和客户端配置这几个关键点:

1. 先确保SSH实例和自治数据库能连通

首先得排除网络层面的问题,这是连接的基础:

  • 检查你的SSH实例和两个自治DB(DB#1数据仓库、DB#2事务处理)的网络配置:如果是内网访问,要确保它们在同一个VCN或者通过VCN peering打通;如果是公网访问,要确认自治DB开启了公网访问,且SSH实例的公网IP被加入了自治DB的访问控制列表。
    操作方式:登录OCI控制台,找到目标自治数据库,进入「连接」页面,在「访问控制」里添加SSH实例的IP地址/IP段。
  • 在SSH实例上测试端口连通性,用telnet或者nc命令:
    telnet <你的自治DB主机名> 1521
    # 或者用nc
    nc -zv <你的自治DB主机名> 1521
    
    如果连接失败,去检查VCN的安全列表和网络ACL,确保允许SSH实例所在的子网访问1521端口。

2. 在自治数据库中创建并授权abc用户

既然abc不在数据库用户列表里,得先通过有权限的账号(比如默认的ADMIN用户)创建这个用户并赋予必要权限:

  • 用你能连接的工具(本地SQL Developer或者OCI Cloud Shell)登录自治DB,执行SQL创建用户:
    CREATE USER abc IDENTIFIED BY "你的复杂密码";
    
    密码要符合OCI的要求:至少12位,包含大小写字母、数字和特殊字符。
  • 给用户分配对应数据库的角色:
    -- 给DB#1(数据仓库)分配数据仓库角色
    GRANT DWROLE, CREATE SESSION TO abc;
    -- 给DB#2(事务处理)分配事务处理角色
    GRANT TPROLE, CREATE SESSION TO abc;
    
    如果需要更细粒度的权限,可以单独授予SELECT、INSERT等权限到具体表。

3. 在SSH实例上配置Oracle客户端

SSH实例上得有Oracle客户端才能连接数据库,推荐用轻量的Instant Client:

  • 安装Instant Client(以Linux为例):
    可以直接下载对应版本的Instant Client包,解压到某个目录(比如/home/abc/instantclient),然后配置环境变量,编辑~/.bashrc添加:
    export ORACLE_HOME=/home/abc/instantclient
    export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH
    export PATH=$ORACLE_HOME:$PATH
    
    执行source ~/.bashrc让环境变量生效。
  • 上传并配置Wallet凭据:
    从OCI控制台的自治DB「连接」页面下载Wallet压缩包,上传到SSH实例的某个目录(比如/home/abc/wallet),解压后设置TNS_ADMIN环境变量指向这个目录:
    export TNS_ADMIN=/home/abc/wallet
    
    这样客户端就能找到tnsnames.ora里的连接别名了。

4. 测试连接

最后用abc用户测试连接:

# 比如连接DB#1的高可用实例
sqlplus abc/你的密码@db1_high
# 或者连接DB#2的中等性能实例
sqlplus abc/你的密码@db2_medium

如果能成功登录,就说明配置没问题啦。如果还是报错,根据错误码排查:比如ORA-12541是网络不通,ORA-01017是用户名密码错误,ORA-01031是权限不足。

内容的提问来源于stack exchange,提问作者mia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 09:57:41