2020/09/01

20200901-技術-建立Oracle 12C後的問題速記-建User/建DB Link

背景

在建立好Oracle 12CR2 in Docker 後,開始要摸索其使用方式,讓我要做的 Archive DB 功能可以運作。

而這幾乎每走一步,就會遇到些問題,然後寫下對應對筆記下來。

這邊,就速記下,這一天之中,所碰到的議題。


重點項目:

  1. 在建立USER / Schema時,才了解 Oracle 12C開始的架構:CDB / PDB (container概念)
    1. 遇到問題:ORA-65096: invalid common user or role name
  2. 建立Database Link:建立Public – 由sys建立後,各User使用。
    1. 遇到問題:ORA-01031: insufficient privileges
    2. 遇到問題:ORA-01017: invalid username/password; logon denied


技術開始


Oracle 12C的架構概念:CDB & PDB

( https://is.gd/LIcaDM – 架構說明&ORA-65096問題原因  )

  1. 查詢目前所在的PDB:select sys_context('USERENV', 'CON_NAME') from dual;
  2. 切換至目標的PDB: alter session set container=ARCH_PDB;
  3. 「CDB$ROOT」可以想像為之前Oracle 下的sys相關的table 資訊。
  4. 在「CDB$ROOT」下是無法建立USER的,會得到此ORA-65096: invalid common user or role name。
  5. 切換後就可以正常建立USER。



建立USER後它無法連線 – 要給予相關授權

(https://t.ly/yMvwy - 相關角色&授權 |  )

  1. 要讓SQL Develop Tool 可以連線,要「GRANT CONNECT to XXXUSER;
  2. 其它的就參考文章去授權。

而其中,SQL Develop Tool 的連線,若要用該User連線至其PDB的話,要選擇「Service Name 」(用sys連線時是用SID)

不然會一直出現 帳/密 錯誤。



建立Database Link - 遇到 USER 帳/密錯誤的問題

建立Database Link 的語法: (使用Using connection string )

CREATE PUBLIC DATABASE LINK "DBLINK_LIVE"
    CONNECT TO "targetUser" IDENTIFIED BY "XXX(密碼)XXX"
    USING '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 22.22.22.22)(PORT = 1521))) (CONNECT_DATA = (SID = XXXX)(SERVER = DEDICATED)))';