基本上我试图通过命令行获取'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
答案 0 :(得分:1)
此错误消息......
ORA-28002: the password will expire within 7 days
...意味着它所说的。帐户的密码设置为过期,该用户将无法在下周登录。
你想摆脱这条消息?简单:更改密码。
如果该解决方案因任何原因而不受欢迎(我不知道您如何使用该帐户),则需要说服DBA将其取消。这可能不那么简单。
答案 1 :(得分:1)
您显然需要更改密码,但如果您有一个场景,您需要在此期间运行特定脚本,则可以隐藏该消息;但您必须将凭据移动到文件中。 (无论如何,在命令行上提供它们是不安全的)。所以file.sql
会变成:
set termout off
connect username/password
set termout on
desc hr.employees;
exit;
然后你将其视为:
sqlplus -s /nolog @file
/nolog
表示它不会自动尝试连接,当它从脚本中执行此操作时,连接命令的输出将被隐藏。
当然,这会隐藏与帐户或数据库可用性相关的任何其他消息,这将使得难以理解失败;并且你可能真的想被告知即将到期,所以你可以更改密码 - 否则你将在一周之后运行它并发现该帐户实际上已过期,这不是你可以解决的问题你自己。 (由于您的示例是从15日开始,您的帐户可能已经过期,或者当然重置了密码)。
另一个小问题是,login.sql
或glogin.sql
中的任何SQL命令都会显示SP2-0640错误,因为它们会在您连接之前尝试运行。
仅仅因为某些事情是可能的并不意味着它是一个好主意,潜在的问题几乎肯定超过任何优势。所以,当你看到警告时,请更改密码。
答案 2 :(得分:0)
如果您要删除PASSWORD EXPIRY
消息,则可以将PASSWORD_LIFE_TIME
限制设置为无限制。请按照以下步骤操作:
SQL> SELECT PROFILE FROM DBA_USERS WHERE USERNAME='SCOTT'
2 /
PROFILE
------------------------------
DEFAULT
SQL>
SQL> SELECT RESOURCE_NAME,
2 LIMIT
3 FROM DBA_PROFILES
4 WHERE PROFILE ='DEFAULT'
5 AND RESOURCE_NAME='PASSWORD_LIFE_TIME'
6 /
RESOURCE_NAME LIMIT
------------------------------ ------------------------------
PASSWORD_LIFE_TIME 180
对于您的个人资料,请执行:
alter profile <profile_name> limit password_life_time UNLIMITED;
你不应该再收到消息。