最後我找到了解決我的問題。以下是每個人信息的要點:
1)期滿寬限期是否超過期限?
答:是的,它超過了以上。
2)當用戶處於寬限期時,用戶可以使用查詢「ALTER USER XYZ IDENTIFIED BY SOMEPWD」更改他/她的密碼,或者他仍然需要聯繫DBA。
答:沒有用戶不能運行此查詢,因爲它首先需要連接到數據庫。使用過期的密碼不能連接。
3)如何在c#客戶端中處理oracle警告ORA-28002(當用戶處於寬限期時)。它是否會傳遞給C#客戶端。它仍會作爲異常處理(try-catch)。
回答:ORA-28002錯誤可以在C#客戶端中作爲OracleClientInfoMessage處理。這裏是示例代碼。
try
{
OracleConnection conn = new OracleConnection("User ID=" + uid + ";Password=" + pwd + ";SERVER=" + server);
conn.InfoMessage += new OracleInfoMessageEventHandler(GetOracleWarningInfoMessage);
conn.Open();
return ConnectionStatus.OK;
}
catch (System.Data.OracleClient.OracleException ex)
{
Logger.Error(ex);
switch (ex.Code)
{
case 1005: //null password given
errmsg = "Invalid password";
return ConnectionStatus.InvalidUserPwd;
case 1017: //invalid username/password
errmsg = "Invalid username/password";
return ConnectionStatus.InvalidUserPwd;
case 1040: //invalid character in password
errmsg = "Invalid password";
return ConnectionStatus.InvalidUserPwd;
case 28000://account locked
errmsg = "Account locked. Contact DBA or wait for PASSWORD_LOCK_TIME";
return ConnectionStatus.Locked;
case 28001://password expired
errmsg = "Password expired. Contact DBA";
return ConnectionStatus.Expired;
default:
errmsg = ex.Message;
return ConnectionStatus.Failed;
}
}
4)當密碼已過期,是不是隻有DBA可以更改密碼。
答:用戶可以自己更改密碼。如果您使用的是SQLPlus或ODP.net驅動程序,您將收到提示。但是,如果您使用OracleClient(Microsoft)驅動程序,您將無法使用它,因爲它缺少OpenWithNewPassword函數(允許在建立連接之前更改密碼)。可能是因爲Mircosoft和甲骨文之間不合作。 OpenWithNewPassword支持僅在Driver ODP(OracleDataProvider)和本機OCL中可用。詳情請參閱鏈接:MSDN或Oracle。
5)當到期日已超出寬限期時,帳戶也會被鎖定。
回答:不,它過期未鎖定。
thx,關於第3點的任何想法。我在c#客戶端中獲取錯誤或警告,我們如何處理它。 – Pradeep
它引發了一個'InfoMessage'事件,用於警告您將需要檢查* ODP.NET和Microsoft提供程序中的OracleConnection類在Oracle發送警告或信息消息時引發InfoMessage事件。* .. [Read On]( http://msdn.microsoft.com/en-us/library/ms971518.aspx) – V4Vendetta