[SQL ] 如何大量批次刪除連線中的User?

看板Database作者 (....)時間14年前 (2011/10/12 11:35), 編輯推噓3(303)
留言6則, 4人參與, 最新討論串1/1
使用的是Oracle 11gR2 因為現在都會把正式區的資料倒到測試區 為了避免測試區的User Account的一些相關資料有問題 所以每次倒資料時都會把測試帳號刪掉 當然...因為是測試區 所以很多user都會連在上面做事 例如當我要刪除 testuser 這個帳號的時候 會出現 testuser連線中 我會用下面這個指令去撈出他們共有多少連線 select SID||','||SERIAL# AS SESSIONDATA from v$session where username='testuser'; 但是 SID出來之後.... 常常會有幾十筆 我用指令 ALTER SYSTEM DISCONNECT SESSION '12345,888' IMMEDIATE; 這樣的指令一個一個刪實在太慢了 想請問有批次中斷或者強制中斷所有連線USER的指令嗎? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.61.28.175

10/12 13:47, , 1F
寫cusor 用 loop
10/12 13:47, 1F

10/12 13:48, , 2F
可以改一下你的select 來產生所有的kill指令, 例如:
10/12 13:48, 2F

10/12 13:53, , 3F
select 'alter system kill session ''' || sid || ','
10/12 13:53, 3F

10/12 13:57, , 4F
|| serial# || ''';' from v$session where ......
10/12 13:57, 4F

10/12 14:43, , 5F
樓上的版友可以寫詳細一點嗎?小弟我也想知道:)
10/12 14:43, 5F

10/15 23:29, , 6F
直接用dynamic sql就可以做掉啦
10/15 23:29, 6F
文章代碼(AID): #1EbGi6ge (Database)