2014-09-23 69 views
0

基本上我試圖通過命令行獲得'DESC HR.EMPLOYEES'的輸出。消除從命令行執行的sqlplus查詢中的不需要的消息

我創建了一個名爲「file.sql」

DESC hr.employees; 
exit; 

然後我在UNIX命令行中執行此文件:

sqlplus username/password @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

好的我用sqlplus的-s選項。並消除了大部分不需要的消息。但我仍然得到 錯誤: ORA-28002:密碼將在7天內過期 – Nikhil 2014-09-23 06:39:28

+0

請勿在註釋中添加其他信息。相反,你應該*編輯你的問題*,使其更好,更清晰。 – APC 2014-09-23 07:56:26

+0

類似的問題在這裏http://stackoverflow.com/questions/1095871/how-do-i-turn-off-oracle-password-expiration – 2014-09-23 07:59:30

回答

1

您確實需要更改密碼,但如果您有一個場景需要在此期間能夠運行特定腳本,則可以隱藏該消息;但您必須將憑據移入文件。 (無論如何,在命令行上提供它們都是不安全的)。所以file.sql將成爲:

set termout off 
connect username/password 
set termout on 

desc hr.employees; 
exit; 

而且你運行它:

sqlplus -s /nolog @file 

/nolog意味着它不會自動嘗試連接,而當它從腳本輸出中這樣做從連接命令被隱藏。

當然,這會隱藏任何其他與帳戶或數據庫可用性有關的消息,這會使得理解失敗很難;而且你可能真的很想知道這個等待期限,所以你可以更改密碼 - 否則你會在一週後來運行這個賬戶,並且發現這個賬戶實際上已經過期,這是你不能修復的問題。 (因爲你的例子是從15日開始的,你的帳戶可能已經過期,或者重置了密碼)。

此問題的另一個小問題是,您的login.sqlglogin.sql中的任何SQL命令都會顯示SP2-0640錯誤,因爲它們會在您連接之前嘗試運行。

僅僅因爲有些事情可能並不意味着這是一個好主意,潛在的問題幾乎肯定會超過任何優勢。所以,當你看到警告時,請更改密碼。

1

此錯誤消息......

ORA-28002: the password will expire within 7 days 

...說話是算數的。該帳戶的密碼設置爲過期,並且該用戶將無法在下週內登錄。

你想擺脫消息?簡單:更改密碼。

如果由於某種原因(我不知道您是如何使用該帳戶的)不希望出現這種解決方案,則需要說服DBA將其展開。這可能不那麼簡單。

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; 

你應該不會再得到消息。

+0

這個解決方案可能適用,也可能不適用,這取決於組織的安全策略。 – APC 2014-09-23 07:57:50

+0

同意。 OP可以根據進一步的信息即時提供答案。 – 2014-09-23 07:58:56

相關問題