ORA-19809

データベース起動しようとしたら以下のエラーがでて
オープン失敗

Fri Apr 07 22:47:50 2006
Errors in file c:\oracle\admin\orcl\udump\orcl_ora_3628.trc:
ORA-19809: リカバリ・ファイルの制限を超えています
ORA-19804: 10017792バイトのディスク領域を制限2147483648から再生できません

以下の手順で復旧。今回は原因追及はやめる

  1. ノーアーカイブ
  2. 起動
  3. 停止
  4. マウント
  5. アーカイブに変更
  6. オープン

SQL> alter database noarchivelog;

データベースが変更されました。

SQL> alter database open;

SQL> shutdown immediate
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL>
SQL> startup mount
ORACLEインスタンスが起動しました。

Total System Global Area 163577856 bytes
Fixed Size 787948 bytes
Variable Size 154139156 bytes
Database Buffers 8388608 bytes
Redo Buffers 262144 bytes
データベースがマウントされました。
SQL> alter database archivelog;
データベースが変更されました。
SQL> alter database open;

 動的SGA

動的SGAは、9iからの新機能で共有プール、データベースバッファサイズ
インスタンスを停止せずにALTER SYSTEMコマンドで変更できる機能。
SGAの全体のサイズはSGA_MAX_SIZEで決定される。

メモリ割り当ての単位は「グラニュル」

SGA_MAX_SIZE自体は、静的にしか変更できない。
間違えやすいのは、動的SGAは別に自動でサイズを調整してくれる訳じゃない。
これを実現するのは10gからのSGA_TARGETパラメータ。


SGAの情報表示。グラニュルサイズも確認できる

SQL> select * from v$sgainfo;

                          • -

Fixed SGA Size 787988 No
Redo Buffers 262144 No
Buffer Cache Size 25165824 Yes
Shared Pool Size 83886080 Yes ★共有プール
Large Pool Size 8388608 Yes
Java Pool Size 50331648 Yes
Streams Pool Size 0 Yes
Granule Size 4194304 No ★グラニュル
Maximum SGA Size 171966464 No
Startup overhead in Shared Pool 25165824 No
Free SGA Memory Available 0

11行が選択されました。


↓グラニュルが4M単位なので、80Mも78Mもかわらない!

SQL> show parameter shared_pool_size

NAME TYPE VALUE

                                                            • -

shared_pool_size big integer 80M

SQL> alter system set shared_pool_size=78M;

  システムが変更されました。

SQL> show parameter shared_pool_size

NAME   TYPE VALUE

                                                            • -

shared_pool_size big integer 80M


動的にSGAが変更できるはず、ってエラーが発生。
すでにSGA_MAX_SIZEを使ってしまっているので変更できない。

SQL> alter system set shared_pool_size=87M;
alter system set shared_pool_size=87M

行1でエラーが発生しました。:
ORA-02097: 指定した値が無効なので、パラメータを変更できません。
ORA-04033: プールを大きくするにはメモリーが足りません


共有プール以外のSGA内のキャッシュを小さく調整して、
再度実行。

今度は成功!

SQL> alter system set db_cache_size=6M;

システムが変更されました。

SQL> alter system set shared_pool_size=86M;

システムが変更されました。

SQL*PLUSで実行時間

  • set timing on/off

SQL> set timing on
SQL>
SQL> select count(*) from v$session;

COUNT(*)

                  • -

11

経過: 00:00:03.96
SQL> set timing off

  • timing start/show /stop

SQL> timing start
SQL> select count(*) from v$session;
COUNT(*)

                  • -

11
SQL> timing show
経過: 00:00:18.21
SQL> timing show
経過: 00:00:19.87
SQL> timing stop
経過: 00:00:25.14
SQL> timing show
SP2-0325: showに対するタイミング要素はありません。

showで経過時間表示できるので、
バッチしょりなんかに組み込むと吉。

Oracle OpenWorld Tokyo 2006のPDF

Oracle OpenWorld Tokyo 2006の資料が公開されています。


実は

 ORACLE+GrapeCityによる.NETアプリケーションの実践的開発手法

なんぞを聞いてきたわけで、手元に資料がほしかったところで、
よかったなあ、ちゃんちゃん。

ほかに、なんかあればPDFだけでもみてみよう。今日はムリ。
ちなみに資料みるにはOTNへの登録(無料)が必要みたいです。

 (WIN)SQLPLUS接続でORA-12560が発生

WINDOWSSQL*PLUSからログインしようとして、以下のエラーが発生する。

ERROR:
ORA-12560: TNS: プロトコル・アダプタ・エラーが発生しました


環境変数ORACLE_SIDが設定されていないことが原因かも。

C:\>set ORACLE_SID=ORCL


ってかんじで設定してから試してみよう。