ORA-27102: out of memory fault

Source: Internet
Author: User

ORA-27102: out of memory fault recent UAT database migration, because multiple databases need to be migrated to the same machine, after part of the completion, start the subsequent database encountered a ORA-27102 error, prompt memory exceeds, view the available memory of the system, much larger than the sga and pga databases that need to be started. What exactly is it? If you encounter a similar error, read it down. 1. fault description oracle @ v2013db02u: ~> Cat/etc/issueWelcome to SUSE Linux Enterprise Server 10 SP3 (x86_64)-Kernel \ r (\ l). oracle @ v2013db02u: ~> Sqlplus/as sysdbaSQL * Plus: Release 10.2.0.3.0-Production on Sat Mar 30 09:46:57 2013 Copyright (c) 1982,200 6, Oracle. all Rights Reserved. connected to an idle instance. SQL> startup pfile =/u02/database/MHUAT02/initMHUAT02.oraORA-27102: out of memoryLinux-x86_64 Error: 28: No space left on deviceSQL> ho oerr ora 2710227102,000 00, "out of memory" // * Cause: Out of memory // * Action: Consult the tr Ace file for details 2. Analysis and Solution-first, check the actual available memory of the system-the actual available memory of the system has more than 50 GB. SQL> exitDisconnectedoracle @ v2013db02u: /u02/database> free-m total used free shared buffers cachedMem: 64435 5968 58467 0 3 4045-/+ buffers/cache: 1919 62516 Swap: 32773 1232 31540 -- MetaLink provides a description of this problem [ID 301830.1] -- because of the kernel. the shmall value is set to a kernel that is too small. shmall this parameter is used to configure the maximum number of shared pages that the system can use at a time, the value of this parameter is always ceil (shmmax/PAGE_SIZE) Oracle 9i, 10g x86 and x86-64 flat The recommended server and default size are usually 2097152. In most cases, this parameter is sufficient. According to the calculation method above, the total page memory size can reach 8 GB (2097152*4096 bytes (shmall * PAGE_SIZE). Generally, the size of PAGE_SIZE is 4096 bytes, unless you use Big Pages or Huge Pages for system memory larger than 8 GB, for example, if the maximum size of the shared memory segment (shmmax) is 16 GB, you need to share the number of Pages (shmall) it is 16 GB/4KB = 16777216KB/4KB = 4194304 (PAGE) 32 GB, 64 GB, and so on. -- View the settings of the Local Machine v2013db02u :~ # Getconf PAGE_SIZE4096v2013db02u :~ #/Sbin/sysctl-a | grep shmvm. hugetlb_shm_group = 0kernel. shmmni = 4096 -- defines the maximum number of shared memory segments, that is, the number of shared memory segments that can be opened up. Generally, kernel is enough. shmall = 2097152 -- since the current server has multiple databases running, it should be caused by the total number of pages exceeding the kernel. shmmax = 4294967296 -- defines the maximum value of a single shared memory segment. Because the current server does not have sga greater than 4 GB, the original value can be retained -- when we used free, the system memory usage has exceeded 4 gb, indicating that the shmall has exceeded the maximum number of shared pages. v2013db02u :~ # Vi/etc/sysctl. conf -- modify the kernel. shmall value and change it to the number of pages that can be accommodated by 16 GB. Use the root identity v2013db02u :~ # Sysctl-p -- make the modification take effect immediately without restarting serverv2013db02u :~ #/Sbin/sysctl-a | grep shmvm. hugetlb_shm_group = 0kernel. shmmni = 4096kernel. shmall = 4192134kernel. shmmax = 4294967296 -- restart the database to run normally. Export ORACLE_SID = MHUAT02oracle @ v2013db02u: ~> Sqlplus/as sysdbaSQL * Plus: Release 10.2.0.3.0-Production on Sat Mar 30 10:29:18 2013 Copyright (c) 1982,200 6, Oracle. all Rights Reserved. connected to an idle instance. SQL> startup pfile =/u02/database/MHUAT02/initMHUAT02.oraORACLE instance started. total System Global Area 599785472 bytesFixed Size 2074568 bytesVariable Size 167774264 bytesDatabase Buffers 423624704 bytesRedo Buffers 6311936 TesDatabase mounted. database opened. 3. [ID 301830.1] Upon startup of Linux database get ORA-27102: out of memory Linux-X86_64 Error: 28: No space left on device [ID 301830.1] To Bottom modify Modified: Oct 4, 2012 Type: PROBLEMStatus: PUBLISHEDPriority: 3 Comments (0) In this Document Symptoms Ask Questions, Get Help, And Share You R Experiences With This Article Changes Cause Solution References ------------------------------------------------------------------------------ Applies: oracle Server-Standard Edition-Version 9.2.0.1 and laterOracle Server-Enterprise Edition-Version 9.2.0.1 and laterLinux x86-64Symptoms When trying to increase the SGA to approach half available RAM with an Oracle 64-bit version on L Inux 64-bit operating system, even though shmmax is set to match half the amount of RAM, you get the following error when trying to start the instance: SQL> startup nomountORA-27102: out of memoryLinux-x86_64 Error: 28: No space left on deviceAsk Questions, Get Help, And Share Your Experiences With This articlewocould you like to have e this topic further with other Oracle MERs, Oracle Employee S, and Industry Experts? Click here to join the discussion where you can ask questions, get help from others, and share your experiences with this specific article. discover discussions about other articles and helpful subjects by clicking here to access the main My Oracle Support Community page for Database Install/Upgrade. changes shmall is too small, most likely is set to the default setting of 2097152 $ cat/proc/sys/kernel/shmall2097152 Cause shmall is the total amount of shared memory, in pages, that the system can use at one time. solution Set shmall equal to the sum of all the SGAs on the system, divided by the page size. the page size can be determined using the following command: $ getconf PAGE_SIZE 4096For example, if the sum of all the SGAs on the system is 16 Gb and the result of '$ getconf PAGE_SIZE' is 4096 (4 KB) then set shmall to 4194304 pagesAs the root user set the shmall to 4194304 in the/etc/sysctl. conf file: kernel. shmall = 4194304 then run the following command: $ sysctl-p $ cat/proc/sys/kernel/shmall4194254note: The above command loads the new value and a reboot is not necessary. switch back to being the oracle user and retry the startup command. modifying/etc/sysctl. conf is a permanent workaround (applies at boot time ). if for some reason you do not want to change the system wide configuration, you can do it on the fly by directly changing the kernel pseudo do fs aka procfs. e.g. echo "4194304">/proc/sys/kernel/shmallUsing HUGEPAGES does not alter the calculation for sorting shmall.

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.