簡體   English   中英

Oracle相當於SQL Server SCHEMA

[英]Oracle equivalent of SQL Server SCHEMA

我有一項任務是將SQL Server數據庫遷移到Oracle。

我們的SQL Server數據庫中有幾個不同的SCHEMA,我必須在Oracle中創建類似的東西。 在SQL Server中,SCHEMA就像是C#中的命名空間。 但是從Oracle文檔中可以理解,Oracle中的Schema與SQL Server中的Schema有着截然不同的含義。

更具體地說,我在SQL Server中有以下SQL語句:

CREATE SCHEMA Accounting

CREATE TABLE [Accounting].[Payments]
(
    ID BIGINT,
    Amount MONEY
)

那么Oracle中這個腳本的等價物是什么?

Oracle等效的SQL Server架構就是一個架構。 Oracle服務器與單個數據庫進行通信,這是兩者之間的“真正”區別:SQL Server實例可以連接到多個數據庫,而Oracle實例只能連接到一個數據庫。 因此,SQL Server在服務器中使用三部分命名約定,而Oracle僅具有兩部分命名約定。

在兩者中,模式對象通常都是安全單元 - 它們便於為對象組分配權限。 兩個數據庫在一些非常重要的問題上有所不同 在Oracle中,模式本質上是用戶的同義詞。 SQL Server曾經以這種方式組織,但現在一個模式與用戶分開(例如,允許在模式之間移動對象)。

在SQL Server中,權限不必位於架構級別,盡管這通常可以方便用於組織目的。 例如,您可能擁有用戶在一個架構中無法直接訪問的基礎表。 您可以擁有另一個包含視圖的模式,並且模式具有訪問表的權限。 然后,添加到架構的新視圖會自動具有“正確”權限。

雖然@Gordon Linoff的答案非常完美地解釋了兩個數據庫中模式背后的想法,但是要回答你的實際問題:

您以用戶身份創建架構:

CREATE USER Accounting IDENTIFIED BY some_password;

然后使用以下命令在該模式中創建對象:

CREATE TABLE Accounting.Payments
(
  ID NUMBER(19),
  Amount NUMBER(19,4)
)

一個歷史記錄,有助於解釋一些混淆:直到MS SQL Server 2000,Schema意味着幾乎與Oracle相同。 MS SQL Server基於Sybase SQL Server,也可能與Oracle更相似。 然后到2005年,MS取消了用戶和架構之間的綁定,盡管像dbo這樣的默認架構名稱基於用戶名。

DBA堆棧論壇的答案很好: Oracle和Microsoft架構有什么區別?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM