Oracle APEX系列(一) 安装
在网上粗略的搜索了一下,已经有很多关于Oracle Application Express(APEX)的文章了,真的很高兴看到已经有这么多国内的朋友使用起这个工具了。要知道,在Oracle公司的很多团队都有用APEX开发的应用程序,这其中就包括广大Oracle爱好者熟悉的AskTOM网站。
APEX最新的版本是2.2,在此之前的名字是HTMLDB。我很喜欢这个老名字,因为它一语道破了这个产品的本质:
a hosted declarative development environment for developing and deploying database-centric Web applications.
看到这个定义,有的人会有这样的疑问:以数据库为中心进行web应用程序的开发,那它的性能如何呢?Oracle官方给出的解释是:
Oracle Application Express provides application developers and application users with an extremely high level of performance. Because Oracle Application Express resides in the Oracle database, it has minimal impact on network traffic. Plus, Application Builder includes a large number of monitoring reports to enable you to identify and tune application performance.
我本人对这个解释不是十分满意,我做过很长时间的性能测试,影响性能的因素当然不只是这里提到的network traffic,而一些辅助工具也不是医病的灵丹妙药,最怕的是用工具看到有病,却不知道如何医治甚至得到无药可治的答案。不过这不意味Apex的性能不好,Apex提供了很多可以调整的地方,其中最主要的一项就是数据库的调整了。试想一下,即使是现在最普遍的J2EE应用程序,性能调整也是一项最艰巨的任务。
好了,下面先开始安装吧。
APEX安装
简单的说,共分四步:
1、 安装Oracle DB
APEX2.2要求Oracle DB版本为9.2.0.3或更高。注意APEX2.2不支持Oracle DB XE,如果你的数据库是Oracle DB XE,就要选用APEX2.1。我这里选用的数据库是Oracle 10.2.0.1,虽然不是目前最高的版本(最高的版本是10.2.0.1的patchset),但是已经包含了很多令人振奋的新特性了。
建议CSDN的朋友们也多使用一些Oracle产品的新版本,时刻保持对新技术的敏感度。
Oracle DB的免费下载网址为:
http://www.oracle.com/technology/software/products/database/oracle10g/index.html
注意:不要用下载的软件从事有任何商业目的的活动。
下载之后开始安装,步骤非常简单。你可以选择在安装的同时创建一个数据库,或者在安装结束后用DBCA创建一个数据库,最好将数据库的字符集设为AL32UTF8(如果你想让你的数据库支持多种语言,请选用AL32UTF8;否则可以考虑使用一种native本地的字符集,比如ZHS16GBK)。这里我创建了一个service name为tina03.cn.oracle.com(SID为tina03)的数据库。
安装结束后,打开services(服务)窗口,你可以看到里面多了数个oracle的服务,其中包括我们需要的OracleServiceTINA03和OracleOraDb10gTNSListener,其他的服务都可以停掉且设为手动启动。
2、 安装Oracle Http Server
APEX2.2是需要部署到Oracle Http Server上的,它所以能运行主要是依赖于mod_plsql这个模块。下面这三个系列的产品可以满足需要:
Oracle 9i Database release 2 (9.2) or higher
Oracle 9i Application Server release 1 (1.0.2.2) or higher
Oracle 10g Database CompanionCD(CCD) release 1 or 2
我们选用Oracle DB 10.2.0.1.0 CCD。安装过程也十分简单,需要注意的是:
(a)选择与DB不同的安装目录,即另一个Oracle Home
(b)在选择安装Http Server后的下一个页面,会询问是否安装Oracle Workflow,这与APEX没有任何直接的关系,当然如果你想在你的应用程序中使用Oracle Workflow,也可以安装。当然,即使现在不安装,以后仍然可以再次运行起这个安装程序进行安装。
安装结束后,在service(服务)程序,你会看到里面多了两个服务,名字类似于:OracleHttpServerProcessManager和OracleHttpServerASControl。其中:
(a)OracleHttpServerASControl是enterprise management(EM)管理服务,功能类似于Db中的EM(刚才创建数据库时生成的OracleDBConsoletina03服务),建议将OracleHttpServerASControl停止且改为手动启动。
(b)OracleHttpServerProcessManager是我们真正需要的服务,只有它启动了,APEX才能正常访问。如果不通过services(服务)窗口来启动也可以在DOS创建下运行:%http server oracle home%/opmn/bin/opmnctl startall
3、 安装APEX2.2
“严重”注意,如果你按(2)中的步骤装Http Server,会发现里面有一个HTMLDB10.2.0.1的安装选项,这个不是APEX2.2。APEX是一个单独的zip包,请从以下网址单独下载:
http://download.oracle.com/otn/java/appexpress/apex_2.2.zip
下载后解压缩到本地目录,例如c:/apex。打开一个dos窗口。这里有两点注意事项:
(a) APEX的框架数据库部分,即用到的数据库的各种对象,要导入到Oracle DB中;APEX的前台页面部分,即用到的图片、javascript和css文件等,到拷贝到Http Server中。我们在这一步完成的是向数据库导入APEX,而拷贝工作放在下一步配置中完成。
(b) 在本地安装有两个Oracle Home,安装程序会自动在系统环境变量和注册表中进行一些设置。由于我们先安装的DB后安装的Http Server,Http Server的路径就会出现在Db的路径前。这样在运行sqlplus时就有可能发生问题,推荐的做法是创建一个设置DB运行环境的shell脚本,例如tina03.cmd :
set ORACLE_HOME=C:/oracle/OraDb
set J2EE_HOME=%ORACLE_HOME%/j2ee/home
set ORACLE_SID=tina03
set PATH=%ORACLE_HOME%/jdk/bin;%ORACLE_HOME%/bin;%PATH%
set LD_LIBRARY_PATH=%ORACLE_HOME%/lib;%ORACLE_HOME%/ctx/lib
call c:
cd c:/
下面依次执行以下命令:
(a) c:/tina03.cmd
(b) cd c:/apex
(c) sqlplus /nolog
(d) conn sys/sys_passwd as sysdba
(e) @apexins password SYSAUX SYSAUX TEMP /i/ none
其中,apexins是c:/apex目录下一个sql脚本的名字;password是APEX管理员(administrator)帐号的口令;前后两个SYSAUX分别代表tablespace_apex和tablespace_files两个表空间,它们分别是为apex应用程序用户和apex文件用户准备的。TMP代表APEX使用的临时表空间; /i/指定APEX图片的虚拟路径;none指定数据库的连接串,因为这里是本地数据库所有为none,否则应为TNS中定义的SID。
到这里,APEX的主体安装就已经结束了,但是现在还无法使用,要完成下面这些配置工作。
4、 安装后的配置
(1) 重新编译无效的PL/SQL Package
这里要说的是一个常识:很多情况下,在我们以批处理的方式运行了一系列sql命令,创建了一系列object时,这些object的状态可能是无效的。需要重新编译一下。连接到数据库,运行数据库目录下的rdbms/admin子目录下的utlrp.sql。
(a)启动一个DOS窗口
(b)运行c:/tina03.cmd
(c)sqlplus /nolog
(d)conn sys/sys_passwd as sysdba
(e)@ C:/oracle/OraDb/rdbms/admin/utlrp.sql
(2) 拷贝image子目录到Http Server的Oracle Home下
前面我们把APEX2.2解压缩到c:/apex,这个目录下有一个images子目录,把这个image目录拷贝到Http Server的Oracle Home下的Apache/Apache子目录下,例如你的Http Server的Oracle Home是c:/oracle/HttpServer, 那么就把images子目录拷贝到c:/oracle/HttpServer/Apache/Apache下。
(3) 配置DAD
这一步骤是让mod_plsql可以识别APEX请求,也就是说把APEX注册到mod_plsql中。我们要修改的是Http Server的Oracle Home下的Apache/modplsql/conf子目录中的dads.conf文件,修改后的文件如下:
# ============================================================================
# mod_plsql DAD Configuration File
# ============================================================================
# 1. Please refer to dads.README for a description of this file
# ============================================================================
# Note: This file should typically be included in your plsql.conf file with
# the "include" directive.
# Hint: You can look at some sample DADs in the dads.README file
# ============================================================================
AddType text/xml xbl
AddType text/x-component htc
Alias /i/ "D:/oracle/HttpServer/Apache/Apache/images/"
<Location /pls/apex>
Order deny,allow
PlsqlDocumentPath docs
AllowOverride None
PlsqlDocumentProcedure wwv_flow_file_manager.process_download
PlsqlDatabaseConnectString localhost:1521:tina03.cn.oracle.com ServiceNameFormat
PlsqlNLSLanguage "SIMPLIFIED CHINESE_CHINA.AL32UTF8"
PlsqlAuthenticationMode Basic
SetHandler pls_handler
PlsqlDocumentTablename wwv_flow_file_objects$
PlsqlDatabaseUsername APEX_PUBLIC_USER
PlsqlDefaultPage apex
PlsqlDatabasePassword welcome0
Allow from all
</Location>
我用红色加重的部分是需要修改的:
(a)/i/是我们在安装是指定的image的虚拟路径,这里我们要把虚拟路径和真实路径做一个映射,真实路径就是我们拷贝到Http Server的Oracle Home下的Apache/Apache子目录下的images子目录。
(b)localhost:1521:tina03.cn.oracle.com 是host:port:service_name格式的数据库连接串。
(c)SIMPLIFIED CHINESE_CHINA.AL32UTF8指定的NLS_LANG
(d)welcome0是安装APEX时提供的口令
(4) 安装语言包
和Oracle的大多数产品一样,APEX的全球化做的很出色,除缺省安装的英语外,还支持包括简体中文、日文和法文等9种语言。例如,当你安装了中文前,不论浏览器的语言是因为还是简体中文,APEX的开发界面都是英文的,而安装了简体中文包后,将浏览器的语言设为中文(zh_CN)后,APEX的开发界面就是中文的了。
我建议安装简体中文语言包,但是在开发的过程中还是使用英文,虽然看英文慢一些,但是更有助于准确的掌握APEX。
注意,这时数据库字符集的重要性就体现出来了,如果你的数据库字符集不支持要安装的语言,通俗的说不是要安装的语言的超集,导入语言包可能会失败(即使成功结束,你看到的也可能是?号)。例如,你要导入日文,数据库的字符集就不能是ZHS16GBK,当然AL32UTF8支持所有的9种语言。下面来导入中文包:
(a) 打开一个DOS窗口,运行tina03.cmd
(b) cd c:/apex/builder/zh-cn
(c) set NLS_LANG=”SIMPLIFIED CHINESE_CHINA.AL32UTF8”
提示:因为安装文件都是UTF8编码的,所以不论你的数据库字符集是什么,NLS_LANG都要设成AL32UTF8。
(d) sqlplus /nolog
(e) conn sys/welcome0 as sysdba
(f) alter session set current_schema=FLOWS_020200;
(g) @ load_zh-cn.sql
(5) 修改JOB_QUEUE_PROCESSES参数
job_queue_processes参数定义job的最发并发数,在APEX中,交易(transaction)和SQL脚本的处理都需要这个参数。要启动这个参数并设一个合理的值:
(a) 打开DOS窗口,执行tina03.cmd
(b) sqlplus /nolog
(c) conn sys/welcome0 as sysdba
(d) ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 20 set scope=spfile
(e) Shutdown immediate
(f) startup
5、 第一次登陆APEX
APEX是通过浏览器访问的,包括IE,firefox在内的主流浏览器都支持,具体要求如下:
·IE 6.0 or higher( Windows only)
·Netscape 7.2 or higher
·Mozilla 1.2 or higher
·Firefox 1.0 or higher
当然你也可以使用MyIE。
APEX的有两个URL:
(1) admin站点
http://hostname:port/pls/database_access_descriptor/database_access_descriptor _admin
其中:
(a) hostname就是APEX安装的机器的名字,可以是localhost;
(b) port是从Http Server的Oracle Home下的install/portlist.ini文件中获得的,取参数Oracle HTTP Server port的值
(c) database_access_descriptor就是我们在(3)中的dads.conf文件中定义的
在我的例子中url为http://localhost:7777/pls/apex/apex_admin
(2) 开发站点
http://hostname:port/pls/database_access_descriptor
解释同上,在我的例子中url为http://localhost:7777/pls/apex
下面先简要的介绍介绍一下使用APEX开发的过程:
(1)admin用户在admin站点创建一个workspace(工作区),同时指定一个该工作区的administrator
或者使用一个现有的工作区
(2)以工作区的administrator用户登陆开发站点,创建应用程序(application)
也就是说workspace和application是一对多的关系,一个workspace可以包含多个application,一个application只能属于一个workspace
(3)然后administrator可以添加一些用户,赋予不同的权限。
用户是相对于workspace而言的,也就是说用户可以访问workspace所有applications,只是它们的权限可能不同。
(4)以后这些新添加的用户就可以登陆开发站点进行开发和维护了。
注意:只有缺省的admin用户和被赋予admin权限的人才可以访问admin站点,象workspace里administrator和其他用户只能访问开发站点。
那么,赶快行动吧。
(1
)登陆admin
站点,用户为admin
,口令为安装APEX
时指定的口令
(2
)创建workspace
指定workspace
的名字,可以为中文。
选择是否使用已有的数据库schema(方案)。意思是,你应用程序所用到的数据库对象(object)和数据(data)保存在哪个schema中。
如果你忘记了都有哪些schema
,可以点击“Schema Name
”后面的图标打开查询窗口进行选择。
指定工作区administrator
的名字和口令,再次提醒的是这个administrator
只是该工作区的administrator
,不同于缺省的admin
用户。
点击create
创建工作区。
(3)登陆到开发站点
注意的是:当你先在一个firefox中登陆了admin站点,后又在这个firefox中新打开一个tab或干脆新打开一个firefox,都有可能发生一访问开发站点就转到admin登陆界面的情况,这是最好的办法就是关闭所有的firefox,然后重新启动一个。
下面点击“Application Builder”的大图标,也可以打开下拉菜单:
里面已经有一个demo
的应用程序了:
你可以试着运行它。在下一个单元,我会教你如何在几个钟头内搞定这个应用程序。
链接:http://blog.csdn.net/tinawang11/article/details/1136548