目錄
Oracle JDBC driver test
首頁 資料庫 mysql教程 如何在你的Linux机器上安装运行Oracle

如何在你的Linux机器上安装运行Oracle

Jun 07, 2016 pm 05:45 PM
jdbc linux nbsp oracle quot

摘要:Oracle于去年年底宣布移植Oracle 8和Oracle Application Server
到Linux。 这是一个明确无误的标志:整个世界都应该认识到,Linux已经
是一个严肃的操作系统,足以承担企业级的应用。 Uche Ogbuji在下文中解
释了应该如何安装、配置和初步使用Oracle 8 for Linux。


如何在你的Linux机器上安装运行Oracle
一篇实用指导

经过了许多谣传和暗示之后,Oracle于1998年10月7日发布了Linux上的
Oracle 8数据库和Oracle Application Server。这是Linux近期历史中最为
耀眼的一幕。

无论您个人对Oracle公司的看法如何,该公司在大规模数据应用领域的巨大
声誉使这次产品发布成为一个明确 无误的标志:整个世界都应该认识到,
Linux已经是一个严肃的操作系统,足以承担企业级的应用。

但对于任何真正关心Linux的人来说,各种宣传攻势只是过眼烟云,只有代码
才是关键的。(only code matters. 译注:事实上,Oracle 8i, 即8.1.5
for Linux已经开发完成,但其中的JServer模块有问题,
所以Oracle还没有发布。)

开始行动

在RedHat上安装Oracle可以是相当轻而易举的,但要是完全跟着Oracle公司
的文档走就未必那么容易了 。最快的捷径是Tom Bisset的主页:
http://jordan.fortwayne.com/oracle。

如果您看了Tom的主页,那么您会注意到他漏了JDBC的安装。如果您准备使用
JDBC(对于跨平台的Oracle应用十分方便),只需在安装屏幕要求您选择组
件(components)时,加上该选项即可。当然,您应该先装好JDK。我个人使
用Blackdown的JDK 1.1.7。(译注:Redhat包括JDK)然后需要设置oracle
用户的ClassPath环境变量,最好的办法是在oracle用户目录的.bash_profile
或 .profile中加上一句:
CLASSPATH=/usr/lib/jdk/lib/classes.zip; export CLASSPATH
然后,如果您只需做Web Applet的话,在安装程序"Choose JDBC Components"
的时候, 选择"JDK 1.1 JDBC Thin Driver",如果您需要做完整的Java应用,
选择"JDK 1.1 JDBC OCI Driver"。


另外请注意:安装程序让您输入各口令时,如果口令不符合规范,不会警告。
我第一次安装时,口令里加了".",这在UNIX中是允许的,Oracle就是另一码
事了。直到安装快结束时,程序才告诉我口令有问题。当时为保险 起见,我
从头做了一次安装。

安装程序的另一个问题是试图往还没有建立的目录里拷贝文件。有必要在安装

mkdir -p /u01/app/oracle/product/8.0.5/doc/server.805/install。这一
关过后万事大吉。

安装成功后,必须以ROOT身份登录,运行root.sh。我对root.sh作了以下改动:
· LBIN环境变量从/usr/lbin改成了/usr/local/bin
· 增加环境变量LOG=/tmp/oracle-root.sh.log ,这样脚本的运行结果会记录
下来

root.sh里说到,要想数据库作为一个服务器运行,必须先设定TWO_TASK变量;
但是,事实上如果从安装Oracle的机器上运行root.sh,就没有必要设这个变量。


Python和Oracle

我配置了一下python(译注:一种强大,快速的面向对象的脚本语言),以测
试Oracle的编程接口和网络接口 。在python中要连Oracle,需要
Digital Creation(Zope应用服务器的作者)的DCOracle模块。
您只需下载软件并按照指示照做就行。如果是DCOracle 1.1.0,使用
Setup-8.0.4的配置,从ORACLE_LIBS变量中删去-lsocket, -lnsl, -lgen,
-lelf, -laio, 和-lposix4即可,那些都是Solaris专用的。注意Redhat 5.2和
6.0中安装的 python设置不全,config目录和include目录被省略,无法编译
安装第三方的模块。您必须自己编译python或者下载一个合适的RPM。找
python的RPM,最好的去处可能是Oliver Andrich的 Python & Linux主页。
只要rpm -e --nodeps python, 然后 rpm -i python,python-dev和其他RPM
即可。
装好python后,我运行了以下的基本查询,访问Oracle。

[uche@malatesta uche]$ python
Python 1.5.1 (#1, Sep 3 1998, 22:51:17) [GCC 2.7.2.3] on linux-i386
Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
>>> import DCOracle
>>> #connect to DB. scott/tiger are the test database username/password
>>> dbc=DCOracle.Connect("scott/tiger@sforza") #sforza is the local Oracle
server
>>> c = dbc.cursor()
>>> c.execute("SELECT * FROM emp WHERE emp.deptno = 10")
>>> rows = c.fetchall()
>>> print rows
[(7782, 'CLARK', 'MANAGER', 7839, dbiDate('1981-06-09 00:00:00'), 2450.0,
None, 10),
(7839, 'KING', 'PRESIDENT', None, dbiDate('1981-11-17 00:00:00'), 5000.0,
None, 10),
(7934, 'MILLER', 'CLERK', 7782, dbiDate('1982-01-23 00:00:00'), 1300.0,
None, 10)]


开发工作站配置

我在数据库服务器以外的一台机器上编译安装了python和其他编程接口。最初,
看起来似乎我必须安装Oracle 的所有PRO*C/C++软件包。但要把Oracle安装程
序运行到那一步也够麻烦的,所以我不想那样办。于是我找出了 写程序所需
要的最小限量的头文件(include)、对象文件(object)和库文件(library):
$ORACLE_HOME/lib/*
$ORACLE_HOME/rdbms/demo/*
$ORACLE_HOME/rdbms/lib/*
我的机器上设ORACLE_HOME为/usr/local/oracle。
注意这些文件还不能让您可以在C程序中直接嵌入SQL语句,只有完整安装
PRO*C/C++后才行。如果要用JAVA的话,还得增加$ORACLE_HOME/jdbc/lib/*;
注意把这个目录加到ClASSPATH变量中。

JDBC连接


为测试JDBC连接,我作了一个小程序,在一个listbox内显示测试库中的所
有雇员名。下面的程序1是调用JDBC
的java Applet,程序2是调用JAVA程序的HTML超文本。如果您的JDBC已经安
装成功,将程序1拷贝为 JDBCTest.java,将程序2拷贝为JDBCTest.html,
然后:

javac JDBCTest.java
appletviewer JDBCTest.html

您就可以自己看看结果如何了:

程序1:

/*
Applet that reads in several rows from a remote Oracle database
and presents them in a listbox.
*/
import java.sql.*;
import java.awt.*;
import java.applet.*;
import java.lang.*;
public class JDBCTest extends Applet
{
file://Single-select ListBox
private List employee_list = new List(5, false)
public void init()
{
setLayout(new BorderLayout());
try {
file://Set up the Oracle JDBC driver
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
file://Connect to an Oracle database on machine sforza, using username
file://"scott" and password "tiger"
Connection DB_conn = DriverManager.getConnection
("jdbc:oracle:thin:@sforza:1521:ORCL", "scott", "tiger");
file://Connection DB_conn = DriverManager.getConnection
("jdbc:oracle:thin:scott/tiger@sforza:1521:ORCL");
file://Create a JDBC statement object
Statement statement_obj = DB_conn.createStatement();
file://Execute a query to get the employee names from the test DB
ResultSet results = statement_obj.executeQuery ("select ENAME from
EMP");
file://Populate the list box with all the employee names
while (results.next ()){
employee_list.add(results.getString(1));
}
} catch (SQLException e) {
throw new RuntimeException("SQL Exception " + e.getMessage());
}
add(employee_list);
}
}


程序2:




  

 

Oracle JDBC driver test


 Your
browser doesn't support Java. 


 

 


Last modified: Sat Mar 6 22:19:26 MST 1999





程序1的大部分都是与具体数据库无关的JDBC调用,依样画葫芦您也可以
访问PostgresQL,主要和Oracle相
关的部分是:

Connection DB_conn = DriverManager.getConnection
("jdbc:oracle:thin:@sforza:1521:ORCL", "scott", "tiger");


注意 Oracle thin JDBC driver中URI的格式:
jdbc:oracle:thin:@: :
如果您想在URI中包括用户名和口令的话:
jdbc:oracle:thin:username/password@: :

同样的URI还有一个较长的格式:
"jdbc:oracle:thin:@(description=(address=(host=_IP>)(protocol
=tcp)(port= ))(connect_data=(sid=)))"
注意ORCL是系统安装的缺省SID(System Identifier,系统标识符)。
如果您在安装时使用了其他的SID,
在URI里也用那个SID。$ORACLE_HOME/network/admin/tnsnames.ora包
括了Oracle服务器的端口和SID设置。
这是TNS Listener,Oracle网络连接进程的配置文件。如果您无法通过
网络连接数据库的话,首先应该检查
端口号和SID是否正确,TNS listner是否正常(译注:lsnrctl status,
或者tnsping)。JDBC并不是开发
SQL数据库应用的唯一手段,ANSI标准SQLJ允许在JAVA程序中直接嵌入
SQL语句。Oracle for Linux 8.0.5
并没有捆绑SQLJ,但可以作为另一个独立产品获得。SQLJ是100%的
JAVA,应该在Linux上运行没有问题,
事实上SQLJ在底层使用的就是JDBC,因此可以同任何SQL数据库互联,
并不限于Oracle。

希望上面的这些例子能对您的编程有所帮助。可惜Oracle for Linux
的编程文档相当的少,要不就是隐藏得
十分深:) 也许在数据库编程得心应手之前,您得先啃它一两本书。

PL/SQL

对SQL的过程性语言扩展(PL/SQL)可能是Oracle最著名的特点。这种
强大的专业数据库管理语言允许您对
声明性的SQL加逻辑控制。一般,PL/SQL的存储过程(stored procedure)
用命令行的sqlplus,图形化的
Developer/2000(Linux上目前还没有)或其他工具开发,允许您从
Oracle众多的查询接口(Oracle Application Server, Python, Perl,
JDBC 或者C)访问。

程序3:

create or replace package stored_sample as
function get_annual_salary (emp_number in number) return number;
end stored_sample;
/
create or replace package body stored_sample as
function get_annual_salary (emp_number in number) return number
is
annual_salary number;
monthly_salary number;
begin
select sal into monthly_salary from emp where empno = emp_number;
annual_salary := monthly_salary * 24;
return (annual_salary);
end get_annual_salary;
end stored_sample;
/


上面的程序3是存储进程的一个小示范,它接受一个员工号,返回该员
工的年薪。相关的函数
get_annual_salary封装在PL/SQL包sample_package中。

如果把程序3拷贝到文件sample.sql,您可以通过sqlplus运行它,如下
所示:

[oracle@sforza demo]$ sqlplus

SQL*Plus: Release 8.0.5.0.0 - Production on Sun Mar 7 13:36:32
1999

(c) Copyright 1998 Oracle Corporation. All rights reserved.

Enter user-name: scott
Enter password:

Connected to:
Oracle8 Release 8.0.5.0.0 - Production
PL/SQL Release 8.0.5.0.0 - Production

SQL> @sample
Package created.

Package body created.

SQL> set serveroutput on
SQL> exec
dbms_output.put_line(stored_sample.get_annual_salary(7782))
58800

PL/SQL procedure successfully completed.

SQL>

通过其他的编程接口,也可以使用这个PL/SQL包。Python/DCOracle中,
参见Connection对象的procedures成员
JDBC中,参见java.sql.CallableStatement。

Oracle有众多的内置函数。事实上,大多数您以前用外部代码完成的
功能都可以通过PL/SQL高效地完成。如果您需要什么比较通常的功能,
请参考PL/SQL手册,看您需要的函数是否已经实现了。如果您准备做
大量的Oracle编程的话,经常翻阅PL/SQL手册以熟悉各种函数是大有
好处的。

管理Oracle for Linux

如果您已经习惯运行相对不那么复杂的数据库,那么在Oracle中完成
一些日常操作,例如建立新数据库或者性能调谐会显得相当复杂。有
一些关键的配置文件需要维护,如init.ora, config.ora和
tnsnames.ora。
一般有好几种办法指定一些关键参数,如当前的SID。可以在上述的
文件中声明,也可以在环境变量中声明,或者是通过oracle工具的运
行参数。这种灵活性是值得赞赏的,可惜有时搞清那一种设置优先也
很伤脑筋。

同Linux一样,Oracle提供的安全机制如果管理不当,就形同虚设。
花时间熟悉各种访问规则和设置,以及各种特殊Oracle用户帐号的角
色,还是值得的。

Oracle的性能调谐是一个非常大,也非常专的话题。调谐得当,可以
很大程度地提高性能。Oracle运行和CPU、内存、外存的关系是相当
复杂的,这些因素必须考虑。另外,PL/SQL包,存储过程,临时表空
间,表结构本身,所有这些都会随着使用而日趋复杂,保证数据库的
结构优化,没有垃圾,绝对比定期从cron运行vacuum复杂得多。

Oracle DBA(database adminstrator,数据库管理员)是电脑专业人
员中一个著名的亚文化。这并不奇怪。Oracle的强大功能和灵活性,
也同时意味着多得让人发疯的各种小秘密、小技巧、小陷阱,这方面
的特点它绝不比任何人少--包括Linux在内。您在征服Linux时可能
已经发现,O'Reilly的动物园(译注:所有O'Reilly and Associate
出版的书都以动物作封面)是一个很好的去处。如果您需要在Oracle
上完成许多工作,找找黄封面的O'Reilly Oracle专辑。那里,你会
找到比Oracle拜占庭迷宫式文档好的多的信息来源。

Oracle for Linux vs. Oracle for NT

NT上的Oracle (译注:Oracle在NT上的销量超过了SQL SERVER,是NT
第一大数据库)为许多管理功能提供了图形界面,类似的功能在UNIX
/Linux上只能通过sqlplus访问。这样的图形界面,设计得与NT控制
面板的其他部分颇为相似。Linux DBA必须熟悉sqlplus。NT的问题是,
许多管理任务要求用户在主控台(机器屏幕前)完成,如果想远程管
理就需要昂贵的第三方软件(或者Oracle Enterprise Manager?)。
UNIX上的Oracle管理可以从任何经过授权的远地进行,效果同在机器
主控台一样。

NT上的Oracle使用一个进程内的多个进程,而UNIX/Linux上的Oracle
使用多个独立的,使用相互独立的内存空间(译注:UNIX上也有多线
程的部分:Multithreaded Server,MTS,相当于前文提到的listener
的多线程版本。)NT上的实现方式避免了进程间通信,有小小的性能
优势,但UNIX上的实现方式提供了高得多的可靠性和数据完整性,因
为一个Oracle进程不可能污染另一个Oracle进程的地址空间。(译注:
在NT和VMS上,创建一个新的进程比创建一个新的线程昂贵得多,而且
NT的进程间切换很慢,因此微软建议程序员只要有可能就使用多线程。
在UNIX上,建立新进程是比较高效的。而在Linux上,建立新进程和新
的内核线程,kernel thread都使用同一个基本系统调用,效率相当高。)

在32位的硬件系统上,Linux的ext2文件系统的限制是最大文件为2G,
NT为4G。这并不太影响Oracle的用户,因为表空间tablespace可以扩
展到多个文件上,但还是有小小的效率问题。当然,64位的Linux
(Alpha,Ultra-Sparc, PA-RISC)会消除这些限制,64位的Solaris
(Solaris 7)也一样。(译注:这里其实有一些问题,待我查明再向
各位看官交代)。


一些好工具/结束语

Oracle同时发布了Oracle Application Server (OAS)的Linux版本。
对OAS的深入探讨在本文范围之外,但它确实是连接后端Oracle数据
库,建立Internet或Intranet应用的一个强有力的工具。OAS提供
JAVA开发能力,可以将HTTP和IIOP与OCI网络接口串在一起,具备
友好的界面以便设计WEB表单和报表,还有其他方便的工具。

Oracle如此流行,自然也有相应的一批开源软件(Open Source)
工具。其中的OWS killer 是一个基于JAVAServlet的可以替代OAS
的WEB接口工具,与Apache WEB服务器、Apache的Jserv JAVA Servelet
模块集成,提供对Oracle数据库的访问。(译注:OWS, Oracle Web
Server是Oracle Application Server早期版本的名称)。
您可以在Matt's House 找到更多的工具以管理Oracle的存储过程、
提供快速的报表功能。

掌握Oracle可不是举手之劳的事,但也没有必要望而却步。确实,
世上有许多更容易管理的数据库,但如果您需要高级的SQL,或者
PL/SQL的功能,或者trigger,或者各种扩展,或者先进的交易管
理,或者必须和Oracle系统共存,您会发现Linux是一个极佳的
Oracle平台。您已经在Linux的世界中探索了这样远,一定也能应
付Oracle的挑战。


资源链接:

Oracle for Linux正式发布的新闻稿:
http://www.oracle.com/cgi-bin/press/printpr.cgi?
file=199810090500.17129.html&mode=corp&td=01&product=00&
tm=10&fd=01&fm=08&status=Search&ty=1998&limit=100&fy=1998

在Redhat上安装Oracle 8.0.5和OAS 3的详细指导:
(Step-by-step install notes for Oracle 8.0.5 and Application
Server on Red Hat):
http://jordan.fortwayne.com/oracle

下载Oracle 8和Oracle Application Server:
http://technet.oracle.com/tech/linux/section.htm

Oliver Andrich's Python & Linux Page:
http://andrich.net/python

Oracle on Linux -- Oracle Technet上的论坛
http://f2.dejanews.com/oracletechnet/nonmembers/index.cgi?
do=listmsgs&conf=Early.Linux

Blackdown.org -- Linux JDK:
http://www.blackdown.org/

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1670
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1273
29
C# 教程
1256
24
Linux體系結構:揭示5個基本組件 Linux體系結構:揭示5個基本組件 Apr 20, 2025 am 12:04 AM

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

git怎麼查看倉庫地址 git怎麼查看倉庫地址 Apr 17, 2025 pm 01:54 PM

要查看 Git 倉庫地址,請執行以下步驟:1. 打開命令行並導航到倉庫目錄;2. 運行 "git remote -v" 命令;3. 查看輸出中的倉庫名稱及其相應的地址。

甲骨文在商業世界中的作用 甲骨文在商業世界中的作用 Apr 23, 2025 am 12:01 AM

Oracle不僅是數據庫公司,還是雲計算和ERP系統的領導者。 1.Oracle提供從數據庫到雲服務和ERP系統的全面解決方案。 2.OracleCloud挑戰AWS和Azure,提供IaaS、PaaS和SaaS服務。 3.Oracle的ERP系統如E-BusinessSuite和FusionApplications幫助企業優化運營。

notepad怎麼運行java代碼 notepad怎麼運行java代碼 Apr 16, 2025 pm 07:39 PM

雖然 Notepad 無法直接運行 Java 代碼,但可以通過借助其他工具實現:使用命令行編譯器 (javac) 編譯代碼,生成字節碼文件 (filename.class)。使用 Java 解釋器 (java) 解釋字節碼,執行代碼並輸出結果。

sublime寫好代碼後如何運行 sublime寫好代碼後如何運行 Apr 16, 2025 am 08:51 AM

在 Sublime 中運行代碼的方法有六種:通過熱鍵、菜單、構建系統、命令行、設置默認構建系統和自定義構建命令,並可通過右鍵單擊項目/文件運行單個文件/項目,構建系統可用性取決於 Sublime Text 的安裝情況。

laravel安裝代碼 laravel安裝代碼 Apr 18, 2025 pm 12:30 PM

要安裝 Laravel,需依序進行以下步驟:安裝 Composer(適用於 macOS/Linux 和 Windows)安裝 Laravel 安裝器創建新項目啟動服務訪問應用程序(網址:http://127.0.0.1:8000)設置數據庫連接(如果需要)

git軟件安裝 git軟件安裝 Apr 17, 2025 am 11:57 AM

安裝 Git 軟件包括以下步驟:下載安裝包運行安裝包驗證安裝配置 Git安裝 Git Bash(僅限 Windows)

sublime快捷鍵怎麼使用 sublime快捷鍵怎麼使用 Apr 16, 2025 am 08:57 AM

Sublime Text 提供了提高开发效率的快捷键,包括常用的(保存、复制、剪切等)、编辑(缩进、格式化等)、导航(项目面板、文件浏览等)以及查找和替换快捷键。熟练使用这些快捷键可显著提升 Sublime 的使用效率。

See all articles