blob: eb36bca7ba657e508ea201f37627d4a478da2aa3 [file] [log] [blame]
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
//
= NetBeans IDE 连接到 Oracle 数据库
:jbake-type: tutorial
:jbake-tags: tutorials
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: NetBeans IDE 连接到 Oracle 数据库 - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, NetBeans IDE 连接到 Oracle 数据库
NetBeans IDE 包括对 Oracle 数据库的内置支持。您可以轻松地从 IDE 建立连接,并开始使用数据库。本教程介绍了如何使用本地安装的 Oracle Database 10_g_ Express Edition (Oracle Database XE),这是一种可免费开发、部署和分发的小型数据库。
本文档说明了如何从 NetBeans IDE <<connect,建立到本地安装>>的 Oracle Database XE 的连接、如何使用 IDE 的内置 SQL 编辑器<<createuser,处理数据库数据>>,以及如何<<oci8,启用 OCI 8 PHP 扩展>>以编写连接到 Oracle 数据库的 PHP 代码。
*要学习本教程,您需要具备以下软件和资源。*
|===
|软件或资源 |要求的版本
|link:https://netbeans.org/downloads/index.html[+NetBeans IDE+] |7.2、7.3、7.4、8.0、Java EE 包
|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Java 开发工具包 (JDK)+] |版本 7 或 8
|link:http://www.oracle.com/technetwork/database/express-edition/overview/index.html[+Oracle Database XE+] |10 _g_ Express Edition
|link:http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html[+Oracle JDBC 驱动程序+] |link:http://download.oracle.com/otn/utilities_drivers/jdbc/11202/ojdbc6.jar[+ojdbc6.jar+]
|===
== 开始之前
在开始学习本教程之前,请注意以下事项:
* 本教程介绍了如何连接到本地系统上安装的 Oracle Database XE 实例,但这些步骤也适用于连接到远程实例。如果要连接到本地实例,您需要link:http://www.oracle.com/technetwork/database/express-edition/overview/index.html[+下载+]并安装 Oracle Database XE。安装过程非常简单直观,但如果遇到问题,请参见适用于您的平台的《link:http://www.oracle.com/pls/xe102/homepage[+Oracle Database XE 安装指南+]》。
* 有两种类型的 Oracle JDBC 驱动程序:OCI JDBC Thin
* Oracle JDBC Thin 驱动程序基于 Java,而与平台无关。该独立驱动程序不要求有其他 Oracle 库,并允许直接连接到 Oracle 数据库。本教程使用该驱动程序说明如何连接到 Oracle 数据库。在开始学习本教程之前,您需要link:http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html[+下载+] ``ojdbc6.jar`` 文件并将其保存到您的系统上。
*Windows 用户注意事项:*Windows 可能会将下载文件的扩展名从 .jar 更改为 .zip。不过,它仍是 .jar 文件。您可以将该文件重命名为 .jar
* Oracle OCI 驱动程序使用 Oracle 的本机客户端库与数据库通信。这些库是作为 Oracle Instant Client 的一部分获取的。虽然大多数情况下使用 Thin 驱动程序就足够了,但也可能需要按照<<oci,将 OCI JDBC 驱动程序与 NetBeans IDE 一起使用>>中的步骤使用 OCI 驱动程序。
使用 OCI 驱动程序的一个很好的例子是,在 PHP 应用程序中使用 Oracle Instant Client 库访问远程 Oracle 数据库。有关如何启用 OCI8 PHP 扩展的信息,请参见本教程中的 <<oci8,OCI 8 PHP 扩展和适用于 PHP NetBeans IDE>> 部分。
* 如果从未使用过 Oracle Database XE,则需要获取 Oracle Database XE link:http://download.oracle.com/docs/cd/B25329_01/doc/admin.102/b25610/toc.htm[+使用入门教程+]。
*GlassFish 用户警告:*默认情况下,用于管理数据库的 Oracle Database XE 主页使用端口 8080。默认情况下,Oracle GlassFish Application Server 也使用端口 8080。如果同时运行这两个程序,则 Oracle Database XE 会阻止浏览器访问 GlassFish(位于 localhost:8080)。在这种情况下,GlassFish 上部署的所有应用程序都返回 404。简单的解决方案是,在运行 GlassFish 时,关闭不需要用到的 Oracle Database XE。如果需要同时运行这两个程序,请更改 Oracle Database XE 使用的默认端口。这比更改 GlassFish 的默认端口要简单。Internet 上提供了很多有关更改 Oracle Database XE 默认端口的指令集,包括 link:https://forums.oracle.com/forums/thread.jspa?threadID=336855[+Oracle 论坛+]中的指令集。
== 建立到 Oracle 数据库的连接
在本练习中,将测试并建立到数据库的新连接。
1. 启动 Oracle 数据库。
2. 打开 "Services"(服务)窗口("Window"(窗口)> "Services"(服务)或按 Ctrl-5 组合键;在 Mac 上按 ⌘-5 组合键)。在 "Services"(服务)窗口中,右键单击 "Databases"(数据库)节点,然后选择 "New Connection"(新建连接)。
image::images/new-connection.png[]
. 在新建连接向导中,从 "Driver"(驱动程序)下拉列表中选择 "Oracle Thin"
. 单击 "Add"(添加),然后找到以前下载的文件 ``ojdbc6.jar`` 。单击 "Next"(下一步)。
. 在该向导的 "Customize Connection"(定制连接)面板中输入以下值,然后单击 "Next"(下一步)。
|===
|名称 |值
|Driver Name(驱动程序名称) |Oracle Thin(带有服务 ID (SID))
|Host(主机) | ``localhost`` 127.0.0.1
__:对于远程连接,请提供安装了该数据库的计算机的 IP 地址或可解析主机名。
|Port(端口) |1521(默认值)
|Service ID (SID)(服务 ID (SID)) | ``XE`` Oracle Database XE 的默认 SID)。
__:如果要连接到远程数据库,请要求数据库管理员为您提供数据库 SID
|Username(用户名) |
请输入用户名。
就本教程而言,请输入 ``system`` (默认数据库管理员帐户)和安装数据库期间使用的口令。
|Password |输入与选定用户名相对应的口令。
|===
. 单击 "Test Connection"(测试连接),以确认 IDE 能否连接到数据库。单击 "Next"(下一步)。
如果尝试成功,则会在向导中显示 "Connection succeeded"(连接成功)消息。
image::images/customize-conn.png[]
. "Select Schema"(选择方案)下拉列表中选择 ``HR`` 。单击 "Finish"(完成)。
NOTE: 您需要解锁 HR 方案,然后才能在 NetBeans 中访问它。解锁 HR 数据库在 Oracle Database XE link:http://download.oracle.com/docs/cd/B25329_01/doc/admin.102/b25610/toc.htm[+使用入门教程+]中进行了介绍。
此时将在 "Services"(服务)窗口的 "Databases"(数据库)节点下面显示新连接。您可以展开该连接,然后开始浏览数据库对象的结构。
更改连接节点的显示名称:从节点的弹出式菜单中选择 "Properties"(属性),然后单击 "Display Name"(显示名称)属性的省略号按钮。输入 OracleDB 作为显示名称,然后单击 "OK"(确定)。
image::images/connection.png[]
NOTE: 虽然以上步骤说明的是连接到本地数据库实例的情况,连接到_远程_数据库的步骤也相同。唯一的区别是,输入安装 Oracle 数据库的远程计算机的 IP 地址或主机名,而不是将 ``localhost`` 指定为主机名。
== 处理 Oracle 数据库中的数据
与数据库进行交互的一种常见方法是,在 SQL 编辑器中运行 SQL 命令或使用数据库管理界面。例如,Oracle Database XE 具有基于浏览器的界面,您可以通过该界面管理数据库,管理数据库对象以及处理数据。
虽然可以通过 Oracle 数据库管理界面执行大多数与数据库有关的任务,但在本教程中,我们介绍如何使用 NetBeans IDE 中的 SQL 编辑器执行其中的一些任务。以下练习介绍了如何创建新用户、如何快速重新创建表,以及如何复制表数据。
=== 创建用户
让我们创建一个新数据库用户帐户以处理数据库中的表和数据。要创建新的用户,您必须使用数据库管理员帐户登录。在本示例中,我们使用在安装数据库期间创建的默认 ``system`` 帐户。
1. "Services"(服务)窗口中,右键单击 "OracleDB" 连接节点,然后选择 "Execute Command"(执行命令)。此时将打开 NetBeans IDE SQL 编辑器,您可以在其中输入将发送到数据库的 SQL 命令。
image::images/execute.png[]
. 要创建新用户,请在 "SQL Editor"SQL 编辑器)窗口中输入以下命令,然后单击工具栏上的 "Run SQL"(运行 SQL)按钮。
image::images/create-user.png[]
[source,sql]
----
create user jim identified by mypassword default tablespace users temporary tablespace temp quota unlimited on users;
----
该命令可创建新用户 ``jim`` ,口令为 ``mypassword`` 。默认表空间为 ``users`` ,且分配的空间不受限制。
. 下一步是为 ``jim`` 用户帐户授予在数据库中执行操作的权限。我们需要允许该用户连接到数据库,在用户默认表空间中创建和修改表以及访问 ``hr`` 样例数据库中的 ``Employees`` 表。
实际上,数据库管理员可创建定制角色,并微调每个角色的权限。但就本教程而言,我们可以使用预定义的角色,例如 ``CONNECT`` 。有关角色和权限的详细信息,请参见 link:http://download.oracle.com/docs/cd/E11882_01/network.112/e16543/toc.htm[+Oracle 数据库安全指南+]。
[source,sql]
----
grant connect to jim;
grant create table to jim;
grant select on hr.departments to jim;
----
=== Oracle 数据库中的表空间
表空间是任何 Oracle 数据库的逻辑数据库存储单元。事实上,数据库的所有数据都存储在表空间中。您可以在分配的表空间中创建表。如果未明确为用户指定默认表空间,则默认使用系统表空间(最好避免出现这种情况)。
有关表空间概念的详细信息,请参见 link:http://www.orafaq.com/wiki/Tablespace[+Oracle 常见问题解答:表空间+]
=== 创建表
可以使用几种方法通过 NetBeans IDE 在数据库中创建表。例如,您可以运行 SQL 文件(右键单击文件并选择 "Run File"(运行文件)),执行 SQL 命令(右键单击连接节点并选择 "Execute Command"(执行命令))或使用 "Create Table"(创建表)对话框(右键单击 "Tables"(表)节点并选择 "Create Table"(创建表))。在本练习中,将使用一个表的结构重新创建另一个表。
在本示例中,您希望用户 ``jim`` 通过 ``hr`` 数据库重新创建 ``Departments`` 表,以便在其方案中创建该表的副本。在创建该表之前,您需要与服务器断开连接,然后以用户 ``jim`` 身份登录。
1. "Services"(服务)窗口中右键单击 ``OracleDB`` 连接节点,然后选择 "Disconnect"(断开连接)。
2. 右键单击 ``OracleDB`` 连接节点,选择 "Connect"(连接),然后以 ``jim`` 身份登录。
3. 展开 "HR" 方案下面的 "Tables"(表)节点,然后确认用户 ``jim`` 只能访问 ``Departments`` 表。
在创建用户 ``jim`` 后,选择权限仅限于 ``Departments`` 表。
image::images/hr-view.png[]
. 右键单击 ``Departments`` 表节点,然后选择 "Grab Structure"(抓取结构)。将 ``.grab`` 文件保存到磁盘上。
. 展开 ``JIM`` 方案,右键单击 ``Tables`` (表)节点,然后选择 "Recreate Table"(重新创建表)。
指向您创建的 ``.grab`` 文件。
image::images/recreate.png[]
. 查看用于创建表的 SQL 脚本。单击 "OK"(确定)。
image::images/nametable.png[]
单击 "OK"(确定)时,将会创建新的 ``DEPARTMENTS`` 表,并在 ``JIM`` 方案节点下面显示该表。如果右键单击表节点并选择 "View Data"(查看数据),则会看到该表是空的。
如果要将原始 ``Departments`` 表中的数据复制到新表,则既可在表编辑器中手动输入数据,也可针对新表运行 SQL 脚本以填充该表。
*要手动输入数据,请执行以下步骤。*
1. 右键单击 ``JIM`` 方案下方的 ``DEPARTMENTS`` 表,然后选择 "View Data"(查看数据)。
2. 单击 "View Data"(查看数据)工具栏上的 "Insert Record"(插入记录)图标,以打开 "Insert Record"(插入记录)窗口。
image::images/insert-rec.png[]
. 在字段中以键入方式输入数据。单击 "OK"(确定)。
例如,可以输入从原始 ``DEPARTMENTS`` 表中提取的以下值。
|===
|列 |值
|DEPARTMENT_ID |10
|DEPARTMENT_NAME |Administration
|MANAGER_ID |200
|LOCATION_ID |1700
|===
*要使用 SQL 脚本填充表,请执行以下步骤。*
1. 右键单击 ``JIM`` 方案下方的 ``DEPARTMENTS`` 表,然后选择 "Execute Command"(执行命令)。
2. "SQL Command"SQL 命令)标签中输入脚本。单击工具栏中的 "Run"(运行)按钮。
以下脚本使用原始表中的数据填充新表的第一行。
[source,sql]
----
INSERT INTO JIM.DEPARTMENTS (DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID, LOCATION_ID) VALUES (10, 'Administration', 200, 1700);
----
您可以通过执行以下步骤,获取使用原始表填充新表的 SQL 脚本。
1. 右键单击 ``HR`` 方案下方的 ``DEPARTMENTS`` 表,然后选择 "View Data"(查看数据)。
2. "View Data"(查看数据)窗口中选择所有行,在该表中右键单击,然后从弹出式菜单中选择 "Show SQL Script for INSERT"(显示 INSERT SQL 脚本),以打开包含脚本的 "Show SQL"(显示 SQL)对话框。
然后,您可以复制该脚本并根据需要进行修改,在您的表中插入数据。
有关使用 SQL 编辑器的详细信息,请参见<<tips,提示>>。
=== 使用表数据
要使用表数据,可以利用 NetBeans IDE 中的 SQL 编辑器。通过运行 SQL 查询,可以添加、修改和删除数据库结构中保留的数据。
首先,在 ``jim`` 方案中创建第二个名为 Locations 的表(仍然使用 jim 的用户帐户登录)。这一次,我们只需要在 IDE 中运行现成的 SQL 文件即可:
1. 下载 link:https://netbeans.org/project_downloads/samples/Samples/Java/locations.sql[+locations.sql+] 文件并将其保存到计算机上的 _USER_HOME_ 目录中。
2. 打开 IDE "Favorites"(收藏夹)窗口,然后找到 ``locations.sql`` 文件。
要打开 "Favorites"(收藏夹)窗口,请在主菜单中单击 "Window"(窗口)> "Favorites"(收藏夹)(按 Ctrl-3 组合键)。默认情况下,将在 "Favorites"(收藏夹)窗口中列出 _USER_HOME_ 目录。
. 右键单击 ``locations.sql`` 文件,然后选择 "Run File"(运行文件)。
image::images/run-file.png[]
NOTE: 如果有多个数据库连接注册到 IDE,则 IDE 可能会提示您选择正确的连接。
. "Services"(服务)窗口中,右键单击 "Tables"(表)节点,然后在弹出式菜单中选择 "Refresh"(刷新)。
您可以看到在 ``JIM`` 方案中添加了包含数据的 ``Locations`` 表。
image::images/second-table.png[]
. 右键单击 Locations 表节点,然后选择 "View Data"(查看数据)以查看表内容。您将看到 Locations 表的内容。
您可以直接在此视图窗口中插入新记录和修改现有数据。
image::images/view-data1.png[]
. 接下来,我们运行一个查询以显示以下两个表中的信息:Departments Locations
在本示例中,我们使用简单的“自然合并”,因为两个表具有相同的 "location_id" 列,其中保存了相同数据类型的值。这种合并仅选择在匹配 location_id 列中具有相等值的行。
打开 "SQL Command"SQL 命令)窗口(右键单击 ``JIM`` 方案下面的 ``Tables`` (表)节点,然后选择 "Execute Command"(执行命令)),输入以下 SQL 语句,然后单击 "Run SQL"(运行 SQL)图标。
[source,sql]
----
SELECT DEPARTMENT_NAME, MANAGER_ID, LOCATION_ID, STREET_ADDRESS, POSTAL_CODE, CITY, STATE_PROVINCE
FROM departments NATURAL JOIN locations
ORDER by DEPARTMENT_NAME;
----
SQL 查询返回 Departments 表中的 location_id 值与 Locations 表中的匹配列值相等的行,并按 Department 名称对结果进行排序。请注意,您无法在此查询结果中直接插入新记录,这与单个表的表示形式不同。
image::images/join.png[]
您可以将 SQL 合并查询保存为视图(右键单击 "View"(视图)节点,然后选择 "Create View"(创建视图)),并在以后需要时方便地运行该视图。为此,应为数据库用户授予我们的样例用户所没有的 "Create View"(创建视图)权限。您可以使用 system 帐户登录,为 ``jim`` 授予 "Create View"(创建视图)权限(使用以下 SQL 语句:"grant create view to jim;"),然后尝试创建自己的视图。
=== NetBeans IDE SQL 编辑器使用提示
如果学习过本教程前面的内容,则您已使用了 NetBeans IDE SQL 编辑器功能。我们在此处列出了几个可能对您有用的其他 NetBeans IDE SQL 编辑器功能。
1. *数据库表的 GUI 视图*。在 "Services"(服务)窗口中右键单击表节点并选择 "View Data"(查看数据)时,IDE 将显示该表的可视表示形式及其数据(如上图所示)。您还可以在该视图中直接添加、修改和删除表数据。
* 要添加记录,请单击 "Insert Records"(插入记录)image:images/row-add.png[] 图标并在打开的 "Insert Records"(插入记录)窗口中插入新数据。单击 "Show SQL"(显示 SQL)按钮以查看该操作的 SQL 代码。该表将使用新记录自动更新。
* 要修改记录,请在表的 GUI 视图中的任何单元格内直接双击,然后键入新值。在提交更改之前,将使用绿色显示修改的文本。要提交更改,请单击 "Commit Changes"(提交更改)image:images/row-commit.png[] 图标。要取消更改,请单击 "Cancel Edits"(取消编辑)image:images/row-commit.png[] 图标。
* 要删除行,请选择该行并单击 "Delete Selected Records"(删除选定的记录)image:images/row-commit.png[] 图标。
[start=2]
. *保留先前的标签*。在 SQL 编辑器工具栏上单击 "Keep Prior Tabs"(保留先前的标签)image:images/keepoldresulttabs.png[] 图标以保留打开以前查询结果的窗口。如果要比较多个查询的结果,这可能很有用。
[start=3]
. *SQL 历史记录*(Ctrl-Alt-Shift-H 组合键)。使用 SQL 编辑器工具栏上的 "SQL History"SQL 历史记录)image:images/sql-history.png[] 图标可查看已为每个数据库连接运行的所有 SQL 语句。从下拉列表中选择该连接,查找所需的 SQL 语句,然后单击 "Insert"(插入)将该语句放在 "SQL Command"SQL 命令)窗口中。
[start=4]
. *连接列表*。如果有多个数据库连接,并需要在 SQL 编辑器中快速切换这几个连接,请使用 "Connections"(连接)下拉列表。
[start=5]
. *运行 SQL 语句*。要运行当前 "SQL Command"SQL 命令)窗口中的完整语句,请单击 "Run SQL"(运行 SQLimage:images/runsql.png[] 图标。如果您希望只运行 SQL 语句的一部分,请在 "SQL Command"SQL 命令)窗口中将其选中,右键单击所选内容,然后选择 "Run Selection"(运行选择)。在这种情况下,仅执行所选的部分。
== OCI 8 PHP 扩展和适用于 PHP NetBeans IDE
您可以使用 OCI 8 PHP 扩展和适用于 PHP NetBeans IDE 编写 PHP 代码,以便与 Oracle 数据库通信。使用适用于 PHP NetBeans IDE Oracle 数据库:
1. 按照 link:../../trails/php.html[+PHP 学习资源+]的“配置 PHP 开发环境”部分所述,设置 PHP 环境。请注意,NetBeans IDE 仅支持 PHP 5.2 5.3
2. 在编辑器中打开 ``php.ini`` 文件。确保将 ``extension_dir`` 属性设置为 PHP 扩展目录。此目录通常为 ``PHP_HOME/ext`` 。例如,在将 PHP 5.2.9 安装到 ``C:`` 根目录时, ``extension_dir`` 设置应为 ``extension_dir="C:\php-5.2.9\ext"``
3. 找到 ``extension=php_oci8_11g.dll`` (适用于 Oracle 11g)或 ``extension=php_oci8.dll`` (适用于 Oracle 10.2 XE)行并取消注释。每次只能启用其中的一个扩展。
*重要说明:*如果 ``php.ini`` 中没有这些行,请在 extensions 文件夹中查找 OCI 8 扩展文件。如果 extensions 文件夹中没有 OCI 8 扩展文件,请参见link:http://www.oracle.com/technetwork/articles/technote-php-instant-084410.html[+在 Linux 和 Windows 中安装 PHP 和 Oracle Instant Client+] 以了解 OCI 8 的下载和安装信息。
. 重新启动 Apache。(Windows 用户应重新启动计算机。)
. 运行 ``phpinfo()`` 。如果成功启用了 OCI 8,则会在 ``phpinfo()`` 输出中显示 OCI 8 部分。
有关启用 OCI 8 的详细信息(尤其是将 OCI 8 与远程 Oracle DB 服务器一起使用的信息),请参见link:http://www.oracle.com/technetwork/articles/technote-php-instant-084410.html[+在 Linux 和 Windows 中安装 PHP 和 Oracle Instant Client+]。
如果启用了 OCI 8,适用于 PHP NetBeans IDE 将访问该扩展以完成代码并进行调试。
image::images/oci-cc.png[]
== OCI JDBC 驱动程序与 NetBeans IDE 一起使用
OCI 驱动程序包是在与 JDBC Thin 驱动程序 ( ``ojdbc6.jar`` ) 相同的 JAR 文件中提供的。选择使用哪个驱动程序取决于以下接口: ``oracle.jdbc.OracleDriver`` 用于 Thin 驱动程序; ``oracle.jdbc.driver.OracleDriver`` 用于 OCI 驱动程序。要使用 OCI 驱动程序,还必须安装 Oracle Database Instant Client,因为它包含 OCI 驱动程序与数据库进行通信所需的所有库。
*从 NetBeans IDE 中使用 Oracle OCI 驱动程序连接到 Oracle 数据库:*
1. link:http://www.oracle.com/technetwork/database/features/instant-client/index-100365.html[+下载+]适用于您的平台的基本 Oracle Database Instant Client 软件包。按照link:http://www.oracle.com/technetwork/database/features/instant-client/index-100365.html[+此页+]上的安装说明进行操作。
2. IDE "Services"(服务)窗口中,右键单击 "Databases"(数据库)节点,然后选择 "New Connection"(新建连接)。
3. "Locate Driver"(查找驱动程序)步骤中,选择 "Oracle OCI",然后单击 "Add"(添加)并指定 ``ojdbc6.jar`` 文件。
4. "Customize Connection"(定制连接)对话框中,提供以下连接详细信息:IP 地址、端口、SID、用户名和口令。
请注意 OCI Thin 驱动程序的 JDBC URL 的差别。
image::images/oci-connection.png[]
== 疑难解答
下面的疑难解答提示仅介绍了我们遇到的几种异常错误。如果此处没有解答您的问题,请自行搜索或使用“发送有关此教程的反馈意见”链接提供建设性反馈。
* 您将会看到类似下面的错误:
[source,bash]
----
Shutting down v3 due to startup exception : No free port within range:
>> 8080=com.sun.enterprise.v3.services.impl.monitor.MonitorableSelectorHandler@7dedad
----
出现这种错误的原因是,GlassFish 应用服务器和 Oracle 数据库均使用端口 8080。如果要同时使用这两个应用程序,您需要更改其中的一个应用程序的默认端口。要重置 Oracle 数据库的默认端口,您可以使用以下命令:
[source,bash]
----
CONNECT SYSTEM/passwordEXEC DBMS_XDB.SETHTTPPORT(<new port number>);
----
* 出现以下错误:
[source,bash]
----
Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor.
----
如果监听程序无法识别连接描述符提供的数据库实例的服务 ID (SID),则会出现这种错误。出现该异常错误有几个原因。例如,如果未启动 Oracle 数据库,则可能会出现该异常(最简单的情况)。SID 不正确或监听程序无法识别 SID。如果使用默认 SID(例如,Oracle Database Express Edition 的默认 SID XE),则不太可能会出现该问题。SID 包含在 ``tnsnames.ora`` 文件的 CONNECT DATA 部分(在 Windows 计算机上,该文件位于 ``%ORACLE_HOME%\network\admin\tnsnames.ora`` )。
* 出现以下错误:
[source,bash]
----
ORA-12705: Cannot access NLS data files or invalid environment specified.
----
通常,这表示 NLS_LANG 环境变量包含无效的语言、国家/地区或字符集值。如果属于这种情况,则应在操作系统级别禁用无效的 NLS_LANG 设置。对于 Windows,请在 Windows 注册表的 \HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 中重命名 NLS_LANG 子键。对于 Linux/Unix,请运行 "unset NLS_LANG" 命令。
link:/about/contact_form.html?to=3&subject=Feedback:%20Connecting%20to%20Oracle%20Database%20from%20NetBeans%20IDE[+请将您的反馈意见发送给我们+]
== 另请参见
有关管理和使用 Oracle 数据库的更多信息,请参见相应的 Oracle 文档。我们在下面简要列出了最常用的文档。
* link:http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/toc.htm[+Oracle 数据库 SQL 参考+]。完整介绍用于处理 Oracle 数据库中信息的 SQL 语句。
* link:http://download.oracle.com/docs/cd/E11882_01/network.112/e16543/toc.htm[+Oracle 数据库安全指南+]。提供并解释在管理 Oracle 数据库时使用的主要概念。
* link:http://st-curriculum.oracle.com/tutorial/DBXETutorial/index.htm[+Oracle Database 10_g_ Express Edition 教程+]。快速而详细地介绍了如何使用 Oracle Database XE。
* link:http://www.oracle.com/technetwork/articles/technote-php-instant-084410.html[+在 Linux 和 Windows 中安装 PHP 和 Oracle Instant Client+]。有关安装 PHP 和 Oracle Instant Client 的直观操作方法文章。
有关如何在 NetBeans IDE 中使用其他数据库的信息,请参见
* link:java-db.html[+使用 Java DB (Derby) 数据库+]
* link:mysql.html[+连接 MySQL 数据库+]
* link:../web/mysql-webapp.html[+使用 MySQL 数据库创建简单的 Web 应用程序+]