我一直搞不清oracle里面的schema和表空间。尤其是不知道这个schema是个啥。一般,我们创建表空间,将数据表建在其中,然后导出导入,好像指定的也是这个同名的schema:
难道 schema 就是 表空间?
现在看起来应该不是。我还没有找到确切的答案,只能按照个人的理解来回答:
表空间是一个存储概念,而schema是一个数据结构定义的概念。表空间负责存储,schema定义的是表的字段、字段类型,等等。
如果我没有理解错,则一个schema可以对应多个表空间。而表空间也可以存放来自多个schema的表、视图等数据库对象。
注意到,使用表空间work的数据库用户也名叫work,由于我们在创建表空间过程中,并没有一个语句创建所谓的schema,难道数据库用户就是schema?
也不是。但是,schema的确跟用户是一对一的关系,系统应当是在创建用户的时候,自动创建的schema。
用户是用来连接数据库对象。而模式是用来创建管理对象的。模式跟用户在oracle 是一对一的关系。
至于为啥是这样的设计,不晓得。
不用猜,看看下面材料就清楚:
2019-04-19 schema vs tablespace vs user 模式、表空间、用户的联系与区别