【问题标题】:Oracle databse connectvity via shell通过 shell 连接 Oracle 数据库
【发布时间】:2019-04-05 13:08:42
【问题描述】:

编写连接到 oracle 数据库、运行查询并在屏幕上显示输出的 shell 脚本的先决条件是什么

【问题讨论】:

  • 欢迎来到 Stack Overflow。 You can use SQL*Plus to do this。祝你好运。
  • @BobJarvis 就是这样,我已经在 stackoverflow 上找到了。没有其他要求,驱动程序,库?没有完整的清单可以建议如何去做。

标签: bash oracle shell unix


【解决方案1】:

首先,确保您在安装了合适客户端的机器上工作。正如 Bob 所评论的,SQLPlus 是 Oracle 的命令行客户端。它与数据库一起安装,但如果您在不同的机器上工作,您可能需要在本地安装客户端。

一旦你有可用的,你只需要设置环境变量并从那里开始工作。

例如,给定

export ORA_BASE=/db/oracle
export ORA_HOME=$ORA_BASE/product/12.1.0.2/db_1
export ORACLE_SID=$dbName

PATH=$PATH:$ORACLE_HOME/bin

并假设默认测试数据库已安装为 $dbName,

echo "select * from dual;" | 
  sqlplus scott/tiger@//${dbHost:=$HOSTNAME}:${port:=1521}/$ORACLE_SID

我在 Ansible 中确认我在开发安装中具有连接性,如下所示:

export ORACLE_BASE='{{ ORA_BASE }}'
export ORACLE_HOME='{{ ORA_HOME }}'
export ORACLE_SID='{{ SID }}'
PATH=$PATH:$ORACLE_HOME/bin

echo "Testing remote access to $HOSTNAME/$SID via sqlplus"

echo "select * from dual;" | sqlplus scott/tiger@//$HOSTNAME:1521/$ORACLE_SID

【讨论】:

    【解决方案2】:

    假设您的 PLSQL script.sql 包含查询和格式。假设路径中的sqlplus 和所有Oracle 环境变量都是正确的。

    正确的模式是:

    echo exit | sqlplus scott/tiger@//$HOSTNAME:1521/$ORACLE_SID @script.sql
    

    说明:

    echo exit 在脚本终止时向sqlplus 发送退出命令。将提示返回到 shell。

    sqlplus 调用 Oracle 脚本外壳/实用程序。

    scott/tiger@//$HOSTNAME:1521/$ORACLE_SID sqlplus 连接字符串到用户 scott 和密码 tiger 到服务器中的数据库 $HOSTNAME 端口 1521 和 SID $ORACLE_SID

    @script.sql调用存储在文件script.sql中的PLSQL脚本

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-21
      • 2018-06-20
      • 1970-01-01
      • 2015-01-08
      • 2020-01-07
      • 1970-01-01
      • 1970-01-01
      • 2011-09-01
      相关资源
      最近更新 更多