2014-09-23 4 views
0

기본적으로 명령 줄을 통해 'DESC HR.EMPLOYEES'의 출력을 얻으려고합니다.명령 줄에서 실행 된 sqlplus 쿼리에서 원하지 않는 메시지 제거

내 출력은 다음과 같습니다

sqlplus username/password @file.sql

그러나 나는 모든 제거하려면 :

나는 'file.sql'

DESC hr.employees; 
exit; 

가 그럼 난 유닉스 명령 행에서이 작업을 실행라는 파일을 만들었습니다 여분의 메시지 및 관련 검색어 결과 만보고 싶습니다. 어떤 방법이든 가능합니까? 기본적으로 침묵 로그인/로그 오프를 할 수 있습니다.

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

+0

주석에 추가 정보를 넣지 마십시오. 대신 질문 *을 수정하여 더 명확하고 명확하게 만들어야합니다. – APC

+0

비슷한 질문이 있습니다. http://stackoverflow.com/questions/1095871/how-do-i-turn-off-oracle-password-expiration –

답변

1

분명히 암호를 변경해야하지만, 그 동안에 특정 스크립트를 실행할 수 있어야하는 시나리오가있는 경우 해당 메시지를 숨길 수 있습니다. 자격 증명을 파일로 옮겨야합니다. (명령 행에서 그것들을 제공하는 것은 어쨌든 안전하지 못하다).

set termout off 
connect username/password 
set termout on 

desc hr.employees; 
exit; 

그리고 당신은 그것을 실행하는 것 : 그래서 file.sql이 될 것

sqlplus -s /nolog @file 

/nolog가 자동으로 연결을 시도하지 않습니다 의미, 그리고 스크립트 출력 내에서 그렇게 할 때 연결 명령에서 숨겨집니다.

물론 이것은 계정 또는 데이터베이스 가용성과 관련된 다른 메시지를 숨기므로 오류를 쉽게 이해할 수 없습니다. 보류 만료에 대한 정보를 원한다면 비밀번호를 변경할 수 있습니다. 그렇지 않으면 일주일 후 이것을 실행하고 계정이 실제로 만료 된 것을 발견하게되며 이는 사용자가 스스로 해결할 수있는 것이 아닙니다. (예를 들어 15 일이 지나면 계정이 이미 만료되었거나 비밀번호가 재설정되었을 수 있습니다.

또 다른 작은 주름은 login.sql 또는 glogin.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

+0

동의. 답변은 OP의 추가 정보에 따라 즉석에서 처리 할 수 ​​있습니다. –