Oracle筆記(十)

一、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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章