SQLPlus连接Oracle数据库技巧

准备工作

  1. 安装Oracle客户端

    • 官方客户端选择

      • 完整客户端:适用于长期使用(官网下载)
      • Instant Client:轻量级方案(推荐基础包+SQL*Plus)
    • 安装步骤(以Instant Client为例):

      # 解压安装包
      unzip instantclient-basic-linux.x64-19.13.0.0.0dbru.zip -d /opt/oracle/
      unzip instantclient-sqlplus-linux.x64-19.13.0.0.0dbru.zip -d /opt/oracle/
      # 配置环境变量
      echo 'export ORACLE_HOME=/opt/oracle/instantclient_19_13' >> ~/.bashrc
      echo 'export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH' >> ~/.bashrc
      echo 'export PATH=$ORACLE_HOME:$PATH' >> ~/.bashrc
      source ~/.bashrc
  2. 配置网络文件

    • 创建 tnsnames.ora(路径:$ORACLE_HOME/network/admin/):
      ORCL =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = oracle_server_ip)(PORT = 1521))
          (CONNECT_DATA =
            (SERVER = DEDICATED)
            (SERVICE_NAME = ORCL)
          )
        )

连接方式详解

*方法1:SQLPlus命令行**

sqlplus username/password@ORCL```
#### **方法2:Python脚本(cx_Oracle)**
1. 安装驱动:
   ```bash
   pip install cx_Oracle
  1. Python连接代码:
    import cx_Oracle
    dsn = cx_Oracle.makedsn("oracle_server_ip", 1521, service_name="ORCL")
    conn = cx_Oracle.connect(user="scott", password="tiger", dsn=dsn)
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM emp")
    print(cursor.fetchall())
    conn.close()

方法3:JDBC连接(Java应用)

  1. 下载JDBC驱动:ojdbc8.jar
  2. Java示例:
    import java.sql.*;
    public class OracleConn {
      public static void main(String[] args) {
        String url = "jdbc:oracle:thin:@//oracle_server_ip:1521/ORCL";
        try (Connection conn = DriverManager.getConnection(url, "scott", "tiger")) {
          System.out.println("Connected to Oracle!");
        } catch (SQLException e) { e.printStackTrace(); }
      }
    }

故障排查与优化

  1. 常见错误解决

    • TNS-12541: No listener
      检查Oracle服务器监听状态:lsnrctl status
    • ORA-12170: TNS Connect timeout
      确认防火墙放行1521端口:sudo ufw allow 1521/tcp
    • 库文件缺失
      安装依赖:sudo apt-get install libaio1(Debian/Ubuntu)
  2. 性能优化建议

    • 启用连接池(如Oracle UCP或第三方工具)
    • 使用tnsping ORCL测试网络延迟
    • 定期清理INACTIVE会话

安全注意事项

  1. 敏感信息保护
    • 避免在脚本中硬编码密码(使用环境变量或密钥管理工具)
    • 配置文件权限:chmod 600 tnsnames.ora
  2. 加密连接
    • 强制使用TCPS协议
    • 配置Oracle Native Network Encryption

通过上述步骤,您可高效安全地在Linux环境中连接Oracle数据库,建议结合具体场景选择连接方式,并定期更新客户端版本以获取安全补丁,对于生产环境,务必遵循最小权限原则和审计要求。

引用说明

  • Oracle Instant Client 官方文档:Oracle Help Center
  • cx_Oracle 使用指南:GitHub – oracle/python-cx_Oracle
  • JDBC 配置参考:Oracle JDBC Developer’s Guide 基于Oracle 19c及Linux主流发行版验证,适用于CentOS 7+/Ubuntu 20.04+环境。*

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/7004.html

(0)
酷番叔酷番叔
上一篇 2025年7月12日 01:24
下一篇 2025年7月12日 01:35

相关推荐

  • 文件权限设置错误有多危险?

    在Linux系统中,文件权限是安全管理的核心机制,通过命令行(模式)更改权限可精确控制用户对文件/目录的访问,以下是详细操作指南:权限基础概念Linux为每个文件分配三类用户的权限:所有者(Owner):文件创建者所属组(Group):共享权限的用户组其他用户(Others):系统所有其他用户权限类型:读(r……

    2025年7月15日
    14300
  • Linux中如何通过命令修改文件名?

    在Linux系统中,修改文件名是日常操作中常见的需求,无论是单个文件的重命名、批量文件名的格式调整,还是基于特定规则的文件名替换,都可以通过命令行工具高效完成,本文将详细介绍Linux环境下修改文件名的核心命令、使用方法及实用技巧,帮助用户灵活应对各种文件名管理场景,基础重命名命令:mvmv(move)是Lin……

    2025年9月24日
    12100
  • Linux如何安全删除文件夹?

    命令行删除(推荐方法)Linux通过终端命令高效管理文件,主要使用 rm 和 rmdir 命令,使用 rm 命令(删除非空文件夹)rm(remove)是删除文件和文件夹的核心工具,配合参数可处理嵌套内容:rm -r 文件夹名称-r(或 –recursive):递归删除文件夹及其内部所有子文件和子目录,-f(强……

    2025年7月18日
    17600
  • linux如何释放显存

    Linux中,可以使用nvidia-smi命令查看显存使用情况,通过杀死

    2025年8月15日
    15200
  • Linux内存使用异常如何速查?

    free 命令(最常用)作用:快速查看物理内存、交换空间(Swap)和内核缓冲区的使用情况,常用参数:-h(人性化显示单位):free -h-s [秒](定时刷新):free -h -s 5(每5秒刷新)输出解析: total used free shared buff/cache availableMem……

    2025年7月19日
    15600

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信