2009-10-01 80 views
0

我使用的Oracle SQL Developer的n00b甲骨文问题

我有一个创建表,索引,主键约束和如此巨大的脚本。

我的数据库名字为:dbo_other

我登录到这个dbo_other以SYSDBA。

如果我跑我的剧本则表不左侧面板上的显示下的“表”

但是,如果我加入追加剧本“dbo_other。”在每个表名的前面,表格显示出来。

这是非常乏味和耗时的。

有没有办法避免这种情况?为什么不在dbo_other中显示而没有添加dbo_other。在每个表名前面?当我在右上角运行查询时,下拉菜单中选择了dbo_other!

我甚至可以从创建的表中选择*(但在左边栏中没有看到它)此外,我可以在pl/sql开发人员中看到表。

为什么oracle 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模式中创建了所有这些对象。这将被证明是脖子上的巨大痛苦。我希望你有一个平等和相反的反转脚本。

为了正确运行脚本,您需要做的就是以DBO_OTHER身份进行连接(即不使用SYSDBA或SYSOPER)。毕竟这是默认设置。

+1

表所有权++ – 2009-10-01 16:09:42

0

左侧面板上的“表”树仅包括登录用户在Oracle SQL Developer中拥有的表。如果您的脚本在另一个用户的模式中创建表格,则需要单击“其他用户”旁边的+,找到相应的用户,然后单击表格中的+。

正如其他人所说,除非需要,否则不应该使用SYSDBA,这听起来很像您的脚本应该基于其粗略描述作为普通用户执行。

0

我只是偶然发现了这个小小的jem,它允许您在默认情况下对模式/用户执行操作,而您没有登录。也就是说,默认情况下,你的选择语句等将在这个新的模式上运行,而不是你自己的。

ALTER会话组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.>