如何从 SQL Server DBA 过渡到 Oracle?

dar*_*eds 31 oracle sql-server

作为兴趣,如果我想从 SQL Server DBA 过渡到 Oracle,我必须做的主要学习或忘却是什么?

我认为这些概念是相同的,区别仅在于编程语言,但我还没有看到门的另一面。

Con*_*lls 44

Oracle 和 SQL Server 有许多体系结构和惯用语差异,并且文档中的几个关键术语使用不同。自从我这样做已经好几年了,但一些主要的惯用差异是:

  • Oracle 没有与 tempdb 的直接等效项。全局临时表是持久性实体,您不会像在 SQL Server 中使用临时表那样动态创建它们。

  • 惯用的 PL/SQL 比惯用的 T-SQL 更加程序化。另一方面,PL/SQL 具有支持快速游标操作的功能,包括并行循环构造。通常,中间游标结果的使用方式类似于在 SQL Server 中使用临时表的排序方式。查看如何使用 '%' 在游标变量类型中获得一些多态性。

  • SQL*Plus 是一个类似于 SQLCMD 的命令行工具。在普通安装中,它可能是您可用的全部。如果您需要像 SSMS 这样的 GUI 工具,您可以获得 SQL Developer 或第三方工具,例如 TOAD。TOAD 相当昂贵。

  • 了解回滚段的作用(在 Oracle 的 MVCC 中使用)以及“快照太旧”错误的乐趣。

  • 如果可能,获取一个 metalink 帐户。

  • 阅读概念指南。它有很多有用的入门信息。

  • 表空间大致相当于文件组。

  • SQL 和嵌入在 PL/SQL 中的 SQL 方言在 Oracle 中并不完全相同。

  • Oracle 直到最近才支持递归 CTE。您可以使用 CONNECT BY 进行递归查询。

  • 阅读 RMAN 的文档以了解如何进行备份。您可以使用一些巧妙的技巧,例如将差异备份合并到一个可恢复的备份中。

  • 系统数据字典具有表的“ALL”、“USER”和“DBA”版本。'USER_ ' 显示登录所拥有的对象。'ALL_ ' 显示登录可以读取的所有对象。'DBA_*' 是一个全局视图,但您必须具有适当的权限才能看到它。与 SQL Server 相比,您可能会在 Oracle 中更多地使用数据字典,因此请了解它。

  • 聚簇表在 Oracle 中称为“索引有序表”。Oracle 中的“集群表”指的是一个非常不同的特性。在 Oracle 中,聚簇表是一种工具,它允许基于公共键混合主/明细表的物理存储。该功能没有被广泛使用。

  • 索引视图在 Oracle 中称为“物化视图”。他们的工作方式有些不同,有足够的细微差别值得他们自己提出问题。

  • Oracle 没有与 SQL Server 中的“数据库”等效的概念。在 Oracle 中,模式只是某些数据库对象的所有者。

  • PL/SQL 具有称为“包”的显式模块结构。

  • 查看使用序列而不是标识列。

  • 在旧版本的 Oracle(10g 之前)中,获取查询计划有点麻烦。您必须创建一个表(格式正确)以将计划转储到,然后将查询“解释计划”到表中以获取查询计划。然后,您可以从表中取出查询计划。每个人和他们的狗都有最喜欢的查询计划查询。用谷歌搜索并找到一个,然后冷藏品尝。10g 添加了一个名为dbms_xplan的包,它简化了查询计划的使用。

  • 如果您在 unix 或 linux 主机上运行 Oracle,拥有 shell 脚本的工作知识不会有什么坏处。

  • Oracle 支持自治事务——您可以提交一个内部自治事务,并期望它在父级回滚时保持提交。SQL Server 嵌套事务不是真正的嵌套事务并且具有不同的语义。您可以使用 SQL Server 中的 CLR 存储过程模拟这种行为,方法是打开一个独立的连接并通过它执行自主操作。

尽管 Oracle 销售 OLAP 服务器、报告工具和 ETL 工具,但 Oracle 提供的开箱即用 BI 工具较少。

  • Oracle 捆绑了一个名为SQL*Loader的批量加载工具,其功能类似于 bcp。

  • 与 SSIS 最接近的等效项是Oracle Warehouse Builder (OWB),但这是一个单独的项目,不与基本系统捆绑在一起。

  • Oracle 制作了一个名为Oracle Reports的报告工具,但这也不与基本系统捆绑在一起。这是最接近 Reporting Services 的等效项。

  • Oracle 还制作了一个名为Discoverer的 ROLAP 工具。这是 Oracle 生产的最接近 Report Builder 的产品。较新的版本(“Drake”)支持 Oracle 的 OLAP 引擎。

  • Oracle 曾经有一个名为Express的 OLAP 产品 有一次,他们将其构建到核心 Oracle DBMS 引擎中,将其本机数据结构存储在不透明的 blob 中。它与 Express 不完全兼容,并且有一个专有接口,几乎没有第三方 OLAP 前端工具的支持。

  • Oracle BI 企业版曾经是 Siebel Analytics。这有一些 OLAP 功能,但我不熟悉它。也许有人用过它可能想评论。Oracle 没有直接承认 Siebel 是与其自己的 BI 工具完全独立的产品,但表示从 Oracle BI 标准版到企业版没有“升级路径”。请注意,标准和企业 BI 套件都是独立的产品,不与基本系统捆绑在一起。

  • 实际上,Oracle 出售的最接近 SSAS 的是Essbase(以前称为 Hyperion)。这是一个单独的产品,不与基本系统捆绑在一起。

毫不奇怪,Oracle 的 BI 战略被行业专家视为狗的早餐。

可能还有其他事情我想不到 OTOH;我会在想到它们时添加它们。

  • 我要添加到此列表中的内容:在 Oracle 中,读者永远不会阻止作者,而作者永远不会阻止读者。我的理解是,这在 SQL Server 的默认安装中仍然不同。Oracle 从不允许读取未提交的数据。您几乎不会在 Oracle 中使用临时表 - 在一个大语句中完成所有事情通常要快得多。频繁提交会减慢批量加载速度。理想情况下,一旦一切都完成,应该只发出一次提交。 (6认同)
  • [这是关于 Oracle 和 SQL Server 的事务概念有何不同的相关说明。](http://dba.stackexchange.com/questions/17533/is-commit-necessary-after-dml-operation-in-function-procedure/ 17534#comment27283_17534) (2认同)

A-K*_*A-K 11

我们同时与 Oracle 和 SQL Server 合作,我们的 DBA 主管 Michelle Malcher 经常帮助同事完成这一转变。基于这一经验,她写了一本名为《Oracle Database Administration for Microsoft SQL Server DBA (Oracle Press)》的书。我喜欢这本书。

我不确定同事推荐的一本书是否适合本网站。我不向 Michelle 汇报,我领导着一个开发团队。

  • 我记得在 meta.stackoverflow.com 上参与了一个关于自我推销的对话,并回答说自我推销周围的灰色区域如果与问题相关就可以。[杰夫阿特伍德同意。](http://meta.stackexchange.com/a/756/15401) (2认同)
  • 我不和米歇尔一起工作,但我非常喜欢这本书。我实际上发现这种解释方式 - 将 SQL Server 体系结构与 Oracle 的体系结构进行比较比阅读标准的 Oracle DBA 书籍更有趣。 (2认同)