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

Question

Installing TWS the following error is encountered, SQL1005N The database alias "TWS" already exists in either the local database directory or system database directory.

Cause

This is caused when a previous installation of TWS was made and it created the default database, TWS.

Answer

If you are attempting a reinstallation using the same database name then you should perform the following :-

1. db2 catalog database tws 
2. db2 drop database tws


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

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

How to configure wired 802.1X for Windows 7


   IMPORTANT: Before you start, you need to enable a service called Wired AutoConfig. Without this service enabled, you will not be able to authenticate, and thus not gain access to the network. To enable Wired AutoConfig:

    1. Click the Start button. In the Search box ("Start Search") type services.msc and press "Enter". You must be logged in as an administrator to start this service.
    2. In the Services dialog box, click the "Standard" tab (located in the lower part of the window).
    3. Scroll down to find the Wired AutoConfig service, right click and select "Start".
    4. If you want Wired AutoConfig to start automatically every time you start your computer, right click "Wired AutoConfig" again and select "Properties". In the General tab, set Startup type to Automatic. Click "OK" and then
       close the Services window.
 

  Click on the start button and select 'Control Panel' , then click on 'View network status and tasks'
   You should have a 'Local Area Connection', click it. A new window should appear:
 

 LAN status
   Click "Properties"
   Choose the tag 'Authentication'. You should now have this window:
If you do not have the Authentication tab, read this document from the top on how to activate it.

 


   LAN Properties
   Make sure that your settings equals the ones in the above picture, if not adjust accordingly.
   Click the button "Settings", and you get:
   Protected EAP Properties


   Make sure that your settings equals the ones in the above picture, if not adjust accordingly.
   Click on "Configure", and a new window appears..


   Uncheck user
   Uncheck "Automatically use my Windows...".
   Click 'OK' in this window, and the former (Protected EAP Properties)
   Click 'Additional Settings' in 'Local Area Connection Properties' and this window should appear:
  Advanced settings

   Check 'Specify authentication mode' and select 'User authentication'.
   Click OK in this window and the former, and 'Close' in the last.
   You have now finished configuring.
   After a few seconds this should appear:


   Local Area Connection boble
   Click it, and this should appear:


   Logon credentials


   Enter your username and password. Click OK.
   This might take some time the first time. If it does not appear, try rebooting.
   You should now be connected.


출처: http://www.uio.no/english/services/it/network/student-residential-network/instructions/win7/

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

tar를 사용하여 아카이브 할때 "아카이브하기에 너무 큽니다" 라는 메시지가 나오는 케이스를 발견했습니다.

솔라리스에서 8GB 가 넘는 백업 파일을 압축한 경우입니다. 정확하게 얘기하면 단일 파일이 8GB가 이상인 경우이고

전체 tar 파일은 파일시스템 제한이 허용하는 한도까지 만들어집니다.


영문으로는 "too large to archive" 라는 메시지가 출력됩니다.


조금 검색을 해보니 솔라리스 외에도 이런 경우가 발생하는 케이스가 보입니다.

아카이브를 할 때나 해제할 때 E옵션을 사용하는 것입니다.


tar의 manpage를 살펴보면 다음과 같습니다.


     E              Write a tarfile with extended headers.  (Used

                    with  c,  r,  or  u function letters. Ignored

                    with t or x function letters.) When a tarfile

                    is written with extended headers, the modifi-

                    cation time is maintained with a  granularity

                    of microseconds rather than seconds. In addi-

                    tion, filenames no longer than PATH_MAX char-

                    acters  that could not be archived without E,

                    and file sizes greater  than  8GB,  are  sup-

                    ported.  The  E flag is required whenever the

                    larger files and/or files with longer  names,

                    or  whose  UID/GID  exceed 2097151, are to be

                    archived,   or   if   time   granularity   of

                    microseconds is desired.


이런 현상은 플랫폼이 x86이나 sparc이든 동일합니다. 확인한 버전은 SunOS 5.10입니다. 



https://kr.forums.oracle.com/forums/thread.jspa?threadID=2316728

https://forums.oracle.com/forums/thread.jspa?threadID=1920265

https://forums.oracle.com/forums/thread.jspa?threadID=2162326


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