本文由簡體中文內容自動轉碼而成。阿里雲不保證此自動轉碼的準確性、完整性及時效性。本文内容請以簡體中文版本為準。

與Oracle管理的對比

更新時間:2024-07-05 19:28

本文將在多個方面為您介紹PolarDB PostgreSQL版(相容Oracle)與原生Oracle資料庫管理的區別。

資料庫(database)

  • Oracle 12c之前的版本,預設一個執行個體只能有一個資料庫。12c之後版本有了多租戶的概念,允許一個容器資料庫(CDB)下同時存在多個可插拔資料庫(PDB)。
  • PolarDB叢集對應Oracle執行個體的概念。每個資料庫叢集上可以建立多個資料庫。

使用者(user)

  • 相同點:

    PolarDB和Oracle都有user的概念,user可以作為資料庫物件的owner,可以用於訪問資料庫。

  • 不同點:

    Oracle的user被授予CREATE SESSION許可權後,才可以登入資料庫。PolarDB的user預設有LOGIN許可權,可以登入資料庫。

建立使用者文法如下:

  • Oracle文法:
    CREATE USER user
       IDENTIFIED { BY password
                  | EXTERNALLY [ AS 'certificate_DN' ]
                  | GLOBALLY [ AS '[ directory_DN ]' ]
                  }
       [ DEFAULT TABLESPACE tablespace
       | TEMPORARY TABLESPACE
            { tablespace | tablespace_group_name }
       | QUOTA size_clause
               | UNLIMITED
               }
               ON tablespace
         [ QUOTA size_clause
                 | UNLIMITED
                 }
                 ON tablespace
         ]...
       | PROFILE profile
       | PASSWORD EXPIRE
       | ACCOUNT { LOCK | UNLOCK }
         [ DEFAULT TABLESPACE tablespace
         | TEMPORARY TABLESPACE
              { tablespace | tablespace_group_name }
         | QUOTA size_clause
                 | UNLIMITED
                 }
                 ON tablespace
           [ QUOTA size_clause
                   | UNLIMITED
                   }
                   ON tablespace
           ]...
         | PROFILE profile
         | PASSWORD EXPIRE
         | ACCOUNT { LOCK | UNLOCK }
         ]...
      ] ;
  • PolarDB文法:
    CREATE USER|ROLE name [[WITH] option […]] [IDENTIFIED BY password]
    where option can be the following compatible clauses:
     PROFILE profile_name
     | ACCOUNT {LOCK|UNLOCK}
     | PASSWORD EXPIRE [AT 'timestamp']
    or option can be the following non-compatible clauses:
     | LOCK TIME 'timestamp'

    同時PolarDB還相容PostgreSQL CREATE USER的文法,詳情請參見SQL Commands

角色(role)

  • 在Oracle中,role是一組許可權,不能作為資料庫物件的Owner,不能被授予其它role,不能用於訪問資料庫。
  • PolarDB中,role相當於一個user,可以作為資料庫物件的Owner,可以被授予其它role或user的許可權,可以用於訪問資料庫。與user的區別在於,role預設沒有LOGIN許可權,需要被授予LOGIN許可權後才能訪問資料庫,而user預設具有LOGIN許可權。

建立角色文法如下:

  • Oracle文法:
    CREATE ROLE role
       [ NOT IDENTIFIED
       | IDENTIFIED { BY password
                    | USING [ schema. ] package
                    | EXTERNALLY
                    | GLOBALLY
                    }
       ] ;
  • PolarDB文法:

    CREATE ROLE 和CREATE USER 文法一致。

模式(schema)

  • 相同點:

    schema是一個邏輯概念,表示一組資料庫物件的集合,這些資料庫物件也稱為模式對象,包括表、索引、視圖等。

  • 不同點:
    OraclePolarDB
    OraclePolarDB
    無法單獨建立schema。可以通過CREATE SCHEMA建立schema。
    建立資料庫使用者時,系統會自動建立一個和使用者名稱同名的schema。在每個資料庫中,都有一個名為PUBLIC的預設schema。可以通過SET SEARCH_PATH TO 'xxx';來修改當前預設schema。

許可權(privilege)

PolarDB的許可權和Oracle類似,可以分為系統許可權和對象許可權。

  • 系統許可權
    • Oracle

      系統許可權是指允許執行特定動作的許可權,例如CREATE USER、CREATE TABLE、CREATE TABLESPACE等。

      系統許可權還包括一些管理員權限:

      • SYSDBA和SYSOPER:擁有幾乎所有的資料庫物件的許可權。可以執行一些標準的資料庫操作,例如資料庫的啟動和關閉,建立資料庫參數檔案(SPFILE),更改資料庫歸檔日誌等。
      • SYSBACKUP:執行備份和恢複操作。
      • SYSDG:執行Data Guard操作。
      • SYSKM:管理透明資料加密(TDE)錢包操作。
      • SYSRAC:執行Oracle RAC操作。
    • PolarDB

      PolarDB支援LOGIN、POLAR_SUPERUSER、CREATEDB和CREATEROLE等系統許可權,您可以在CREATE ROLE/USER時指定使用者是否具有對應許可權。

  • 對象許可權

    對象許可權是指對指定的對象執行操作的許可權,資料庫物件包括表、視圖、序列、大對象、模式、函數、過程語言等。對象許可權包括SELECT、INSERT、UPDATE、DELETE、ALTER、INDEX、REFERENCES、EXECUTE等,具體的對象許可權因物件類型而異。

    • Oracle

      各使用者自動擁有相應schema下的所有對象的許可權。

    • PolarDB

      修改或刪除對象的許可權只有對象Owner和超級使用者才有。

      說明
      超級使用者是指擁有POLAR_SUPERUSER許可權的使用者。

監控營運

  • 本頁導讀 (1, M)
  • 資料庫(database)
  • 使用者(user)
  • 角色(role)
  • 模式(schema)
  • 許可權(privilege)
  • 監控營運
文檔反饋