/ / схеми, вписани с разширение orafce на postgresql - оракул, postgresql, orafce

схеми, снабдени с разширение за оракул по постгресал - оракул, постгресал, orafce

Аз инсталирах разширение на разширението по пощата 9.5. Видях, че е по-добре да създадете конкретна схема за всички разширения и това, което направих. Свързах се с шаблон 1 и направих следващите команди:

template1=# create schema extensions;
CREATE SCHEMA
template1=# grant usage on schema extensions to public;
GRANT
template1=# grant execute on all functions in schema extensions to public;
GRANT
template1=# alter default privileges in schema extensions grant execute on
functions to public;
ALTER DEFAULT PRIVILEGES
template1=# alter default privileges in schema extensions grant usage on
types to public;
ALTER DEFAULT PRIVILEGES
template1=# create extension orafce schema extensions;
CREATE EXTENSION
template1=# show search_path;
search_path
-----------------
"$user", public
(1 row)

template1=# set search_path="$user",public,extensions;
SET

След това създадох нова база данни test1 и нов потребител mariel1. Освен това редактирах postgresql.conf и зададох path_path да бъде "$ user", public, extensions.

Свързах се с базата данни - psql -d test1 -U mariel1. Сега, когато се опитам да използвам функцията sysdate, например базата данни не разпознава функцията

postgres=# select sysdate() from dual;
ERROR:  function sysdate() does not exist
LINE 1: select sysdate() from dual;
^
HINT:  No function matches the given name and argument types. You might need
to add explicit type casts.
postgres=# select extensions.sysdate() from dual;
ERROR:  schema "extensions" does not exist
LINE 1: select extensions.sysdate() from dual;

След известно търсене видях, че някои от функциите, налични при други схеми като оракул, utl_file и др. Искам да разбера защо функциите на orafce (oracle.sysdate и т.н. ...) са създадени под различни схеми (oracle, utl_file ..), а не под моите нови разширения на схеми.

Отговори:

0 за отговор № 1

Разширението в PostgreSQL е База данни нивото не е ниво на ниво схема или ниво на ниво. Не можете да създадете същото разширение в същата база данни. Но можете да създадете същото разширение в няколко бази данни. това е как разширението в PostgreSQL работи.