Ошибка подключения к базе данных SQL, которую я создал с пользователем, которого я создал - PullRequest
0 голосов
/ 14 января 2012

У меня есть некоторые проблемы с подключением к базам данных с использованием созданных мной пользователей. Сначала я создал пользователей следующим образом:

create user util1 identified by user1;

create user util2 identified by user2;

create user util3 identified by user3;

create user util4 identified by user4;

create user util5 identified by user5;

create user util6 identified by user6;

create user util7 identified by user7;

create user util8 identified by user8;

grant dba to util1,util2,util3,util4,util5,util6,util7,util8;

select lpad(' ', 2*level) || granted_role "User, his roles and privileges"
   from (select null grantee, username granted_role from dba_users where username like upper('%UTIL%')
         union
            select grantee, granted_role from dba_role_privs
         union
            select grantee, privilege from dba_sys_privs)
                                           start with grantee is null
                                           connect by grantee = prior granted_role;

Это работает нормально. Но когда я пытаюсь создать таблицу, используяПрава "util1" не работают:

connect util1/user1 AS SYSDBA;
create table pr1(
             cod_subansamblu number(4),
             denumire varchar2(20) not null,
             cantitate number(7,3),
             UM varchar2(3),
             pret_unitar number(9,2),
             cod_ansamblu number(4),
             cod_sectie number(4)  not null,
             constraint pr1_cod_subansamblu_pk primary key(cod_subansamblu),
             constraint pr1_UM_chk check(UM in ('BUC','ML','MP','MC','SET'))
             );

Я действительно не знаю, что происходит не так.Помощь будет принята с благодарностью.

Я получаю сообщение об ошибке:

Last Execution Details

Results        


Statistics        Plan                

ORA-00900: invalid SQL statement

1 Ответ

2 голосов
/ 15 января 2012

В операторе CREATE TABLE нет ничего плохого:

SQL> create table pr1(
             cod_subansamblu number(4),
             denumire varchar2(20) not null,
             cantitate number(7,3),
             UM varchar2(3),
             pret_unitar number(9,2),
             cod_ansamblu number(4),
             cod_sectie number(4)  not null,
             constraint pr1_cod_subansamblu_pk primary key(cod_subansamblu),
             constraint pr1_UM_chk check(UM in ('BUC','ML','MP','MC','SET'))
             );  2    3    4    5    6    7    8    9   10   11  

Table created.

SQL>

Поэтому трудно понять, почему при его запуске выдается ORA-00900.Какой клиент вы используете для его запуска?SQL * Plus?IDE, как жаба?Можете ли вы предоставить отрезанную пасту для всего сеанса, чтобы мы могли видеть точно что происходит?


Еще одна вещь, которую следует иметь в виду, если вы подключаетесь с использованиемas sysdba вы входите в базу данных как SYS, независимо от того, указали ли вы пользователя в строке CONNECT:

SQL> conn apc/password as sysdba
Connected.
SQL> sho user
USER is "SYS"
SQL> 

(Это работает, только если вы вошли в ОС как учетная запись oracle илидругой соответственно привилегированный пользователь).

Таким образом, вы можете подумать, что выполняете оператор создания таблицы как UTIL1, но на самом деле вы выполняете его как SYS, что не очень хорошая идея.На самом деле это плохая практика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...