我正在尝试将 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。
顺便说一句:(如果有的话)
我有 2 个版本的 sql developer:4.1.2.20,以及来自安装的原始版本:3.2.20.10。
我目前正在使用 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
编辑:完整解决方案
这是它的工作原理:
- 安装 oracle 12c 的新副本(我进行了桌面安装)。
- 的变化
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
- 在 SID_LIST_LISTENER 我添加了以下部分:
- 重启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 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.ora
asUSE_SID_AS_SERVICE_listener=on
并且任何给定的 SID 都将被视为服务名称。一些有用的链接-