728x90

Problem(Abstract)

connections mysterious dropping from client applications


Symptom

connects/sessions dropping from a client application with no indication


Cause

“Idle Tiimeout” task enabled on Operating System


Resolving the problem

Disable the Idle Tiimeout on your operating System.

728x90
728x90

Problem(Abstract)

You see errors like these on Windows when running ontape, oninit, starts, net start and so on as user informix:

Only member of IXDBSA group (Informix-Admin, by default) can start IBM Informix Dynamic Server.
Dynamic Server failed to start in Recovery Mode. Check Event Log for errors.
System error 5 has occurred. Access is denied.

Symptom

  • Only member of IXDBSA group (Informix-Admin, by default) can start IBM Informix Dynamic Server.
  • Dynamic Server failed to start in Recovery Mode. Check Event Log for errors.
  • System error 5 has occurred. Access is denied.

Cause

The behavior you are seeing is caused by one of these:

  • Windows User Account Controls (UAC) component is enabled
  • Lack of rights for user informix
  • The user is not part of the IXDBSA group (Informix-Admin, by default)

Resolving the problem


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

728x90
728x90

Problem(Abstract)

Your IBM Informix server instance terminated unexpectedly. There is no message in server log file (online.log) indicating that it came offline.

Diagnosing the problem

Check your system for a file named olsrvice.log (not olservice.log). You may find the file in the Informix server directory, C:\WINDOWS\system32, or possibly another directory. If the file contains the message that follows, then the server was not brought offline by terminating the database server service.

<timestamp>  Service was shut-down externally.

You should be able to mimic this behavior by executing a taskkill command to kill oninit.exe:

>taskkill /F /IM oninit.exe /T


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

728x90
728x90

Problem(Abstract)

This document explains why IBM Informix Dynamic Server commands, such as onstat, might fail when being loaded.

Symptom

When KAIOON environment variable is set to 1 to enable Kernel Asynchronous I/O (KAIO) on Informix Dynamic Server (IDS), the following error message is reported by IBM Informix Dynamic Server commands, such as onstat or oninit:

$onstat -
exec(): 0509-036 Cannot load program onstat because of the following errors:


0509-130 Symbol resolution failed for usr/lib/libc.a(aio.o)because:
0509-136   Symbol kaio_rdwr (number 0) is not exported from dependent module /unix.
0509-136   Symbol listio (number 1) is not exported from dependent module /unix.
0509-136   Symbol acancel (number 2) is not exported from dependent module /unix.
0509-136   Symbol iosuspend (number 3)is not exported from dependent module /unix.
0509-136   Symbol aio_nwait (number 4) is not exported from dependent module /unix.
0509-192 Examine .loader section symbols with the'dump -Tv' command.    

Cause

The IBM Informix Dynamic Server requires that the drivers for Asynchronous IO (AIO) be loaded on the AIX system where the IBM Informix Dynamic Server is used. The IBM Informix Dynamic Server executables use entry points defined by these drivers.


The error can be seen when AIO was not enabled at the AIX system.


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

728x90
728x90

Problem(Abstract)

This document describes the flag values of an onstat -u output for IBM® Informix® Dynamic Server (IDS).

Resolving the problem

Q. What are the meanings for the character flag values in the IDS onstat -u command output?

A. The onstat -u command displays a profile of the user activity or thread currently running in the system. In the onstat -u command output, the flagscolumn describes the status of the thread in that session. The total width of the flag is seven characters long. The table below lists the different character values for each position:

 

Position

Value

Description

1







Y

Waiting for a buffer
Waiting for checkpoint
Waiting for write of log buffer
Waiting for a lock
Waiting on mutex
Waiting for a transaction
Waiting on condition

2

*

Transaction active while I/O failure occurred

3







X

Archive thread
Begin work
Committing OR Committed
Heuristically aborted OR heuristically rolling back
Begin prepare or prepared work
Aborting OR aborted
XA prepared

4

P

Primary thread for a session

5


X

Reading (RSAM call)
Process in critical section

6

R

Recovery

7





M

Special btree cleaner thread
Cleanup dead process
Special daemon process
Special buffer flusher process
Monitor user

 

Example: 


$ onstat -u 

IBM Informix Dynamic Server Version 10.00.UC3     -- on-Line -- Up 10:02:59 -- 28672 Kbytes 

Userthreads 
address flags   sessid  user  tty wait    tout locks nreads writes 
a570018 ---P--D      1  root  -   0       0    0     23     7 
a570544 ---P--F      0  root  -   0       0    0     0      144 
a570a70 ---P---      5  root  -   0       0    0     0      0 
a570f9c ---P--B      6  root  -   0       0    0     0      0 
a5714c8 Y--P---     18  anupn 3   ab0bfa8 0    1     0      0 
a5719f4 Y--P--D     12  root  -   a07c134 0    0     0      0 
a571f20 ---P--D      9  root  -   0       0    0     0      0 
 7 active, 128 total, 0 maximum concurrent 

From the above reference, for session 18 the flag values ' Y--P---' signifies that it is a primary thread for this session and waiting on a condition.


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

728x90
728x90

Problem(Abstract)

This document explains how to find out the time sessions that have been idle since their last read or write in system, through a System Monitor Interface (SMI) query with similar information as returned by onstat -g ntt.


Resolving the problem

INTRODUCTION

Specific information about the sessions established against the IBM® Informix® Dynamic Server (IDS) instance regarding the connection time when the last read or write operation was performed, which can be found by running 'onstat -g ntt'. The last time a session has performed a read or write operation gives the Database Administrator or DBA an idea about how long a session has been idle. Similar information can be obtained by querying either the System Monitoring Interface (SMI) or sysmaster database.


BEFORE YOU BEGIN

Ensure that the IDS instance is in on-Line mode. This method uses a query either through the System Monitoring Interface (SMI) or sysmaster database. 


STEPS

1. Run this query against the sysmaster database, using dbaccess: (버전 10.0까지 사용가능한 SQL)

    DATABASE sysmaster; 

    SELECT s.sid, s.username, q.odb_dbname database, s.pid, 
            t.tid, hex(t.address) address, t.state, 
            dbinfo('UTC_TO_DATETIME',s.connected) conection_time, 
            dbinfo('UTC_TO_DATETIME',t.run_time) last_run_time, 
            current - dbinfo('UTC_TO_DATETIME',t.run_time) idle_time 
    FROM syssessions s, systcblst t,  sysrstcb r, sysopendb q 
    WHERE t.tid = r.tid AND s.sid = r.sid AND s.sid = q.odb_sessionid ; 

2. Results will list each session information, including the time it connected to the database, the last time it performed a read or write operation, and the calculated idle time when comparing that last operation time with current time. The information regarding each session is the following: 

 

Column name

Column Description

sid

Is the session ID, the unique identifier for the session. Details on the session can be seen with 'onstat -g ses sid' command. It matches column 'sid' in 'onstat -g ntt' output.

username

Is the user ID at the operating system, that established the connection.

database

Is the database name the session is connected to.

pid

Is the identifier of the process at the operating system from which the connection was established.

tid

Is the thread identifier for the primary thread of user session. It matches column 'tid' in 'onstat -g ath' output.

address

Is the address for the thread, in hexadecimal value. It matches column 'rstcb' in 'onstat -g ath' and column 'address' in 'onstat -u' outputs.

state

Is the status in a numeric code, in which the session is currently at. If returns value '4', it means session is in 'wait' status, value '0' means session is currently 'running'.

connection_time

Is the date and time in which session was opened or established against a database in the server. It matches column 'open' in 'onstat -g ntt' output.

last_run_time

Is the last time a read or write operation was performed by this session in the server. It should match either 'read' or 'write' columns in 'onstat -g ntt' output for that session.

idle_time

Is the calculated time interval the session has been without doing any read nor write in the server, so can be considered as its idle time.

 


3. Results are somehow comparable to the onstat -g ntt output: 
    onstat -g ntt 


Example: 

    1. You can create a file querysessions.sql containing the query above:
      SELECT s.sid, s.username, q.odb_dbname database, s.pid, 
              t.tid, hex(t.address) address, t.state, 
              dbinfo('UTC_TO_DATETIME',s.connected) conection_time, 
              dbinfo('UTC_TO_DATETIME',t.run_time) last_run_time, 
              current - dbinfo('UTC_TO_DATETIME',t.run_time) idle_time 
      FROM syssessions s, systcblst t,  sysrstcb r, sysopendb q 
      WHERE t.tid = r.tid AND s.sid = r.sid AND s.sid = q.odb_sessionid ; 

      and run the query using dbaccess: 
        $ dbaccess sysmaster querysessions

    2. Results:
      sid             38
      username        informix
       
      database        stores7
      pid             28513
      tid             588
      address         0x0B128498
      state           4
      conection_time  2005-05-31 09:08:47
      last_run_time   2005-05-31 09:08:47
      idle_time       0 00:19:44.000

      sid             39
      username        informix
       
      database        sysmaster
      pid             28386
      tid             587
      address         0x0B128140
      state           0
      conection_time  2005-05-31 09:06:12
      last_run_time   2005-05-31 09:28:31
      idle_time       0 00:00:00.000

      sid             41
      username        informix
       
      database        stores_demo
      pid             29120
      tid             589
      address         0x0B1286F0
      state           4
      conection_time  2005-05-31 09:20:51
      last_run_time   2005-05-31 09:22:27
      idle_time       0 00:06:04.000

      3 row(s) retrieved.

    3. Similar results as ones retrieved when issuing the onstat -g ntt command: 
      $ onstat -g ntt

      Individual thread network information (times):
       netscb thread name    sid     open     read    write address
      b202138 sqlexec         41 09:20:50 09:22:27 09:22:27
      b203760 sqlexec         38 09:08:46 09:08:47 09:08:47
      b2272c8 sqlexec         39 09:06:11 09:28:31 09:28:31
      b1fccd0 tlitcplst       11 17:04:42                   killa|1838|tlitcp        
                   05/23/05
      b1fc678 sm_discon       10 17:04:42                      05/23/05
      b1f94f0 sm_listen        8 17:04:42                      05/23/05
      b1f8e98 sm_discon        7 17:04:42                      05/23/05
      b1d5ab8 sm_listen        5 17:04:42                      05/23/05
      b1bf858 tlitcppoll       4 17:04:42                      05/23/05
      b029958 sm_poll          3 17:04:42                      05/23/05
      b028d80 sm_poll          2 17:04:42                      05/23/05


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

728x90
728x90

Problem(Abstract)

Compilation of C-ISAM program fails on AIX 5.x 64-bits

Symptom

When we try to compile a C-Isam program on AIX 5.x 64-bit platform using the following simple compilation command:

$ cc program.c -lisam -o program.o 

We get errors such as:

ld : 0711-317 ERROR : Undefined symbol : .isclose 
ld : 0711-317 ERROR : Undefined symbol : .isrewrite 
ld : 0711-317 ERROR : Undefined symbol : iserrno 
ld : 0711-317 ERROR : Undefined symbol : .stchar 
ld : 0711-317 ERROR : Undefined symbol : .isread 
ld : 0711-317 ERROR : Undefined symbol : .isopen 
ld : 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.

Cause

The compilation command syntax is not correct and requires some additional options.

Environment

Product Name: C-ISAM
Product Version(s): 7.26.FC2
Hardware Vendor: AIX
Operating System: UNIX

Resolving the problem

To avoid the errors you need to use the following syntax at the compilation command line:

$ cc program.c -lisam -L/$INFORMIXDIR/lib -I/$INFORMIXDIR/include -lm -q64 -program.o 

The -q64 option is required to have a successful compilation.

Take note that the -lm option also might be required.

$INFORMIXDIR is the directory where Informix c-isam is installed.

If this don't help please open a support call.



728x90
728x90

技術情報(FAQs)


質問

Linux環境でのInformix起動時に、以下のように共有メモリ関連のメッセージが表示されます。Informixは問題なく稼働しています。このメッセージはどういう意味でしょうか。

리눅스 환경에서 인포믹스 11.70 버전을 사용할 때 발생하는 메시지. 운영상에는 지장이 없습니다.

07:00:01 Insufficient free huge pages in /proc/meminfo for shared
memory segment.
      Requested: 1073741824 bytes. Available: 0 bytes.
      The default memory page size will be used.        << 기본 페이지 사이즈를 사용한다는 의미입니다.
07:00:01 Segment locked: addr=0x6eb6c0000, size=5368709120

回答

LinuxおよびSolarisプラットフォームでは、Informixは物理メモリに常駐する非メッセージ共有メモリセグメントに対して、デフォルトで大容量ページを使用するようになっています。大容量ページを使用すると、大容量メモリ構成においてパフォーマンス上の利点があります。

Linuxでは、この大容量ページをHugePagesと呼んでいますが、Informixの稼働環境でこの機能が構成されていない場合、お問い合わせのメッセージが出力されます。その場合、Informixは大容量ページではなく、デフォルトのページサイズでメモリを確保するため、動作に問題は発生しません。

メッセージ抑制のために、Informixの大容量ページ使用の機能を停止する場合は、以下の環境変数を設定の上、Informixを再起動します。

 IFX_LARGE_PAGES=0


환경변수를 설정하고 나면 메시지가 출력되지 않습니다.


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

728x90
728x90

Problem(Abstract)

This article describes how to unload rows from a table while avoiding inaccessible data.

Resolving the problem

INTRODUCTION

This document describes how to unload as many rows as possible from a corrupted table.

Note: This technique will not retrieve damaged rows. Damaged rows cannot be retrieved.

Note: This technique will not work for fragmented tables. Please contact advanced support for advice on how to work with fragmented tables. 


STEPS

Before unloading the available data from your table, you will need to create the WHERE clause for the unload. This will be an iterative process that you may have to run several times.

1. Run the SQL command:

    SELECT *, HEX(rowid) from table ; 

    table
      The table with corruption

This will fail when it hits a corrupt row. 

    Example: 

    SELECT *, HEX(rowid) FROM customer_table; 

      Result: the last rowid is 0x00027773


2. Note the last rowid obtained. 


3. Strip the last two digits off of the value of the last rowid. Add one (in hexadecimal) to the remaining value and concatenate "01" to that value. This will be the next rowid value to try to retrieve. 

    Example: 

    Strip last two digits ( 73) from 0x00027773. The resulting value is 0x000277. Add one (in hexadecimal) for a new value of 0x000278. Concatenate "01"to that value for a resulting value of 0x00027801.


4. Add the last rowid and the next rowid to your WHERE clause. You will want all rows less than or equal to the last rowid and all rows greater than or equal tothe next rowid. 

    Example: 

    SELECT * FROM customer_table 
    WHERE HEX(rowid) <= "0x00027773" OR HEX(rowid) >= "0x00027801"



Important: This is an iterative process you may have to go through several times to fully develop your WHERE clause. For each additional iteration of steps 1-4, concatenate an “AND” to the where clause. 

    Example: 

    SELECT *, HEX(rowid) FROM customer_table 
    WHERE HEX(rowid) <= "0x00027773" OR HEX(rowid) >= "0x00027801" 
    AND HEX(rowid) <= "0x00030001" OR HEX(rowid) >= "0x00030101"



5. once you have a list of all retrievable rows, use that query for your UNLOAD statement after removing the HEX(rowid) from the SELECT portion of the query. 

    Example: 

    UNLOAD TO filename 
    SELECT * FROM customer_table 
    WHERE HEX(rowid) <= "0x00027773" OR HEX(rowid) >= "0x00027801" 
    AND HEX(rowid) <= "0x00030001" OR HEX(rowid) >= "0x00030101"


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

728x90
728x90

Problem(Abstract)

This article describes an alternate way to install IBM Informix Dynamic Server.

Cause

Occasionally, IBM Informix Dynamic Server fails to install using the install_server script. Reasons for this vary.

Resolving the problem

If the install_server script is failing you can try the following command to install IBM Informix Dynamic Server:

문서상에는 11.50버전부터 가능한 것으로 되어있습니다.


    java -cp IIF.jar run



http://www-01.ibm.com/support/docview.wss?uid=swg21613223&myns=swgimgmt&mynp=OCSSGU8G&mync=E

728x90

+ Recent posts