Posts

Showing posts from November, 2011

Disabling Invoker Servlet

Servlets can be triggered by HTTP clients even if they are not defined on web.xml files if the Invoker Servlet is active. You can check if the Invoker Servlet is being used by following these steps: 1. Log in to Visual Admin 2. Click on Log Configurator under Services 3. Go to Locations tab 4. Navigate to ROOT Location -> com -> sap -> engine -> services -> servlets_jsp -> server -> servlet -> InvokerServlet 5. Change the severity from ERROR to WARNING 6. Save and Apply to all "server nodes" You can check if InvokerServlet is used by checking if there are entries in the default trace files containing the pattern com.sap.engine.services.servlets_jsp.server.servlet.InvokerServlet The invoker servlet is disabled by default on NetWeaver 7.3. You can disable it in NW 04 by following these instructions: 1. Update J2EE engine as recommended in SAP note 1445998. 2. Start the Config Tool 3. Go to Global Server Configuration under Cluster-data tr

Meaning of XMB Found so Commonly in XI System

Someone asked what SXMB stands for. You see this pattern in the transactions used on SAP XI systems. It turns out that the XI system was internally known as E x change M essage B roker before it was released and S means that the object belongs to the basis component. The newer transactions, however, contain XI (for example SXI_CACHE). I know it is of no use to know what XMB stands for, but this question will be on almost every XI consultant's mind.

How to Optimize Statistics Collected in SAP

BRCONNECT's statistic collection follows a set of rules. These rules may sometimes give you poor performance. You can override the behaviour by maintaining explicit rules in DBSTATC table using DB21. Before you want to change the behaviour of statistic collection on a particular table, go to DB21 transaction and check if there is any entry already added for that table. You need to edit that entry instead of adding a new one. It would also help to export stats that are currently in place if you ever need them back. To add a new entry to DBSTATC, click on "New Entries" button and populate the fields as follows: 1. Database object with table name 2 Object type with 01 (indicates table) 3. Object owner with SAPR3 or SAP<SID> etc 4. Database with Oracle 5. Usage type with O 6. Active with A, U, N, R or I    A Statistics created if the table entries change by more than 50% (default)    U Unconditional creation of statistics.    N Don't create statist

How to Parse A Shell Command Twice

Let me introduce shell variables $0 ... $9, ${10}.., $# before I get to parsing shell command again using eval . Shell assigns the parameters that you pass though a command to its built in variables $1, $2... $9, ${10}... The number of arguments passed are stored in $#. Run this command: set a b c d e f g The command will set a to $1, b to $2, c to $3 ... g to $7 If I run the following command, the output will be c echo $3 Now let's look at the following example: echo $$ 9609 $$ returns the PID of the process echo $$$ 9609$ In the above example $$ is parsed as pre-defined variable $$ and the additional $ is appended to the output. What if I want to print $ followed by PID pf the process? I can do that by preceding that $ with \ \ tells the shell not to interpret the next character's special meaning. echo \$$$ $9609 Now let's get to parsing the command twice. If I want to print the last argument passed, how do I do it? In the following exampl

Layout of Tablespace in Database in an SAP System

The SAP systems before 6.1 had the following tablespace layout: SYSTEM - (Oracle Dictionary) PSAPTEMP - (Standard tablespace for sort operations) PSAPROLL - (Standard tablespace for rollback segments) PSAPBTABD/I - (Standard tablespace for frequently changed data) PSAPSTABD/I - (Standard tablespace for rarely changed data) PSAPPOOLD/I - (Standard tablespace for SAP pool tables) PSAPPROTD/I - (Standard tablespace for log information) PSAPLOADD/I - (Standard tablespace for SAP loads (executables)) PSAPSOURCED/I - (Standard tablespace for SAP sources (ABAP)) PSAPDOCUD/I - (Standard tablespace for documentation tables) PSAPCLUD/I - (Standard tablespace for SAP cluster data) PSAPDDICD/I - (Standard tablespace for the SAP data dictionary) PSAPUSER1D/I - (Standard tablespace for data customers) PSAPEL<REL>D/I - (Standard tablespace for release load programs) PSAPES<REL>D/I - (Standard tablespace for release source programs) This layout was based on logical divi

Recording Table Changes in SAP

One can log table changes on Control tables and Customizing tables in SAP. Logging is useful when you want to trace back when a particular table was changed. This function is only recommended on customizing tables and not on master or application tables as there is performance overhead. When table recording is activated, the number of database updates will be double as a "before image" of the record that is being changed is maintained. To enable table logging: Call transaction SE13, enter the table name. Click on change and in the next screen, go to technical settings. Check the option "Log data changes" Save the and activate the changes To activate table logging: Table logging doesn't begin until rec/client profile parameter is set. Set teh profile parameter rec/client (on all instance profiles) to OFF: Generally no recording (non-client specific tables for which logging option is checked are always logged) nnn: Logging for client-specific tables

Part3: BEGIN and END Block in AWK

This is Part3 of the series of posts on awk utility. Part1: Introduction to AWK Part2: Regular Expressions in AWK As awk is used for reporting, one might need options to print a header or footer to the report. BEGIN and END statements allow that. BEGIN is used for declaring variables and printing banners while END is used for summaries and totals. The main block (which we have been using till now) is where the data stream (example: file or std input) is processed. In the main block, each line from the input is processed one by one, whereas the BEGIN and END blocks are procesed only once. The following example shows BEGIN block being used without main or END block. awk 'BEGIN{print "Welcome"}' Welcome In the above example, we did not pass any input. Let's look at how begin and main block are used awk 'BEGIN{print "Welcome"}{print}' Welcome Hi this is me typing Hi this is me typing In the above example, the begin block printe

Asynchronous non-blocking I/O (AIO)

I/O operations are time consuming as the read/write is done on disks that need to rotate mechanically. If an application has to perfoamce a (synchronous, blocking) I/O operation, it has to wait until the operation completes, instead of using the available time to continue processing. This results in poor performance of the applications which are I/O intensive. AIO is a common method used by database and file servers to improve the performance concerning I/O operations. The application send the I/O request to a queue and as soon as it receives a confirmation that the operation is queued successfully, it continues to process while the I/O operation is performed in the background. In AIX, the number of asynchronous I/O kernel processes (AIO servers) can be tuned using minservers and maxservers  parameters. The number of min/maxservers is defined per processor. The maximum values these parameters can be assigned are 3 and 30 respectively. If you see the AIO servers reach the maximum t

ORU-10027: Buffer Overflow When Executing Stored Procedure

This post helps fix the following error in JDBC channel: com.sap.engine.interfaces.messaging.api.exception.MessagingException: Error processing request in sax parser: Error when executing statement for table/stored proc. java.sql.SQLException: ORA-20000: ORU-10027: buffer overflow, limit of 1000000 bytes Check the stored procedure and see if you can remove the DBMS_OUTPUT.PUT_LINE procedures. DBMS_OUTPUT is useful when you are collecting small amounts of debugging information or script/procedure output. If you need to capture more output lines, you use UTL_FILE.