Отговорът на вашия незабавен въпрос е, че получавате ORA-01031: insufficient privileges
тъй като вашият потребител има привилегията CREATE TABLE, предоставена чрез роля:моделът за сигурност на Oracle налага правило, че не можем да използваме привилегии, предоставени чрез роли в PL/SQL. Така че имате нужда от вашия DBA, за да предостави директно привилегията CREATE TABLE на вашия потребител.
Или ти?
Защото това, което се опитвате да направите, няма смисъл в Oracle. В Oracle глобалните временни таблици сапостоянни конструкции; просто данните в тях са временни. И така, правилното решение е да изградите таблицата веднъж с нормален DDL скрипт, както всеки друг обект на база данни. След това можете просто да вмъкнете в глобалната временна таблица, както е необходимо.
Вие не сте първият човек на този сайт, който прави тази грешка (прочетете тази подходяща тема). Често това е така, защото хората идват от друга база данни като SQL Server, която има конструкция, наречена "временна таблица", която всъщност е различна от глобалните временни таблици на Oracle. Ако това е вашият сценарий, тогава ще се интересувате от нова функция на Oracle 18c, наречена Private Temporary Tables. Те са точно аналогични на временните таблици на SQL Server. Научете повече.