Home » Articles posted by Prabhat

Author Archives: Prabhat

the guilt

we always have a feeling of guilt somewhere either on the surface or buried deep inside our minds, that reminds us of the actions… then there will always be a possibility that the answer for the guilt is never justified, never good enough… then thoughts will pound up which will remind us that we deserve the guilt… but remember there will always be one person who could tell, that we doesn’t deserve…

find if a parameter is dynamic in HANA

We many times need to know whether a hana parameter is dynamic or a restart is required to make it effective. To check this goto below

  • open cdexe on the OS side, if you already configured this alias
  • otherwise go to the folder “cd /usr/sap/$SAPSYSTEMNAME/SYS/exe/hdb”
  • open the config folder by command “cd config”
  • open the Master ini files you need with the editor (do not adjust value in these files)
  • check the hint for the parameter you are looking for, there you will find configure online or offline

Example

Below files contains details about

  • Default values (not to be adjusted)
    • /usr/sap/<sid>/HDB<inst>/exe/config
    • /hana/shared/<sid>/HDB<inst>/exe/config
  • Valid for a specific service (e.g. indexserver) or component (e.g. multidb) on all hosts
    • /usr/sap/<sid>/SYS/global/hdb/custom/config/<service_or_component>.ini
    • /hana/shared/global/hdb/custom/config/<service_or_component>.ini
  • Valid for all services on all hosts
    • /usr/sap/<sid>/SYS/global/hdb/custom/config/global.ini
    • /hana/shared/<sid>/global/hdb/custom/config/global.ini
  • Valid for a specific service (e.g. indexserver) or component (e.g. multidb) on a specific host <host>
    • /usr/sap/<sid>/HDB<inst>/<host>/<service_or_component>.ini
    • /hana/shared/HDB<inst>/<host>/<service_or_component>.ini
  • Valid for all services on a specific host <host>
    • /usr/sap/<sid>/HDB<inst>/<host>/global.ini
    • /hana/shared/<sid>/HDB<inst>/<host>/global.ini

 

understanding sgen and pxa buffer

There are n number of ABAP program in the system used for various functionalities/purposes, all these ABAP programs are stored in REPOSRC, for example below are the total number of programs in a S4HANA system.

Some are kind of must programs that needs to be compiled instantly when a user logs into the system or executes a transaction code. These compiled codes are placed in a table REPOLOAD, for example below are the total entries in a S4HANA system.

This table REPOLOAD is tightly integrated with PXA buffer, the PXA buffer is controlled by below parameters

  • abap/buffersize
  • abap/pxa_cache
  • abap/pxa_preload
  • abap/buffer_fragments

we can see the utilization of PXA or program buffer in ST02

Now,

  • When we start the AS ABAP Server, pxastat and pxanew in work directory is created, first wp-1 loads pxauserload, then pxanew, then pxastat, then will rename pxanew to pxastat, this deletes old pxastat, the pxa buffer is filled up to the percentage specified in abap/pxa_preload, once it is reached the preload is stopped. Once wp shutsdown it writes its pxa to pxanew.
  • if we run the ABAP program (or tcode) first time, it compiles and stores in REPOLOAD then stores in PXA buffer.
  • If we run another time the same ABAP program (or tcode), and the compiled program in REPOLOAD is changed then it will relook in REPOSRC compile it, place the compiled program in REPOLOAD, whenever a program is compiled it is placed in PXA buffer.

Now as I mentioned above parameters, there can be situations where the program might be dropped, then it will be again picked up from REPOLOAD into PXA, now if DB version is different we will get dump LOAD_PROGRAM_LOST.

Now if we activate a program from SE80 or SE38 then the activation timestamp is changed and PXA marks it as old, this information is sent to all abap servers asynchronously. Then all the reactivation process mentioned above is carried out.

With S4HANA we have a new job introduced with 1909, “SAP_SGEN_REGENERATE_LOADS”. The purpose of this is to minimize waiting times for users or developers by regenerating invalidated loads.

This job is periodic job which runs every hour, and run sgen for invalidated loads.

References

aws cli – snapshots listing and correlations

Today i was working on one curious issue, and I created few AWS CLI Snippets. I think the best use case of below snippets (in sequence) will be when we deregister an AMI, as this will result in detachment of snapshots attached to it and the snapshots can be deleted, but there can be cases when we want to preserve the snapshots, usually when we have huge amount of snapshots then listing and searching for snapshot-ids in AWS console may gets timed out, in those cases you can use below snippets to get the desired results. 

1. run below to get the list of volume-ids attached to an instance, in this we wanted to know VolumeId, InstanceId, DeviceName, and any relevant tag like Name tag, etc.

aws ec2 describe-instances --filters "Name=tag:Name,Values=<hostname>" --query "Reservations[].Instances[].{deviceID:BlockDeviceMappings[].Ebs.VolumeId,deviceName:BlockDeviceMappings[].DeviceName,InstanceId:InstanceId,Name:Tags[?Key=='Name']|[0].Value}"

2. copy one Volume-Id from above step, and add in below section, in this step we will be finding the date and time of the snapshots, we will be copying the date and time of the restore snapshot-ids to be restored, note if you are restoring an instance then it is advisable to restore all attached volumes, but just to bring the instance up you can restore root volume (/dev/sda1) also.

aws ec2 describe-snapshots --filters "Name=volume-id,Values=<volume-id-from-step-1>" --query "Snapshots[*].{DateTime:StartTime,Volume:VolumeId,SnapshotId:SnapshotId,Description:Description}" --output table

3. now we will use the date and time from above and will run to get the exact snapshot ids on that time for that volume-id.

aws ec2 describe-snapshots --filters "Name=volume-id,Values=<volume-id-from-step-1>" "Name=start-time,Values=2021-08-11T10:19*<this-is-date-from-step-2>" --query "Snapshots[].{DateTime:StartTime,Volume:VolumeId,SnapshotId:SnapshotId,Description:Description}" --output table


4. now run the step-3 for all volume-ids we got from step-1, from step-1 you will also see the association that is what volume-ids were attached as what block device like /dev/sda1, etc.


the home

lately I have been thinking about the meaning of home and I realize that home can be so much more than just a roof over our head. home can be that feeling that we have when everything in life finally comes together or a place that we can fill with beautiful memories now, home isn’t always guaranteed its something we might have to fight hard for, even sacrifice for something that needs to be preserved and protected because there is nothing better than having a place that we can share with the people we love.

barrier and acceptance

Sometimes we behave just like a mountain, we become firm and strong, which may be good, but does it mean we start creating barrier, start taking counter actions on the forces coming from opposite sides, sometimes without realizing…., but soon after enough counter actions we start to find the equilibrium that’s when we move towards acceptance of a new path because when we collapse these barrier it not always brings discomfort, it sometimes brings great comfort.

the heart

the heart is capable of extraordinary things, it gives us life, makes us feel love, and in some cases, can be passed on. its memories kept alive, and of course the heart is full of mystery, it can remind us of who we are or tear us in two directions and, sure, along the way the heart is bound to pick up scars, painful reminders of the past but if we trust it, follow it where it wants us to go, it will always lead us in the right direction.

How to mount oneDrive as Network Drive?

  • Open one drive in browser, sign in, and copy the text after cid= field in your url. For reference you have to copy the entries marked.

  • Open your My Computer (or Windows Explorer) and click on Map Network Drive

  • Once drive is created and accessible, then rename it with more meaningful name.

new beginnings

its easy to think of new beginnings as something that just happens when the time is right. The life’s way of wiping the slate clean, to allow us to change course. but the truth is, new beginnings are never easy. they usually remind us of where we’ve been, as much as where we’re headed. What we have to sacrifice and leave behind if we choose to continue on, and is there a point in the journey where it’s simply too late to change course even if we wanted to? in the end, maybe trying to change course is more about realizing we never needed to, and that’s okay

the unknows

stepping into the unknown is never easy, there is always that inner voice telling us to hold back from making a big commitment, or moving into the next chapter of our life. sometime we just need to be reminded of what we already have, and trust that is is worth fighting for. because when we do, we’ll be amazed at the results.

Categories

Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 3 other subscribers