AIX6.1/11.2.0.3数据库上关于SWAP的一个BUG
昨天去南京某客户那里调优新上线的业务数据库,在查看alert.log日志时发现在过去的一段时间里,每过几个小时或间隔一段时间,就会报类以下的内容: Thu Aug 21 09:01:26 2014WARNING: Heavy swapping observed on system in last 5 mins.pct of memory swappe
昨天去南京某客户那里调优新上线的业务数据库,在查看alert.log日志时发现在过去的一段时间里,每过几个小时或间隔一段时间,就会报类似以下的内容:Thu Aug 21 09:01:26 2014 WARNING: Heavy swapping observed on system in last 5 mins. pct of memory swapped in [8.42%] pct of memory swapped out [2.16%]. Please make sure there is no memory pressure and the SGA and PGA are configured correctly. Look at DBRM trace file for more details.
Thu Aug 21 14:56:27 2014 WARNING: Heavy swapping observed on system in last 5 mins. pct of memory swapped in [5.40%] pct of memory swapped out [8.63%]. Please make sure there is no memory pressure and the SGA and PGA are configured correctly. Look at DBRM trace file for more details.
......
Sat Oct 18 22:13:48 2014 WARNING: Heavy swapping observed on system in last 5 mins. pct of memory swapped in [7.76%] pct of memory swapped out [0.33%]. Please make sure there is no memory pressure and the SGA and PGA are configured correctly. Look at DBRM trace file for more details.
客户的环境是IBM P570,AIX 6.1,安装了Oracle 11.2.0.3单实例数据库,物理内存64G,仅仅分配了20G给SGA,采用memory自动管理
查阅了一下MOS,发现是AIX平台上的一个bug,相关文档为:[1508575.1]
对应的数据库和平台:
Oracle Database - Enterprise Edition - Version 11.2.0.3 to 11.2.0.3 [Release 11.2] IBM AIX on POWER Systems (64-bit)
症状:
There is new warning message in alert.log in 11.2.0.3 similar to
WARNING: Heavy swapping observed on system in last 5 mins.
pct of memory swapped in [2.08%] pct of memory swapped out [0.12%].
Please make sure there is no memory pressure and the SGA and PGA
are configured correctly. Look at DBRM trace file for more details.
On AIX platform this message can be seen even when there is no virtual memory swapping at all. --物理内存足够,而且根本没有使用swap交换空间
You may compare the vmstat from AIX level with DBRM trace file entries to see the differences.
原因:
The issue is caused by unpublished Bug:14731911.
Swap usage messages are based on statistics that do not reflect the actual usage.
The v$osstat does not reflect proper stats for the swap space paging.
解决方法:Apply Patch:11801934 on top of your IBM AIX on POWER Systems (64-bit) platform.
P.S: Bug is port-specific. --这个bug是针对端口指定的平台的
The issue is fixed in patchset 11.2.0.4 and release 12.1. --说是在12.1的patch中修复了,但实际上12.1还是会有这个问题,会有ora-700错误,详见文档:[ID 1919850.1]
来看一下BUG:14731911的描述:
|
B - Defect | |||
2 - Severe Loss of Service | 11.2.0.3 | ||
96 - Closed, Duplicate Bug | 212 - IBM AIX on POWER Systems (64-bit) | ||
2012-10-8 | |||
2014-10-11 | 11801934 | ||
11.2.0.3 | Port-Specific | ||
Oracle | 与此 Bug 相关的知识, 补丁程序和 Bug |

|
Oracle Database Products | Oracle Database Suite | ||
Oracle Database | 5 - Oracle Database - Enterprise Edition | ||

Hdr: 14731911 11.2.0.3 RDBMS 11.2.0.3 VOS PRODID-5 PORTID-212 11801934 Abstract: FALSE SWAP WARNING MESSAGES PRINTED TO ALERT.LOG ON AIX *** 10/08/12 04:52 am *** BUG TYPE CHOSEN =============== Code SubComponent: Virtual Operating System ====================================== DETAILED PROBLEM DESCRIPTION ============================ Oracle process seems to check wrong OS local statistic (which include also FILESYSTEM caching etc.) Alert log shows WARNING: Heavy swapping observed on system in last 5 mins. pct of memory swapped in [2.08%] pct of memory swapped out [0.12%]. Please make sure there is no memory pressure and the SGA and PGA are configured correctly. Look at DBRM trace file for more details. but this is not reflected at OS level. DIAGNOSTIC ANALYSIS =================== 1. nmon shows virtual memory swapping does not occur at all - see attached file --nmon根本没有监控到swap动作 2. Oracle Database Server is 11.2.0.3 and contains fix for 10220118 3. Server configuration real mem: 144GB lowest value of fre memory : 87,65 GB --剩余内存充足 4. DBRM seems to use a wrong OS statistics - trace file is attached WORKAROUND? =========== No TECHNICAL IMPACT ================ Wrong diagnostic analyze. Message is bothering customer's DBA when in fact the warning message is misleading RELATED ISSUES (bugs, forums, RFAs) =================================== http://myforums.oracle.com/jive3/thread.jspa?threadID=1104581 10220118 HOW OFTEN DOES THE ISSUE REPRODUCE AT CUSTOMER SITE? ==================================================== Always DOES THE ISSUE REPRODUCE INTERNALLY? ==================================== No EXPLAIN WHY THE ISSUE WAS NOT TESTED INTERNALLY. ================================================ Unavailable Data Volume IS A TESTCASE AVAILABLE? ======================== No Link to IPS Package: ==================== not available
DBRM(Database Resource Manager)是11gR2中新特性中出现的后台进程,会在alert.log告警日志中反映OS操作系统最近5分钟是否有剧烈的swap活动,而在AIX平台上,由于BUG:14731911的存在,oracle的这个进程谎报了内存进行了swapin和swapout动作。我们知道,只有当物理内存真的不够用的情况下,才会去用swap(通常会配置成物理内存的2倍),而swap是非常耗费性能的(从物理磁盘读写)。但是个人认为这个bug的危害性并不大,仅仅只是在alert.log日志中报了一个WARNING,并没有因为这个影响导致对数据库更加负面的影响,因此是否打补丁到11.2.0.4就见仁见智了,如果想让alert.log平安无事,那么就可以升级一下patch。当然了,如果真的是因为OS内存吃紧造成的swap动作,就要区别对待了,因为此时的确会对数据库造成严重影响。要区分是否真的内存不足而非系统误报,那么主要还是通过nmon,topas,vmstat等监控工具来进行分析(linux下还可以用free监控)
对于AIX平台,其实还有另一个bug,只不过是unpublished base bug,而不是port-specific bug
AIX Platform
If your Platform is IBM-AIX then this is not the only possible reason for this alert log message.
For IBM AIX on POWER Systems (64-bit), there is also next known port-specific bug:
Bug 14731911 - FALSE SWAP WARNING MESSAGES PRINTED TO ALERT.LOG ON AIX
with unpublished base bug:
Bug 11801934 : WRONG PAGE-IN AND PAGE-OUT OS VM STATS IN AIX.
在vmware平台中的这个WARNING信息,如果不是bug引起,则很有可能和ora-04031/ora-04030相关,这个就严重多了
VMWare
Under VMWare, the messages may perhaps indicate a more serious issue, even when no memory related ORA-4031/ORA-4030 errors are reported.
Under circumstances, an instance in a virtual machine may be simply terminated by PMON due to error 471 without further errors in the alert log.
The OS logs may in such case report an out of memory condition like below:
/var/log/messages-20140629:Jun 27 18:29:06 vmh-msfc-dodp02 kernel: [1895074.304941] Out of memory: Kill process 42094 (oracle) score 391 or sacrifice child
/var/log/messages-20140629:Jun 27 18:29:06 vmh-msfc-dodp02 kernel: [1895074.305203] Killed process 42094, UID 303, (oracle) total-vm:189081588kB, anon-rss:27412kB, file-rss:109612
通常解决OS内存swap问题有以下几种方案:
vm.min_free_kbytes:Raising the value in /proc/sys/vm/min_free_kbytes will cause the system to start reclaiming memory at an earlier time than it would have before.
vm.vfs_cache_pressure:At the default value of vfs_cache_pressure = 100 the kernel will attempt to reclaim dentries and inodes at a “fair” rate with respect to pagecache and swapcache reclaim. Decreasing vfs_cache_pressure causes the kernel to prefer to retain dentry and inode caches. Increasing vfs_cache_pressure beyond 100 causes the kernel to prefer to reclaim dentries and inodes.
vm.swappiness:default 60,Apparently /proc/sys/vm/swappiness on Red Hat Linux allows the admin to tune how aggressively the kernel swaps out processes'memory. Decreasing the swappiness setting may result in improved Directory performance as the kernel holds more of the server process in memory longer before swapping it out.
设置以下值,以减少OOM(Out Of Memory)的可能性:
# Oracle-Validated setting for vm.min_free_kbytes is 51200 to avoid OOM killer
vm.min_free_kbytes = 51200
vm.swappiness = 40
vm.vfs_cache_pressure = 200

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Go 言語は、効率的かつ簡潔で習得が容易なプログラミング言語であり、同時プログラミングやネットワーク プログラミングに優れているため、開発者に好まれています。実際の開発ではデータベースの操作が欠かせませんが、今回はGo言語を使ってデータベースの追加・削除・変更・クエリ操作を実装する方法を紹介します。 Go 言語では、データベースを操作するために通常、よく使用される SQL パッケージや gorm などのサードパーティ ライブラリを使用します。ここでは SQL パッケージを例として、データベースの追加、削除、変更、クエリ操作を実装する方法を紹介します。 MySQL データベースを使用していると仮定します。

Hibernate ポリモーフィック マッピングは、継承されたクラスをデータベースにマップでき、次のマッピング タイプを提供します。 join-subclass: 親クラスのすべての列を含む、サブクラス用の別個のテーブルを作成します。 table-per-class: サブクラス固有の列のみを含む、サブクラス用の別個のテーブルを作成します。 Union-subclass: join-subclass と似ていますが、親クラス テーブルがすべてのサブクラス列を結合します。

Apple の最新リリースの iOS18、iPadOS18、および macOS Sequoia システムでは、さまざまな理由で紛失または破損した写真やビデオをユーザーが簡単に回復できるように設計された重要な機能が写真アプリケーションに追加されました。この新機能では、写真アプリのツール セクションに「Recovered」というアルバムが導入され、ユーザーがデバイス上に写真ライブラリに含まれていない写真やビデオがある場合に自動的に表示されます。 「Recovered」アルバムの登場により、データベースの破損、カメラ アプリケーションが写真ライブラリに正しく保存されない、または写真ライブラリを管理するサードパーティ アプリケーションによって失われた写真やビデオに対する解決策が提供されます。ユーザーはいくつかの簡単な手順を実行するだけで済みます

HTML はデータベースを直接読み取ることはできませんが、JavaScript と AJAX を通じて実現できます。この手順には、データベース接続の確立、クエリの送信、応答の処理、ページの更新が含まれます。この記事では、JavaScript、AJAX、および PHP を使用して MySQL データベースからデータを読み取る実践的な例を示し、クエリ結果を HTML ページに動的に表示する方法を示します。この例では、XMLHttpRequest を使用してデータベース接続を確立し、クエリを送信して応答を処理することで、ページ要素にデータを埋め込み、データベースを読み取る HTML の機能を実現します。

MySQLi を使用して PHP でデータベース接続を確立する方法: MySQLi 拡張機能を含める (require_once) 接続関数を作成する (functionconnect_to_db) 接続関数を呼び出す ($conn=connect_to_db()) クエリを実行する ($result=$conn->query()) 閉じる接続 ( $conn->close())

PHP でデータベース接続エラーを処理するには、次の手順を使用できます。 mysqli_connect_errno() を使用してエラー コードを取得します。 mysqli_connect_error() を使用してエラー メッセージを取得します。これらのエラー メッセージをキャプチャしてログに記録することで、データベース接続の問題を簡単に特定して解決でき、アプリケーションをスムーズに実行できるようになります。

PHP は Web サイト開発で広く使用されているバックエンド プログラミング言語であり、強力なデータベース操作機能を備えており、MySQL などのデータベースとの対話によく使用されます。ただし、中国語の文字エンコーディングは複雑であるため、データベース内で中国語の文字化けを処理するときに問題が発生することがよくあります。この記事では、文字化けの一般的な原因、解決策、具体的なコード例を含め、データベース内の中国語の文字化けを処理するための PHP のスキルと実践方法を紹介します。文字化けの一般的な原因は、データベースの文字セット設定が正しくないことです。データベースの作成時に、utf8 や u などの正しい文字セットを選択する必要があります。

Golang でデータベース コールバック関数を使用すると、次のことを実現できます。 指定されたデータベース操作が完了した後にカスタム コードを実行します。追加のコードを記述せずに、個別の関数を通じてカスタム動作を追加します。コールバック関数は、挿入、更新、削除、クエリ操作に使用できます。コールバック関数を使用するには、sql.Exec、sql.QueryRow、または sql.Query 関数を使用する必要があります。
