Oracle运行脚本

Dra*_*ake 0 sql oracle sysdba oracle-sqldeveloper

我正在使用Oracle Sql Developer

我有一个巨大的脚本,可以创建表,索引,主键约束等.

我的DB名称是:dbo_other

我以sysdba身份登录了这个dbo_other.

如果我运行我的脚本,则表格不会出现在"桌子"下的左侧面板上

但是,如果我通过添加'dbo_other'来附加脚本.在每个表名前面,表格会显示出来.

这非常繁琐且耗时.

有办法避免这种情况吗?为什么他们不会在没有添加dbo_other的情况下出现在dbo_other中.在每个表名前?当我在右上角运行查询时,下拉列表中选择了dbo_other !!

我甚至可以从创建的表中做一个select*(但是在左侧边栏中看不到它)此外,我可以在pl/sql developer中看到该表.

为什么oracle sql开发人员要我用dbo_other创建它.??

另外,有没有办法避免为每个表添加它?也许可以在脚本之上完成某些事情,以便它对随后的所有内容生效?

APC*_*APC 7

为什么要使用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>
Run Code Online (Sandbox Code Playgroud)

因此,当您运行该脚本时,您在SYS模式中创建了所有这些对象.这将被证明是颈部的巨大痛苦.我希望你有一个相同和相反的回归脚本.

要正确运行脚本,您需要做的只是连接为DBO_OTHER(正常 - 即没有SYSDBA或SYSOPER,这毕竟是默认值).您的脚本将在当前架构中创建表.

如果需要在多个模式中创建对象,则无需再次注销.模式与用户不同,可以通过执行来切换模式alter session set current schema = WHOEVR;.这是一个非常方便的技巧,我在一段时间后发表了博客.了解更多.

请注意,您的用户不会通过更改当前架构获得任何其他权限:它们只能执行当前可以执行的操作.因此,对于像在多个模式中创建对象这样的事情,执行用户应该是高级用户,有人具有CREATE ANY特权,例如DBA(但仍然不是SYSDBA).