Break Out!? - blog ver.

こっちー(kojiaki)がメモとか物欲の記録とかラーメン食べ歩きとかを書きなぐる blog みたいなものです。

Oracle UNDO表領域の再作成

UNDO表領域が大きくなってにっちもさっちもいかなくなったので実施

ファイルパスは適宜読み替えてください


  1. 一時的にUNDO表領域を作成
  2. create undo tablespace UNDOTBS2 datafile '/path/to/undotbs02.dbf' size 10m autoextend on;
  3. UNDO表領域の切り替え(UNDOTBS1からUNDOTBS2へ)
  4. alter system set undo_tablespace = 'UNDOTBS2';
  5. 大きくなった表領域の削除
  6. drop tablespace UNDOTBS1;
  7. UNDO表領域の再作成(元のファイルは削除しなくてもよい)
  8. create undo tablespace UNDOTBS1 datafile '/path/to/undotbs01.dbf' size 50m reuse autoextend on;
  9. UNDO表領域の切り替え(UNDOTBS2からUNDOTBS1へ)
  10. alter system set undo_tablespace = 'UNDOTBS1';
  11. 一時的に作成したUNDO表領域を削除
  12. drop tablespace UNDOTBS2 including contents cascade constraints;
  13. 上記完了後 /path/to/undotbs02.dbf を物理削除

Oracleのアーカイブログを削除する

Oracle内部はよくわからないのでOSコマンドと併用して実施した時のメモ

1. OS上にてarchivelogを削除する
適宜findとか使って必要なだけ削除
例えば以下の様な感じ
find [archivelogディレクトリ] -type f -daystart -mtime +1 -print0 | xargs -0 rm -f

2. oracleユーザにてRMANを使ってOracleの情報から削除
% rman target /
RMAN> crosscheck archivelog all;
RMAN> delete expired archivelog all;
RMAN> list archivelog all;
処理内容は上から
削除するためにチェックをつける
チェックしたファイルを削除
現在認識しているアーカイブログ一覧出力

以上の処理をまとめたシェルスクリプト書いておけば人力でちまちまやることもないはず

まぁ、RMANで
RMAN> delete archivelog until time 'sysdate-1';
とかやったらRMANだけで済むから本来はそっちをおすすめします(例は一日前まで削除)

Oracle 表領域の使用率を調べる

前回は一時表領域だったけど
表領域の方は以下の SQL で調べられる

左から表領域のサイズ、利用サイズ、空きサイズ、使用率

SELECT tablespace_name,
TO_CHAR(nvl(total_bytes/1024/1024,0),'999,999,999') as "size(MB)",
TO_CHAR(nvl((total_bytes - free_total_bytes)/1024/1024,0),'999,999,999') as "used(MB)",
TO_CHAR(nvl(free_total_bytes/1024/1024,0),'999,999,999') as "free(MB)",
round(nvl((total_bytes-free_total_bytes)/total_bytes*100,100),2) as "rate(%)"
FROM (SELECT tablespace_name,
sum(bytes) total_bytes
FROM dba_data_files
GROUP BY tablespace_name),
(SELECT tablespace_name free_tablespace_name,
sum(bytes) free_total_bytes
FROM dba_free_space
GROUP BY tablespace_name)
WHERE tablespace_name = free_tablespace_name(+);

検索文字列に返信してみるテスト

Apache のログを webalizer で解析している関係で
どんな検索文字列でアクセスしてるのかわかっちゃうわけですが
まったく SEO 対策してない旧日記だと見つけるのが面倒な気がするので
こっちに返信という形で転載してみる

場合によってはシリーズ化するかもね

Oracle 一時表領域の使用率を調べる

忘れっぽいのでメモ
以下の SQL を sqlplus から投げるだけ

SELECT dt.file_name, dt.tablespace_name,
to_char(dt.bytes / 1024, '99999990.000') file_kbytes,
to_char(t.bytes_cached / 1024, '99999990.000') used_kbytes,
to_char(t.bytes_cached / dt.bytes * 100, '990.00') || '%' capacity
FROM sys.dba_temp_files dt, v$temp_extent_pool t, v$tempfile v
WHERE t.file_id(+)= dt.file_id AND dt.file_id = v.file#;