oracle两个用户数据交换,oracle – 两个用户访问同一个数据库还是不同?

根据我使用Oracle的经验,典型的划分单元是架构. Oracle中的模式更像是在SQL Server或PostgreSQL中使用数据库.它们代表用户和对象的逻辑分离.物理分离通常使用表空间来完成.表空间是一组存储数据的物理文件.模式可以共享或使用不同的表空间.每个模式有一个表空间是不常见的;他们通常共享一些表空间,或者通常只有一个表空间.

考虑到这一点,更直接地回答您的问题,

1)与任何其他数据库一样,您可以指定对象所属的模式:

CREATE TABLE MY_SCHEMA.TABLE_X ( X NUMBER )

如果两个CREATE语句上的模式不同,那么它将创建不同的对象. Oracle的不同之处在于每个用户的默认架构都会发生变化.默认架构始终是当前连接的架构/用户.所以如果省略这样的架构:

CREATE TABLE TABLE_X ( X NUMBER )

然后隐含的模式是当前连接的模式/用户.因此,如果我以MY_SCHEMA身份登录,则上述内容与第一个示例相同.当作为两个不同的用户连接时,隐含的模式将是不同的,并且DDL在两个用户之间不相等.因此,如果未指定架构,则运行相同的语句将创建两个不同的对象.

如果两个对象位于同一表空间中,则它们可以存储在同一物理文件中. (如果你没有显式地创建一个并且在创建模式时没有指定不同的默认表空间,它们很可能在USERS表空间中.)无论如何,它们仍然是两个完全独立的对象.

如果您在第一个示例中明确指定了架构,那么无论谁执行它,DDL都是等效的(尽管权限可能会阻止某些用户执行它).因此,它会导致创建一次对象,并且尝试再次创建它将导致错误,除非您使用CREATE OR REPLACE或类似的东西.

2)我不知道这个问题的答案,但正如我所说,在Oracle中,基本的分离单元通常是模式,而不是数据库.我相信你问的问题很大一部分原因是模式的使用方式.在同一台机器/实例上拥有多个实际数据库在Oracle中比在其他数据库中要困难得多(如果不是不可能的话),因此拥有一个包含许多模式的单个数据库要简单得多.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值