Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / declare global temporary table & SQLCODE=-286 / 4 сообщений из 4, страница 1 из 1
07.08.2012, 15:52
    #37907531
Roman OL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
declare global temporary table & SQLCODE=-286
Привет

Есть процедура, которая использует
Код: sql
1.
declare global temporary table tcmd (cmd varchar (256) not null)


что при вызове процедуры, что при выполнении этого кода получаю
Код: sql
1.
A table space could not be found with a page size of at least "4096" that authorization ID "DB2INST1" is authorized to use.. SQLCODE=-286, SQLSTATE=42727, DRIVER=4.13.127


DB2INST1 это владелец экземпляра, работаю под ним.

В базе есть такие tablespaces
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
select create_time, tbspace, owner, ownertype, pagesize, datatype
from syscat.tablespaces
order by create_time, datatype, tbspace

 CREATE_TIME                TBSPACE      OWNER    OWNERTYPE PAGESIZE DATATYPE
 -------------------------- ------------ -------- --------- -------- --------
 2012-08-07 13:46:52.698448 SYSCATSPACE  SYSIBM   S             4096 A
 2012-08-07 13:46:52.714618 TEMPSPACE1   SYSIBM   S             4096 T
 2012-08-07 13:46:52.714694 USERSPACE1   SYSIBM   S             4096 L
 2012-08-07 13:51:34.077121 SYSTOOLSPACE DB2INST1 U             4096 L
 2012-08-07 13:53:32.59716  TS8_1        DB2INST1 U             8192 L
 2012-08-07 13:53:34.892058 TS16_1       DB2INST1 U            16384 L
 2012-08-07 13:53:36.94008  TSLARGE_1    DB2INST1 U            32768 L
 2012-08-07 13:53:39.245429 TSLARGE_2    DB2INST1 U            32768 L
 2012-08-07 13:53:41.650031 TS8_1T       DB2INST1 U             8192 T
 2012-08-07 13:53:41.763462 TS16_1T      DB2INST1 U            16384 T
 2012-08-07 13:53:41.865749 TS32_1T      DB2INST1 U            32768 T
 2012-08-07 14:21:58.785689 TS4_1T       DB2INST1 U             4096 T



последний по дате создания был неудачной попыткой устранения ошибки.
Вопросы
- как заставить работать мой код? - вчера он работал на практически такой же базе - tablespaces точно не менялись.
- какие настройки смотреть?
- и риторический - как закончить с конфигурированием и начать писать скл? ))
...
Рейтинг: 0 / 0
07.08.2012, 16:08
    #37907567
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
declare global temporary table & SQLCODE=-286
Roman OL,

Вам надо создать не системное, а пользовательское временное табличное пространство.
CREATE USER TEMPORARY TABLESPACE TS4_1T ...
У вас, судя по syscat.tablespaces .datatype, оно именно системное, а не пользовательское:

Код: plaintext
1.
2.
 CREATE_TIME                TBSPACE      OWNER    OWNERTYPE PAGESIZE DATATYPE
 -------------------------- ------------ -------- --------- -------- --------
 2012-08-07 14:21:58.785689 TS4_1T       DB2INST1 U             4096 T

Кроме того, вы могли бы посмотреть описание кода ошибки из командной строки:

db2 "? SQL286"
SQL0286N A default table space could not be found with a page size of
at least "<pagesize>" that authorization ID "<user-name>" is
authorized to use.

Explanation:

The CREATE TABLE, CREATE GLOBAL TEMPORARY TABLE, or DECLARE GLOBAL
TEMPORARY TABLE statement did not specify a table space, and a table
space of the right type (USER TEMPORARY for created temporary table or
declared temporary table) with sufficient page size (at least
"<pagesize>"), over which authorization ID "<user-name>" has USE
privilege, could not be found.

Sufficient page size for a table is determined by either the byte count
of the row or the number of columns.

User response:

Ensure the existence of a table space of the correct type (REGULAR or
USER TEMPORARY) with a page size of at least "<pagesize>" and that
authorization ID "<user-name>" has USE privilege on this table space.

sqlcode: -286

sqlstate: 42727
...
Рейтинг: 0 / 0
07.08.2012, 16:10
    #37907569
Roman OL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
declare global temporary table & SQLCODE=-286
маленькая поправочка

по состоянию на момент ошибки в базе было
Код: sql
1.
2.
3.
select count (*)
from SYSIBMADM.ADMINTABINFO
where REORG_PENDING = 'Y'



58 таблиц ожидающих реорг.
Весь трагикомизм ситуации в том, что процедура с временной таблицей как раз и должна была вызвать admin_cmd('reorg ... ')
...
Рейтинг: 0 / 0
07.08.2012, 16:18
    #37907580
Roman OL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
declare global temporary table & SQLCODE=-286
Mark Barinstein,

Да, действительно, вы правы. Объявлял его как
Код: sql
1.
2.
3.
create system temporary tablespace ts4_1t 
pagesize 4k
bufferpool bp4_1t



Спасибо.
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / declare global temporary table & SQLCODE=-286 / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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