如何验证sqlplus可以连接?

2023-11-20

我想知道是否有可能获得sqlplus以某种方式输出以发现我的数据库是否已启动。

我想在数据库上运行脚本列表,但在执行此操作之前,我想知道数据库是否已启动并正在使用我的脚本运行。

这是我尝试过的:

 sqlplus /@DB1 << EOF
 > select 1 from dual;
 > EOF

无法连接,但sqlplus的返回码仍然显示“一切正常”!



SQL*Plus: Release 11.2.0.4.0 Production on Mon Nov 28 10:06:41 2016

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

ERROR:
ORA-12505: TNS:listener does not currently know of SID given in connect
descriptor


Enter user-name: SP2-0306: Invalid option.
Usage: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM}] [edition=value]]
where  ::= [/][@]
       ::= [][/][@]
Enter user-name: ju@srv:/tmp/jcho $ echo $?
0
  

我知道我可以 grep 测试查询的结果,如下所示:

a.sh

sqlplus /@DB1 << EOF
  select 'ALL_GOOD_BOY' from dual;
EOF

call:

gives 1如果连接有效,则线路,0否则:

$ a.sh |grep ALL_GOOD_BOY|wc -l

...这对我来说似乎有很多步骤。还有其他方法可以将 sqlplus 设置为“无法连接”给出“错误”返回代码的模式吗?


感谢@Kacper 提供的参考,我可以调整这个sqlplus /nolog就我而言;想法是这样的:

  1. open sqlplus仅在不连接的情况下
  2. 设置特定的返回代码SQLERROR- 这就是发生的情况connect fails
  3. 返回代码可以像往常一样在调用者脚本中收集:

a.sh

sqlplus /nolog << EOF
 WHENEVER SQLERROR EXIT 50
 WHENEVER OSERROR EXIT 66
 connect /@${MISTERY_DB}
 exit;
EOF

然后调用:

/ju $ export MISTERY_DB="eg_NON_EXISTING_DB"
/ju $ a.sh
SQL*Plus: Release 11.2.0.4.0 Production on Tue Nov 29 08:43:44 2016
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
SQL> SQL> SQL> ERROR:
  ORA-12154: TNS:could not resolve the connect identifier specified
/ju $ echo $?
50

还相关:在 shell 脚本中连接到 sqlplus 并运行 SQL 脚本

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何验证sqlplus可以连接? 的相关文章

  • 使用 awk 处理多个文件

    我必须使用 awk 处理大量 txt 文件 每个文件 1600 万行 我必须阅读例如十个文件 File 1 en sample 1 200 en n sample 2 10 en sample 3 10 File 2 en sample 1
  • 在 unix bash 脚本中可以嵌套 Here Document 吗?

    是否可以在另一个heredoc中编写一个heredoc ssh T q yxz server1 lt lt END TEXT ssh T q abc server2 lt lt SUB TEXT SUB TEXT END TEXT Yes
  • 在Unix下,判断执行该程序的用户是否是root?

    我正在编写一个 rake 脚本 并希望检测 如果可能的话 使用 Ruby 而不是 bash 执行 rake 脚本的用户是否具有 root 权限 如果它不是 root 那么我想终止脚本 Use uid http www ruby doc or
  • 如何找到 Oracle 视图的基础列和表名称?

    这听起来应该很简单 但事实并非如此 我找不到任何 Oracle 元数据 视图可以提供 Oracle 视图列的基础列和表名称 我发现这样做的唯一方法是解析视图源 SQL 这与精确的科学相去甚远 为了解释我想要什么 请考虑我在 SCOTT 模式
  • 当网站停止时,Oracle 数据提供程序会固定 IIS 工作进程

    我们在 Oracle 11g 第 2 版中遇到了一个严重的问题 其中 w3wp 进程接管了整个处理器核心 并且调试显示 Oracle 数据提供程序无限地抛出 ThreadAbortException 开发人员通过执行以下操作发现了此问题 1
  • 关于pl/sql存储程序文本的问题

    我使用 TOAD 进行 PL SQL 开发 在 TOAD 中 当我输入过程名称并按 f4 时 我可以看到该过程的源代码 我认为 TOAD 从 v sqltext 视图获取源代码 为了证实我的想法 我写了一个查询 select from v
  • 如何从 Unix 文件中删除空行

    我需要从输入文件中删除所有空白行并写入输出文件 这是我的数据如下 11216 33 1032747 64310 1 0 0 1 878 0 0 0 1 1 1 087 5 1 1 18 JAN 13 000603221321 11216 3
  • 如何同时正确使用管道和信号?

    我有 2 个孩子 我想将信号从孩子发送到父母 并将答案 随机数 为什么 为什么不 命名管道从父母发送到每个孩子 我有这个代码 include
  • 休眠可能会导致此“获取顺序错误”错误吗?

    我尝试使用 Hibernate Spring JPA 执行此查询 在 Oracle DB 中 Query value DELETE from MY TABLE where ID ID nativeQuery true void delete
  • Ansible - 当至少一项在循环中失败时跳过任务

    我正在使用 sqlplus 运行一些 SQL 脚本 在运行之前 我从该目录获取所有 sql 文件列表并将其存储在sql out如下所示 问题是 如果其中一个 sql 脚本失败 其余 sql 脚本仍然会执行 如果任何一个脚本失败 我想完全跳过
  • Oracle 中的函数与过程

    Oracle 中函数和过程的主要区别是什么 如果我可以用函数完成所有事情 为什么我必须使用过程 如果我无法在sql语句中调用过程 好吧 我会编写一个函数来完成相同的工作 过程不返回值 好的 在任何 dml 操作后我将仅返回 sql rowc
  • 数百个别名/同义词与数据库表的完全限定名称

    考虑到多个模式中的数百个数据库表 在创建存储过程和视图时 您是否建议使用别名 同义词或完全限定名称 给定一些 schema table 像这样 Orders OrderHeader Production LineThroughput Sal
  • Oracle存储过程使用数组作为表插入的参数

    我一直在寻找一个明显的例子 但没有运气 抱歉 如果已经回答了 我正在尝试做一些非常简单的事情 一个存储过程 它将获取输入并将它们插入到表中 我希望它获取多行数组并一次全部插入 我认为这很简单 但我还没有找到一个可以展示我的例子 在很多例子中
  • 递归 SQL 给出 ORA-01790

    使用 Oracle 11g 第 2 版 以下查询给出 ORA 01790 表达式必须与相应表达式具有相同的数据类型 with intervals time interval AS select trunc systimestamp from
  • 授予用户在查询时使用表索引的什么?

    我想知道当用户从表中查询数据并且该用户已被授予以下权限时 oracle 是否使用索引 grant select on table to user 我想知道是否需要其他拨款才能使用索引 不 没有要求 或能力 授予对索引的访问权限 如果用户可以
  • TOAD 将 &String 视为绑定变量

    我正在使用 Oracle Data Integrator 开发一些 ETL 有时会使用 TOAD 测试部分代码 今天我遇到了 TOAD 的问题 我有一行像 AND column value like DEV PROD 当我尝试运行包含上面过
  • 替换 Oracle 包的一部分

    我需要修改包内的一个过程 我需要接触声明和实施 由于我正在维护每次修改的补丁文件 因此我希望更改最小化 我可以仅使用更改的过程更新包 如果是 如何更新 还是需要提供完整的包定义和实现 您需要替换整个包规范和主体 您不能仅对包的一部分进行操作
  • 使用Powershell访问远程Oracle数据库

    我需要能够连接到我的网络上基于 Windows 7 的 Oracle 服务器 32 位 Oracle XE 我需要连接的机器运行 Windows 7 64 位 两台机器上都安装了 Powershell 我已在 64 位计算机上安装了 Ora
  • 如何在 Hibernate 中自动递增复合主键中的 Id?

    我有一个带有复合主键的表 groupId and batchId 实体类看起来像 Entity name EMPLOYEE public class Employee EmbeddedId private EmployeePK employ
  • 如何在Oracle中使用Timestamp_to_scn和Scn_to_timestamp?

    我的查询结果是这样的 select cast to date a start time mm dd yyyy hh mi ss pm as timestamp date of call ora rowscn from calling tab

随机推荐

  • 在 android studio 中不显示 styles.xml

    我在 Windows 中的 Android Studio 中创建了一个应用程序 现在我的资源文件有问题 style xml 它不显示 不存在 检查附图 XML 文件的图像我怎样才能显示它 Thanks android studio 提供的新
  • 如何为 PHP 生成的图像设置默认的“图像另存为”名称?

    我的网站中有一个页面 显示我的 PHP 生成的一些图像 当我右键单击图像并单击 将图像另存为 时 我得到用于生成图像的 php 文件的名称作为默认名称 例如 这是图像的 html img src picture generator php
  • 箭头和 Tab 键在 sbt 1.0.3 控制台中不起作用

    跑步时sbt控制台在 Scala 2 12 4 sbt 1 0 3 MacOS 10 13 1 中 箭头键输出类似 A 的代码 而不是检索最后一个命令 制表符输出制表符而不是自动竞争 如果我直接运行 Scala REPL 或运行sbt然后从
  • 如何在 Shiny 中显示没有工具栏的绘图?

    这个问题是一个延伸this问题 我正在 Shiny 中绘制一个相当大的 ggplot Using renderPlot width 1500 height 1000 我能够展示整个情节 但是 我现在右侧有一个滚动条 我想扩展 FluidRo
  • 在 Python 3 中打印不带 b' 前缀的字节

    我如何打印bytes字符串不带b Python 3 中的前缀 gt gt gt print b hello b hello Use decode gt gt gt print b hello decode hello
  • 如何在同一手机上打开 WhatsApp Business 应用程序中的 wa.me 链接而不是个人 WhatsApp?

    我们在 Angular 8 中有一个 Web 应用程序 我们有以下代码来显示一个按钮 用户可以单击该按钮通过 WhatsApp 向联系人发送预定义的消息 a target blank href https wa me internation
  • 在 CakePHP 3 中加载来自供应商的 javascript 文件

    我的问题是如何从 CakePHP 3 0 中的供应商文件夹加载 js 文件 我已经通过 Composer 包含了 twitter bootstrap js 文件位于 vendor twbs bootstrap sass assets jav
  • 无法写入二进制文件

    我有以下 C 代码 int arr 1 2 3 4 5 6 7 8 9 10 ofstream output Sample txt ios out ios binary for int i 0 i lt 10 i output lt
  • 找不到强大的模块 - Node.js

    我开始使用 node j 进行开发 我遇到了有关使用 formidable 模块的问题 我有这个错误 错误 找不到模块 强大 以下是使用 npm lsinstalled 安装的模块列表 email protected email prote
  • 从命令行进行 MySQL 备份和恢复

    我正在使用命令行来备份和恢复 MYSQL 数据库 让我们使用我有一个数据库 Data1 其中包含视图和过程 当在Cmd line I use mysqldump i e gt bin gt mysqldump u root proot Da
  • CSS“content”属性中的 HTML 特殊字符

    我正在尝试使用 CSS before content 字段在项目之前添加内容 我想插入一个复选标记 但如果我在内容选项中使用它 它会打印为文字 我如何告诉 CSS 使其成为复选标记 而不是文字字符串 尝试这个 target before c
  • 如果用户 = 系统,.NET 用户设置存储在哪里?

    我一直在使用更新来更新我的一个应用程序并使用Properties Settings Default Upgrade 并发现我的更新程序重新启动我的应用程序后 它在系统用户而不是默认 登录用户下运行 这让我想知道 SYSTEM 的 user
  • 如何在 Perl 中使用变量作为正则表达式修饰符?

    我正在编写一个抽象函数 它将询问用户一个给定的问题并根据给定的正则表达式验证答案 重复该问题 直到答案与验证正则表达式匹配 但是 我还希望客户端能够指定答案是否必须区分大小写 所以像这样 sub ask my prompt validati
  • 如何检查 CachedRowSet 中是否存在列名?

    我正在从可能发生变化的视图中查询数据 在执行操作之前我需要知道该列是否存在crs get 我发现我可以查询metadata像这样在我请求数据之前查看一列是否存在 ResultSetMetaData meta crs getMetaData
  • 使用预定义的自定义键顺序数组按键对数组进行排序

    a array 0 gt a 1 gt b 2 gt c 3 gt d 我想将顺序更改为3 2 0 1 a array 3 gt d 2 gt c 0 gt a 1 gt b 如果您想以编程方式更改顺序 请查看各种PHP 中的数组排序函数
  • C# XNA 鼠标位置

    我在 XNA 中的鼠标坐标遇到一些问题 0x0 任意靠近 但不在 屏幕的左上角 我现在正在窗口模式下运行游戏 但坐标是基于屏幕的 而不是游戏窗口的 尽管 XNA 文档告诉我应该是其他情况 提前致谢 这是代码 namespace TheGam
  • MATLAB 编辑器中可以进行多光标编辑吗?

    Is there a way to multiline edit code in matlab Instead of copy paste a single line repeatedly or copy paste from matlab
  • 用连字符分隔的大小写的名称是什么?

    这是帕斯卡命名法 SomeSymbol 这是驼峰式命名法 someSymbol 这是snake case some symbol 所以我的问题是是否有一个被广泛接受的名称 some symbol 它通常用于 url 中 这个案例约定并没有真
  • C++ 时间戳到人类可读的日期时间函数

    我有一个简单的函数 我需要从时间戳返回人类可读的日期时间 但不知何故 它以秒为单位返回相同的时间戳 输入1356953890 std string UT timeStampToHReadble long timestamp const ti
  • 如何验证sqlplus可以连接?

    我想知道是否有可能获得sqlplus以某种方式输出以发现我的数据库是否已启动 我想在数据库上运行脚本列表 但在执行此操作之前 我想知道数据库是否已启动并正在使用我的脚本运行 这是我尝试过的 sqlplus DB1 lt lt EOF gt