基本上,我试图通过命令行获得“DESC HR.EMPLOYEES”的输出。
我创建了一个名为“file.sql”的文件
DESC hr.employees;
exit;
然后在unix命令行中执行以下命令:
sqlplus用户名/密码@file.sql
我的输出看起来像这样,但是我想删除所有额外的消息,只想看到相关的查询结果。有什么办法可以做到这一点吗?基本上是某种方式来做一个沉默的登录/注销。
SQL*Plus: Release 12.1.0.1.0 Production on Mon Sep 15 19:04:53 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
ERROR:
ORA-28002: the password will expire within 7 days
Last Successful login time: Mon Sep 15 2014 19:04:06 -04:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
Name Null? Type
----------------------------------------- -------- ----------------------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
我在sqlplus中使用了-s选项,这消除了大多数不需要的消息,但仍然得到ERROR: ORA-28002: the password will expire within 7 days
4条答案
按热度按时间xzabzqsa1#
您确实需要更改密码,但是如果您需要能够同时运行特定脚本,则可以隐藏该消息;但是你必须把凭证移到文件中(在命令行提供凭证是不安全的),所以
file.sql
会变成:你可以这样运行:
/nolog
意味着它不会自动尝试连接,并且当它从脚本中尝试连接时,connection命令的输出是隐藏的。当然,这将隐藏与帐户或数据库可用性相关的任何其他消息,这将使理解故障变得困难;而且你可能真的希望被告知即将到期,这样你就可以更改密码-否则你会在一周后运行这个程序,发现帐户实际上已经到期,这不是你自己可以修复的。(因为你的例子是从15日开始的,你的帐户可能已经到期,或者密码已经重置,当然)。
另一个小问题是,
login.sql
或glogin.sql
中的任何SQL命令都将显示SP2-0640错误,因为它们将尝试在您连接之前运行。仅仅因为某件事是可能的并不意味着它是一个好主意,而且潜在的问题几乎肯定会超过任何好处。所以,当你看到警告时,真的要修改密码。
mmvthczy2#
此错误消息...
......就是它所说的那样。该帐户的密码已设置为过期,该用户将无法在下周内登录。
你想摆脱这条信息?很简单:更改密码。
如果出于某种原因(我不知道您是如何使用该帐户的)不希望使用该解决方案,您将需要说服DBA使其恢复有效期,但这可能不那么简单。
e1xvtsh33#
如果你想摆脱
PASSWORD EXPIRY
消息,那么你可以设置PASSWORD_LIFE_TIME
限制为unlimited。对于您的配置文件,请执行:
你不应该再收到那条信息了。
pkbketx94#
添加-S标志对我很有效。