2009-10-01 3 views
0

Я использую Oracle SQL Developern00b оракул вопрос

У меня есть огромный сценарий, который создает таблицы, индексы, ограничения первичного ключа и такие.

мое имя БД: dbo_other

Я вошел в эту dbo_other как SYSDBA.

Если я бегу мой сценарий, то таблицы не отображаются на левой панели в разделе «Таблицы»

Однако, если я добавить сценарий, добавив 'dbo_other. перед каждым именем таблицы появляются таблицы.

Это очень утомительно и требует много времени.

Есть ли способ избежать этого? почему они не появятся в dbo_other без добавления dbo_other. перед каждым именем таблицы? Когда я запускаю запрос в верхнем правом углу, выпадающее значение имеет dbo_other!

Я могу даже сделать выбор * из созданной таблицы (но не вижу ее в левой боковой панели). Кроме того, я вижу таблицу в разработчике pl/sql.

Почему разработчик sql sql разработчик хочет, чтобы я создал его с dbo_other. ??

Кроме того, есть ли способ избежать добавления его для каждой таблицы? возможно, что-то можно сделать поверх сценария, чтобы он вступил в силу во всем, что следует?

ответ

6

Почему вы входите в вашу базу данных, используя учетную запись SYSDBA? Это очень мощно, и это позволит вам нанести ужасный урон вашей базе данных, если вы не знаете, что делаете. Я боюсь, что нет.

Интересная вещь в AS SYSDBA заключается в том, что она отменяет имя пользователя в логине: если пользователь ОС имеет свои привилегии, вы находитесь. Как SYS. Проверьте это:

SQL> conn apc 
Enter password: 
Connected. 
SQL> show user 
USER is "APC" 
SQL> conn apc as sysdba 
Enter password: 
Connected. 
SQL> show user 
USER is "SYS" 
SQL> 

Итак, когда вы запустили этот скрипт, вы создали все эти объекты в схеме SYS. Который окажет огромную боль в шее. Надеюсь, у вас есть равный и противоположный сценарий реверсии.

WRT для правильного запуска сценария, все, что вам нужно сделать, это подключиться как DBO_OTHER (нормальное - без SYSDBA или SYSOPER). По умолчанию это значение по умолчанию.

+1

таблица собственности ++ –

0

Дерево «Таблицы» на левой панели содержит только те таблицы, которые зарегистрированный пользователь имеет в Oracle SQL Developer. Если ваш сценарий создает таблицы в другой схеме пользователя, вам нужно щелкнуть + рядом с «Другие пользователи», найти соответствующего пользователя и щелкнуть значок + на своих таблицах.

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

0

Я просто наткнулся на этот маленький jem, который позволяет выполнять действия по схеме/пользователю по умолчанию, для которых вы не вошли в систему. То есть, по умолчанию ваши операторы select и т. Д. Будут работать на этой новой схеме, а не на вашей собственной.

альтер набор сеанса current_schema =

Пример: Сам + таблица1 + таблица2 SomeoneElse + SuperTable1 + SuperTable2

log in as "Myself" 
select * from SuperTable1 

Error: ORA-00942: table or view does not exist 

alter session set current_schema = SomeoneElse 
select * from SuperTable1 <This will work.> 
Смежные вопросы