登陸資料庫超級用戶:sqlplus / as sysdba
alter user 用戶名稱 ACCOUNT UNlOCK;
uj5u.com熱心網友回復:
你這個是解鎖用戶uj5u.com熱心網友回復:
請問資料庫怎么個鎖定法?《“提問的智慧”之墨天輪版——如何提問才能讓我的問題得到更快速的解答?》
uj5u.com熱心網友回復:
Oracle解決例外lock的方法!通常由于網路的不穩定或則資料庫的 bug,在使用dblink時產生了異步lock,下面就談談異步lock的解決方法:
1)查詢 dba_2pc_pending ,確定異步lock當前的狀態。
select local_tran_id, global_tran_id, state, mix, host, commit# fromdba_ 2pc_pending;
LOCAL_TRAN_ID|GLOBAL_TRAN_ID |STATE |MIX|HOST |COMMIT#
-------------|----------------------|---------|---|----------|-------
1.10.255 |V817REP.BE.ORACLE.COM.|committed|no |BE-ORACLE-|202241
|89f6eafb.1.10.255 | | |NT/bel449 |
此時通過state=committed, 表示此session已提 交,只是在提交后,接受不到global session的transaction資訊了,所以產生異步lock,此時對一般不造成table的lock。
通過呼叫 execute DBMS_TRANSACTION.PURGE_LOST_DB_ENTRY('1.10.255'); 可解決此問題。
當然state還有以下幾種狀態:
collecting:在收集資料程序中,產生例外
解決方法: execute DBMS_TRANSACTION.PURGE_LOST_DB_ENTRY('1.10.255');
prepared: 在接受到異步commit/rollback指令前, 產生例外
解決方法: rollback force tran_id/commit force tran_id; -- 可根據異步transaction的狀況決定使用方法。
forced rollback: 在使用rollback force出現
解決方法: execute DBMS_TRANSACTION.PURGE_LOST_DB_ENTRY('1.10.255');
forced commit:在使用commit force出現
解決方法: execute DBMS_TRANSACTION.PURGE_LOST_DB_ENTRY('1.10.255');
uj5u.com熱心網友回復:
搞啥的我都寫錯了 我還真是個弟弟
uj5u.com熱心網友回復:
Oracle資料庫鎖太多,可說具體點你是碰到啥問題了。轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/14708.html
標籤:基礎和管理
