728x90

Question

How many processors exist on an HP-UX system?

Answer

This document explains how to count the number of processors on your system as IBM Informix® products defines a processor. Various IBM Informix® products are tuned based on the number of processors on your system. The NUMCPUVPS or VPCLASS onCONFIG configuration parameter, for example, should be set to one less than the actual number of physical CPUs present in the server. 

A processor is a device that operates on core. With multiple core technology, this can be a single device or a device that has multiple core "processors". IBM Informix® products consider these multiple cores as separate physical processors. 

On any HP-UX system, the ioscan command lists how many processors(single or multiple core) are on your system. The ioscan command (located in/usr/sbin) outputs a list of all IO devices. Each line in the output that begins with processor represents a processor that is either a single device or an instance of a multiple core device. 

Use the following command line to include the processors in the output and automatically count them using grep (pattern match) and wc (character count). For more information see your Operating System man pages.

    /usr/sbin/ioscan -kf | grep processor | wc -l

    Example 1: 

    This example is from a machine with 2 processors. 

      $   /usr/sbin/ioscan -kf|grep processor|wc -l 
      2 

      Note: You would set the NUMCPUVPS or VPCLASS parameter to 1 in this example. 
    Example 2: 

    This example is from a machine with 4 processors. 
      $   /usr/sbin/ioscan -kf|grep processor|wc -l 
      4

    This example is from a machine with 4 processors. The Line count (wc -l) is left off to show the actual ioscan and grep output. 

      $   /usr/sbin/ioscan -kf|grep processor 
      processor   0  120            processor  CLAIMED     PROCESSOR    Processor 
      processor   1  121            processor  CLAIMED     PROCESSOR    Processor 
      processor   2  122            processor  CLAIMED     PROCESSOR    Processor 
      processor   3  123            processor  CLAIMED     PROCESSOR    Processor 

      Note: You would set the NUMCPUVPS or VPCLASS parameter to 3 in this example.


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

728x90
728x90

Problem(Abstract)

The NUMCPUVP onconfig parameter should be set to one less than the actual number of physical CPUs present in the server. This document provides the commands to determine the number of CPUs on AIX machines before setting the parameter.

Resolving the problem

On AIX you use the command lsdev to determine how many CPUs your system has. The command lsdev (located in /usr/sbin) is used to list the system devices. Use it with the following options to list all processors one per line:

    /usr/sbin/lsdev -C -c processor

    Example: 

    This example is from a single processor system. 

      $ lsdev -C -c processor 
      proc0 Available 00-00 Processor


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

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

인포믹스 권한 관련하여 일부 정리해봅니다.



AS grantor Clause

When you grant privileges, by default, you are the one who can revoke those privileges. The AS grantor clause lets you establish another user as the source of the privileges you are granting. When you use this clause, the login provided in the AS grantor clause replaces your login in the appropriate system catalog table. You can use this clause only if you have the DBA privilege on the database.

After you use this clause, only the specified grantor can REVOKE the effects of the current GRANT. Even a DBA cannot revoke a privilege unless that DBA is listed in the system catalog table as the source who granted the privilege.

The following example illustrates this situation. You are the DBA and you grant all privileges on the items table to user tom with the right to grant all privileges:
REVOKE ALL on items FROM PUBLIC;
GRANT ALL on items TO tom WITH GRANT OPTION;
The following example illustrates a different situation. You also grant Select and Update privileges to user jim, but you specify that the grant is made as user tom. (The records of the database server show that user tom is the grantor of the grant in the systabauth system catalog table, rather than you.)
GRANT SELECT, UPDATE on items TO jim AS tom;
Later, you decide to revoke privileges on the items table from user tom, so you issue the following statement:
REVOKE ALL on items FROM tom;
If instead, however, you try to revoke privileges from user jim with a similar statement, the database server returns an error, as the next example shows:
REVOKE SELECT, UPDATE on items FROM jim;
580: Cannot revoke permission.

You receive an error because the database server record shows the original grantor as user tom, and you cannot revoke the privilege. Although you are the DBA, you cannot revoke a privilege that another user granted.

The AS grantor clause is not valid in the GRANT DEFAULT ROLE statement.


http://publib.boulder.ibm.com/infocenter/idshelp/v115/topic/com.ibm.sqls.doc/ids_sqs_0123.htm

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

728x90

+ Recent posts