Oracle

Oracle-SQL 和 MySQL 中的術語 |多數據庫,多實例對比

  • January 3, 2022

在 Oracle-SQL 中:

  • 數據庫 = 磁碟上的一組物理文件
  • 實例 = 程序、守護程序和記憶體結構(即操作狀態)
  • Schema = 數據庫對象的集合,包括表和索引等邏輯結構。
  • 架構對象 = 架構(集合)對象的任何/組合,即表、視圖、索引等。

在 MySQL 中:

  • 數據庫/模式(可以交叉使用)= Oracle-SQL 模式的同義詞
  • Instance = 類似於 Oracle-SQL 實例
  • schema-objects/databse-objects = 與 Oracle-SQL 的模式對象同義

我有以下疑問:

來自 MySQL 詞彙表

例如,在 Oracle 數據庫產品中,模式僅代表數據庫的一部分:單個使用者擁有的表和其他對象。

為什麼“只有數據庫的一部分”?(如果我沒記錯的話,“數據庫”是在 MySQL 的上下文中使用的)

asktom oracle forum我解釋的是:

  1. 一個實例只能掛載和打開一個數據庫,“ever”->(因為每次打開數據庫時都會創建新實例,而關閉數據庫時會銷毀實例
  2. 一個數據庫可以由一個或多個(使用 RAC)實例安裝和操作。

這是否仍然相關(截至 19c 和 21c)?如果不是,為什麼?

我對 #2 感到困惑,他們是在談論“一個接一個”還是“在任何特定時間點一起”(在有和沒有 RAC 的情況下)?

我可以在不使用 RAC 的情況下在同一個 oracle 實例上掛載多個數據庫(在 oracle 的上下文中)嗎?

一台機器/伺服器可以有多個使用 Oracle 軟體的實例嗎?

而在 MySQL 的情況下:

  • 一個實例可以掛載許多數據庫,但在任何給定時間只能在一個上工作。
  • 數據庫可以在任何給定時間由一個或多個實例安裝和操作。
  • 一台機器/伺服器可以有多個實例

它是否正確?如果不是,為什麼?

大多數 RDBMS 是否屬於一種或另一種分類?

如果我的任何解釋或陳述是錯誤的,請糾正我。

談到 Oracle RDBMS:

為什麼“只有數據庫的一部分”?(如果我沒記錯的話,“數據庫”是在 MySQL 的上下文中使用的)

這是來自 Oracle RDBMS 文件,而不是 MySQL,因此在 Oracle 的上下文中使用,單個模式只是數據庫實例的一部分。

從 asktom oracle forum 我解釋的是:

  1. 一個實例只能掛載和打開一個數據庫,“ever”->(因為每次打開數據庫時都會創建新實例,而關閉數據庫時會銷毀實例
  2. 一個數據庫可以由一個或多個(使用 RAC)實例安裝和操作

這是否仍然相關(截至 19c 和 21c)?如果不是,為什麼?

是的,這仍然是相關的。一個實例可以打開一組數據庫文件(數據文件、重做日誌、控製文件、臨時數據文件等)。在 RAC 的情況下,數據庫文件由多個主機共享,因此每個 RAC 主機上的一個實例可以同時打開同一組文件。

我可以在不使用 RAC 的情況下在同一個 oracle 實例上掛載多個數據庫(在 oracle 的上下文中)嗎?

一台機器/伺服器可以有多個使用 Oracle 軟體的實例嗎?

一個實例(一組程序)只能打開一組數據庫文件,但可以在同一台主機上執行多個獨立的實例(即每個實例都有自己的獨立文件)。每個獨立的實例也可以是一個單獨的 Oracle 版本。RAC 允許您同時在多個主機上打開同一組數據庫文件,以便您可以水平和垂直擴展您的資源。

在 MySQL 的情況下,可以在同一主機上執行多個實例。見這裡: https ://stackoverflow.com/questions/716542/run-multiple-mysql-server-on-a-single-machine 。數據庫(模式)一次只能由一個實例呈現,除非集群化,類似於 Oracle RAC(但是,其他數據庫與 Oracle RAC 集群不同 - 大多數複製數據文件和主機之間的事務,其中 RAC 實際上共享它們)。

引用自:https://dba.stackexchange.com/questions/281410