undo表空間用來存放改變前的舊值。裡面也有段區塊,oracle自動建立生成、自動使用undo段。
作為高階別的dba是需要知道oracle如何使用undo段的。
1 undo表空間及管理方式
oracle開始乙個事務的時候,會用到表空間。將修改前的資料儲存在undo段裡。
undo的三個作用
讀的一致性,構造cr塊
回滾例項恢復(時的回滾)
--查詢undo表空間的名字
sql> show parameter undo_tablespace;
nametype value
undo_tablespacestring undotbs1
--查詢undo表空間的資料檔案
sql>select file_name,bytes/1024/1024 from dba_data_files where tablespace_name like '%undotbs1%'
file_name
bytes/1024/1024
/opt/oracle/oradata/orcl/
--查詢undo表空間的段
sql> select * from v$rollname;
usn name
0 system
1 _syssmu1$
10 _syssmu10$
--查詢其中='_syssmu1$'這個段的占有多個塊多少個區
sql>select segment_name,blocks,extents from dba_segments where segment_name='_syssmu1$';
segment_nameblocks extents
_syssmu11936 17
--查詢'_syssmu1$'這個段分配區的具體情
sql>select segment_name,tablespace_name,extent_id,file_id,block_id,blocks from dba_extents where segment_name='_syssmu1$';
segment_nametablespace_nameextent_id file_id block_id blocks
_syssmu1undotbs10298
_syssmu1undotbs11288498
_syssmu1undotbs1162905128
由上面這個結果,可以得出結果:undo表空間中的段中的區中的塊兒是連續的,但是區與區之不是連續的
show parameter undo;
nametype value
undo_managementstring auto
undo_retentioninteger 900
undo_tablespacestring undotbs1
show parameter undo;
nametype value
undo_managementstring auto
undo_retentioninteger 900 --oracle不希望已經提交的事務,對應的undo段中的區,立即就被覆蓋,而設定這個引數undo_retention 900表示事務已經提交之後,undo段中的區還可以在undo段中存活900秒,過期之後,才可以被覆蓋
undo_tablespacestring undotbs1
select name from v$parameter where name like '%undo%';
undo_management
undo_tablespace
undo_retention
alter tablespace undotbs1 retention guarantee; --表示undo_retention至少900秒以後,過期之後,才可以被覆蓋
select tablespace_name,retention from dba_tablespaces;--查詢設定結果
alter tablespace undotbs1 retention noguarantee;
select tablespace_name,retention from dba_tablespaces;--查詢設定結果
undo段中區的狀態
free 空閒
expired 過期:超undo段中的區在提交之後,存活的時間超過了undo_retention900鈔
inactive 已經提交
active 活動
oracle在自動使用undo段中區時,先用「free」空間,實在不行,才用「expired」過期的空間。
如果空間還不夠,使用者「inactive」,如果還是空間不夠,這時就要報錯了。程序就要掛起了。
oracle 使用undo段空間的順序:
「free」空間--->「expired」過期的空間---->「inactive」空間---如果空間還不夠---->報錯
檢查undo segment狀態
select usn,xacts,rssize/1024/1024/1024,hwmsize/1024/1024/1024,shrinks
from v$rollstat order by rssize;
顯示undo
select extent_id,bytes,status from dba_undo_extents where segment_name='_syssmu1$';
食物相剋清單
1 蝦 維c 中毒 2 感冒藥 可樂 中毒 3 雞蛋忌糖精 同食中毒 死亡 4 豆腐忌蜂蜜 同食耳聾 5 海帶忌豬血 同食便秘 6 土豆忌香蕉 同食生雀斑 7 牛肉忌紅糖 同食脹死人 8 狗肉忌黃鱔 同食則死 9 羊肉忌田螺 同食積食腹脹 10 芹菜忌兔肉 同食脫頭髮 11 番茄忌綠豆 同食傷元氣 ...
食物相剋大全
1 蝦 維c 中毒 2 感冒藥 可樂 中毒 3 雞蛋忌糖精 同食中毒 死亡 4 豆腐忌蜂蜜 同食耳聾 5 海帶忌豬血 同食便秘 6 土豆忌香蕉 同食生雀斑 7 牛肉忌紅糖 同食脹死人 8 狗肉忌黃鱔 同食則死 9 羊肉忌田螺 同食積食腹脹 10 芹菜忌兔肉 同食脫頭髮 11 番茄忌綠豆 同食傷元氣 ...
食物相剋表
食物相剋終於找齊了 1 蝦 維c 中毒 2 感冒藥 可樂 中毒 3 雞蛋忌糖精 同食中毒 死亡 4 豆腐忌蜂蜜 同食耳聾 5 海帶忌豬血 同食便秘 6 土豆忌香蕉 同食生雀斑 7 牛肉忌紅糖 同食脹死人 8 狗肉忌黃鱔 同食則死 9 羊肉忌田螺 同食積食腹脹 10 芹菜忌兔肉 同食脫頭髮 11 番茄...