在网上粗略的搜索了一下,已经有很多关于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 10
g
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/"
/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
|
我用红色加重的部分是需要修改的:
(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
的应用程序了:
你可以试着运行它。在下一个单元,我会教你如何在几个钟头内搞定这个应用程序。