728x90

Problem(Abstract)


-244 Could not do a physical-order read to fetch next row.
-197 ISAM error: Partition recently appended to; can't open for
write or logging.

Symptom

-244 Could not do a physical-order read to fetch next row.
-197 ISAM error: Partition recently appended to; can't open for
write or logging.



Cause

A High Performance Loader express mode load was run on this table.


Resolving the problem

You must perform a level-0 backup before you can write to the target database. See the Related Information section below for more information regarding express mode load.



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

728x90
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

Question

This document explains what a tblspace-tblspace (also referred as tablespace-tablespace and partition-partition) is and how it relates to other tables in an instance.

Answer

What is TBLspace TBLspace?

You are running IBM® Informix® Dynamic Server (IDS) database server and create a regular Dbspace. This Dbspace contains an internal table called TBLspace TBLspace. You cannot access the table using SQL commands.

What it does?

The TBLspace TBLspace table tracks all the partitions (tables or indexes) that you create in a Dbspace, including itself. You can track every table, detached index, or table fragment in the TBLspace TBLspace table through a partition page. The first partition page contains information about the TBLspace TBLspace table itself and the following partition pages track other tables. The partition page contains important information about a table and you can see part the data using theoncheck -pt command (oncheck  -pt database:table):


    oncheck   -pt database : table 

      database
        name of the database 
      table
        name of the table 

When you create a TBLspace TBLspace table, it has an initial extent of 50 pages on version 7.x and 250 pages on 9.x. In addition, when the first extent gets full, a new extent is allocated in one of the chunks of the Dbspace. This may cause a problem because if you create a new extent of the TBLspace TBLspace table on a chunk that needs to be dropped the server will report an error saying that the chunk is not empty. This will happen even if there is no user data in it. 
Even though the TBLspace TBLspace is not accessible through SQL you can still see the extents that are allocated in the chunks of the Dbspace using theoncheck -pe command. 

    Example: 

    The following is a partial output of an  oncheck -pe run on an IDS 7.x system. It is the first extent (50 pages) of the TBLspace TBLspace in chunk 2:

      DBspace Usage Report: dbs1        Ownner: informix  Created: 10/11/2003 

      Chunk: 2 /informix/dbs1_chunk1 Size Used  Free 
                                      5000   53  4947 

      Disk usage for Chunk 2      Start  Length 

      ------------------------------------------- 
       OTHER RESERVED Pages         0      2 
       CHUNK FREE LIST PAGE         2      1 
        TBLSPACE TBLSPACE             3      50 
       FREE                        53     4947 

      Chunk: 3 /informix/dbs1_chunk2 Size Used Free 
                                      5000   3  4997 
      Disk usage for Chunk 3        Start   Length 
      -------------------------------------------- 
         OTHER RESERVED Pages         0      2 
         CHUNK FREE LIST PAGE         2      1 
         FREE  


728x90
728x90

Since IDS Version 10.00 dbspaces can be created with other than the default 2k/4k pagesize.


This feature has multiple benefits:

less disk I/O with larger pagesizes (8k ... 16k)

more rows per data/index page (max. 255 Rows / data page)

higher upper limit of rows per table (max. 16777216 pages / table fragment)

higher upper limit of table/index extents

reduce "-136 ISAM error: no more extents." Errors



Example (stores_demo database):

 


IDS 7.31, 9.40, 10.00, 11.50 / 2k dbspace pagesize:

database_name   stores_demo


tabname         customer

dbspace_name    root_dbs

extents_act     140

max_extents     232

 




IDS 10.00, 11.50 / 16k dbspace pagesize:

database_name   stores_demo

tabname         customer

dbspace_name    dat_dbs16k_001

extents_act     351

max_extents     2023

 

 


You can use the following select to show the upper limit of table/index extent sizes:


 

SELECT --+ORDERED,INDEX(a,systabs_pnix),INDEX(b,sysptnhdridx),INDEX(c,syspaghdridx),INDEX(d,sysdbstab_dbsnum)

       a.dbsname AS database_name,

       a.tabname,

       d.name AS dbspace_name,

       b.nextns AS extents_act,

       TRUNC(c.pg_frcnt / 8) + b.nextns AS max_extents

 FROM sysmaster:sysdbstab d,

      sysmaster:syspaghdr c,

      sysmaster:systabnames a,

      sysmaster:sysptnhdr b

  WHERE c.pg_partnum = sysmaster:partaddr(d.dbsnum, 1)

    AND sysmaster:bitval(c.pg_flags, 2) = 1

    AND c.pg_nslots = 5

    AND a.partnum = sysmaster:partaddr(d.dbsnum, c.pg_pagenum)

    AND a.partnum = b.partnum;



https://www.ibm.com/developerworks/community/blogs/informix_admins_blog/entry/ids_pagesize_and_maximum_number_of_extents5?lang=en

http://www-304.ibm.com/support/knowledgecenter/api/content/nl/ko/SSGU8G_11.50.0/com.ibm.perf.doc/ids_prf_311.htm

http://www-304.ibm.com/support/knowledgecenter/api/content/nl/ko/SSGU8G_11.50.0/com.ibm.perf.doc/ids_prf_316.htm

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

Question

How does Informix use temporary dbspaces according to database logging mode, SQL statement WITH NO LOG, temp dbspace parameters settings, etc.?

Answer

INTRODUCTION

IBM® Informix® Dynamic Server (IDS) uses two types of temporary objects to store temporary data:temporary files and temporary tables. How Informix server use the temporary dbspace depends on whether temporary objects are logged or not.

IDS has many factors that effect this, such as database logging mode, create temp table WITH NO LOG, DBSPACETEMP or PSORT_DBTEMP setting, how a temporary space is created, and so on.

Temporary tables in the server can be automatically routed to a dbspace. The DBSPACETEMP environment variable can be set to one or more dbspaces. If the DBSPACETEMP environment variable is not set, the server uses the value of the DBSPACETEMP configuration parameter. Temporary tables are fragmented across the dbspaces listed in either the environment variable or the configuration parameter. This occurs regardless of whether the query is a PDQ query or not.

DBSPACETEMP config값 또는 환경변수에 명시한 dbspace를 사용하여 round-robin fragmented 테이블이 생성된다.

If DBSPACETEMP is not specified, the temporary table is placed in either the root dbspace or the dbspace where the database was created. SELECT...INTO TEMP statements place the temporary table in the root dbspace. CREATE TEMP TABLE statements place the temporary table in the dbspace where the database was created.

DBSPACETEMP에 명시한 dbspace를 먼저 사용한다. 명시된 dbspace가 없다면 데이터베이스가 생성된 dbspace를 사용한다.

Temporary files can be created in either dbspaces or in file-system space. If PSORT_DBTEMP is set to one or more directories, temporary files are created in round-robin fashion across all the directories listed (the first file in one directory and the second file in the next) regardless of whether the sort is a parallel sort or not. If the PSORT_DBTEMP environment variable is not set, temporary files are fragmented across the dbspaces listed in the DBSPACETEMP environment variable. This means space is allocated and utilized in all the dbspaces for a single temporary file regardless of whether the query is a PDQ query or not. If the DBSPACETEMP environment variable is not set, the dbspaces listed in the DBSPACETEMP configuration parameter are used to store temporary files.

PSORT_DBTEMP와 DBSPACETEMP 환경변수는 DBSPACETEMP config 설정값보다 우선한다.

RECOMMENDATION

It is recommended that you create multiple temporary dbspaces on different devices in your server instance. A performance benefit results because temporary dbspaces are not logged nor are they archived. Also, when temporary files and tables are created they are fragmented across the available temporary dbspaces, therefore enabling parallel access.

Temporary tables should be created in a dbspace that is specifically designated for temporary tables within the Informix system. A temporary dbspace does not accommodate logging. Therefore, temporary tables created in a temporary dbspace must be from an unlogged database or be created using the syntax WITH NO LOG.

If your database is not logged and DBSPACETEMP exists, then temporary tables are created automatically in DBSPACETEMP. In databases that are logged, temporary tables are logged by default and are not created in DBSPACETEMP. To utlize the DBSPACETEMP feature it is necessary to append the SQL phase WITH NO LOG to either the SELECT...INTO TEMP, or the CREATE TEMP TABLE statements.

로깅 데이터베이스에서 TEMPTAB_NOLOG config 는 0이고, TEMP 테이블 생성시 WITH NO LOG 옵션을 사용하지 않는다고 가정

EXAMPLES

Assuming the databases has logging:

1. If we have created a dbspace named tmpdbs,but we could not see it was marked as 'T' in the result of onstat -d. We set DBSPACETEMP configuration parameter to tmpdbs.
On this condition, tmpdbs will be used for logged temporary tables.That means if a temp table is created with 'WITH NO LOG' option, the server will not use it.

2. If we have created a temporary dbspace (it was marked as 'T' in the result of onstat -d). However, we have not set the DBSPACETEMP configuration parameter to this tmpdbs.
On this condition,the tmpdbs dbspace will not be used when creating temporary tables unless you specify the "in dbspace" clause when creating the temporary table.


How Informix Dynamic Server uses the temporary dbspace

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


Preventing Informix Servers system overload from intensive I/O activity

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


728x90

+ Recent posts