Oracle

oracle 12c如何配置sql developer?

  • May 31, 2016

我正在嘗試將 sql developer 連接到全新安裝的 oracle:

我可以通過 sqlplus 連接到 sys 使用者 當我選擇連接類型“Local\Bequeath”時,我可以通過 sql developer 連接到 sys 使用者。但我猜它沒有連接到 PDB,只是連接到容器。

我使用以下命令創建了名為 demo 的使用者:

alter session set container=pdborcl;
create user demo identified by password QUOTA unlimited on users account unlock;  

我正在嘗試使用使用者名和密碼連接到數據庫,就像我在 oracle 11g 中所做的那樣。To user: sys as sysdba, 和新創建的使用者demo

我不關心 pdb,但據我所知,oracle 12c 中沒有其他選項……

我嘗試在 tnsnames.ora 中設置名為 PDBORCL 的條目,我也嘗試使用服務名稱 PDBORCL。正如我在網際網路上的一些手冊中看到的那樣,但它對我不起作用。

我收到以下錯誤:

ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

同樣,我使用了預設安裝的 oracle 12c,除了設置密碼和選擇伺服器類型之外,我並沒有太大變化。

我正在尋找的是一個簡單的“待辦事項列表”,用於在 sql 開發人員中配置連接,甚至從遠端機器連接到 oracle 12c DB。

順便說一句:(如果有的話)

  1. 我有 2 個版本的 sql developer:4.1.2.20,以及來自安裝的原始版本:3.2.20.10。
  2. 我目前正在使用 Windows Server 2008 作業系統。

謝謝,

編輯:

詢問:

SQL> select name, open_mode from v$pdbs where name='PDBORCL';

結果:

NAME      OPEN_MODE
--------  ----------
PDBORCL   READ WRITE

命令行:

lsnrctl service

結果:

LSNRCTL for 64-bit Windows: Version 12.1.0.2.0 - Production on 30-MAY-2016 13:26:20

Copyright (c) 1991, 2014, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=PROTOCOL=TCP)(HOST=192.168.19.58)(PORT=1521)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
 Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
   Handler(s):
     "DEDICATED" established:0 refused:0
       LOCAL SERVER
The command completed successfully

我嘗試使用服務名稱 CLRExtProc。現在我有以下錯誤:

Status: Failure -Test failed: The Network Adapter could not established the connection

listener.ora 文件:

# listener.ora Network Configuration File: C:\app\Administrator\product\12.1.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
 (SID_LIST =
   (SID_DESC =
     (SID_NAME = CLRExtProc)
     (ORACLE_HOME = C:\app\Administrator\product\12.1.0\dbhome_1)
     (PROGRAM = extproc)
     (ENVS = "EXTPROC_DLLS=ONLY:C:\app\Administrator\product\12.1.0\dbhome_1\bin\oraclr12.dll")
   )
 )

LISTENER =
 (DESCRIPTION_LIST =
   (DESCRIPTION =
     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.19.58)(PORT = 1521))
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
   )
 )

tnsnames.ora

# tnsnames.ora Network Configuration File: C:\app\Administrator\product\12.1.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

ORACLR_CONNECTION_DATA =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
   )
   (CONNECT_DATA =
     (SID = CLRExtProc)
     (PRESENTATION = RO)
   )
 )

ORCL =
 (DESCRIPTION =
   (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.19.58)(PORT = 1521))
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = orcl)
   )
 )
#this is my addition I guess it not written properly
PDBORCL =
 (DESCRIPTION =
   (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.19.58)(PORT = 1521))
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = pdborcl)
   )
 )

編輯:

命令:lsnrctl 狀態監聽器

LSNRCTL for 64-bit Windows: Version 12.1.0.2.0 - Production on 30-MAY-2016 14:22
:08

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.19.58)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for 64-bit Windows: Version 12.1.0.2.0 - Produ
ction
Start Date                29-MAY-2016 17:33:36
Uptime                    0 days 20 hr. 48 min. 36 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   C:\app\Administrator\product\12.1.0\dbhome_1\network\admin\listener.ora
Listener Log File         C:\app\Administrator\diag\tnslsnr\DevOraRX\listener\alert\log.xml
Listening Endpoints Summary...
 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.19.58)(PORT=1521)))
 (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
 Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

編輯:完整解決方案

這是它的工作原理:

  1. 安裝 oracle 12c 的新副本(我進行了桌面安裝)。
  2. 的變化listener.ora
  • 在 SID_LIST_LISTENER 我添加了以下部分:(SID_DESC =(SID_NAME = pdborcl)(ORACLE_HOME = C:\app\oracle\product\12.1.0\dbhome_1))
  • 在 LISTENER 而不是HOST=127.0.0.1,我將其設置為 HOST=0.0.0.0
  1. 重啟oracle監聽服務。

現在在 sql 開發人員中:

以 sys 使用者身份登錄:

Username: sys
Password: ****
Connection type: Basic, Role: SYSDBA
Hostname: localhost
Port: 1521
SID: orcl

現在檢查 pdb 是否已啟動:

SQL> select name, open_mode from v$pdbs where name='PDBORCL';

如果它處於掛載模式,那麼,

SQL> alter pluggable database pdborcl open;

創建使用者+授予權限:

alter session set container=pdborcl;
create user demo identified by password QUOTA unlimited on users account unlock;
grant create session to demo;
grant create table to demo;

在 sql developer 中以展示使用者身份連接:

Username: demo
Password: ****
Connection type: Basic, Role: default
Hostname: localhost
Port: 1521
Service name: pdborcl

而且,再次感謝 JSapkota。

現在我正在嘗試找出 pdbs 的 sqlplus 和即時客戶端連接字元串…

首先檢查您的可插拔數據庫是否打開。

SQL> select name, open_mode from v$pdbs where name='PDBORCL';

如果它處於掛載模式,那麼,

SQL> alter pluggable database pdborcl open;

現在在 SQL Developer 上創建新連接,

連接名稱: demo-pdborcl

使用者名: demo

密碼: *****

**連接類型:**基本(如果您希望使用 TNS 連接類型,您必須在客戶端創建 TNS 網路別名。)

主機名: ip/dns

埠: 1521

**SID:(**如果您使用像“ORCL”這樣的 SID,您將連接到根容器,因此使用服務名稱而不是 SID)

**服務名稱:(**您可以通過觸發獲取 pdb 的服務名稱$ lsnrctl serivce,也可以使用文件中的USE_SID_AS_SERVICE_listener參數$ORACLE_HOME/network/admin/listner.oraasUSE_SID_AS_SERVICE_listener=on並且任何給定的 SID 都將被視為服務名稱。

一些有用的連結-

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