SAP Performance tuning with Oracle database 11G & AIX OS
Summary:-
This document contains how to tune the parameters in SAP level as well in database level based on your hardware, SAP application and database configuration.
Author: Brindavan Mookaiah
Designation: SAP BASIS Consultant
Instruction
The information about the parameters which show here are after analysis from our system landscape. It might be different from your landscape. If you are facing any performance issue in your system then you should analysis first for past three months data like response time, CPU utilization , database load , new z*program ,expensive SQL statement ,snote , might be if user access backend system from portal..etc… . This document only shows how to analysis and do the tuning based on the hardware, SAP application and database. We have analyzed and found that nothing can be increased any hardware or update patches or any z*program created by ABAP developers (include any new variants on existing z*program) or any expansive SQL statement using like “join queries ,using selection screen more” are causing performance issue. Here we have the system performed very well before and recently it causing performance issue due to the RAM has taken and shared to some other system, this caused performance issue in our system. But, system is not overloaded with any new SAP application changes, so we have to analysis and tune the parameters based on current RAM.
Information on eye
CPU utilization : If your CPU utilization is too high and not with SAP application and database then check with OS team to find the which process causing slow the system or might be increase the CPU resource
Database: If the system loaded with only database and not with CPU or RAM or SAP application then analyze the database and tune the parameters in database level .
SAP Application : If system slow due to the SAP application then tune the parameters like “abap/heap_area_total , abap/heap_area_nondia , abap/heap_area_dia , EM/TOTAL_SIZE_MB” based on your hardware RAM or check the active BG job or Z* program ,expensive SQL statement can be tune by ABAP pers .
Here we have the system performed very well before and recently it causing performance issue due to the RAM has taken and shared to some other system, this caused performance issue in our system.
SAP Appliaction : PPM system
OS : AIX
Database : Oracle 11G
We have checked first about the CPU utlizaton at OS level using nmon on AIX operating system.
Login in to OS level with "SIDADM" and type command " nmon"
and the type "C"
To check the RAM type "M"
To check the top process the type "topas"
Here we have found that the system is runnin very less free space of RAM.So we have increase the RAM or you have to find anyother way to tune the parameters to fix the perfomance issue.
Now check the SAP appliaction and Database as well.
We have analyzed the below parameters which are assigned value in SAP and DB level.
Based on our analysis we found that the system heap memory is not used at all. So, we are planning to take 2GB of memory (heap memory) and assign to DB.
We have some database buffer cache issue which physical read is too high not sufficient.
Also we are planning to tune the extend memory as well.
In SAP level you check the various parameters from t-code ST02 and T-code DB02 for database analysis
Please find the detail information to tune the parameters in SAP and DB level.
System | Server/LPAR | Instance | Month | Total Memory Available (GB) | Total Memory Used Max(GB) | Extended Memory Configured (GB) | Extended Memory Max. Used (GB) | Heap Memory Configured (GB) (DIA + non DIA | Heap Memory Max Used (GB) | ABAP Program Buffer Configured (MB) | Minimum ABAP Program Buffer Free (MB) | Export/Import buffer (MB) | Exp/Imp SHM (MB) | CUA buffer (MB) | Screen buffer (MB) | VMC Shared Pool Memory Configured (MB) | VMC Shared Pool Memory Used (MB) | Other |
system name | LPAR: | CI system name | 10 | 9,8 | 18 | 2,6 | 7,4 | 0,00 | 976,5 | 225,3 | 4 | 4 | 2,9 | 4,1 | Inactive | Inactive |
| |
DATABASE | ||||||||||||||||||
System | Server/LPAR | Instance | Month | Total Memory Available (GB) | Total Memory Used Max(GB) | DB Cache Memory Configured (GB) | DB Buffer Quality (%) | Shared Pool Memory Configured(GB) | Shared Pool buffer Quality | SGA (GB) | PGA(MB) | Other parameter | ||||||
system name | LPAR: | sap database host | 10 | 9,8 | 2,4 | 99,9 | 2,4 | 2,4 | 4,9 | 330 |
|
In SAP side we have
EM/TOTAL_SIZE_MB = 18432 MB
abap/heap_area_dia = 4000683008Bytes
abap/heap_area_nondia = 4000683008Bytes
abap/heap_area_total = 8000000000Bytes
We will change the parameter like below
EM/TOTAL_SIZE_MB = 10240MB
abap/heap_area_dia = 3000683008Bytes
abap/heap_area_nondia = 3000683008Bytes
abap/heap_area_total = 6000000000Bytes
By this way we will release 2GB of memory (1GB from abap/heap_area_dia and 1GB from abap/heap_area_nondia), this 2GB will be shared to DB parameter as shown below.
In DB side we have,
Buffer Cache Size (DB_CACHE_SIZE): 2617245696Bytes
Shared Pool Size (shared_pool_size): 2617245696Bytes
Maximum SGA Size (sga_max_size): 5284823040Bytes
We will add this additional 2GB to the below parameters,
Buffer Cache Size (DB_CACHE_SIZE): 3171557120Bytes
Shared Pool Size (shared_pool_size): 2931818496Bytes
Maximum SGA Size (sga_max_size): 6284823040Bytes
The below information is explained about the current database buffer and shared pool size in database level.
Current running Database buffer case size :-
Login into OS level with "oraSID" and excute the below SQL command
COLUMN size_for_estimate FORMAT 999,999,999,999 heading 'Cache Size (MB)'
COLUMN buffers_for_estimate FORMAT 999,999,999 heading 'Buffers'
COLUMN estd_physical_read_factor FORMAT 999.90 heading 'Estd Phys|Read Factor'
COLUMN estd_physical_reads FORMAT 999,999,999 heading 'Estd Phys| Reads'
column size_for_estimate format 999,999,999,999
column buffers_for_estimate format 999,999,999
column estd_physical_read_factor format 999.90
column estd_physical_reads format 999,999,999
SELECT size_for_estimate, buffers_for_estimate
, estd_physical_read_factor, estd_physical_reads
FROM V$DB_CACHE_ADVICE
WHERE name = 'DEFAULT'
AND block_size = (SELECT value FROM V$PARAMETER
WHERE name = 'db_block_size')
AND advice_status = 'ON';
The following output shows that if the cache was 2,160 MB, rather than the current size of 2,400 MB, the estimated number of physical reads would increase by a factor of 1.05.This means it would not be advisable to decrease the cache size
However, increasing the cache size 3024 would potentially decrease reads by a factor of 5%
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Estd Phys Estd Phys
Cache Size (MB) Buffers Read Factor Reads
---------------- ------------ ----------- ------------
240 29,565 4.97 132,153,593 --> 10 % of current szie
480 59,130 3.15 83,773,834
720 88,695 2.24 59,611,205
960 118,260 1.74 46,099,883
1,200 147,825 1.45 38,412,908
1,440 177,390 1.28 33,925,209
1,680 206,955 1.17 31,088,982
1,920 236,520 1.10 29,228,940
2,160 266,085 1.05 27,878,798
2,400 295,650 1.01 26,880,033 --> Current size
Estd Phys Estd Phys
Cache Size (MB) Buffers Read Factor Reads
---------------- ------------ ----------- ------------
2,496 307,476 1.00 26,568,531
2,640 325,215 .98 26,150,487
2,880 354,780 .96 25,506,595
3,120 384,345 .94 25,026,134
3,360 413,910 .93 24,608,745
3,600 443,475 .91 24,254,741
3,840 473,040 .90 23,938,076
4,080 502,605 .89 23,696,871
4,320 532,170 .88 23,504,570
4,560 561,735 .88 23,336,835 --> 200% Current size
Estd Phys Estd Phys
Cache Size (MB) Buffers Read Factor Reads
---------------- ------------ ----------- ------------
4,800 591,300 .87 23,175,753
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Checked the share pool size with following SQL Command
SELECT POOL,NAME, ROUND(BYTES/(1024*1024),2) FREE_MB FROM V$SGASTAT WHERE POOL='shared pool'AND NAME='free memory'ORDER BY BYTES DESC;
Shared pool size :-
Current size : 2496 MB
Free space size : 363 MB
You find the total SGA memory alloacted as well with following Command
select component,current_size from v$SGA_DYNAMIC_COMPONENTS;
We have only 363 MB free space left . So , we are planning to increase 2796 MB. We have done SGA monitoring & PGA also , In SGA montoring we have found there is no memory available.
we have checked in SAP level using T-code DB02.
And check the startup overhead in Shared Pool of Database is 19321563Bytes as well.
By increasing the above DB parameters we can reduce the overhead.
By this way the system will be bit faster than perivous.
Note: Before changing any parmeters do the complete anaysis from hardware side,database side and SAP side .There are so many parameters in SAP side to tune, before doing any parameters changes in SAP side raise OSS message to SAP and get their suggestion & recommendation from them.