728x90

onbar physical restore (onbar -r -p) 또는 onbar logical restore중 out of virtual shared memory 오류가 발생하는 경우가 있습니다.

여러 원인이 있겠습니다만 저의 경우는 Virtual segment 크기를 큰 값으로 재설정한 후 재시작했었습니다.

그러나 다시 생각해보면 oninit 프로세스를 재시작(oninit -r)해서 된것이지 Virtual segment 크기가 때문이 아닐 수도 있겠네요.


SunOS 5.10, 인포믹스 11.50, Netvault 백업 솔루션 환경이었고

커널파라미터까지는 확인하지 못했는데, 커널 파라미터 값이 문제가 될가능성이 높습니다.


ENOSPC error while allocating shared memory

http://www-01.ibm.com/support/docview.wss?uid=swg21614434


Running oninit but error shmget: [EEXIST][17]: key 52604801: shared memory already exists

http://www-01.ibm.com/support/docview.wss?uid=swg21430996

728x90
728x90

Problem(Abstract)

You observe messages in your online.log file referencing alarmprogram.sh and with return code 126 or 127. What do they mean?

Symptom

Messages printed to your Informix Server online.log file reference alarmprogram.sh and a return code of 126 or 127. Examples:

06:45:09 Process exited with return code 126: /bin/sh /bin/sh -c /IDS/1170uc7/etc/alarmprogram.sh 2 23 "Logical Log 12 Complete, timestamp: 0xd3d56." "Logical Log 12 Complete, timestamp: 0xd3d56." "" 23001

20:01:55 Process exited with return code 127: /bin/sh /bin/sh -c /usr/informix/etc/alarmprogram.sh 2 18 "Log Backup completed: 9." "Logical Log 9 - Backup Completed" "" 18001

Cause

The return codes are bourne and korn shell return codes. Their meanings:

  • 126....not an executable 
  • 127....command not found

The Informix Server attempts to execute the script pointed to by the ALARMPROGRAM configuration program, using the korn shell, when events occur that are important to the server. If the call fails the server writes a message to the server log file describing the call. The events themselves may be failures or successes. Return code 126 is printed when the server cannot execute the script referenced by ALARMPROGRAM. Return code 127 is printed when the server cannot find the script.


Resolving the problem

Confirm that the alarm script designated by ALARMPROGRAM is correctly referenced by the configured path and confirm that it is executable. By default, alarmprogram.sh uses the korn shell (ksh). If the return code is 126, confirm that the korn shell is installed and located in /bin (/bin/ksh).


Note: If the korn shell is not installed, and the default shell is bash, you may want to change "#! /bin/ksh" at the top of alarmprogram.sh to "#! /bin/bash" as an alternative to installing the korn shell.


http://www-01.ibm.com/support/docview.wss?uid=swg21635728


728x90
728x90

인포믹스 스케줄러에 기본으로 등록된 TASK로 인해 online.log 파일에서 아래의 메시지가 발생하는 경우가 있습니다.

해당 메시지는 테이블의 압축률을 계산하는 프로시저 admin_fragment_command 의 실행 결과를 표시하는 것입니다.

압축기능 라이센스를 보유하지 않은 고객이라면 의미 없는 작업이므로 비활성화 하는 것이 좋습니다.


아래 작업 후에 인포믹스 프로세스를 재시작해야 합니다.


Question

Why do we see estimate compression message in the online.log as shown below, when we did run any compression command? 

Snippet from the online.log:
--------------------------------------
14:50:28 SCHAPI Estimate Compression for txc07_4q:"ssadmin".ubevent started 
14:50:30 admin_fragment_command('fragment estimate_compression ','69206165') succeeded 
14:50:30 SCHAPI Estimate Compression for txc07_4q:"ssadmin".ubflag started 
14:50:31 admin_fragment_command('fragment estimate_compression ','69206167') succeeded 
14:50:31 SCHAPI Estimate Compression for txc07_4q:"ssadmin".ubkeys started 
14:50:35 admin_fragment_command('fragment estimate_compression ','69206168') succeeded 
-------------------------------------- 

Answer

When you connect to the database via OAT and while browsing through the menu in OAT, you click on "Storage" under "Space Administration" section, it will deploy a task called "mon_compression_estimates" in the scheduler. Whenever the task executes, it generates the message, SCHAPI Estimate Compression, in the online.log.

You can run the following SQL statement to stop the task from being executed, hence stop the message from being displayed in the online.log.

UPDATE sysadmin:ph_task 
SET tk_enable = "F" 
WHERE tk_name = "mon_compression_estimates";

You will still need to bounce the informix instance after the update.


http://www-01.ibm.com/support/docview.wss?uid=swg21615415

728x90
728x90
online.log 파일에서 아래의 메시지가 나오는 경우가 있습니다.
Warning: PDQ functionality is not supported in IDS Growth Edition.
이 메시지는 Growth 또는 Workgroup Edition 에서 PDQ 기능을 설정하려 할 때 발생하는 메시지입니다.
Growth 또는 Workgroup 에서는 지원하지 않는 기능이므로 PDQ 기능이 활성화되지 않으며, 
인포믹스 프로세스에 영향은 주지 않지만 관리목적으로 비활성화 할 수 있습니다.

Problem(Abstract)

Customer is getting warning messages when AUS is executed even if PDQPRIORITY is 0 in onconfig

Symptom

online.log messages:

Warning: PDQ functionality is not supported in IDS Growth Edition.

The value of PDQPRIORITY cannot be set to 10. It is reset to 0.  

Cause

the default PDQ priority configured to run AUS is 10%

Environment

IDS 11.50.FC8GE Growth Edition. C is getting warning messages in the online.log after the following tasks are executed.

Auto Update Statistics Evaluation

Auto Update Statistics Refresh  

PDQPRIORITY is set to 0 in the onconfig


Diagnosing the problem

If the following select retunr integer bigger than zero ( 0 ):

select value from ph_threshold where name="AUS_PDQ";

Resolving the problem

Execute the following sentences in dbaccess

database sysadmin;                                  

update ph_threshold set value=0 where name="AUS_PDQ";



http://www-01.ibm.com/support/docview.wss?uid=swg21569243

728x90
728x90

Technote (troubleshooting)


Problem(Abstract)

This article describes one known cause for the error KAIO: out of OS resources, errno 11

Symptom

You are using IBM Informix® Dynamic Server on the AIX operating system and you find this error in the message log:


KAIO: out of OS resources, errno = 11, pid = 117908 on different Versions of   AIX  *** _aiowrite() returning EAGAIN ***


Cause

Either AIX kernal tuning parameter, maxreqs is set low. Or, the IBM Informix® Dynamic Server's environment variable, IFMX_AIXKAIO_NUM_REQ for maximum number of requests, is set too low for the current I/O load on the system. The default value, if the environment variable is not set, is 1024. 

maxreqs - is AIX kernel tuning parameter which specifies the maximum number of asynchronous I/O requests that can be outstanding at any one time. The default value is 4096.

Resolving the problem

  • Set environment variable IFMX_AIXKAIO_NUM_REQ to a higher value. The minimum value is 512 and the maximum value is the Maximum number of requests set for Kernel AIO.
  • If Informix AIO is used, increase the number of AIO VP's in the onCONFIG configuration file so I/O will be faster and the queue for AIO control blocks will not overflow.

If the above solutions does not work, refer to the related information section to find how to tune OS kernel.


https://www-304.ibm.com/support/docview.wss?uid=swg21188868

728x90
728x90


Problem(Abstract)

KAIO: out of OS resources, errno = 11, pid = 117908 on different Versions of AIX *** _aiowrite() returning EAGAIN *** errors in the IBM Informix Dynamic Server message log.

Cause

The MAXIMUM number of REQUESTS kernel parameter is set low or to the default value of 4096 at the operating system level.

MAXIMUM number of REQUESTS
The maximum number of requests for Asynchronous I/O (AIO).


Resolving the problem

Please note smitty is not available on AIX 6 or higher  Asynchronous I/O setup via smit / smitty is also not feasible, since its dynamically enabled. I would contact AIX Support to see how to manually change the Maximum number of requests

The solution is to change the MAXIMUM number of REQUESTS by using SMIT:

    1. From the command line type: 
      $ smitty chgaio

    2. From the menu select:
      MAXIMUM number of REQUESTS

    3. Change the value for this option to 12288 then press Enter

    4. Press the F10 key to exit SMIT

    5. Reboot the UNIX system




KAIO: out of OS resources, errno = 11, pid = 117908 on different Versions of AIX *** _aiowrite() returning EAGAIN *** errors in the IBM Informix Dynamic Server message log

http://www-01.ibm.com/support/docview.wss?rs=0&uid=swg21155189


KAIO: out of OS resources, errno = 11 _aiowrite() returning EAGAIN

https://www-304.ibm.com/support/docview.wss?uid=swg21188868


Tuning Kernel Asynchronous IO (KAIO) for IBM Informix on AIX

http://www-01.ibm.com/support/docview.wss?uid=swg21083472

728x90
728x90

Technote (troubleshooting)


Problem(Abstract)

When using IBM Informix® several output sort and temp files starting with bui* srt* pro* may flood the /tmp directory, causing aggressive disk I/O operations and therefore Unix/Linux swap space usage.

Symptom

Several files with the prefix below (bui* srt* pro*) are created in the /tmp directory causing the filesystem to get full:

-rw------- 1 root informix 770048 Out 4 12:03 bui0920471_031
-rw------- 1 root informix 761856 Out 4 12:03 bui0920471_032
-rw------- 1 root informix 761856 Out 4 12:03 bui0920471_033
-rw------- 1 root informix 778240 Out 4 12:03 bui0920471_034
-rw------- 1 root informix 761856 Out 4 12:03 pro0920471_035
-rw------- 1 root informix 761856 Out 4 12:03 pro0920471_036
-rw------- 1 root informix 770048 Out 4 12:03 pro0920471_037
-rw------- 1 root informix 6995968 Out 4 12:03 pro0920471_038
-rw------- 1 root informix 3497984 Out 4 12:03 pro0920471_039
-rw------- 1 root informix 3792896 Out 4 12:03 pro0920471_040
-rw------- 1 root informix 4038656 Out 4 12:03 pro0920471_041
-rw------- 1 root informix 964337664 Out 4 12:23 pro0920471_042
-rw------- 1 root informix 968654848 Out 4 12:23 pro0920471_043
-rw------- 1 root informix 967467008 Out 4 12:23 srt0920471_044
-rw------- 1 root informix 963878912 Out 4 12:23 srt0920471_045
-rw------- 1 root informix 966320128 Out 4 12:23 srt0920471_046
-rw------- 1 root informix 961658880 Out 4 12:23 srt0920471_047

High intensive I/O activity can be seen, causing system overload.


Cause

Queries performing sort operations should consume a lot of temp space in the Informix temporary dbspaces. But if the environment variable PSORT_DBTEMP is set, the engine will send all the temporary data to its value. Also, it is possible that temporary dbspaces are no set in the DBSPACETEMP onconfig parameter, and therefore, causing all temporary data to be written to the ROOT dbspace and the /tmp filesystem.

Possibles causes:

1 - PSORT_DBTEMP environment variable is set;
2 - No temporary dbspace is set in the DBSPACETEMP onconfig parameter;
3 - There's no space available in the temporary dbspaces;
4 - Temp directories have wrong permissions.


Diagnosing the problem

1 - Check for the output from onstat -g env command and look for the value of the PSORT_DBTEMP environment variable:

PSORT_DBTEMP /tmp

2 - Set DBSPACETEMP onconfig parameter to a valid temporary dbspace;

3 - Check that your temp directories have 664 permissions.

Resolving the problem

1) Unset PSORT_DBTEMP environment variable:

$ unset PSORT_DBTEMP

2) Make sure that your onconfig parameter DBSPACETEMP is set to a temporary dbspace:
$ onstat -c|grep DBSPACETEMP
# DBSPACETEMP - The list of dbspaces used to store temporary
DBSPACETEMP tempdbs1,tempdbs2

Notice: You may want to check Technote 1292093 in the 'Related Information' section of this document.

3) Check if there's enough room for the sort operations in the temporary dbspaces:
$ dbaccess sysmaster -

Database selected.

> select name,
count(*) chunks, sum(chksize), sum(nfree)
from syschunks, sysdbspaces
where name matches '*temp*' and syschunks.dbsnum = sysdbspaces.dbsnum
group by 1;

>

name tempdbs2
chunks 1
(sum) 5000
(sum) 4939

name tempdbs1
chunks 1
(sum) 5000
(sum) 4947

2 row(s) retrieved.

>

This values are displayed in pages. 
You might want to multiply those values by the pagesize to get it in kilobytes.


http://www-01.ibm.com/support/docview.wss?uid=swg21567274

728x90
728x90

Technote (troubleshooting)


Problem(Abstract)

When attempting to insert rows into a table, the following error is returned to the client:

ISAM error 136 : no more extents

Cause

IDS can only allocate a maximum of 16,777,215 disk pages per table partition or fragment. It should also be noted that this is independent of the dbspace configured page size.
Also, IDS can only track approximately 200 extents (logical grouping of disk pages) per table partition or fragment. The most likely root cause will be that one or both these values have been realized.


Diagnosing the problem

As user informix, run oncheck -pt <database>:<table name >".


In the resulting output, examine the value for "Number of pages used" or "Number of pages allocated". If either one is equated to 16,777,215 then this is the most likely root cause of the problem. 

However, should these values not be close to 16,777,215 then it's likely that the table has already allocated a high number of smaller extents (logical grouping of data or index pages).
If so , then the value for "Number of extents" will be close to or greater than 200, (there is no 'hard' limit due to various architectural reasons).

Example output to oncheck -pt :

TBLspace Report for dbase:informix.customer

Physical Address 1:36878
Creation date 801 Page Locking
TBLspace use 4 bit bit-maps
Maximum row size 134
Number of special columns 0
Number of keys 0
Number of extents 186
Current serial value 10139
Current SERIAL8 value 1
Current BIGSERIAL value 1
Current REFID value 2
First extent size 8
Next extent size 16
Number of pages allocated 16777215
Number of pages used 16777215
Number of data pages 16777215
Number of rows 1118341
Partition partnum 1049005
Partition lockid 1049005


Resolving the problem

If the value for Number of pages used or allocated is at 16777215, then try one of the following recommendations:

Non Fragmented Tables:

1. If the indexes defined for the table are attached , drop and recreate the table's indexes as "detached" (in their own separate partitions).

Note: A CREATE INDEX statement that does not specify IN TABLE as its storage clause creates indexes that store their pages in separate partitions from the data pages by default.

2. Fragment the table using a Round Robin or an expression Based strategy. This will result in additional partitions being created in order to track the table internally.

If the value for Number of extents is close or exceeds 200, then :

Reorganize the table using a larger initial extent size to defeat a high number of smaller extents being allocated.

3. Recreate the table in a dbspace with a larger page size. If you do this make sure you run dbschema -ss on the database first. This will capture the syntax for all database objects that depend on the table you are about to drop and create. After the table is created and loaded then run the dbschema output file. It's likely most of the objects will fail to create because they already exist but the objects that aren't there will be created. This method ensures you will not miss recreating any database objects dependant on the table ( synonyms, triggers, views, constraints, and so on ). Also, make sure you tune the BUFFERPOOL parameter for the new dbspace page size. If this wasn't already done then Informix will automatically create one for you with the default size.


http://www-01.ibm.com/support/docview.wss?uid=swg21395852

728x90
728x90

Technote (FAQ)


Question

Maximum number of pages and rows allowed in fragmented and unfragmented tables are related to the ROWID.

Encountered an sql error along with error 136, no more extents.

Answer


Limits in unfragmented tables and indexes

Every row in an unfragmented table has a number called a ROWID that uniquely identifies the row within the table and also indicates where in the table the row is stored. The ROWID for a row is represented by a 4 byte integer, the most significant 3 bytes of that integer indicate the page where the row is stored and the least significant byte indicates the slot on that page where the row is stored.

    Tip: If you represent the ROWID as a hexidecimal number the leftmost 6 digits are the page number and the rightmost 2 digits are the slot number.
      Example: 

      A row with a ROWID of 0x4F0033 is located in slot 0x33 (51) of page 0x4F00 (20224).


3 bytes are used to store the page number a maximum of 16,777,215 pages can be used in one table. 

1 byte is used to store the slot number, a single page can have at most 255 slots/rows. 

The maximum number of rows in a table or fragment is 4,278,189,825. 

These are all theoretical limits. The practical limits are lower because of the following: 
    • Pages are also used for purposes other than rows of data. Examples include attached indexes, and bitmap pages.
    • Some pages are used as remainder pages.
    • To fit the maximum number of rows in a data page the rows must be very small. Most of the time fewer rows are stored on a page, reducing the maximum number of rows that the table can hold.


Limits for fragmented tables and indexes

If a table is fragmented then the ROWID for each row is only guaranteed to be unique within its fragment. So to determine the limits in a fragmented table multiply the limits for an unfragmented table times the number of fragments used by your table. (The number of rows per page remains the same, of course) 

OnLine and Informix Dynamic Server (IDS) engines allow a maximum of 2047 fragments in a single table. IBM Informix Extended Parallel Server (XPS) allows 32766. 



http://www-01.ibm.com/support/docview.wss?uid=swg21105506

728x90
728x90

Question

How do you rebuild sysadmin database manually without having to restart IDS?

Answer

Run these steps to rebuild sysadmin database manually:

cd $INFORMIXDIR/etc/sysadmin;
dbaccess - db_uninstall.sql;
dbaccess - db_create.sql;
dbaccess sysadmin db_install.sql;
dbaccess sysadmin sch_tasks.sql;
dbaccess sysadmin sch_aus.sql;
dbaccess sysadmin sch_sqlcap.sql;
dbaccess sysadmin start.sql;


Note: db_uninstall.sql will correctly return errors 329/111 and 349 if the sysadmin database does not exist. Ignore these errors and continue.


http://www-01.ibm.com/support/docview.wss?uid=swg21420189

728x90

+ Recent posts