oracle 切換undo tablespace小結
/* 1. 檢查引數檔案型別 ,如果不是spfile ,scope=memory ,要記得儘快去修改pfile */
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /opt/oracle/112/dbs/spfilemyor
cl11.ora
/* 2. 檢視當前資料檔案size */
select tablespace_name,sum(bytes)/1024/1024/1024 GB
from dba_data_files group by tablespace_name
union all
select tablespace_name,sum(bytes)/1024/1024/1024 GB
from dba_temp_files group by tablespace_name order by GB;
/* 3. 建立一個新undo tbs,先df確認有足夠空間,預設的AUTOEXTEND OFF*/
create undo tablespace UNDOTBS02 datafile '/opt/oracle/oradata/myorcl11/undotbs02.dbf' size 100m ;
/* 4. 檢視當前事務,存在活動事務時,是可以切換undo tbs的,只是正使用的回滾段無法offline,
仍保持online狀態(dba_rollback_segs),而在v$rollstat中段的status是PENDING OFFLINE */
select count(*) from v$transaction;
/* 此時如果drop原來tbs,會收到 */
SQL> drop tablespace undotbs01 including contents;
drop tablespace undotbs01 including contents
*
ERROR at line 1:
ORA-30013: undo tablespace 'UNDOTBS01' is currently in use
/* 5. 等待dba_rollback_segs原tbs的段全部offline,或者看v$rollstat已不存在 */
drop tablespace undotbs01 including contents and datafiles;
/* 如果急著想幹掉原來的transaction */
select ss.sid,ss.SERIAL#,p.SPID,ss.SCHEMANAME,ss.OSUSER,ss.TERMINAL,ss.PROGRAM
from v$session ss, v$process p, v$transaction t
where ss.TADDR = t.ADDR
and ss.PADDR = p.ADDR
and t.UBAFIL = &fno; --&fno是undotbs1的file#
/* 記下 p.SPID 3293 ,沒記看最後...
因為alter system kill session 會使paddr 指向同一個虛擬地址.
此時v$process和v$session失去關聯,程式就此中斷.
然後Oracle就等待PMON去清除這些Session.
所以通常等待一個被標記為Killed的Session退出需要花費很長的時間.
如果此時被Kill的process,重新嘗試執行任務,那麼馬上會收到程式中斷的提示,
process退出,此時Oracle會立即啟動PMON來清除該session.這被作為一次異常中斷處理 */
SQL> alter system kill session '39,35';
System altered.
/* 此時v$session status被標記為killed,事務回滾,在v$transaction中消失,
但dba_rollback_segs,v$rollstat仍是佔用狀態*/
/* kill ospid, 如果session 一直處於killed 狀態,那麼可以考慮在作業系統級別kill掉相關的程式。
不過在操作之前,要先確認session 是否在執行rollback 操作, v$session關聯查不到v$transaction就okay */
# lsof -p 3293
oracle 3293 oracle 11u REG 8,2 10493952 283525 /opt/oracle/oradata/myorcl11/append02.dbf
oracle 3293 oracle 12u REG 8,2 104865792 282798 /opt/oracle/oradata/myorcl11/undotbs01.dbf (deleted)
--檔案控制程式碼未釋放,還可以恢復檔案
# cp /proc/3293/fd/12 ~/undotbs01.dbf.frm
# kill -9 3293
--至此undotbs01才被真正刪除,空間釋放
/* 網上查到還有一個語句 */
SQL> ALTER SYSTEM DISCONNECT SESSION'sid,serial#' POST_TRANSACTION;
SQL> ALTER SYSTEM DISCONNECT SESSION'sid,serial#' IMMEDIATE;
POST_TRANSACTION 選項會等待事務完成之後在斷開連線。
IMMEDIATE 選項會立即斷開連線,然後事務會進行recover操作。
/* 與kill session 命令不同,disconnect session 命令會kill 掉 dedicated server process,
該命令等同於在作業系統級別kill 掉server process。
使用alter system disconnectsession 命令就不需要切換到系統來kill session,
也從而減少了kill 錯程式的機率 */
/* 如果已經asks了,沒記下v$process.spid,因為v$process的資訊都不會動
所以還是不難找,下面的sql可基本上最快定位到process*/
select pid,spid,pname,serial#,program from v$process
where addr in (
select p.addr from v$process p where pid <> 1
minus
select s.paddr from v$session s);
PID SPID PNAME SERIAL# PROGRAM
---------- ------------------------ ----- ---------- -----------------------------------
17 3073 D000 1 oracle@localhost.myrh6 (D000)
18 3075 S000 1 oracle@localhost.myrh6 (S000)
36 4195 81 oracle@localhost.myrh6 (TNS V1-V3)
--總結就是,不要太著急,多等會再drop總是好的
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28859270/viewspace-776228/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle OCP(48):UNDO TABLESPACEOracle
- ORACLE線上切換undo表空間Oracle
- Oracle undo表空間切換(ZT)Oracle
- Oracle切換undo表空間操作步驟Oracle
- tablespace 大檔案,undo,temp tablespace
- undo線上切換步驟筆記筆記
- oracle10g undo tablespace相關知識Oracle
- Oracle 12c 多租戶 CDB 與 PDB之 shared undo 與 Local undo 切換Oracle
- Oracle 行列轉換小結Oracle
- 小程式 tab切換
- 自動undo表空間模式下切換新的undo表空間模式
- oracle dataguard 切換Oracle
- 小程式標籤切換
- 前端小demo——tab切換前端
- Oracle檢視每小時日誌切換量指令碼Oracle指令碼
- 小程式切換主題配色
- Oracle 18c&19c physical dg切換總結Oracle
- oracle dg切換操作示例Oracle
- Oracle日誌模式切換Oracle模式
- Oracle DataGuard切換步驟Oracle
- oracle 之dataguard standby 切換Oracle
- Oracle - ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS1'Oracle
- oracle管理之 undo tablespace(server.102 b14231)OracleServer
- 小程式標籤頁切換效果
- 微信小程式-uniapp-切換tab時資料列表如何切換?微信小程式APP
- Run Out Of Space On UNDO Tablespace Using DataPump Import/ExportImportExport
- 使用_smu_debug_mode瞭解undo tablespace
- 【TABLESPACE】Oracle 表空間結構說明Oracle
- oracle 跨小版本dg切換應用補丁報錯處理Oracle
- Oracle Temp 表空間切換Oracle
- oracle11g dataguard切換Oracle
- Oracle RAC DG手動切換Oracle
- oracle 歸檔切換頻率Oracle
- jquery toggle 的切換顯示 可用 a超連結的切換jQuery
- Oracle的UNDO表空間管理總結Oracle
- Oracle 單機切換為主備Oracle
- Oracle DataGuard switchover切換一例Oracle
- oracle資料庫服務切換Oracle資料庫