プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になります。

oracle8.1.7がインストールされている Linux サーバに関して、現在メモリ使用量が逼迫しているためか、
時々OSの処理が重くなり、応答が無くなる事が多々発生して困っています。

Database:Oracle 8.1.7 Enterprise Edition
Linux:RedHat Linux 6.2

freeコマンドで調べたところ、
---------------------------------------------------------------------------
[root@sample dir1]# free
total used free shared buffers cached
Mem: 2073296 1996752 76544 1575952 112904 813364
-/+ buffers/cache: 1070484 1002812
Swap: 2097136 2536 2094600
---------------------------------------------------------------------------


topコマンドで調べたところ(Shift + M でメモリ使用順としました)
---------------------------------------------------------------------------
6:05pm up 5:06, 2 users, load average: 0.22, 0.11, 0.10
69 processes: 66 sleeping, 1 running, 0 zombie, 2 stopped
CPU states: 17.3% user, 1.4% system, 0.0% nice, 81.1% idle
Mem: 2073296K av, 1996832K used, 76464K free, 2385012K shrd, 110684K buff
Swap: 2097136K av, 2632K used, 2094504K free 816100K cached

PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND
1672 oracle 0 0 848M 848M 847M S 604M 0.0 41.9 13:47 oracle
1710 oracle 4 0 458M 458M 456M S 445M 1.5 22.6 13:03 oracle
1767 oracle 6 0 350M 350M 348M S 337M 2.3 17.3 10:17 oracle
1764 oracle 6 0 347M 347M 342M S 331M 2.3 17.1 4:38 oracle
1915 oracle 16 0 84564 82M 80532 S 68M 29.2 4.0 0:59 oracle
1688 oracle 0 0 74804 72M 73592 S 71M 0.0 3.5 0:36 oracle
1677 oracle 0 0 62808 61M 61100 S 46M 0.0 3.0 0:44 oracle
848 oracle 0 0 39160 38M 37960 S 36M 0.0 1.8 0:01 oracle
854 oracle 0 0 30092 29M 29632 S 25M 0.0 1.4 0:01 oracle
852 oracle 0 0 14592 14M 14144 S 9.8M 0.0 0.7 0:02 oracle
---------------------------------------------------------------------------
 ※10件のみとしました

上記となり、恐らくoracleがメモリ使用量を圧迫し、Swap領域も逼迫した場合にサーバ処理の
応答が無くなると推測しています。

上記を改善するために、init.ora 内の以下の項目を編集しようと考えていますが、数値を決めかねています。
サーバがフリーズ状態(僅かながらもゆっくり動いている)原因について、
何でも結構ですので、アドバイスいただけたらと思います。よろしくお願いいたします。

open_cursors = 1000
max_enabled_roles = 30
db_block_buffers = 64000
shared_pool_size = 524288000
large_pool_size = 1048576
java_pool_size = 0
log_checkpoint_interval = 10000
log_checkpoint_timeout = 1800
processes = 150
log_buffer = 532480
db_block_size = 8192
sort_area_size = 1048576
sort_area_retained_size = 1048576

A 回答 (3件)

>上記となり、恐らくoracleがメモリ使用量を圧迫し、Swap領域も逼迫した場合にサーバ処理の


応答が無くなると推測しています。

このような状況になってしまうSQL処理があるのでしょうか?
だとしたらそのSQLのチューニングを行うのがベストだと思います。

OSからの監視ツールではなく、oracleの監視ツール(TOPSESSION等)
を使用してみてはどうでしょうか。
    • good
    • 1
この回答へのお礼

返信ありがとうございました。

97%となってしまうときもあれば、普段は40%のメモリ使用量で安定
しているときもあります。原因が分からないのが困りものですが・・・。
規模の大きなWebアプリケーションのため、全てを調査となると、もう
本当に不可能に近いくらいの時間がかかってしまいます。
なぜか、このサーバだけ発生するんですよね・・・。

監視ツール Oracle Top Sessions というものがあるのですね。
調べてみたいと思います。ありがとうございました。

お礼日時:2007/09/04 20:39

うーん、スラッシングかも。


何か重たい処理を実行したときに、ディスクとCPUの利用率をグラフにすると、きれいに上下に波うってると思います。

複数インスタンスが稼動してるようですが、DBそのもののメモリ使用量をさげても根本的な解決にはならないきがしますので、
shared_pool_size = 524288000
この値を下げると良いとかは、ちょっといえませんね・・・

メモリ追加か、DBインスタンスを他に移すとかが良いのでは。

この回答への補足

返信ありがとうございました。
複数インスタンスは起動していないようでした。

3日後に再度同コマンドを実行し、oracle のメモリ使用率を全て合計したところ42.4%程となっており、使用率が下がっていました。にも関わらず、メモリ 2073296K のうち、1985032K のメモリを消費しており・・・謎です。


topコマンドで調べたところ(Shift + M でメモリ使用順としました)
---------------------------------------------------------------------------
9:11pm up 3 days, 8:12, 1 user, load average: 0.95, 0.38, 0.14
62 processes: 60 sleeping, 2 running, 0 zombie, 0 stopped
CPU states: 0.0% user, 50.8% system, 0.0% nice, 49.1% idle
Mem: 2073296K av, 1985032K used, 88264K free, 907912K shrd, 42668K buff
Swap: 2097136K av, 2036K used, 2095100K free 885768K cached

PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND
1986 oracle 0 0 510M 510M 509M S 289M 0.0 25.2 5:26 oracle
1688 oracle 0 0 92608 90M 91348 S 79M 0.0 4.4 0:37 oracle
1677 oracle 0 0 86280 84M 84556 S 60M 0.0 4.1 0:48 oracle
848 oracle 0 0 63232 61M 62032 S 60M 0.0 3.0 0:05 oracle
854 oracle 0 0 43048 41M 42580 S 36M 0.0 2.0 0:03 oracle
8062 oracle 0 0 23544 22M 22632 S 8964 0.0 1.1 0:00 oracle
8601 oracle 0 0 20316 19M 19332 S 12M 0.0 0.9 0:02 oracle
852 oracle 0 0 11244 10M 10796 S 9.8M 0.0 0.5 0:27 oracle
867 oracle 0 0 7564 7420 6952 S 3684 0.0 0.3 0:00 oracle
8066 oracle 0 0 7116 7116 6544 S 816 0.0 0.3 0:00 oracle
---------------------------------------------------------------------------
 ※10件のみとしました


以下は Shift + M を押下せず、topコマンドをそのまま実行
---------------------------------------------------------------------------
9:12pm up 3 days, 8:13, 1 user, load average: 1.05, 0.49, 0.19
62 processes: 60 sleeping, 2 running, 0 zombie, 0 stopped
CPU states: 0.0% user, 50.8% system, 0.0% nice, 49.1% idle
Mem: 2073296K av, 1985060K used, 88236K free, 907912K shrd, 42684K buff
Swap: 2097136K av, 2036K used, 2095100K free 885768K cached

PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND
648 root 0 0 732 680 580 R 0 99.9 0.0 1172m dpteng
8633 oracle 0 0 868 868 668 R 0 1.7 0.0 0:00 top
1 root 0 0 472 472 400 S 0 0.0 0.0 0:06 init
---------------------------------------------------------------------------
 ※3件のみとしました

なお、init.oraの編集はしないことにします。
/usr/dpt/dpteng(不明)が99.9%CPUを消費しているのも関係あるかもしれませんが、これも怪しいかも・・・。

補足日時:2007/08/08 09:47
    • good
    • 0

複数のインスタンスを同時に起動しているということはありませんか。

    • good
    • 1
この回答へのお礼

早速の回答ありがとうございます。
以下を確認したところ、インスタンスは一つのみでしたので、
複数起動していることは無さそうでした。

/var/oracle/app/admin/○○○

お礼日時:2007/08/08 09:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す