天天看點

12c debug 轉 12C 連接配接CDB和PDB

來源:David Dai -- Focus on Oracle  

連接配接到CDB

 12c debug

和普通執行個體一樣的連接配接。 指定ORACLE_SID 以後可以使用OS認證,也可以使用密碼進行連接配接。

[oracle@Ora12c /]$ echo $ORACLE_SID

cndba

[oracle@Ora12c /]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.1.0 Production onMon Apr 28 11:33:43 2014

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to:

Oracle Database 12c Enterprise EditionRelease 12.1.0.1.0 - 64bit Production

With the Partitioning, OLAP, AdvancedAnalytics and Real Application Testing options

SQL> conn system/oracle         

Connected.

SQL>

--檢視CDB中可用的service:

SQL> COLUMN name FORMAT A30

SQL> SELECT name,pdb

  2 FROM   v$services

  3  ORDER BY name;

NAME                           PDB

------------------------------------------------------------

SYS$BACKGROUND                 CDB$ROOT

SYS$USERS                      CDB$ROOT

cndba                          CDB$ROOT

cndbaXDB                       CDB$ROOT

pcndba2                        PCNDBA2

pdbcndba                       PDBCNDBA

6 rows selected.

--通過lsnrctl 也可以判斷:

[oracle@Ora12c /]$ lsnrctl service

LSNRCTL for Linux: Version 12.1.0.1.0 -Production on 28-APR-2014 11:35:31

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Connecting to(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

Services Summary...

Service "cndba" has 1instance(s).

Instance "cndba", status READY, has 1 handler(s) for thisservice...

   Handler(s):

     "DEDICATED" established:0 refused:0 state:ready

        LOCAL SERVER

Service "cndbaXDB" has 1instance(s).

     "D000" established:0 refused:0 current:0 max:1022 state:ready

        DISPATCHER <machine: Ora12c, pid: 10085>

        (ADDRESS=(PROTOCOL=tcp)(HOST=Ora12c)(PORT=14696))

Service "pcndba2" has 1instance(s).

Service "pdbcndba" has 1instance(s).

         LOCAL SERVER

The command completed successfully

[oracle@Ora12c /]$

通過這些service,就可以遠端連接配接CDB。

--EZCONNECT

C:\Users\Dave>sqlplussystem/[email protected]:1521/cndba

SQL*Plus: Release 11.2.0.1.0 Production on 星期三 4月 30 11:36:48 2014

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

連接配接到:

--通過TNSNAMES.ORA連接配接:

在tnsnames.ora 中配置如下:

cndba =

(DESCRIPTION =

   (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = cndba)

    )

  )

--連接配接:

C:\Users\Dave>sqlplussystem/oracle@cndba

SQL*Plus: Release 11.2.0.1.0 Production on 星期三 4月 30 11:40:01 2014

2.

登入到Oracle database 12c多租戶資料庫中,第一個要确定的事情---我目前連對資料庫

時間:2017-03-19 07:06:36

背景:

Oracle database 12c多租戶出現之後,Oracle資料庫第一次出現了類似于"多庫結構"的概念.

多庫結構的意思是在一個資料庫服務下有多個資料庫在運作.

IBM DB2,SAP Sybase ASE,MS SQLServer,MySQL,PostgreSQL均是多庫結構.

既然是一個資料庫服務下有多個資料庫,那麼就存在錯誤連接配接到不是自己想登陸的資料庫下的可能性.

是以,登陸到Oracle資料庫12c之後,第一個需要确認的是自己目前登陸的是哪個資料庫.

C:\Documents and Settings\Administrator>sqlplus system/aaaaaa@highgo1

SQL*Plus: Release 11.2.0.4.0 Production on 星期六 3月 18 22:21:24 2017

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


連接配接到:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> show con_name     ---------->>>>第一種:由于這是11gR2的client,是以無法識别con_name
concat "." (hex 2e)
SP2-0158: 未知的 SHOW 選項 "_name"
SQL> select sys_context('Userenv','Con_Name') "Container DB" from dual;

Container DB
--------------------------------------------------------------------------------

HIGHGO1

SQL>--------------->>>>第二種就是如上的sql語句

如上兩種摘自:
Oracle Multitenant Option - 12c : Frequently Asked Questions (文檔 ID 1511619.1)
      

如下SQL經過我測試,也是可以的,可以作為第三種方法

SQL> select sys_context('Userenv','db_name') from dual;

SYS_CONTEXT('USERENV','DB_NAME')
--------------------------------------------------------------------------------

HIGHGO1

SQL>


      

3.  在不同Container database中切換

在12c的架構中,因為有CDB和 PDB的存在,是以會有很多不同的container,是以在連接配接到不同的container時,就需要進行切換。

--檢視目前的container:

SQL> show con_name

CON_NAME

------------------------------

CDB$ROOT

SQL> SELECT SYS_CONTEXT('USERENV','CON_NAME') FROM   dual;

SYS_CONTEXT('USERENV','CON_NAME')

--------------------------------------------------------------------------------

SQL> set lin 140

SQL> select con_id, dbid,guid, name , open_mode from v$pdbs;

   CON_ID       DBID GUID                             NAME       OPEN_MODE

---------- ------------------------------------------ ---------- ----------

        2 4088301206 F7C1E3C96BBF0585E0430A01A8C05459 PDB$SEED   READ ONLY

        3  426143573F7C209EB1DFC0854E0430A01A8C0B787 PDBCNDBA   READ WRITE

        4 1231796139 F812DE1B6A8F363AE0430A01A8C0C759 PCNDBA2    READ WRITE

--切換container:

SQL> alter session setcontainer=pcndba2;

Session altered.

PCNDBA2

3  連接配接到PDB

--EZCONNECT:

C:\Users\Dave>sqlplussystem/[email protected]:1521/pcndba2

SQL*Plus: Release 11.2.0.1.0 Production on 星期三 4月 30 11:54:30 2014

--TNSNAMES.ora

在tnsnames.ora 中添加如下内容:

pcndba =

     (SERVICE_NAME = pcndba2)

C:\Users\Dave>sqlplussystem/oracle@pcndba

SQL*Plus: Release 11.2.0.1.0 Production on 星期三 4月 30 11:55:50 2014

炊煙起了;夕陽下了;細雨來了

多調試,互動式程式設計體驗

記錄,獨立思考,對比

感謝轉載作者

修車

國産化

read and connect

匍匐前進,

講故事