undo_retention:最適な取り消し保存時間を決定する
3295 ワード
次の式を使用してundo_を計算します.retentionパラメータの値:
undo_retention=undo size/(db_block_size * undo_block_per_sec)
次のクエリをコミットすることで、データベースで実際に生成された取り消しデータを計算できます.
次のクエリでundo_を計算できます.block_per_sec:
秒でundo_を計算retentionパラメータの値:
v$undostatビューには、データベースが取り消しスペースを使用する方法の統計や、実行時間が最も長いクエリーなどの情報が含まれています.これらの情報を使用して、現在のデータベースで処理されているワークロードの取り消し領域のサイズを計算できます.v$undostatビューの各行には、10分間隔の取り消し統計が表示されます.テーブルには最大576行のデータが含まれ、各行に10分間記録されます.したがって、最大4日間の取り消しスペースの使用状況を表示できます.BEGIN_TIME:期間の開始時間.END_TIME:期間の締め切り時間.UNDOBLKS:10分間隔でデータベースが消費する取り消しデータブロックの数.TXNCOUNT:10分間隔で実行されるトランザクションの数.MAXQUERYLEN:このインスタンスが10分間隔で実行されたことを示します.クエリに最も時間がかかる(秒単位).MAXQUERYID:最も時間間隔の長いSQL文の識別子.NOSPACEERRCNT:データベースは、アクティブな事務所によって占有されているため、新しい取り消しデータを格納するのに十分なスペースがありません.TUNNED_UNDORETENTION:データベースは、所属するトランザクションを取り消した後も、取り消しデータを保持する時間が長くなりますを選択します.
undo_retention=undo size/(db_block_size * undo_block_per_sec)
次のクエリをコミットすることで、データベースで実際に生成された取り消しデータを計算できます.
sys@ORCL> select sum(d.bytes) "undo"
2 from v$datafile d, v$tablespace t, dba_tablespaces s
3 where s.contents = 'UNDO'
4 and s.status = 'ONLINE'
5 and t.name = s.tablespace_name
6 and d.ts# = t.ts#;
undo
----------
1048576000
次のクエリでundo_を計算できます.block_per_sec:
sys@ORCL> select max(undoblks / ((end_time - begin_time) * 3600 * 24)) "UNDO_BLOCK_PER_SEC"
2 FROM v$undostat;
UNDO_BLOCK_PER_SEC
------------------
.109816972 -- 。
sys@ORCL> show parameter db_block_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_block_size integer 8192
秒でundo_を計算retentionパラメータの値:
sys@ORCL> select 1048576000/(0.495726495726496*8192) from dual;
1048576000/(0.495726495726496*8192)
-----------------------------------
258206.897
v$undostatビューには、データベースが取り消しスペースを使用する方法の統計や、実行時間が最も長いクエリーなどの情報が含まれています.これらの情報を使用して、現在のデータベースで処理されているワークロードの取り消し領域のサイズを計算できます.v$undostatビューの各行には、10分間隔の取り消し統計が表示されます.テーブルには最大576行のデータが含まれ、各行に10分間記録されます.したがって、最大4日間の取り消しスペースの使用状況を表示できます.BEGIN_TIME:期間の開始時間.END_TIME:期間の締め切り時間.UNDOBLKS:10分間隔でデータベースが消費する取り消しデータブロックの数.TXNCOUNT:10分間隔で実行されるトランザクションの数.MAXQUERYLEN:このインスタンスが10分間隔で実行されたことを示します.クエリに最も時間がかかる(秒単位).MAXQUERYID:最も時間間隔の長いSQL文の識別子.NOSPACEERRCNT:データベースは、アクティブな事務所によって占有されているため、新しい取り消しデータを格納するのに十分なスペースがありません.TUNNED_UNDORETENTION:データベースは、所属するトランザクションを取り消した後も、取り消しデータを保持する時間が長くなりますを選択します.
sys@ORCL> select to_char(begin_time, 'hh24:mi:ss') BEGIN_TIME,
2 to_char(end_time, 'hh24:mi:ss') END_TIME,
3 maxquerylen,
4 nospaceerrcnt,
5 tuned_undoretention
6 from v$undostat;
BEGIN_TI END_TIME MAXQUERYLEN NOSPACEERRCNT TUNED_UNDORETENTION
-------- -------- ----------- ------------- -------------------
17:37:31 17:43:00 1281 0 2062
17:27:31 17:37:31 978 0 1759
17:17:31 17:27:31 372 0 1153
17:07:31 17:17:31 974 0 1755
16:57:31 17:07:31 368 0 1151
16:47:31 16:57:31 968 0 1809
16:37:31 16:47:31 363 0 1205
16:27:31 16:37:31 961 0 1805
16:17:31 16:27:31 358 0 1200
16:07:31 16:17:31 957 0 1799
15:57:31 16:07:31 353 0 1195
15:47:31 15:57:31 953 0 1794
15:37:31 15:47:31 349 0 1190
15:27:31 15:37:31 948 0 1790
15:17:31 15:27:31 342 0 1185
15 。
oracleは、指定された期間において、実行時間が最も長いクエリに基づいて、取り消し保持時間を向上または低減します.