1樓:網友
你是在 什麼機器上 執行 mysql服務的?linux?windows?
建議 將 相關 該表使用的,一律 關閉,如 執行web程式(正在查詢、刪除該表資料),備份終止,正在 執行 刪除該表 的視窗等,然後再進行解鎖。
檢視oracle是否鎖表之後, 然後如果我沒有dba許可權 怎麼殺掉程序或者解鎖表
2樓:
第一種:sql>select session_id from v$locked_object;
sql>select sid, serial#, username from v$session where sid = 49;
49 554 system
sql>alter system kill session '49, 554';
第二種:如果用的是客戶端登入,直接關掉客戶端就可以了,因為你的客戶端也是個session
普通使用者也可以,因為是你這個使用者開啟這個程序,那麼你也可以關閉這個程序。
3樓:網友
有時候很難,即使是本使用者的session也殺不了;
儘量用dba許可權的使用者操作,還有可以到主機上 kill -9 spid 會更快。
怎麼知道資料庫表已經鎖表了
4樓:網友
oracle8i 查殺鎖表程序。
檢視當前資料庫中存在的鎖:
sql> select *from v$locked_object;
可以獲得被鎖的物件的object_id及產生鎖的會話sid。
通過查詢結果中的object_id,可以查詢到具體被鎖的物件:
sql> select * from all_objects where object_id = object_id;
可以獲得具體的表名等物件的名稱。
然後,你可以分析出哪個是你所要找的鎖。
sql> select sid, serial# from v$session where sid = sid;
sid serial#
然後再v$session中找到sid, serial#,執行下面的命令,殺掉會話解鎖:
sql> alter system kill session '75, 183';
當然你也可以直接把這幾個檢視和表關聯起來,在查詢結果中直接得到「alter system kill session 'sid, serial#'」這樣的方便的kill sessoin命令。
如果你執行kill session命令後,鎖並沒有除掉,session依然存在。這種情況,通過select spid from v$process where addr in(select paddr from v$session where sid = sid)
查詢到oracle會話在伺服器上的pid(上面的spid),然後登陸到伺服器上,執行。
kill -9 pid
這樣就能殺掉程序解鎖了。
怎麼查詢mysql中的鎖表語句
5樓:匿名使用者
show processlist;
show processlist顯示哪些執行緒正在執行。您也可以使用mysqladmin processlist語句得到此資訊。如果您有super許可權,您可以看到所有執行緒。
否則,您只能看到您自己的執行緒(也就是,與您正在使用的mysql賬戶相關的執行緒)。如果有執行緒在update或者insert 某個表,此時程序的status為updating 或者 sending data。
6樓:愛可生雲資料庫
方法1:利用 metadata_locks 檢視。
此方法僅適用於 mysql 以上版本,該版本 performance_schema 新增了 metadata_locks,如果上鎖前啟用了後設資料鎖的探針(預設是未啟用的),可以比較容易的定位全域性鎖會話。
方法2:利用 events_statements_history 檢視此方法適用於 mysql 以上版本,啟用 performance_ 預設未啟用, 預設啟用),該表會 sql 歷史記錄執行,如果請求太多,會自動清理早期的資訊,有可能將上鎖會話的資訊清理掉。
方法3:利用 gdb 工具如果上述兩種都用不了或者沒來得及啟用,可以嘗試第三種方法。利用 gdb 找到所有執行緒資訊,檢視每個執行緒中持有全域性鎖物件,輸出對應的會話 id,為了便於快速定位,我寫成了指令碼形式。
也可以使用 gdb 互動模式,但 attach mysql 程序後 mysql 會完全 hang 住,讀請求也會受到影響,不建議使用互動模式。
方法4:show processlist
如果備份程式使用的特定使用者執行備份,如果是 root 使用者備份,那 time 值越大的是持鎖會話的概率越大,如果業務也用 root 訪問,重點是 state 和 info 為空的,這裡有個小技巧可以快速篩選,篩選後嘗試 kill 對應 id,再觀察是否還有 wait global read lock 狀態的會話。
方法5:重啟試試!
暈了,mysql 居然kill不掉,請問有人知道嗎
7樓:酒深不怕巷子深
你是不是用mysqld_safe起的mysql?這是個守護程序,用它起資料庫的話,直接kill它會檢測到資料庫非正常關閉,會自動嘗試起資料庫。你可以選擇先kill掉mysqld_safe的程序然後再kill mysql;或者使用這個命令:
kill -9 `ps -ef | grep 'mysqld' | grep -v grep|awk ''`
當然,最好還是用mysqladmin -uroot -p shutdown來正常關閉mysql。
MySQL表時出現問題,MySQL新建表時出現問題!
create table r a int primary key insert into r values 1 insert into r values 2 一句語句後面要加分號,而且,你把a設為primary key 主鍵 那麼就要保證它的唯一性,所以不能插入重複值的記錄。因你a為主鍵 主鍵不能有...
eclipse中怎麼呼叫mysql資料表
應該是用jdbc去連線吧!寫個dao 然後去連線資料庫 如下 public connection getconnection catch classnotfoundexception e catch sqlexception e public void close resultset rs,stat...
mysql和MSSQL中同時得到表A的第一條和最後一條的sql語句怎麼寫
select from table1 limit 1 union select from table1 order by id desc limit 1 mssql第一條就是 select top 1 from 表最後一條沒法取,不過你可以按你的排序欄位倒序排序,然後取第一條,比如select to...