«Не удалось найти табличное пространство с размером страницы не менее« 4096 », который авторизован для использования идентификатора авторизации« DB2INST1 ».»ошибка в DB2 - PullRequest
0 голосов
/ 04 декабря 2018

При попытке создать временные таблицы в DB2 (11.1) в Ubuntu 16.04 появляется следующее сообщение об ошибке:

Ошибка SQL [42727]: табличное пространство не может быть найдено с помощьюразмер страницы не менее 4096, который разрешено использовать с ID авторизации "DB2INST1". SQLCODE = -286, SQLSTATE = 42727, DRIVER = 4.24.92

Это запрос, который я пытаюсь выполнитьдля запуска (минимальный пример для демонстрации поведения):

CREATE GLOBAL TEMPORARY TABLE testTbl (col1 int NOT null)

Я попытался создать табличное пространство 8 КБ с буферным пулом 8 КБ и предоставить ему доступ для пользователя db2inst1, как описано в этом вопросе: DB2-Получение Табличное пространство по умолчанию не может быть найдено с размером страницы не менее "8192", для которого ID авторизации "***" имеет право использовать , но это, похоже, не помогло.

Если бы кто-нибудь мог дать мне какое-либо представление о том, почему это происходит и как его решить, было бы очень полезно.

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

1 Ответ

0 голосов
/ 04 декабря 2018

CGTT (глобальная временная таблица) может быть создана только в табличном пространстве определенного типа, отличающегося от обычного табличного пространства.

Используйте синтаксис create user temporary tablespace ..., работая какПользователь db2inst1 и убедитесь, что он успешно завершил работу перед повторной попыткой CGTT.

Если db2inst1 является владельцем экземпляра, как вы предлагаете, то у него будут права на это.Однако, если учетная запись, отличная от db2inst1, хочет запустить create global temporary table, возможно, этой учетной записи может потребоваться предоставить доступ USE к временному табличному пространству пользователя.

Если вы планируете использовать объекты DGTT и CGTT, тогда это целесообразнообеспечить во время сборки для каждой базы данных, что соответствующие пользовательские временные табличные пространства создаются для каждого из размеров страниц 4K, 8K, 16K и 32K, после того как буферные пулы уже существуют для каждого размера страниц, а затем убедиться, что соответствующие учетные записи и роли имеют доступ USEи рассмотрите возможность отмены общего доступа к ним.

Например, это создаст временное табличное пространство пользователя 4K в базе данных Db2-LUW V11.1 и будет повторно использовать пул буферов 4K по умолчанию, многие из этих опций могутопустить, но это показывает, что db2look будет производить, и позволяет увидеть, что можно изменить:

CREATE USER TEMPORARY TABLESPACE "UTMP4K" 
         PAGESIZE 4096 MANAGED BY AUTOMATIC STORAGE
         USING STOGROUP "IBMSTOGROUP"
         EXTENTSIZE 4
         PREFETCHSIZE AUTOMATIC
         BUFFERPOOL "IBMDEFAULTBP"
         OVERHEAD INHERIT
         TRANSFERRATE INHERIT
         FILE SYSTEM CACHING
         DROPPED TABLE RECOVERY OFF;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...