A ORA-00471 Processing Method of a new service to the machine room, hardware is IBM X3850 X5, hardware configuration is good, memory has 128 GB. SA has installed the system (sule 32bit) and notifies me to install the database. Busy for half a day. After oracle 9204 is installed, prepare to create a tablespace to import data. Because the data volume is large, I plan to create a 10 GB Data File to store the written data. It was not long before the database went down after the command for creating the tablespace was entered. After that, I retried the operation again and the fault still persists. The following is the log information: alert. log: Errors in file/u01/oracle/admin/orcl/bdump/orcl_pmon_13918.trc: ORA-00471: DBWR process terminated with errorWed Aug 21 15:56:16 2013 PMON: terminating instance due to error 471 Instance terminated by PMON, pid = 13918 trace file:/u01/oracle/admin/orcl/bdump/orcl_pmon_13918.trcOracle9i Enterprise Edition Release 9.2.0.4.0-ProductionWith the Partitioning, OLAP and Oracle Data Minin G optionsJServer Release 9.2.0.4.0-ProductionORACLE_HOME =/u01/oracle/product/9.2.0System name: LinuxNode name: dbprodRelease: 2.6.27.19-5-paeVersion: #1 SMP 04:40:21 + 0100 Machine: i686Instance name: orclRedo thread mounted by this instance: 1 Oracle process number: 2 Unix process pid: 13918, image: oracle @ dbprod </a> (PMON) *** 15:56:16. 296 *** session id: (1.1) 6: 16. 277 error 471 detected in background processORA-00471: DBWR process terminated with error/var/log/messages: Aug 21 14:01:14 dzjg kernel: lowmem_reserve []: 0 872 62301 62301Aug 21 14:01:14 dzjg kernel: node 0 Normal free: 3704kB min: 3744kB low: 4680kB high: 5616kB active: 3096kB inactive: 3092kB present: 893200kB ...... Aug 21 14:01:14 dzjg kernel: Out of memory: kill process 12867 (oracle) score 414016 or a childAug 21 14:01:14 dzjg kernel: Killed process 12867 (oracle) initially determined that the system memory is insufficient, however, you can use free-m to check that the system has 60 GB of memory. Check related documents online to analyze the fault as follows: 1. cause of failure: the addressing range is limited under a 32-bit CPU. the Linux kernel defines the following three areas: # DMA: 0x00000000-0x00999999 (0-16 MB) # LowMem: 0x01000000-0x037999999 (16-896 MB)-size: 880 MB # HighMem: 0x038000000-(determined by the server hardware) in a 32-bit system, memory is divided into the above three areas, DMA zone, Normal zone (also called LowMem) and HighMem zone. The DMA zone is mainly used for DMA data transmission, which is located in the low address space, its service object is various drivers with a size of 16 MB. LowMem (also called Normal zone) is the address space that kernel can directly access, and its size is 880 MB, basically, all kernel data is stored in In this region, if the kernel needs to access content in a higher address space, it must be mapped through Normal zone. If the address space is greater than 880 MB, HIghMem zone is used. the intercepted system log is as follows: Aug 21 14:01:14 dzjg kernel: lowmem_reserve []: 0 872 62301 62301Aug 21 14:01:14 dzjg kernel: Node 0 Normal free: 3704kB min: 3744kB low: 4680kB high: 5616kB active: 3096kB inactive: 3092kB present: 893200kB ...... Aug 21 14:01:14 dzjg kernel: Out of memory: kill process 12867 (oracle) score 414016 or a childAug 21 14:01:14 dzjg kernel: Killed process 12867 (oracle) we can see that the normal zone free 3704KB <min 3744KB, the kernel applies for the Minimum Memory 3744KB, at this time the system idle lowmem 3704KB, cannot meet the needs. This problem occurs because the kernel uses low memory to track all memory allocations. When low memory is exhausted, no matter how much memory is left in high memory, the out of memory killer mechanism will be triggered to kill the process to keep the system running normally. According to some documents, OOM-Killer has different performance in 2.4 and 2.6. In version 2.4, the new process (new memory application) is killed. On the other hand, the process that occupies the most memory is killed (this is very dangerous and can easily lead to system application paralysis ). Our current system kernel version is 2.6, which causes the system to kill the LGWR process of the database. 2. Why is there 60 GB of physical memory in our system and Lowmem is used up? The current system memory details are as follows. The red font is normal zone (also called lowmem zone). oracle @ dzjg: ~> Free-lm total used free shared buffers cachedMem: 62174 479 61695 0 49 299Low: 181 108 73 High: 61992 370 61622-/+ buffers/cache: 130 62044 Swap: 8189 0 8189oracle @ dzjg: ~> Cat/proc/meminfoMemTotal: 63666656 kBMemFree: 63093160 kBBuffers: 69124 kBCached: 352836 kBSwapCached: 0 kBActive: 173088 kBInactive: 299200 kBHighTotal: 63480528 kBHighFree: 63044476 kBLowTotal: 186128 kBLowFree: 48684 kBSwapTotal: 8385920 kB, we can see that lowmem total is 880 MB, which is seriously less than MB. The reason for this phenomenon is that 32-bit systems use a PAE kernel technology (memory expansion) to manage all the physical memory of the host, and the management of PAE Kernel consumes part of lowmem memory, which usually consumes MB lowmem every 16 GB. Our host's physical memory is as high as 60 GB, resulting in lowmem depletion. Explanation: Physical Address Extension (PAE) was first introduced to make up for the deficiency of 32-bit addresses in PC server applications. We know that the traditional IA32 architecture only has a 32-bit address bus, and the system can only accommodate up to 4 GB of memory. Such a large memory should be enough for common desktop applications. However, for server applications, it still seems insufficient because the server may carry a lot of applications running at the same time. The PAE technology expands the address to 36 bits, so that the system can accommodate 2 ^ 36 = 64 GB of memory. To sum up, we recommend the following solutions for your reference: Method 1: upgrade to a 64-bit system. This is the best method, because all the memory is low memory, if the message "out of memory" is displayed at this time, it is really low memory used up. It is really out of memory. Method 2: Unplug the memory so that the host's physical memory is about 8 GB, thus reducing PAE Kernel's excessive Lowmem consumption .; method 3: upgrade the system kernel to version 2.6 or later (or re-compile the System Kernel Parameter to increase the lowmem value)-use it with caution.