AIX系统的非计算内存最大值设置过大导致Oracle数据库有些不能连接上
AIX系统、Oracle数据库以及其监听器都没有做任何的修改,发现连接远程的数据库,有时可以连接上,有时连接不上数据库。
错误描述:
AIX系统、Oracle数据库以及其监听器都没有做任何的修改,发现连接远程的数据库,有时可以连接上,有时连接不上数据库。
1、连接不上数据库时:回报ORA-12537:TNS连接己关闭
2、发现alert_SID.log没有发现错误
3、查看$ORACLE_HOME/network/log/listener.log日志错误如下:
25-MAY-2010 18:54:26 * (CONNECT_DATA=(SERVICE_NAME=testoms)(CID=(PROGRAM=D:\项目资料\plsqldev\plsqldev.exe)(HOST=89587D60816246E)(USER=Administrator))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.88.22.77)(PORT=4954)) * establish * testoms * 12518
TNS-12518: TNS:listener could not hand off client connection
TNS-12547: TNS:lost contact
TNS-12560: TNS:protocol adapter error
TNS-00517: Lost contact
IBM/AIX RISC System/6000 Error: 32: Broken pipe
原因分析:
连接数据库,有时可以连接,有时连接不上。
用ping数据库ip -t 发现网络很稳定
一般出现上面的ora-12537错误,一般是因为数据库的listener.ora文件没有配置好,导致这样的错误。但没有改变过该文件,,原来连接数据库一直很正常,突然发现有时能连接有时不能连接的现象。
用lsnrct status查看该监听正常。
该库为测试库,尝试了关闭数据库,再启动
>shutdown immediate 关闭正常
但启动时出现下面的错误
SQL> startup
Could not load program oracletestoms:
Could not load module /usr/lib/libperfstat.a(shr_64.o).
Dependent module liblvm.a(shr_64.o) could not be loaded.
Could not load module liblvm.a(shr_64.o).
System error: Not enough space
Could not load module oracle.
Dependent module /usr/lib/libperfstat.a(shr_64.o) could not be loaded.
Could not load module .
ORA-12547: TNS:lost contact
再次启动的错误又不一样:
SQL> startup
ORA-00443: background process "MMAN" did not start
感到这是AIX系统出现的问题,查看下交换空间
omstestdb:/> lsps -a
Page Space Physical Volume Volume Group Size %Used Active Auto Type
Could not load program /usr/bin/sed:
Dependent module libc.a(shr.o) could not be loaded.
Could not load module libc.a(shr.o).
Could not load program /usr/bin/awk:
Dependent module libc.a(shr.o) could not be loaded.
Could not load module libc.a(shr.o).
0517-041 lsps: Cannot list paging space .
提示不能列出交换空间的大小,从这可以知道这是由于AIX的内存耗尽。
用topas查看目前的AIX查看内存及其交换空间的使用情况。
AIX的comp(计算内存)使用了4 GB,而nocomp(非计算内存)也使用了4GB,而交换空间则有很多的空闲。系统总共8GB的内存,而oracle中内存一般使用comp内存。而oracle的缓存则使用nocomp,有很多sql语句一直没有释放,使用了4GB的内存,而AIXnocomp的最大值也为4GB,导致内存不足。
限制AIX的nocomp(非计算)内存最大值。
把AIX的
minperm% = 20
maxclient% = 80
maxperm% = 80
调整更低。
解决步骤:
查看原来的AIX的minperm%、maxclient%、maxperm%的值。如下:
Root用户查看:
>vmo –a
minperm% = 20
maxclient% = 80
maxperm% = 80
把minperm%设置成10,maxclient%设置成20,maxperm%设置成20
用root命令行执行:
1、
vmo -p -o minperm%=10
2、
vmo -p -o maxclient%=20
3、
vmo -p -o maxperm%=20
执行上面的操作,AIX的nocomp还不能释放内存,重启了AIX系统
# reboot
重启之后,重启oracle以及监听器
SQL>startup
$lsnrctl start
启动数据库及其监听器均正常,连接数据库则正常。
备注:
minperm 和 maxperm 参数的值
操作系统通过把在曾经读写的内存页留在实内存一满足不同要求。如果文件页面在它们的页帧被重新分配前被请求,那就节省了输入输出操作。该文件页面可以来自本地的或远程的(如 NFS)系统。
页帧使用的文件相对用于计算的(工作或程序文本)段的文件的比例是松散地受控于 minperm 和 maxperm 的值的:
如果 RAM 中文件页面所占的百分比高于 maxperm,页面替换的窃取只用于文件页。
如果 RAM 中文件页面所占的百分比低于 minperm,页面替换的窃取同时用于文件页和计算页。
如果 RAM 中文件页面所占的百分比介于 minperm 和 maxperm之间,页面替换只窃取文件页,除非文件页的重调入数量大于计算页数。
其中Noncomp在20%-80%之间,此时内存页交换算法通常只交换文件缓存页,但如果文件缓存页的交换率大于程序页时,程序页也同样被交换。由于SGA属于Comp页,数据文件缓存属于Noncomp页,而在数据大量访问时,文件缓存页的交换率大于程序页(SGA),因此大量的SGA页面被交换;为避免大量SGA页被交换,需要降低maxperm%值到35%以下,这样就只有文件缓存页面被交换,减少了SGA交换的次数。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Cara menyemak ruang jadual yang dimiliki oleh sebuah jadual dalam Oracle: 1. Gunakan pernyataan "SELECT" dan nyatakan nama jadual untuk mencari ruang jadual yang dimiliki oleh jadual yang ditentukan 2. Gunakan alat pengurusan pangkalan data yang disediakan oleh Oracle untuk menyemak; ruang jadual yang dimiliki oleh Alatan biasanya menyediakan antara muka grafik, menjadikan operasi lebih intuitif dan mudah 3. Dalam SQL*Plus, anda boleh melihat ruang jadual yang dimiliki dengan memasukkan perintah "DESCRIBEyour_table_name; .

Gambaran keseluruhan cara menggunakan PDO untuk menyambung ke pangkalan data Oracle: PDO (PHPDataObjects) ialah perpustakaan sambungan untuk pangkalan data operasi dalam PHP Ia menyediakan API bersatu untuk mengakses pelbagai jenis pangkalan data. Dalam artikel ini, kita akan membincangkan cara menggunakan PDO untuk menyambung ke pangkalan data Oracle dan melaksanakan beberapa operasi pangkalan data biasa. Langkah: Pasang sambungan pemacu pangkalan data Oracle Sebelum menggunakan PDO untuk menyambung ke pangkalan data Oracle, kita perlu memasang Oracle yang sepadan

Langkah-langkah untuk Oracle untuk mengambil hanya satu keping data pendua: 1. Gunakan pernyataan SELECT digabungkan dengan klausa GROUP BY dan HAVING untuk mencari data pendua 2. Gunakan ROWID untuk memadam data pendua untuk memastikan rekod data pendua yang tepat dipadamkan, atau gunakan fungsi "ROW_NUMBER" ()" untuk memadam data pendua, yang akan memadamkan semua rekod kecuali rekod pertama dalam setiap set data pendua; 3. Gunakan pernyataan "pilih kiraan(*) daripada" untuk mengembalikan bilangan rekod yang dipadamkan kepada memastikan hasilnya.

Melaksanakan import data ke dalam pangkalan data PHP dan Oracle Dalam pembangunan web, menggunakan PHP sebagai bahasa skrip sebelah pelayan boleh mengendalikan pangkalan data dengan mudah. Sebagai sistem pengurusan pangkalan data hubungan biasa, pangkalan data Oracle mempunyai keupayaan penyimpanan dan pemprosesan data yang kuat. Artikel ini akan memperkenalkan cara menggunakan PHP untuk mengimport data ke dalam pangkalan data Oracle dan memberikan contoh kod yang sepadan. Pertama, kita perlu memastikan bahawa pangkalan data PHP dan Oracle telah dipasang, dan PHP telah dikonfigurasikan kepada

Cara menggunakan PHP untuk melanjutkan PDO untuk menyambung ke pangkalan data Oracle Pengenalan: PHP ialah bahasa pengaturcaraan sebelah pelayan yang sangat popular, dan Oracle ialah sistem pengurusan pangkalan data hubungan yang biasa digunakan. Artikel ini akan memperkenalkan cara menggunakan sambungan PHP PDO (PHPDataObjects) untuk menyambung ke pangkalan data Oracle. 1. Pasang sambungan PDO_OCI Untuk menyambung ke pangkalan data Oracle, anda perlu memasang sambungan PDO_OCI terlebih dahulu. Berikut ialah langkah-langkah untuk memasang sambungan PDO_OCI: Pastikan

Cara menggunakan pengumpulan sambungan dengan cekap dalam pangkalan data PHP dan Oracle Pengenalan: Apabila membangunkan aplikasi PHP, menggunakan pangkalan data adalah bahagian penting. Apabila berinteraksi dengan pangkalan data Oracle, penggunaan kumpulan sambungan adalah penting untuk meningkatkan prestasi dan kecekapan aplikasi. Artikel ini akan memperkenalkan cara menggunakan kumpulan sambungan pangkalan data Oracle dengan cekap dalam PHP dan menyediakan contoh kod yang sepadan. 1. Konsep dan kelebihan penyatuan sambungan Pengumpulan penyambungan ialah teknologi untuk menguruskan sambungan pangkalan data Ia mewujudkan sekumpulan sambungan terlebih dahulu dan mengekalkan a

Pangkalan data oracle memerlukan jdk. Sebabnya ialah: 1. Apabila menggunakan perisian atau fungsi tertentu, perisian atau perpustakaan lain yang disertakan dalam JDK diperlukan 2. Java JDK perlu dipasang untuk menjalankan program Java dalam pangkalan data Oracle; menyediakan Membangunkan dan menyusun fungsi aplikasi Java 4. Memenuhi keperluan Oracle untuk fungsi Java untuk membantu melaksanakan dan melaksanakan fungsi tertentu.

Langkah-langkah untuk menanyakan saiz ruang jadual dalam Oracle: 1. Log masuk ke pangkalan data Oracle menggunakan akaun pentadbir pangkalan data 2. Gunakan pernyataan "PILIH" untuk melihat senarai ruang 3. Terdapat tiga kaedah untuk menanyakan saiz ruang jadual; : gunakan pakej dbms_utility untuk membuat pertanyaan, dan gunakan Pertanyaan paparan dba_segments, gunakan pertanyaan paparan dba_data_files 4. Gunakan fungsi "DBMS_OUTPUT.PUT_LINE" atau kaedah lain untuk memaparkan keputusan untuk memaparkan hasil pertanyaan.
