OracleAPEX学习心得.docx
《OracleAPEX学习心得.docx》由会员分享,可在线阅读,更多相关《OracleAPEX学习心得.docx(16页珍藏版)》请在冰豆网上搜索。
OracleAPEX学习心得
APEX简介
这一局部主要使读者熟悉APEX的根本概念、环境和使用。
本局部介绍了APEX主要特性,三个组件〔应用程序构建器、SQL工作室、实用工具〕和四类用户。
本局部回答了以下问题:
什么是APEX?
用APEX可以做什么?
何时使用APEX?
(所有贴出来的例子均可在apex.oracle.登录jjl/jjl.softgmail./jjl.soft查看)
什么是APEX?
刚刚来到某某,叫我们研究学习一个APEX的东西,一听很新鲜,画面也比form好看,因为是在浏览器看,当时第一反响就是浏览器,那这个是个什么架构,数据会慢嘛 ?
结果一看官方文档发现
架构原来是这样,看来担心似乎多余了.
Oracle推荐的环境配置
查阅其他资料得到一下对于APEX的阐释:
APEX是一个用于Oracle数据库的快速Web应用程序开发工具。
APEX结合了个人数据库的品质如生产效率、易用性和灵活性,企业数据库的品质如安全性、集成性、可伸缩性和可用性,以与针对Web构建三个方面的优点。
APEX是一个构建Web应用程序的工具,而且应用程序开发环境也基于Web,非常方便。
只需在apex.oracle.注册一个某某即可试用APEX。
开发、部署或运行APEX应用程序无需客户端软件。
APEX提供三大工具:
应用程序构建器〔ApplicationBuilder〕—创建数据库驱动的动态web应用程序。
SQL工作室(SQLWorkshop)—浏览数据库对象,运行SQL查询、PL/SQL程序以与图形化的查询构建器。
实用程序(Utilities)—允许从纯文本和电子表格上载和下载数据。
所谓上载数据是指将文本文件或电子表格中的数据导入到数据库中。
所谓下载数据是指将数据库中的数据保存到文本文件或电子表格中。
APEX可以做什么?
当然,看了一天文档就在想APEX能做的东西能具体到哪儿,于是就开始做一些demo,最开始做的当然就是APEX很强大的报表,以与单一表的表单,以与一些列表啊.日期控件,还有就是关于对这个APEX的布局.这些都很简单,只需要自己动手做做根本就可以了.比stepbysetp还要简单,
(所有贴出来的例子均可在apex.oracle.登录jjl/jjl查看,此处程序名称是zhengwu_demo1)
接下来就在想要是我是一个头行结构的表单应该怎么弄,于是就把之前项目上的一个简单的头行的form拿来放在这apex环境下来实现.最后也勉强做出来,存在的问题和form的比拟有 :
1,值列表的返回,APEX只支持返回单个值,且select语句必须有且只有2个字段,当然显示字段可以通过’||’拼接.
2,没有form那么丰富的触发器,只能实现form的简单根本的功能.
(所有贴出来的例子均可在apex.oracle.登录jjl/jjl查看,此处程序名称是主从_demo1)
做到这里就开始想,这个APEX能否处理复杂的逻辑或者其他的什么跟plsql相关的呢,
于是就又开始着手做了一个模拟plsql界面的sql_window.也就是我们做一个报表,上面开个文本框,我们可以在里面写sql语句,对这个表的数据控制.支持批量执行insert,update,delete语句.
(所有贴出来的例子均可在apex.oracle.登录jjl/jjl查看,此处程序名称是bruce_sqlmand)
最后发现是可以的,具体就是,写一个包写好,包的内容是关于如何处理这个文本框中文本,然后在点下’执行sql’button的时候,调用下,就ok了.
做完感觉貌似APEX还是很强大的.应该能够支持动态sql来生成程序.
查阅其他资料还有相关如下 :
APEX是构建数据库数据报表应用程序的有效工具。
报表通常与其他报表进展超文本,允许用户以web站点的导航方式浏览数据库数据。
报表中的列可轻松到其他报表、图表和数据项表单,这都是以声明方式完成的。
一个全面的图表引擎允许以图形方式表示SQL查询,从而可以更有效地进展数据通信。
APEX还非常适合编辑数据库数据并支持大量声明性表单控件,包括单项选择按钮组、复选框、选择列表、梭形按钮、文本编辑器和日期选择器。
何时使用APEX?
犹豫在这边具体的开发项还有具体的开发环境,所以一直推迟着,关于什么时候使用,也是模糊的.
查阅其他资料 :
由于其易用性,APEX旨在快速构建机会性和部门级应用程序。
这些应用程序部署在web上,具有优越性能。
以前,部门、原型和小项目依赖桌面数据库提供快速的开发工具,以满足这些规模较小的或部门级应用程序开发的需求。
桌面数据库可能非常零散,因为它们在多处保存数据,它们可能非常脆弱或者不适用于敏感信息,而且它们通常不是web友好的。
基于浏览器的设计时界面〔声明式编程框架〕和简单的向导使APEX成为多用户桌面数据库应用程序〔例如,MicrosoftAccess〕的理想替代品。
SQLSavvy应用程序开发人员还可以体会到易用性,因为您即使具有很少的web体验甚至没有该体验也可以创建数据库应用程序。
无需学习脚本语言或复杂的部署框架,只需编写几个查询并从已经构建好的用户界面主题和表单控件中选择即可创建高度专业、安全且可伸缩的应用程序。
使用APEX,开发是高度声明式的。
这意味着很多情况下,您不需要编写任何代码,而由您与向导和属性表进展交互,就可完成程序开发。
SQL语言用于定义报表和图表,因此懂一些SQL知识很有帮助。
可选择使用PL/SQL编写代码段〔如果需要过程逻辑〕。
声明式开发给开发人员带来较少的差异,该一致性使APEX应用程序易于维护和管理。
APEX引擎从存储在数据库表中的数据实时呈现应用程序。
当您创建或扩展应用程序时,APEX创建或修改存储在数据库表中的元数据。
当应用程序运行时,APEX引擎读取元数据并显示应用程序。
APEX完全驻留在Oracle数据库中。
它仅由表中的数据和大量PL/SQL代码组成。
APEX大约由215个表和200个PL/SQL对象〔包含300,000多行代码〕组成。
为了在应用程序内提供有会话状态行为,APEX以透明的方式在数据库中管理会话状态。
应用程序开发人员可以使用简单的替换以与标准的SQL绑定变量语法获取和设置会话状态。
APEX主要特性
以下几局部介绍了APEX的主要特性。
报表:
使用APEX,可快速生成显示SQL查询的HTML报表。
还能以HTML、PDF、RTF〔兼容MicrosoftWord〕和XLS〔兼容MicrosoftExcel〕格式下载和打印报表。
可通过声明方式将各个报表在一起提供下钻报表,并使用绑定变量将信息从会话状态传递至报表。
报表支持声明式列标题排序、分组控制、汇总以与分页。
报表排序和分页可以使用局部页面刷新(PPR)技术来防止刷新整个页面。
还可以向报表添加声明式,以将报表数据下载为CSV或XML格式。
此外,您可以使用模板对报表外观进展自定义。
表单:
使用向导,可以基于表或存储过程轻松创建表单。
基于表创建表单时,这些向导将自动管理插入、更新、删除以与缺失更新检测等操作。
一旦创建了表单,就可使用直观显示的界面重新排列表单域〔称为表单项〕,以快速获得想要的布局。
表单项提供了丰富的显示选项,包括文本域、文本区、单项选择按钮组、选择列表、复选框、日期选择器、弹出式值列表等。
图表:
还可使用向导创建HTML、SVG或Flash图表。
此外,可创建图表来支持用户从一个图表下钻至另一个图表或报表。
可使用局部页面刷新(PPR)技术刷新图表以防止刷新整个页面。
也可将图表配置为按指定间隔刷新。
此外,还可利用报表列模板向任意报表添加简单的HTML条形图。
电子表格上载:
使用电子表格向导中的CreateApplication可快速地将电子表格数据直接上载至数据库中。
您可以选择将数据存储在新的数据库表中,或将其添加至现有数据库表。
一旦上载了数据,就可以快速创建应用程序了。
通过这个方便的向导,只需单击几下,就可以实现电子表格与共享应用程序之间的切换。
会话状态管理:
APEX以透明的方式管理数据库中的会话状态〔或应用程序上下文〕。
表单将自动保存会话状态,记住会话中应用程序的上下文。
在SQL和PL/SQL内引用会话状态就像使用绑定变量般简单。
例如,请看以下SELECT语句:
SELECT*FROMEMPWHEREEMPNO=:
P1_ID
在本例中,P1_ID项中的值在运行查询时自动进展绑定。
还可通过给项名称加上前缀&符号和后缀句点(.)在静态上下文内引用会话状态,例如:
&P1_NAME.
对于二维数据集的管理,APEX提供了一个强健的集合根底架构。
最值得一提的是,会话管理是无会话状态的,不会消耗内存。
用户界面主题:
APEX将显示〔或用户界面主题〕与应用程序逻辑相别离。
您可以用一个主题设计应用程序,然后更改为另一个附带主题,或者创建和使用自己的自定义的主题。
通过将应用程序逻辑〔如查询、流程以与分支〕与HTML呈现别离,应用程序可在第一时间利用新设计和其他技术,而无需重写应用程序。
流控制和导航:
每个Web应用程序都需要导航,而每个动态应用程序都需要流控制。
APEX提供了内置的组件,简化了导航控件的开发和维护。
导航是通过使用声明式选项卡〔一级或二级〕、路径式导航项、树控件以与列表来进展控制的。
而流控制是通过使用可在特定事件以与一定条件下起作用的声明式分支来实现的。
由于导航控件的外观通过模板控制,因此可轻松更改导航控件的外观。
所有组件上的条件控制:
创建动态Web应用程序时,许多应用程序组件和处理都是具有条件的。
换言之,您只能基于应用程序上下文、数据、事件或权限显示或处理特定的信息。
APEX使您能够以声明方式指定所有组件的条件性。
这使得您可以准确控制用户可在选项卡、按钮、项目、列表项等上看到的内容。
外部接口和可扩展性:
尽管APEX为构建应用程序提供了强健的声明式环境,但您还是可以选择开发自定义界面或控件。
例如,如果一个组件不符合环境需要,您可以使用PL/SQL生成自己的自定义HTML。
您还可以使用Web服务调用外部服务。
APEX包含的API可以方便将电子警报集成到应用程序中。
此外,因为APEX驻留在Oracle数据库中,所以您可以利用数据库本身的功能,如外部表、PL/SQL、数据库、网关以与数据库Java来扩展应用程序功能。
APEX中也允许使用JavaScript、CSS以与AJAX等技术。
安全性:
利用APEX,您可以创建无需用户登录的公共应用程序,或创建要求身份验证的安全应用程序。
APEX提供了许多内置的身份验证模式〔包括一次性登录、数据库某某证书〕和一个易于使用的用户管理系统。
您还可使用可与任何身份验证服务〔包括MicrosoftActiveDirectory和OracleApplications〕交互的自定义模式。
此外,您可自定义身份验证以满足环境要求,并选择性地对整个应用程序、页面或页面组件应用身份验证。
最后,您还可利用创新的会话状态保护特性来防止URL篡改,利用内置特性来保护应用程序免受SQL注入攻击和跨站点脚本编写(XSS)攻击。
SQLWorkshop工具:
SQLWorkshop提供的工具支持从Web浏览器查看和管理数据库对象。
使用SQL命令运行SQL和PL/SQL语句。
QueryBuilder支持通过拖放表格定义查询,轻松创建对象间的关联。
ObjectBrowser提供了一个易于使用的图形用户界面,可用于查看、创建、浏览以与删除数据库对象。
最后,您可使用SQL脚本工具创建、编辑、查看、运行以与删除脚本文件。
SupportingObjects实用程序:
通过创建一个打包应用程序,您可以简化在另一个APEX中导出和安装应用程序所需的步骤。
使用SupportingObjects实用程序,您可以通过脚本处理应用程序定义,以创建数据库对象、种子数据、图像、层叠样式表和JavaScript。
打包的应用程序的创建可向应用程序用户提供类似于安装程序的体验,并使在另一个开发、测试甚至是生产实例中导入并安装应用程序的过程自动化。
性能:
APEX可为应用程序开发人员和应用程序用户提供极高级别的性能。
因为APEX驻留在Oracle数据库中,所以其对网络流量影响甚小。
此外,ApplicationBuilder还有许多监视报表,使你能够识别并调整应用程序性能。
打包的应用程序:
打包的应用程序是一个可以使用和自定义的功能齐全的应用程序。
打包的应用程序不仅阐释APEX应用程序的有趣示例,还提供立即有用的战术性业务应用程序。
打包的应用程序可立即运行—它们提供数据库模式、种子数据、图像、应用程序定义以与您所需的一切,安装只需使用向导即可完成。
托管开发:
APEX支持在单个数据库中托管大量用户。
用户在一个称为工作区的专用工作区域中工作。
这种灵活的体系结构使单个数据库实例可以管理数千个应用程序。
您可确定供给〔或创建〕工作区的过程的工作方式。
在请求供给模式下,用户在登录页面上使用来请求一个工作区。
工作区请求批准后,用户会收到一封包含的电子,用户必须单击来验证其电子地址的有效性。
然后他们收到一封具有其登录凭据的电子。
APEX工作区和用户类型
应用APEX来开发应用程序的准备工作可按如下步骤进展:
1)安装Oracle数据库
2)安装APEX,参见附录1
3)登录APEX管理界面,创建工作区,创建工作区用户
4)登录APEX工作区,开发应用程序
现在假设Oracle数据库和OracleAPEX已经安装,我们来看一下如何创建工作区与工作区用户。
那么,什么是工作区〔workspace〕?
简单的说,工作区就是用户用来开发应用程序的地方。
工作区是一个虚拟的私有数据库,它能使多个用户同时使用一样的APEX实例,而能保持其数据库对象和应用程序为私有,互不影响,互相看不到对方的工作从而也不会影响互相的工作。
每一个工作区都有一个唯一的ID和名称。
在一个APEX实例中,可以只创建一个工作区,由所有开发人员共享使用。
也可以创建多个工作区,在每个工作区内完成指定项目,并且只允许项目开发人员访问其项目所在的工作区。
项目开发人员要使用工作区,必须先要有APEX用户某某,并且使用此用户某某登录到工作区。
APEX用户某某分为4种不同的类型:
⏹APEX管理员:
这是超级用户,负责管理整个的APEX实例,其中既包括服务的管理,也包括工作区的管理。
在安装APEX时,默认创建了一个这样的用户,名为admin,口令是安装APEX时设置的。
⏹APEX开发人员:
这是可以创建和修改应用程序的用户。
开发人员属于某个工作区。
一个工作区可以有多个开发人员。
⏹APEX工作区管理员:
当一个开发人员被授予对他所属的工作区的管理权限时,他就成为了工作区管理员。
工作区管理员可以在他的工作区中添加新的用户、创建新的用户组和查看使用报告。
⏹APEX最终用户:
这是没有开发和管理权限的用户,只有运行应用程序的根本权限。
要注意区分APEX用户和Oracle数据库用户。
这是完全不同的概念。
Oracle数据库用户经适当授权〔用GRANT语句〕后,可以登录数据库,创建、使用各种数据库对象。
但Oracle数据库不能够登录APEX环境。
APEX用户也无权直接登录数据库〔例如,使用CONNECT命令〕。
但是,APEX开发人员可以在自己的工作区内通过SQL工作室访问和使用工作区关联模式〔schema,有的书上也称为方案〕内的数据库对象。
首先,登录APEX管理界面。
在浏览器中输入URL:
127.0.0.1:
8080/apex/apex_admin〔参见附录11.4确认安装成功〕。
此时,会显示登录画面:
使用admin用户登录APEX,可见如下图:
点击“管理工作区〞,可见如下图:
工作区是多个开发者创建应用程序的共享工作区域。
每个工作区都具有作为一个或多个数据库方案进展语法分析的权限。
使用上图中的“创建工作区〞、“删除工作区〞,可进展工作区的创建和删除。
一个工作区可以关联到一个或多个数据库方案,使用上图中的“管理工作区到方案的分配〞可以添加更多方案到工作区。
使用上图中的“管理开发者和用户〞可以创建、删除APEX用户,也可重设APEX用户口令,解锁APEX用户某某。
以上操作都是基于向导来完成的,或直接通过页面操作完成,比拟简单,在这里就不再赘述,由读者自己来探索完成。
安装、运行演示程序
由于开发没有具体的环境,所以项目经理叫我们研究如何把apex安装到一个新环境,但是由于没有测试环境,所以这个任务我暂时就是在自己的虚拟机(培训的时候用的syfdemo.ml.),最后安装失败了,但是我觉得跟我的虚拟机有关.真想有个环境在弄一把,目前这个可怜的虚拟机被弄的面目全非了
安装心得如下:
总共我安装了3次,前2次非常失败,后面一次算好的,在第三次的根底上又重新配置了5,6次restdataservice.最后都是没有成功,总结了下,前2次失败的原因是因为
第一,原先自带的apex删掉比拟好
第二,安装apex的时候,还是强烈建议自己定义表空间
第三,在我的虚拟机安装jdk(6.0以上,原本自带的应该是4.0)之后,应该要删掉原来的版本.否如此java–version不对,而且最后执行jar也会报错
---ApplicationExpressInstallationGuide(e21673)(较详细)
---APEX_EBS_Extension_White_Paper_-_Revision_1b(概括性的)
<都需要先切到apex所在目录,因为这些脚本都在那里,如果默认装了3.0,需要找到目录,或者解压一个其他版本运行相关脚本>
1,10g自带3.0的apex,
2,安装:
CONNECTSYS/SYS_passwordasSYSDBA
apexins.sqlSYSAUXSYSAUXTEMP/i/<此处强烈建议自己建立相应的表空间,否如此可能会出现如下错误>
//error
WWV_FLOW_API.ERR_PAGE_CREATEORA-01400:
cannotinsertNULLinto
("APEX_040200"."WWV_FLOW_STEPS"."SECURITY_GROUP_ID")
declare
*
ERRORatline1:
ORA-02291:
integrityconstraint(APEX_040200.WWV_FLOW_PLUG_TO_PAGE_FK)violated
-parentkeynotfound
ORA-06512:
at"APEX_040200.WWV_FLOW_API",line9434
ORA-06512:
atline11
3,修改admin密码(apex)apxchpwd.sql(有复杂规如此)
4,此处应该有restartProcess(没有做出来)
5,配置RESTfulServicesapex_rest_config.sql(该命令让你配置APEX_LISTENER和APEX_REST_PUBLIC_USER的密码)
可能会报错<跟之前第二步有关>
//ERRORatline1:
ORA-01400:
cannotinsertNULLinto
("APEX_040200"."WWV_FLOW_FND_USER_GROUPS"."ID")
ORA-06512:
at"APEX_040200.WWV_FLOW_LISTENER",line382
ORA-06512:
at"APEX_040200.WWV_FLOW_LISTENER",line457
ORA-06512:
atline3
//
6,解锁更改APEX_PUBLIC_USER的密码
ALTERUSERAPEX_PUBLIC_USERACCOUNTUNLOCK
ALTERUSERAPEX_PUBLIC_USERIDENTIFIEDBYSYS_bruce1
7,安装apexlistener
java–jarapex.war(具体原因是因为漏掉一步,我们需要在对应的服务器安装6.0以上的jdk,并设置路径否如此报错如下)
//
Exceptioninthread"main"java.lang.NoClassDefFoundError:
篓Cjar
atgnu.gcj.runtime.FirstThread.run()(/usr/lib/libgcj.so.5.0.0)
at_Jv_ThreadRun(java.lang.Thread)(/usr/lib/libgcj.so.5.0.0)
at_Jv_RunMain(java.lang.Class,byteconst,int,byteconst,boolean)(/usr/lib/libgcj.so.5.0.0)
at__gcj_personality_v0(/home/oracle/java.version=1.4.2)
at__libc_start_main(/lib/tls/libc-2.3.4.so)
at_Jv_RegisterClasses(/home/oracle/java.version=1.4.2)
//
8按照官方文档应该如下:
9,EnableNetworkServicesinOracleDatabase11g
■
我应该是坐到这里了
最后出现了GLASSFIShSERVERok的画面
但是就是另外一个需要配置
另外一个我参照oracle官方文档试了N屡次最后还是一个效果…不得其解(关于好多unix的都不是很懂,看来需要加强学习,等经理安装好了,一定要问问,how,why)
10,SecurityConsiderations
■
11,AboutRunningOracleApplicationExpressinOtherLanguages
■
12,AboutManagingJOB_QUEUE_PROCESSES
■
13,CreateaWorkspaceandAddOracleApplicationExpressUsers