Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / IDS 9.40.FC6 ошибки -243 и -244 на update / 8 сообщений из 8, страница 1 из 1
29.03.2006, 04:01
    #33631071
askel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IDS 9.40.FC6 ошибки -243 и -244 на update
Доброго времени суток!

Есть такая проблема. Частенько (несколько раз в день) обламываются запросы типа

Код: plaintext
begin work; update cash set balance=balance+0 where u_id=1111111; ...


Причем, это может повториться несколько раз в течении нескольких минут для одной записи (клиент пытается снова и снова пока не сработает).

Уже понятно, что дело в блокировках. Перед этой транзакцией выставляется

Код: plaintext
set isolation to dirty read; set lock mode to wait 10

Как найти, какой SQL-запрос держит блокировку на конкретную запись? Думаю, после этого будет понятно, где и как это вылечить.

Заранее благодарен за любую помощь.
...
Рейтинг: 0 / 0
29.03.2006, 04:31
    #33631077
askel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IDS 9.40.FC6 ошибки -243 и -244 на update
Совсем забыл главное - подробности. Informix живет на отдельном сервере
Код: plaintext
1.
db1$ uname -a
SunOS db1  5 . 9  Generic_112233- 12  sun4u sparc SUNW,Netra-T12

Конфигурация
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
db1$ cat onconfig
#**************************************************************************
#
#                          IBM Corporation
#
#  Title:       onconfig.std
#  Description: IBM Informix Dynamic Server Configuration Parameters
#
#**************************************************************************

# Root Dbspace Configuration

ROOTNAME        rootdbs         # Root dbspace name
ROOTPATH        /opt/informix/links/rootdbs1 # Path for device containing root dbspace
ROOTOFFSET       0                # Offset of root dbspace into device (Kbytes)
ROOTSIZE         2048000          # Size of root dbspace (Kbytes)

# Disk Mirroring Configuration Parameters

MIRROR           0                # Mirroring flag (Yes =  1 , No =  0 )
MIRRORPATH                      # Path for device containing mirrored root
MIRROROFFSET     0                # Offset into mirrored device (Kbytes)

# Physical Log Configuration

PHYSDBS         rootdbs         # Location (dbspace) of physical log
PHYSFILE         204800           # Physical log file size (Kbytes)

# Logical Log Configuration

LOGFILES         76               # Number of logical log files
LOGSIZE          25000            # Logical log size (Kbytes)

# Diagnostics 

MSGPATH         /var/log/online.log # System message log file path
CONSOLE         /dev/console    # System console message path

# To automatically backup logical logs, edit alarmprogram.sh and set
# BACKUPLOGS=Y
ALARMPROGRAM    /opt/informix/etc/alarmprogram.sh # Alarm program path
TBLSPACE_STATS   0                # Maintain tblspace statistics

# System Archive Tape Device

TAPEDEV         /opt/informix/links/tapedev     # Tape device path      
TAPEBLK          16               # Tape block size (Kbytes)
TAPESIZE         102400000        # Maximum amount of data to put on tape (Kbytes)

# Log Archive Tape Device

LTAPEDEV        /opt/informix/links/ltapedev    # Log tape device path
LTAPEBLK         16               # Log tape block size (Kbytes)
LTAPESIZE        102400000        # Max amount of data to put on log tape (Kbytes)

# Optical

STAGEBLOB                       # Informix Dynamic Server staging area 

# System Configuration

SERVERNUM        0                # Unique id corresponding to a OnLine instance
DBSERVERNAME    ca2             # Name of default database server
DBSERVERALIASES ca2_tcp,scdb2   # List of alternate dbservernames
NETTYPE         ipcshm, 1 , 50 ,CPU         # Configure poll thread(s) for nettype
NETTYPE         tlitcp, 4 , 100 ,NET
DEADLOCK_TIMEOUT         60       # Max time to wait of lock in distributed env.
RESIDENT         0                # Forced residency flag (Yes =  1 , No =  0 )

MULTIPROCESSOR   1                #  0  for single-processor,  1  for multi-processor
NUMCPUVPS        7                # Number of user (cpu) vps
SINGLE_CPU_VP    0                # If non-zero, limit number of cpu vps to one

NOAGE            1                # Process aging
AFF_SPROC        1                # Affinity start processor
AFF_NPROCS       7                # Affinity number of processors

# Shared Memory Parameters

LOCKS            64000            # Maximum number of locks
BUFFERS          1024000          # Maximum number of shared buffers
NUMAIOVPS        11               # Number of IO vps
PHYSBUFF         2048             # Physical log buffer size (Kbytes)
LOGBUFF          2048             # Logical log buffer size (Kbytes)
CLEANERS         128              # Number of buffer cleaner processes
SHMBASE         0x0A000000L     # Shared memory base address
SHMVIRTSIZE      512000           # initial virtual shared memory segment size
SHMADD           8192             # Size of new shared memory segments (Kbytes)
SHMTOTAL         0                # Total shared memory (Kbytes).  0 =>unlimited
CKPTINTVL        600              # Check point interval (in sec)
LRUS             128              # Number of LRU queues
LRU_MAX_DIRTY    2                # LRU percent dirty begin cleaning limit
LRU_MIN_DIRTY    0                # LRU percent dirty end cleaning limit
TXTIMEOUT        300              # Transaction timeout (in sec)
STACKSIZE        64               # Stack size (Kbytes)

# Dynamic Logging
# DYNAMIC_LOGS:
#     2  : server automatically add a new logical log when necessary. (ON)
#     1  : notify DBA to add new logical logs when necessary. (ON)
#     0  : cannot add logical log on the fly. (OFF)
#
# When dynamic logging is on, we can have higher values for LTXHWM/LTXEHWM,
# because the server can add new logical logs during long transaction rollback.
# However, to limit the number of new logical logs being added, LTXHWM/LTXEHWM
# can be set to smaller values.
#
# If dynamic logging is off, LTXHWM/LTXEHWM need to be set to smaller values
# to avoid long transaction rollback hanging the server due to lack of logical
# log space, i.e.  50 / 60  or lower.

DYNAMIC_LOGS     2 
LTXHWM           70 
LTXEHWM          80 

# System Page Size
# BUFFSIZE - OnLine no longer supports this configuration parameter.
#            To determine the page size used by OnLine on your platform
#            see the last line of output from the command, 'onstat -b'.


# Recovery Variables
# OFF_RECVRY_THREADS:
# Number of parallel worker threads during fast recovery or an offline restore.
# ON_RECVRY_THREADS:
# Number of parallel worker threads during an online restore.

OFF_RECVRY_THREADS       10       # Default number of offline worker threads
ON_RECVRY_THREADS        1        # Default number of online worker threads

# Data Replication Variables
DRINTERVAL       30               # DR max time between DR buffer flushes (in sec)
DRTIMEOUT        30               # DR network timeout (in sec)
DRLOSTFOUND     /opt/informix/etc/dr.lostfound  # DR lost+found file path

# CDR Variables
CDR_EVALTHREADS  1 , 2      # evaluator threads (per-cpu-vp,additional)
CDR_DSLOCKWAIT   5        # DS lockwait timeout (seconds)
CDR_QUEUEMEM     4096     # Maximum amount of memory for any CDR queue (Kbytes)
CDR_NIFCOMPRESS  0        # Link level compression (- 1  never,  0  none,  9  max)
CDR_SERIAL               0        # Serial Column Sequence
CDR_DBSPACE                     # dbspace for syscdr database
CDR_QHDR_DBSPACE    datadbs # CDR queue dbspace (default same as catalog) 
CDR_QDATA_SBSPACE   sblobdbs # List of CDR queue smart blob spaces 

# CDR_MAX_DYNAMIC_LOGS
# - 1  => unlimited
#   0  => disable dynamic log addition
# > 0  => limit the no. of dynamic log additions with the specified value.
# Max dynamic log requests that CDR can make within one server session.

CDR_MAX_DYNAMIC_LOGS     0   # Dynamic log addition disabled by default

# Backup/Restore variables
BAR_ACT_LOG   /var/log/bar_act.log  # ON-Bar Log file - not in /tmp please
BAR_DEBUG_LOG /var/log/bar_dbug.log # ON-Bar Debug Log - not in /tmp please
BAR_MAX_BACKUP   0 
BAR_RETRY        1 
BAR_NB_XPORT_COUNT  10 
BAR_XFER_BUF_SIZE  31 
RESTARTABLE_RESTORE     off     
BAR_PROGRESS_FREQ        0 

# Informix Storage Manager variables
ISM_DATA_POOL   ISMData
ISM_LOG_POOL    ISMLogs

# Read Ahead Variables
RA_PAGES                  32       # Number of pages to attempt to read ahead
RA_THRESHOLD              16       # Number of pages left before next group

# DBSPACETEMP:
# OnLine equivalent of DBTEMP for SE. This is the list of dbspaces
# that the OnLine SQL Engine will use to create temp tables etc.
# If specified it must be a colon separated list of dbspaces that exist
# when the OnLine system is brought online.  If not specified, or if
# all dbspaces specified are invalid, various ad hoc queries will create
# temporary files in /tmp instead.

DBSPACETEMP     tempdbs         # Default temp dbspaces
# DUMP*:
# The following parameters control the type of diagnostics information which
# is preserved when an unanticipated error condition (assertion failure) occurs 
# during OnLine operations.  
# For DUMPSHMEM, DUMPGCORE and DUMPCORE  1  means Yes,  0  means No.

DUMPDIR         /tmp            # Preserve diagnostics in this directory
DUMPSHMEM        0                # Dump a copy of shared memory
DUMPGCORE        0                # Dump a core image using 'gcore'
DUMPCORE         0                # Dump a core image (Warning:this aborts OnLine)
DUMPCNT          1                # Number of shared memory or gcore dumps for 
                                # a single user's session

FILLFACTOR       90               # Fill factor for building indexes

# method for OnLine to use when determining current time
USEOSTIME        0        #  0 : use internal time(fast),  1 : get time from OS(slow)

# Parallel Database Queries (pdq)
MAX_PDQPRIORITY  50     # Maximum allowed pdqpriority
DS_MAX_QUERIES   1        # Maximum number of decision support queries 
DS_TOTAL_MEMORY  100000        # Decision support memory (Kbytes) 
DS_MAX_SCANS     10    # Maximum number of decision support scans 
DATASKIP        off            
# OPTCOMPIND
#  0  => Nested loop joins will be preferred (where 
#      possible) over sortmerge joins and hash joins. 
#  1  => If the transaction isolation mode is not  
#      "repeatable read", optimizer behaves as in ( 2 ) 
#      below.  Otherwise it behaves as in ( 0 ) above. 
#  2  => Use costs regardless of the transaction isolation
#      mode.  Nested loop joins are not necessarily  
#      preferred.  Optimizer bases its decision purely  
#      on costs. 
OPTCOMPIND       2       # To hint the optimizer

DIRECTIVES       1     # Optimizer DIRECTIVES ON ( 1 /Default) or OFF ( 0 ) 

ONDBSPACEDOWN    2       # Dbspace down option:  0  = CONTINUE,  1  = ABORT,  2  = WAIT
OPCACHEMAX       0       # Maximum optical cache size (Kbytes)

# HETERO_COMMIT (Gateway participation in distributed transactions)
#  1  => Heterogeneous Commit is enabled
#  0  (or any other value) => Heterogeneous Commit is disabled
HETERO_COMMIT    0 

SBSPACENAME            # Default smartblob space name - this is where blobs
                       # go if no sbspace is specified when the smartblob is 
                       # created. It is also used by some datablades as
                       # the location to put their smartblobs. 
SYSSBSPACENAME         # Default smartblob space for use by the Informix 
                       # Server. This is used primarily for Informix Server
                       # system statistics collection.

BLOCKTIMEOUT     3600    # Default timeout for system block
SYSALARMPROGRAM    /opt/informix/etc/evidence.sh    # System Alarm program path

# Optimization goal: - 1  = ALL_ROWS(Default),  0  = FIRST_ROWS
OPT_GOAL        - 1 

ALLOW_NEWLINE    0        # embedded newlines(Yes =  1 , No =  0  or anything but  1 )

#
# The following are default settings for enabling Java in the database.
# Replace all occurrences of /usr/informix with the value of $INFORMIXDIR.

#VPCLASS        jvp,num= 1        # Number of JVPs to start with

JVPJAVAHOME     /opt/informix/extend/krakatoa/jre/       # JRE installation root directory
JVPHOME         /opt/informix/extend/krakatoa # Krakatoa installation directory

JVPPROPFILE     /opt/informix/extend/krakatoa/.jvpprops # JVP property file
JVPLOGFILE      /opt/informix/jvp.log   # JVP log file.

JDKVERSION     1 . 3               # JDK version supported by this server

# The path to the JRE libraries relative to JVPJAVAHOME
JVPJAVALIB    /lib/sparc/

# The JRE libraries to use for the Java VM

JVPJAVAVM     hpi:server:verify:java:net:zip:jpeg

# use JVPARGS to change Java VM configuration
#To display jni call
#JVPARGS        -verbose:jni

# Classpath to use upon Java VM start-up (use _g version for debugging)

# JVPCLASSPATH  /opt/informix/extend/krakatoa/krakatoa_g.jar:/usr/informix/extend/krakatoa/jdbc_g.jar
                       # go if no sbspace is specified when the smartblob is 
                       # created. It is also used by some datablades as
                       # the location to put their smartblobs. 
SYSSBSPACENAME         # Default smartblob space for use by the Informix 
                       # Server. This is used primarily for Informix Server
                       # system statistics collection.

BLOCKTIMEOUT     3600    # Default timeout for system block
SYSALARMPROGRAM    /opt/informix/etc/evidence.sh    # System Alarm program path

# Optimization goal: - 1  = ALL_ROWS(Default),  0  = FIRST_ROWS
OPT_GOAL        - 1 

ALLOW_NEWLINE    0        # embedded newlines(Yes =  1 , No =  0  or anything but  1 )

#
# The following are default settings for enabling Java in the database.
# Replace all occurrences of /usr/informix with the value of $INFORMIXDIR.

#VPCLASS        jvp,num= 1        # Number of JVPs to start with

JVPJAVAHOME     /opt/informix/extend/krakatoa/jre/       # JRE installation root directory
JVPHOME         /opt/informix/extend/krakatoa # Krakatoa installation directory

JVPPROPFILE     /opt/informix/extend/krakatoa/.jvpprops # JVP property file
JVPLOGFILE      /opt/informix/jvp.log   # JVP log file.

JDKVERSION     1 . 3               # JDK version supported by this server

# The path to the JRE libraries relative to JVPJAVAHOME
JVPJAVALIB    /lib/sparc/

# The JRE libraries to use for the Java VM

JVPJAVAVM     hpi:server:verify:java:net:zip:jpeg

# use JVPARGS to change Java VM configuration
#To display jni call
#JVPARGS        -verbose:jni

# Classpath to use upon Java VM start-up (use _g version for debugging)

# JVPCLASSPATH  /opt/informix/extend/krakatoa/krakatoa_g.jar:/usr/informix/extend/krakatoa/jdbc_g.jar
JVPCLASSPATH  /opt/informix/extend/krakatoa/krakatoa.jar:/usr/informix/extend/krakatoa/jdbc.jar
...
Рейтинг: 0 / 0
29.03.2006, 09:09
    #33631255
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IDS 9.40.FC6 ошибки -243 и -244 на update
askel...
Как найти, какой SQL-запрос держит блокировку на конкретную запись? Думаю, после этого будет понятно, где и как это вылечить.
rtfm onstat -k ?
...
Рейтинг: 0 / 0
29.03.2006, 09:29
    #33631306
askel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IDS 9.40.FC6 ошибки -243 и -244 на update
Журавлев Денис askel...
Как найти, какой SQL-запрос держит блокировку на конкретную запись? Думаю, после этого будет понятно, где и как это вылечить.
rtfm onstat -k ?

Nice try :)

Используя
Код: plaintext
onstat -k ; onstat -u
я могу найти процесс, но это всегда oninit, т.к. клиенты коннектятся к базе по TCP/IP с другого сервера и даже PID oninit процесса мне ничего не говорит. Моя задача - вычислить какой именно SQL-запрос держит блок. Возможно ли такое средствами IDS или мне надо пытаться вычислить его путем отслеживания TCP соединения с клиента на сервер?
...
Рейтинг: 0 / 0
29.03.2006, 09:53
    #33631380
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IDS 9.40.FC6 ошибки -243 и -244 на update
try?
onstat -k
onstat -g stm <sessid> |grep -i cash



И я не понял про другой сервер. Имеется ввиду гетерогенный запрос с другого информикса или серв. приложений?
-----------------------------------------------------------
Решительный шаг вперед -- результат хорошего пинка сзади
...
Рейтинг: 0 / 0
29.03.2006, 11:37
    #33631681
Тан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IDS 9.40.FC6 ошибки -243 и -244 на update
askel Журавлев Денис askel...
Как найти, какой SQL-запрос держит блокировку на конкретную запись? Думаю, после этого будет понятно, где и как это вылечить.
rtfm onstat -k ?

Nice try :)

Используя
Код: plaintext
onstat -k ; onstat -u
я могу найти процесс, но это всегда oninit, т.к. клиенты коннектятся к базе по TCP/IP с другого сервера и даже PID oninit процесса мне ничего не говорит. Моя задача - вычислить какой именно SQL-запрос держит блок. Возможно ли такое средствами IDS или мне надо пытаться вычислить его путем отслеживания TCP соединения с клиента на сервер?чтобы найти конкретный SQL-запрос вам надо не процесс в операционной системе искать, а сессию пользователя в informix. Текст текущего запроса можно посмотреть onstat -g sql <номер сессии>
...
Рейтинг: 0 / 0
29.03.2006, 17:26
    #33633231
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IDS 9.40.FC6 ошибки -243 и -244 на update
askel
Код: plaintext
set isolation to dirty read; set lock mode to wait 10

Как можно устанавливать dirty read , если хотите затем апдейтить эти данные?
Может вы не понимаете смысла dirty read ?
askelКак найти, какой SQL-запрос держит блокировку на конкретную запись? Думаю, после этого будет понятно, где и как это вылечить.

Таких способов много. Вот несколько SQL-запросов на эту тему.
---------------------------------------------
-- To list the user's current locks (exclude open db)
-- IDS 7.3+ 9.2+
--
-- V.Shulzhenko DBA_Tools
---------------------------------------------
set isolation to dirty read;
SELECT username[1,8]
,sid
,dbsname[1,18]
,tabname[1,18]
,type
,substr(round(count(*),0),1,6) locks
FROM syslocks l, syssessions s
WHERE s.sid = l.owner
and (dbsname !='sysmaster' and tabname !='sysdatabases')
GROUP BY 1,2,3,4,5
ORDER BY 1,2,3,4
============
---------------------------------------------
-- To list the database, tablename, login, sessionid, and pid
-- associated with any lock which has a wait list
--
-- V.Shulzhenko DBA_Tools
---------------------------------------------
set isolation to dirty read;
SELECT dbsname
,tabname[1,18]
,sid owner_sid
,username[1,8] owner
,l.waiter waiter_sid
FROM sysmaster:syslocks l, sysmaster:syssessions s
WHERE s.sid = l.owner
and l.waiter > 0
order by 1,2,3;
=================
---------------------------------------------
-- To list the session's current locks, who owns them,
-- and if any session is waiting for a lock
--
-- V.Shulzhenko DBA_Tools
---------------------------------------------
set isolation to dirty read;
SELECT
sid
,username[1,8]
,dbsname[1,18]
,tabname[1,18]
-- ,rowidlk
-- ,keynum
,type
,waiter
FROM syslocks, syssessions
WHERE syssessions.sid = syslocks.owner
ORDER BY 1,3,4,5
================
...
Рейтинг: 0 / 0
29.03.2006, 20:44
    #33633630
askel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IDS 9.40.FC6 ошибки -243 и -244 на update
Спасибо всем огромное за помощь!
Буду искать тормоза вооруженный вашими советами.
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / IDS 9.40.FC6 ошибки -243 и -244 на update / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]