暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DeepSeek说:如何理解oracle和postgreSQL的schema

点击上方蓝字,关注我们




想学会更多实用技巧,欢迎加入青学会MOP技术社区(实名社区)。

加入方法:公众号后台回复关键字“加入”获取小助手微信,添加后登记入会。

同时欢迎大家在评论区留言互动交流!社区会不定期举行相关的抽奖、公开分享活动。

如果你有想了解的知识点希望我们发文可以后台私信。

最近联合几个 Oracle ACE技术专家 开通了一个付费微信群,都是具有10多年金融、医疗、制造业10年以上的一线专家,坑位费399/人,无限期,目前群内近150。加群后会有一些福利(分享各类技术文档,干货资源,问题解答等等),更有特邀嘉宾会定期在群内直播,解读AWR,快问快答等!有问题我们尽量都解答,毕竟399不能都解决所有问题。有兴趣联系微:ywu0613

内部知识库正在筹建中,不止有oracle!

正文开始

在Oracle和PostgreSQL中,Schema是用于组织和管理数据库对象(如表、视图、索引等)的逻辑容器,但两者的实现和用途存在显著差异。以下是详细对比:


Oracle 的 Schema

定义与特点

  • Schema 与用户绑定:在Oracle中,Schema与数据库用户一一对应。创建用户时,会自动生成一个同名的Schema,该用户拥有的所有对象(如表、视图)默认存储在其Schema中。
  • 对象归属:用户创建的数据库对象属于其对应的Schema,其他用户需通过权限授予或使用<schema>.<object>
    语法访问。
  • 权限管理:Schema的权限通过用户权限控制。例如,用户A需要显式授权用户B访问其Schema中的对象。
-- 创建用户(自动生成同名的Schema)
CREATE USER user_a IDENTIFIED BY password;

-- 用户A创建表(属于user_a的Schema)
CREATE TABLE user_a.employees (id NUMBERname VARCHAR2(50));

-- 授权用户B访问该表
GRANT SELECT ON user_a.employees TO user_b;

-- 用户B查询时需要指定Schema
SELECT * FROM user_a.employees;


PostgreSQL 的 Schema

定义与特点

  • 独立于用户的命名空间:Schema是数据库内部的逻辑容器,与用户无直接绑定。一个数据库可包含多个Schema,默认存在public
     Schema。
  • 对象组织:通过Schema可将对象按功能或模块分类(如hr
    finance
    ),避免命名冲突。
  • 权限管理:需单独授予Schema的USAGE
    权限,以及对具体对象的操作权限(如SELECT
    )。
-- 创建Schema
CREATE SCHEMA hr;

-- 在hr Schema中创建表
CREATE TABLE hr.employees (idSERIALnameTEXT);

-- 授权用户b访问hr Schema
GRANT USAGE ON SCHEMA hr TO user_b;
GRANT SELECT ON hr.employees TO user_b;

-- 通过search_path简化访问(默认搜索路径)
SET search_path TO hr, public;
SELECT * FROM employees; -- 自动查找hr.employees


核心区别

特性OraclePostgreSQL
Schema与用户关系
与用户严格绑定,用户即Schema
独立于用户,纯逻辑容器
权限管理
用户权限控制Schema访问
需单独授权Schema和对象权限
默认Schema
用户名为默认Schema名
默认使用public
 Schema
跨Schema访问
必须通过<schema>.<object>
语法
可通过search_path
省略Schema前缀
设计目的
用户隔离与权限控制
逻辑组织与命名空间管理

** 使用场景**

  • Oracle Schema
    适用于多租户环境,每个用户(租户)拥有独立的Schema,实现数据和权限隔离。

  • PostgreSQL Schema
    适合单数据库中多模块的数据组织,例如将不同业务单元(HR、财务)的表放在不同Schema中。


** 注意事项**

  • Oracle:删除用户会级联删除其Schema中的所有对象,需谨慎操作。
  • PostgreSQL:若未正确设置search_path
    或未授权USAGE
    权限,可能导致“Schema不存在”错误。
  • 迁移场景:从Oracle迁移到PostgreSQL时,需将用户相关的Schema转换为独立的逻辑Schema,并重新设计权限。

通过理解两者差异,可以更高效地设计数据库结构和权限模型,避免因混淆导致的访问错误或管理混乱。


    



END


往期文章回顾

MOP社区新闻

  青学会MOP技术社区成立了!

  青学会专家顾问团成员介绍

金仓专栏

  告别繁琐!KingbaseES v9数据库一键安装-青学会&金仓专栏(1)

  KingbaseES v9数据库Docker安装-青学会&金仓专栏(2)

  KingbaseES数据脱敏-青学会&金仓专栏(3)

  KingbaseES后台服务管理-青学会&金仓专栏(4)

  电科金仓KES日常运维命令集锦-青学会&金仓专栏(5)


DBA实战小技巧

  推荐一款超实用的openGauss数据库安装工具!

  实战:记一次RAC故障排查
  DBA实战运维小技巧安装篇(一)Oracle 主流版本不同架构下的静默安装指南
  DBA实战运维小技巧存储篇(一)根目录满了如何处理
  DBA实战运维小技巧存储篇(二)打包迁移单机数据库至新存储

MOP社区投稿-内核开发

  浅谈 PostgreSQL GUC 模块原理

  简单解析 IvorySQL 增强 Oracle xml 兼容能力的原理

  简单讨论 PostgreSQL C语言拓展函数返回数据表的方式

  简单分析 pg_config 程序的作用与原理
  Redis 日志机制简介(一):SlowLog
  Redis 日志机制简介(二):AOF 日志
  Redis 日志机制简介(三):RDB 日志
  pg_cron插件使用介绍
  Redis 的指令表实现机制简介
  pg几款源码工具介绍
  Redis 事务功能简介

MOP顾问说

   MOP顾问说:MOP 三种主流数据库常用 SQL(一)

  MOP顾问说: 服务器内存

  MOP 顾问说:Linux Nice 值与 CPU 优先级揭秘


文章转载自青年数据库学习互助会,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论