【问题标题】:launch a query from command prompt从命令提示符启动查询
【发布时间】:2018-08-02 10:21:03
【问题描述】:

我在 Win 7 的桌面上安装了一个 Oracle 12c 实例。 我正在尝试从 COMMAND PROMPT 启动一个简单的 SELECT 语句,我希望收到结果。

我使用的代码是:

@ECHO OFF

ECHO *****************************

ECHO     Database Login

ECHO *****************************

@echo select 44 from dual | sqlplus username/password@SID

pause

当我执行这一行时,cmd被打开并停留在这个屏幕上

因为它试图连接到 Oracle。

过了一会儿,它显示了下面的错误。

我正在尝试使用相同的凭据从 sqlplus 进行连接,并且一切正常。 我正在尝试从命令提示符启动 sqlplus,提供用户名和密码,它工作正常。

当我从 .bat 文件启动代码时出现问题。

【问题讨论】:

  • 听起来你的 bat 文件没有继承整个环境,或者正在设置一些覆盖环境的东西,也许。顺便说一句,如果您将其更改为sqlplus -l,那么它将在第一个错误后退出,并且不会尝试使用select ... 文本作为登录凭据,这就是导致第二个SP2 错误的原因。 (稍后您可能还想添加 -s 来抑制横幅,但仅在其余部分正常工作时。)
  • 另外,您在谈到手动运行 SQL*Plus 时只提到了用户名和密码;您是否使用完全相同的命令和相同的连接字符串,尤其是(相同的)@SID 部分?
  • 是的,我使用的是相同的连接字符串
  • 那你好像是捡了个不一样的,或者找不到.bat,tnsnames.ora文件。 SID 是它在该文件中查找的 TNS 别名。也许您有多个文件,并且根据您尝试连接的位置(例如当前工作目录中的副本)选择不同的版本?
  • 使用剪切和粘贴将控制台窗口的内容复制到您的问题中。不要使用图片。

标签: windows oracle cmd sqlplus


【解决方案1】:

我看不到图像,但是 - 你不是缺少命令终止符吗?

                             | THIS!
                             v
M:\>@echo select 44 from dual; | sqlplus scott/tiger@kc11g

SQL*Plus: Release 11.2.0.1.0 Production on ╚et Kol 2 12:23:55 2018

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL>
        44
----------
        44

SQL> Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

M:\>

[编辑:ORA-12154]

您尝试连接的数据库似乎在 TNSNAMES.ORA 文件中不存在。看看当我连接到“kc11gxxx”时会发生什么 - ORA-12154,就像你一样:

M:\>@echo select 44 from dual; | sqlplus scott/tiger@kc11gxxx

SQL*Plus: Release 11.2.0.1.0 Production on ╚et Kol 2 12:36:23 2018

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

ERROR:
ORA-12154: TNS:could not resolve the connect identifier specified

因此,将其添加到 TNSNAMES.ORA。

【讨论】:

  • 它不是来自分号(;)。我收到错误:ORA-12154:TNS:无法解析指定的连接标识符。
  • 我用另一个例子编辑了我的消息;看看吧。
  • 数据库在TNSNAMES.ORA中定义
  • 但是,那个 TNSNAMES.ORA 正在使用吗?如果您的计算机上有多个 Oracle 软件安装,则每个都包含自己的副本。你能证实吗?如果是这种情况,请考虑使用 TNS_ADMIN 环境变量,它指向包含您维护的 TNSNAMES.ORA 的目录,并将所有数据库放在那里。那么就不需要其他 TNSNAMES.ORA 文件了。此外,运行(在操作系统命令提示符下)`ping that_database_name' 的结果是什么?
猜你喜欢
  • 2013-09-22
  • 1970-01-01
  • 2013-07-12
  • 1970-01-01
  • 1970-01-01
  • 2015-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多