When an SAP 4.x instance with over 2 GB of physical memory and Zero Administration Memory Management is started problems may occur.
If the buffers are large in 3.1I systems this effect can also appear (no Zero Administration Memory Management).
After Windows service packs or DB upgrade packages are imported in which DLLs have been exchanged this effect can also occur.
The instance does not start at all. The dev_w0 contains the entry:
*** ERROR => Reserve 512 MB error= 8
*** ERROR => Not enough contiguous space in process
*** ERROR => NTGetBaseAddress failed, no free region
The SAP R/3 instance under Windows NT starts with the message PXA_NO_SHARED_MEMORY. The dev_w0 contains the message:
A Error Code PXA_NO_SHARED_MEMORY.
A Allocating PXA in local storage, size=4MB
A *** WARNING: MINIMUM INSTALLATION ***
A---PXA------------------------------- A PXA INITIALIZATION
*** ERROR => [MapOsShm] Can't find free space for Shared Memory...
*** ERROR => [CreateOsShm] MapViewOfFile(6,00000394) failed with..
The address space of the work processes is fragmented by the unfavorable Basis addresses of Windows system DLLs or DB Client DLLs. Since these DLLs fragment the available free address space the large shared memory segments (PXA, extended memory...) may no longer be connected in the work process's virtual address space under certain circumstances.
The last one which was created is usually the affected ABAP program buffer. The emergency PXA buffer of only 4MB is started consecutively by the system.
The solutions that are available are listed below:
- To a 64-Bit version the application server should be upgraded. This upgrade is recommended if there is the availability of a 64-Bit version of SAP ABAP Server and the required 64-Bit Windows Version is supported by your hardware.
- On an x86_64 hardware architecture an SAP ABAP Server 4.6D can be used, but a 32-bit operating system should be used.
- ABAP Server kernel exists for x86_64, no 64-Bit 4.6D, but, if the Windows Server 2003 operating system is used for x64, from 2 GB (or 3 if in boot.ini the /3GB option has been set) to 4 Gigabyte the address space of the 32-bit kernel is increased. Reduce the address space fragmentation considerably by increasing the address space by one Gigabyte.
- Proceed according to 373326 If just after importing the 4.6D kernel the problem occurs
- The large shared memory segments should be decreased in size.
- In the instance profile (also for activated zero administration memory management) by setting the profile parameter em/address_space_MB = 250 the reserved local address space should be reduced for extended memory. To the ABAP program buffer this makes more contiguous memory space available. Only 250 MB extended memory can be allocated to the individual user, as a result, and then into the HEAP memory it changes. To eliminate the effect for now the value of the PXA buffer (abap/buffersize) should be decreased simultaneously.
The virtual address space is expanded.
- As described in 110172 if Windows 2000 or Windows Server 2003 Server is used, the '3GB' option is activated. This can completely solve your problem.
- The Basis addresses of the DLLs (rebase) should be changed.
- In particular for very large abap/buffersize parameters this method can be used.
- To clear the address space and to change the DLLs' basis addresses the "SAP Address Space Viewer" can be used. To this, the tool is attached.
- CAUTION: Split The I386. Into the same directory the files sapadrspcI386_1.sar andsapadrspcI386_2.sar should be unpacked.
- On an application server to rebase the affected DLLs quickly, brief instructions can be found below. As all work processes load the same DLLs therefore, only one the steps should be performed for each application server and for a single DISP+WORK process only.
- By the first rebasing (for example, if in an address space not relevant for the SAP System they were located) since the affected DLLs are not always reached it may be necessary to restart and rebase several times.
Since the rebasing of system DLLs are automatically replaced by the original DLLs Windows File Protection (WFP) may prevent it if Windows 2000 or Windows Server 2003 are used.
How to proceed:
a) To allow the SAP System to start successfully the large shared memory segments should be reduced in size as described above.
b) With a local administrator account the application server (for example, adm) should be logged in.
c) "SAP Address Space Viewer" should be installed: Into any directory the archive should be unpacked, and the program "setup.exe" should be started. All components that are being displayed should be selected, and the following dialogs should be confirmed.
d) By choosing Start -> Programs -> SAP Tools -> SAP Address Space Viewer the 'SAP Address Space Viewer' should be started.
e) The button 'System DLLs' should be pressed and then select 'Collect' in the window displayed. The default value displayed should be confirmed. To avoid conflicts with new Basis addresses the Windows system DLLs' basis addresses is determined. With 'OK' the window is exited. Once after the tool is installed this action has to be carried out only.
f) One DISP+WORK.EXE (but not the dispatcher -> the value in the column 'Type') should be selected in the process window displayed, and the 'Clean Address Space' button should be pressed.
g) The list of DLLs fragment the work process address area is displayed in the next window. Ensure to activate the checkbox 'Rebasing without Passcode' (new as of Version 6.2), and the 'Rebase' button should be pressed. Without the need of entering a passcode the address area provided is defragmented by this option defragments and SAP tests it.
The address area can be defragmented and the target area can be changed manually by deactivating the checkbox mentioned. However, since the consequences of this can be critical this is not recommended. SAP provides a passcode that should be entered as asked by the system for this reason when with this checkbox disabled one tries to rebase. Only after the selected address area is checked, the passcode will be released by SAP. After the passcode has been entered the rebasing should be performed.
A customer message that comprises a list of the DLLs located in the predefined address space with their corresponding base addresses and the rebasing key should be created to obtain the passcode for rebasing the affected DLLs. A list of the DLLs with one of the following commands:- sapadrlist.exe /p or with the button 'Print' can be generated.