一、WWW原理简介

URL: Uniform Resource Locator
HTTP: Hyper Text Transfrer Protocol
HTML: Hyper Text Markup Language

二、Oracle Application Server概述


三、Oracle Application Server 服务器启动
在操作系统下命令启动:
$ owsctl start   // 启动OAS服务器
$ owsctl start -nodemgr // 启动OAS管理节点

管理节点:
IP: 75.64.23.40:8888  //管理节点的端口号为8888
管理员用户:Admin

四、Oracle Application Server 原理简介
http://www.oracle.com/news.html     // 静态页面
http://www.oracle.com:121/cgi/plsql/p_query.go  // 动态页面

五、Oracle Application Server 配置步骤:
1、加载PL/SQL 程序包(通过IE登录到OAS的远程管理节点):

http://ntsvr1:8888/  (配置方法:在c:/windows目录下建立文本文件hosts,内容为:75.64.23.40 ntsvr1)

OAS实用程序-> 安装 -> PL/SQL工具包 -> 数据库连接串 -> sys用户口令 -> 应用。

如果OAS与Oracle服务器在一台机器上,则使用Oracle_SID,否则要使用连接串。

2、创建HTTP监听进程
在创建HTTP监听进程时,需要确定的信息:
监听进程的名称
端口号:(1 - 16653 之间)
主机名称:

3、创建DAD(Data Access Description)数据存取描述器,建立OAS与数据库之间的连接
Oracle Application Server => DB存取描述

需要确定的信息:
。名称:
。合法的数据库用户名及口令
。数据库位置:
。网络连接串名

4、创建应用:

选择应用程序所使用的语言:PL/SQL
应用程序名:mis01

应用的状态标志一般为红旗,没有关系。

5、创建插件。确定信息如下:
。插件名称:mis01
。显示名称: 人员工资信息
。虚拟路径:/cgi/plsql  //这里怎么设置,用户在输入时就要怎样输入URL
。物理路径: %ORAWEB_HOME%/bin
。所连接的数据库信息:通过DAD确定(下拉菜单选择)

用户输入URL范例:http://75.64.23.40:1234/cgi/plsql/p_test


[***]所有配置结束后,重新加载OAS。


六、使用PL/SQL开始Web页面

1、标记函数:
htp.htmlOpen   <HTML>
htp.htmlClose </HTML>
htp.headOpen <HEAD>
htp.headClose </HEAD>
htp.bodyOpen    <BODY>
htp.bodyClose   </BODY>
htp.comment      <!--    -->

2、PL/SQL过程、函数、包:
owa_cookie
owa_p_w_picpath
owa_util
owa_opt_lock
owa_pattern
owa_sec
owa_text


3、
HTML:
<html>
<head>
<title>欢迎使用Oracle Application Server</title>
</head>
<body><p>
<strong>欢迎使用Oracle Application Server!</strong></p>
</body>
</html>

对应的PL/SQL程序:
Create or Replace Procedure P_ShowExample  AS
       BEGIN
         htp.htmlopen;
         htp.headopen;
         htp.title('Oracle Application Server 4.0!');
         htp.headclose;
         htp.bodyopen;
         htp.strong('欢迎使用Oracle Application Server!');
         htp.bodyclose;
         htp.htmlclose;
       END;

在SQL*Plus中运行上面的程序创建相应的存储过程。


4、显示数据库中基表的数据:P_TEST.sql
Create or Replace Procedure P_Test  AS
           ignore boolean;
              BEGIN
                     htp.htmlopen;
                     htp.headopen;
             --      htp.title('Display the Current Users in Oracle Database!');
                     htp.headclose;
                     htp.bodyopen;
                     htp.header(1, '  输出数据库基表中数据');
                     ignore := owa_util.tableprint('emp','BORDER',owa_util.html_table);
                     htp.bodyclose;
                     htp.htmlclose;
              END;
             
5、动态数据基表名称:P_query.sql
运行方法:http://75.64.23.40:1234/cgi/plsql/p_query.go

6、webalchy.exe: //可以将标准的html文件转换成PL/SQL程序。       


7、使用列表项,选择部门编码:P_Select.sql
http://75.64.23.40:1234/cgi/plsql/p_select.go

[C*] owa_util.TablePrint函数用法
owa_util.tablePrint(c1,c2,c3,c4,c5,c6,c7,c8)

其中:
c1: 表名。例如:'emp'
c2: 是否有表格线。'BORDER'
C3: 表格的格式。owa_util.html_table
c4: 基表中的列名。缺省为'*',即所有列
c5: where语句:例如:'where deptno = '||v_deptno||' or sal > '||v_sal|| 'order by sal',
c6: 列名的别名
c7: 最少显示多少行,0(全部显示)
c8: 最大显示多少行,缺省为NULL。

8、输入员工编码,显示员工信息:P_empno.sql

9、多个选择项:列表项及文本框输入:P_Mselect.sql

10、使用无线组(Radio Group) 显示部门信息:P_rselect.sql

11、向数据库中录入员工信息:P_input.sql


[Report Builder 报表设计]
一、创建一个简单的报表:
Report Builder -> 工具 -> 报表编辑器 -> 新建查询

然后布局向导创建布局。

预览界面->点左上角图标 -> 数据模型 -> 再点左上角图标 -> 预览界面

二、创建分组报表
在数据模型界面拖动要分组的列到列外即可创建分组。

1、增加公式列(水平方向计算):
数据模型->左边工具栏中公式计算图标。
return :sal + nvl(:comm,0);

2、增加汇总列(垂直方向计算):

每次有新列(域)增加后,都要在数据模型主窗口->鼠标右键->报表向导中进行适当的修改。

三、布局设计(Layout)
1、报表向导->标签:修改标签为中文

2、视图->布局模型
编辑->选择全部
左边工具栏->添充颜色,格式->字体

页边距:相当于页眉,顶部工具栏中按钮。

在增加文本框时,如果默认字体不是中文,请先在格式->字体中设置为中文字体,然后再输入。

双击域可以设置字段属性。

四、创建主从型报表:使用主从型 藏青创建主从型报表

1、在对象导航器->报表->新建->手动,进入数据模型窗口。

2、SQL:
(1)select * from dept
(2) select * from emp

(3)点击左边纵向工具栏中“数据链接”:从dept.deptno 拖动到emp.deptno1放开,建立数据链接。

(4)报表向导
 。风格:上边分组。
 。组:两个组均是纵向
 。域:除了重复的deptno1之外都要
 。模板:无模板。

3、在布局模型中调整表格结构


五、创建矩阵报表:
1、构造矩阵报表至少需要四个组:
一个横向显示数据的组
一个纵向显示数据的组
一个在交叉点显示数据的组
一个矩阵单元组

2、操作步骤:

(1)手动创建一个报表。

(2) SQL1:select deptno, job, sum(sal) from emp group by deptno,job;  

(3) 将deptno和job拖出成为两个分组的条件。

(4) 点击左方工具栏交叉单元按钮,将G_2.DEPTNO 与 G_3.job括起来,这样成为一个G_4交叉组。

(5) 报表向导
风格:矩阵
单元:sum_sal
总计:总和(sum_sal)
模板:无

(6) 布局模型重新布局。


六、分组矩阵报表:

(1)手动创建一个报表。

(2) SQL1:select To_Char(hiredate, 'yyyy') year, deptno, job, sum(sal) from emp group by To_Char(hiredate,'yyyy'), deptno, job;

Q_emp, G1

(3) 将Year,deptno和job拖出成为三个分组的条件。G_year, G_deptno, G_sulsal, G_job, G_cross

(4) 点击左方工具栏交叉单元按钮,将G_3.DEPTNO 与 G_4.job括起来,这样成为一个G_5交叉组。

(5) 报表向导
风格:分组矩阵


[Graphics Builder 图表设计]
一、创建饼图(Pie):
1、打开Graphics Builder,连接数据库。
菜单:图表->创建图表

2、输入SQL语句确定数据源:select deptno, sum(sal) from emp group by deptno; -> 执行 ->确定

3、图表:饼图,名称:Pie

4、菜单:图表->框架->饼框架->显示数据值,显示百分比值

可以修改所显示数据值的字体、颜色等。可以修改饼图的框架、侧面及阴影的填充颜色等。

二、创建列图(Column):

1. SQL: select ename, sal from emp

2. 名称:column

图表框架: 深度尺寸,阴影尺寸,阴影方向。显示绘图框架(选中),显示图例(去掉)。

侧面、顶部、阴影的填充颜色,不要修改正面的填充颜色。

双击两个坐标轴可以设置坐标轴属性,去掉“显示坐标轴标签”

3. 画一个矩形将图表括起来,填充颜色然后置后,给图表加上标题。


三、创建主从型图表(Drill-Down):
1、创建主图:pie
select deptno, sum(sal) from emp group by deptno

2、创建参数
导航器-> 参数 -> 新增
名称:n
类型:数字
初始值: 10
3、使用参数创建子图
新建图表-> 新建查询 -> select ename, sal from emp where deptno=:n; // 将参数n放入第二个查询中。
子图名:column

4、建立两个图表之间的关系
选饼图中心双击->对象属性->细化:
设置参数:N
对于值:DEPTNO
执行查询:query1(新建的子查询)

5、运行


四、图表切割:
选饼图中心双击->对象属性

过程->编辑

rrow number;

chart og_object;

BEGIN
 chart := Og_Get_Object('pie'); // 将名为pie的图表放到chart变量中。
 rrow := Og_Get_Row(HITOBJ);
 Og_Set_Explosion(chart, rrow, 'deptno', 50);  // 切割的距离为50个小数点
 Og_update_Chart(Chart, OG_ALL_CHUPDA);
End;


[Developer/2000集成]
一、Form调用Report:
1、创建一个含有参数的报表:r11
2、在Form中调用Report:(Form以前面建立的Form1 (Form3)为例)。

报表打印按钮的WHEN-BUTTON-PRESSED脚本:
Declare
 pl_id paramlist;
Begin
 pl_id := Create_Parameter_List('tmpdata');
 Add_Parameter(pl_id, 'dno', TEXT_PARAMETER, To_Char(:deptno));
 Add_Parameter(pl_id,'paramform',TEXT_PARAMETER,'no');
   Run_Product(REPORTS,'e:/xyf/r11.rdf',
    ASYNCHRONOUS,RUNTIME,FILESYSTEM,pl_id,null);
   Destroy_Parameter_List(pl_id);
End;

二、Form 调用Graphics:
1、创建一个含有参数的图表
select ename, sal from emp where deptno = :dpt;

2、在Form中创建图表项
3、编写触发器调用图表

访问表空间权限控制:
去掉用户对某个表空间的访问权限
ALTER USER ZYIBSS QUOTA 0 ON IBMS_DATA_DATA;
ALTER USER ZYIBSS QUOTA 0 ON IBMS_DATA_IDX;

增加用户对某个表空间的访问权限
ALTER USER ZYIBSS QUOTA UNLIMITED ON IBMS_DF_DATA;

移动表空间:
alter table tcm-user move tablespace  ibms-data-data


append是优化提示器,这个最好不用,你可以用并行提供来做
insert /*+parallel(emp,2) */ into emp nologging 2是代表什么啊?
2是用2个CPU来并发做事
这个有什么好处,可以加快速度?还是 ?

能允分利用多处理器的好处喽
会明显变快的
看你的主机是多少CPU的了,我最多用16
反正690有12个cpu
也可以使用索引提示
 怎么用??
如果用到某个table的索引
 /*+ index(字段名) */
 提前告诉优化器要用到的索引是吗?
/*+ index(table名,字段名)*?
 是的,有时你现成的索引,oracle不一定会用,指定后oracle尽量用你指定的索引
还有什么好东西啊?大哥啊。给我点资料有不咯?呵呵
 /*+ index(table名,字段名)*/这个是放在select语句里吗 ??放在什么位置啊
 放在第一个关健字后梑
 我用了/*+parallel(emp,2) */还要用 NOLOGGING吗??
也可以用
 爽,谢谢。不过很抱歉。今天因为我多加了个/*+append*/使的tcm-cust-rela增大了100多倍,造成表空间不够,所以数据还没有出来,我刚才才通过测试找出来。
 优化器多时oracle会根据实际情况选择一个来用
 INSERT /*+parallel(TCM_CUST,2) */ INTO TCM_CUST NOLOGGING (字段)values(值) 这种写法对不?
关于这方面的书,我明天找一下,如果有我发给你,我手头上有一本事,但讲的很少。
 好。我现在给你们准备数据。郁闷啊。浪费了一天的时间。
  这样很快的
 690一共12个cpu ,我填10个会不会有问题啊?
 晚上别熬的太晚了
 没事,oracle有大量的并发能力,关健要看数据有没有把值设的大一点,现在业务少,可以这么做

select * from (select rownum as aa, a.* from tcm_user a where rownum<100) where aa>10


关于Oracle中的时间计算问题!
--------------------------------------------------------------------------------
  to_date('2003-8-1 18:20', 'yyyy-mm-dd HH24:MI') - to_date('2003-7-3 18:35', 'yyyy-mm-dd HH24:MI')
   得到一个值,如何将得到的值转化为分钟?也就是说它们两个值之间相差的分钟?
--------------------------------------------------------------------------------

(to_date('2003-8-1 18:20', 'yyyy-mm-dd HH24:MI') - to_date('2003-7-3 18:35', 'yyyy-mm-dd HH24:MI'))*24*60

(dateA-dateB)*1440 = N 分
(dateA-dateB)*86400 = N 秒

  round()四舍五入
  ceil()大于n的最小整数


如果不小心把表给delete掉了并且commit了,不要紧,你可以用如下语句进行恢复
 select * from tfm_action_list as of timestamp (systimestamp -interval'4000'second)