ora-00942 даже я создаю таблицу в моей схеме - PullRequest
0 голосов
/ 21 октября 2018

Я создал нового пользователя и предоставил ему привилегию (администрирование базы данных).Затем я подключился к этому новому пользователю.

Когда я создаю новую таблицу у этого пользователя, затем пытаюсь выбрать из этой таблицы, она дает мне

oracle-00942: таблица / представление делаетне существует

Когда я пытаюсь найти его через жабу из браузера схемы, я не могу найти его.Я искал ее и нашел эту таблицу у пользователя (sys).

Когда я создаю таблицу с именем схемы, я нашел ее в браузере схемы, но также не могу выбрать из нее.

Так что же такоечто с этим не так?

Ответы [ 3 ]

0 голосов
/ 21 октября 2018

Было бы лучше, если бы вы действительно показали нам, что вы делали и как Oracle реагировал (т.е. копировал / вставлял весь сеанс SQL * Plus).

Поскольку вы можете создавать пользователей, вы, вероятно, можете подключиться как SYS,Сделайте это, а затем выполните такой оператор:

SQL> select owner, object_type
  2  from dba_objects
  3  where object_name = 'EMP';

OWNER                          OBJECT_TYPE
------------------------------ -------------------
SCOTT                          TABLE

SQL>

Он покажет, кому на самом деле принадлежит эта таблица.


Я собираюсь смоделировать то, что вы сделали (на самом деле, то, что я понял вы сделали).Вы увидите, что - если вы все сделаете правильно - все в порядке.

Подключитесь как SYS и создайте нового пользователя:

SQL> show user
USER is "SYS"
SQL> create user utest identified by utest
  2  default tablespace users
  3  temporary tablespace temp
  4  quota unlimited on users;

User created.

SQL> grant dba to utest;

Grant succeeded.

Подключитесь как вновь созданный пользователь, создайте таблицу:

SQL> connect utest/utest
Connected.
SQL> create table test (id number);

Table created.

SQL> select * from test;

no rows selected

ОК;таблица пуста, но - нет ошибки ORA-00942.

Вернемся к SYS, чтобы проверить, кому принадлежит таблица TEMP:

SQL> connect sys as sysdba
Enter password:
Connected.
SQL> select owner, object_type
  2  from dba_objects
  3  where object_name = 'TEST'
  4  order by owner;

OWNER                          OBJECT_TYPE
------------------------------ -------------------
SCOTT                          TABLE
UTEST                          TABLE

SQL>

Теперь ваша очередь.

0 голосов
/ 22 октября 2018

Я искал ее и нашел эту таблицу у пользователя (sys).

Похоже, вы подключились к базе данных, используя привилегию SYSDBA, что-то вроде этого:

connect your_user/password as sysdba

Когда мы делаем это, Oracle игнорирует переданное имя пользователя и связывает нас как SYS.Следовательно, любые наши действия выполняются как SYS.Это означает, что любые таблицы, которые мы создаем, создаются в схеме SYS, если мы не ставим перед ними префикс с определенным именем схемы.

0 голосов
/ 21 октября 2018

Было бы полезно, если бы вы показали последовательность шагов, которые вы использовали для создания таблицы.Я предполагаю, что вы создаете таблицу по неправильной схеме (владелец).Сделайте это, чтобы узнать, где он находится:

select owner, table_name from all_tables where table_name = 'MYTABLE'

Если вы подключены как SYS, вы можете использовать dba_tables вместо all_tables.

...