本地電信業(yè)務(wù)計費(fèi)帳務(wù)系統(tǒng)ORACLE操作手冊范本_第1頁
本地電信業(yè)務(wù)計費(fèi)帳務(wù)系統(tǒng)ORACLE操作手冊范本_第2頁
本地電信業(yè)務(wù)計費(fèi)帳務(wù)系統(tǒng)ORACLE操作手冊范本_第3頁
本地電信業(yè)務(wù)計費(fèi)帳務(wù)系統(tǒng)ORACLE操作手冊范本_第4頁
本地電信業(yè)務(wù)計費(fèi)帳務(wù)系統(tǒng)ORACLE操作手冊范本_第5頁
已閱讀5頁,還剩88頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

DOC.NO.TIMESON-SM-2002-11-0001A

Normal

(公開)

本地電信業(yè)務(wù)計費(fèi)帳務(wù)系統(tǒng)

ORACLE操作手冊

Version1.0.0

2002.11.05

TIMESON

天辰科技?2000,2001,2002

AllRightsReserved

前言4

1.數(shù)據(jù)庫的創(chuàng)建4

1.1.以下為ORACLE一動初始文件INITORA.ORA4

1.2.以下是建庫腳本6

2.數(shù)據(jù)庫基本操作11

2.1.數(shù)據(jù)庫的正常啟動11

2.2.安裝啟動與非安裝啟動12

2.3.獨(dú)占和共享啟動13

2.4.約束啟動13

2.5.強(qiáng)制啟動14

2.6.數(shù)據(jù)庫關(guān)閉14

2.7.PL/SQL基本程序的編寫15

2.7.1.SQL語言簡介15

2.7.2.PL/SQL簡介22

3.解決RDBMS問題32

31.性能優(yōu)化32

3.1,1.優(yōu)化存32

3.1.2.優(yōu)化輸入/輸出36

3.1.3.優(yōu)化排序40

3.1.4.優(yōu)化索義建立40

3.2.備份和恢復(fù)40

3.2.1.備份提示41

3.3.ORACLE8SERVER診斷特性44

3.3.1.Oracle跟蹤文件44

3.3.2.設(shè)置跟蹤事件47

3.3.3.丫$監(jiān)視視圖52

3.3.4.鎖實用程序54

3.4.ORACLE錯誤分析和解決方案56

3.4.1.常見Oracle錯誤56

3.4.2.ORACLE部錯誤71

3.4.3.優(yōu)先權(quán)1/優(yōu)先權(quán)2問題分類和診斷操作73

3.5.常見問題78

前,言

為了加強(qiáng)計費(fèi)系統(tǒng)數(shù)據(jù)庫的操作安全及更有效的管理計費(fèi)系統(tǒng)數(shù)據(jù)庫,

編寫該操作手冊。

在該手冊若有錯誤及遺漏的地方還望各位讀者不若指出與諒解。

L數(shù)據(jù)庫的創(chuàng)建

以下僅為數(shù)據(jù)庫創(chuàng)建的樣例腳本,在實際系統(tǒng)中應(yīng)根據(jù)數(shù)據(jù)庫設(shè)計要與

系統(tǒng)實際配置而改變參數(shù):

1.1.以下為ORACLE啟動初始文件initora.ora

#thissampaleinitfilewritenbywzy2002/11/15

db_name="jfu

instance_name=ora8

#service_names=ora

#db_files=1024

control_files=("/home/orac1e/OraC11/contro101.ctl",

"/home/orac1e/OraCt1/contro102.ctl",

"/home/orac1e/OraCt1/contro103.ctl")

open_cursors=100

max_enab1ed_ro1es=50

db_file_multiblock_read_count=8

db_block_buffers=4096

shared_pool_size=52428800

large_pool_size=78643200

java_pool_size=20971520

log_checkpoint_interval=10000

1og_checkpoint_timeout=1800

processes=115

parallel_max_servers=5

log_buffer=32768

max_dump_fi1e_size=10240

global_names=true

#oracle_trace_collection_name='*"

db_block_size=16384

#remote_1ogin_passwordfile=exclusive

#os_authent_prefix=*'"

job_queue_processes=4

job_queue_interva1=60

open_links=10

#large_pool_size=614400

java_pool_size=20971520

distributed_transactions=10

mts_dispatchers

"(PROTOCOL二TCP)(PRE=oracle.aurora,server.SGiopServer)"

mts_dispatchers="(protoco1=TCP)"

?compatible=8.1.0

sort_area_size=65536

sort_area_retained_size=65536

#log_archive_start=true

1.2.以下是建庫腳本

#!/bin/sh

ORACLE_SID=ora8

exportORACLE_SID

svrmgrl

connectinternal

startupnomountpfile=$ORACLE_HOME/dbs/initora.ora

CREATEDATABASE"appl"

controlfilereuse

maxdatafiles500

maxinstances8

maxlogfiles32

charactersetZHS16GBK

nationalcharactersetZHS16GBK

DATAFILE1/oradata/appl/systemOl.dbf1SIZE200M

logfilegroup1(*/opt/oracle/oradata/appl/appl_redo01.log',

*/oradata/appl/appl_redo01.log*)SIZE20M,

group2C/opt/oracle/oradata/appl/appl_redo02.log',

'/oradata/appl/appl_redo02.log")SIZE20M,

group3('/opt/oracle/oradata/appl/appl_redo03.log,

*/oradata/appl/appl_redo03.log)SIZE20M;

/opt/oracle/product/8.1.7/rdbms/admin/cata1og.sql;

CREATEROLLBACKSEGMENTrOTABLESPACESYSTEM

STORAGE(INITIAL128kNEXT128kMINEXTENTS2MAXEXTENTS20);

ALTERROLLBACKSEGMENTrOONLINE;

REM************TABLESPACEFOROEM_REPOSITORY***************

CREATETABLESPACEOEM.REPOSITORYDATAFILE*/oradata/appl/oemrepOl.dbf,SIZE5M

REUSE

AUTOEXTENDONNEXT25MMAXSIZE80M

MINIMUMEXTENT128k

DEFAULTSTORAGE(INITIAL128kNEXT128kMINEXTENTS1MAXEXTENTSUNLIMITED

PCTINCREASE0);

REM**************TABLESPACEFORROLLBACK※耕米秣**米*米料糕*米

CREATETABLESPACERBSDATAFILEF/oradata/appl/rbsOl.dbf'SIZE200MREUSE

DEFAULTSTORAGE(INITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITED

PCTINCREASE0);

REM**************TABLESPACEFORTEMPORARY/***************

CREATETABLESPACETEMPDATAFILE*/oradata/appl/tempO1.dbfJSIZE200MREUSE

DEFAULTSTORAGE(INITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITED

PCTINCREASE0)TEMPORARY;

REM科*林**標(biāo)格*義*TABLESPACEFORUSER****次林*******林*****

CREATETABLESPACEUSERSDATAFILE,/oradata/appl/usersOl.dbf*SIZE50MREUSE

DEFAULTSTORAGE(INITIAL128kNEXT128kMINEXTENTS1MAXEXTENTSUNLIMITED

PCTINCREASE0);

REM**************TABLESPACEFORINDEX*********************

CREATETABLESPACEINDXDATAFILE*/oradata/appl/indxOl.dbf*SIZE50MREUSE

DEFAULTSTORAGE(INITIAL128kNEXT128kMINEXTENTS1MAXEXTENTSUNLIMITED

PCTINCREASE0);

REM****CreatingfourrolIbacksegments*****x********adclrollbacksegmentto

20***

CREATEROLLBACKSEGMENTrOlTABLESPACERBS

STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptima1

4096K);

CREATEROLLBACKSEGMENTr02TABLESPACERBS

STORAGE(INITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal

4096K);

CREATEROLLBACKSEGMENTr03TABLESPACERBS

STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal

4096K);

CREATEROLLBACKSEGMENTr04TABLESPACERBS

STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal

4096K);

CREATEROLLBACKSEGMENTr05TABLESPACERBS

STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal

4096K);

CREATEROLLBACKSEGMENTr06TABLESPACERBS

STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal

4096K);

CREATEROLLBACKSEGMENTr07TABLESPACERBS

STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal

4096K);

CREATEROLLBACKSEGMENTr08TABLESPACERBS

STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal

4096K);

CREATEROLLBACKSEGMENTr09TABLESPACERBS

STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal

4096K);

CREATEROLLBACKSEGMENTrlOTABLESPACERBS

STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal

4096K):

CREATEROLLBACKSEGMENTrllTABLESPACERBS

STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal

4096K);

CREATEROLLBACKSEGMENTrl2TABLESPACERBS

STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptima1

4096K);

CREATEROLLBACKSEGMENTrl3TABLESPACERBS

STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal

4096K);

CREATEROLLBACKSEGMENTrl4TABLESPACERBS

STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal

4096K);

CREATEROLLBACKSEGMENTrl5TABLESPACERBS

STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal

4096K);

CREATEROLLBACKSEGMENTrl6TABLESPACERBS

STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal

4096K);

CREATEROLLBACKSEGMENTrl7TABLESPACERBS

STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal

4096K);

CREATEROLLBACKSEGMENTrl8TABLESPACERBS

STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal

4096K);

CREATEROLLBACKSEGMENTrl9TABLESPACERBS

STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal

4096K);

CREATEROLLBACKSEGMENTr20TABLESPACERBS

STORAGECINITIAL128kNEXT128kMINEXTENTS2MAXEXTENTSUNLIMITEDoptimal

4096K);

ALTERROLLBACKSEGMENTrOlONLINE;

ALTERROLLBACKSEGMENTr02ONLINE:

ALTERROLLBACKSEGMENTr03ONLINE;

ALTERROLLBACKSEGMENTr04ONLINE;

ALTERROLLBACKSEGMENTr05ONLINE;

ALTERROLLBACKSEGMENTr06ONLINE;

ALTERROLLBACKSEGMENTr07ONLINE;

ALTERROLLBACKSEGMENTr08ONLINE;

ALTERROLLBACKSEGMENTr09ONLINE;

ALTERROLLBACKSEGMENTrlOONLINE;

ALTERROLLBACKSEGMENTrllONLINE;

ALTERROLLBACKSEGMENTr12ONLINE;

ALTERROLLBACKSEGMENTrl3ONLINE;

ALTERROLLBACKSEGMENTrMONLINE;

ALTERROLLBACKSEGMENTrl5ONLINE;

ALTERROLLBACKSEGMENTrl6ONLINE;

ALTERROLLBACKSEGMENTrl7ONLINE;

ALTERROLLBACKSEGMENTr18ONLINE;

ALTERROLLBACKSEGMENTrl9ONLINE;

ALTERROLLBACKSEGMENTr20ONLINE;

ALTERROLLBACKSEGMENTrOOFFLINE;

REM稱**SYSandSYSTEMusers****************

alterusersystemporarytablespaceTEMP;

alterusersystemtemporarytablespaceTEMP;

/opt/oracle/product/8.1.7/rdbms/admin/catproc.sql;

/opt/oracle/product/8.1.7/rdbms/admin/caths.sql;

/opt/oracle/product/8.1.7/rdbins/admin/otrcsvr.sql;

/opt/oracle/product/8.1.7/rdbms/admin/catexp.sql;

/opt/oracle/product/8.1.7/rdbins/adinin/catdbsyn.sql;

/opt/oracle/product/8.1.7/rdbms/admin/catdefer.sql;

/opt/oracle/product/8.1.7/rdbms/admin/catrep.sql;

/opt/oracle/product/8.1.7/rdbms/admin/dbmspool.sql;

/opt/oracle/product/8.1.7/rdbms/admin/catparr.sql;

/opt/oracle/product/8.1.7/rdbnis/admin/catblock.sql;

connectsystem/manager

/opt/oracle/product/8.1.7/sq1p1us/admin/pupbld.sql;

—createtheproduct_profileanduser_profile

—CATALOG.SQL,--加載數(shù)據(jù)庫本身的數(shù)據(jù)字典視圖

-CATPROC.SQL,-一加載PL/SQL使用的PACKAGE

-CATEXP.SQL-一加載EXPORT/IMPORT工具使用的數(shù)據(jù)字典

disconnect

spooloff

exit

在數(shù)據(jù)庫建立完后,可用以下語句(也可以在建庫腳本中直接增加)對對

tablespace增加數(shù)據(jù)文件:

ALTERTABLESPACE'*tablespace_nameMADDDATAFILE

,data_file_path/data_file_name'SIZE<thedatafilesizeyoudesigned><REUSE>

CAUTOEXTENDONNEXT{sizeyoudesignedtoexednd};>

2.數(shù)據(jù)庫基本操作

2.1.數(shù)據(jù)庫的正常啟動

正常啟動數(shù)據(jù)庫的選項是normal,這也是數(shù)據(jù)啟動的缺省選項。如果以

這種方式啟動則將打開一個現(xiàn)場(現(xiàn)場:現(xiàn)場為一邏輯概念,是系統(tǒng)為數(shù)據(jù)

庫打開提供的一系列的必需資源),并把數(shù)據(jù)庫裝入,然后打開數(shù)據(jù)庫供用

戶使用。具體操作如下:

1?先進(jìn)入SVRMGR管理器

Ssvrmgr1

SVRMGR>

2?再聯(lián)入inernal用戶

$connectinternal

3?在用startup命令啟動(若不在啟動文件所在目錄進(jìn)入的SVRMGR或

啟動文件名不是ORACLE缺省的文件名,則啟動時應(yīng)帶啟動目錄與文

件名)

SVRMGR>startuppfile=<file-pathr/init-file>

2.2.安裝啟動與非安裝啟動

安裝啟動的選項是mount?表示只將數(shù)據(jù)庫裝入現(xiàn)場而不打開數(shù)據(jù)庫;

非安裝啟動的選項是nomount,表示只建立數(shù)據(jù)庫現(xiàn)場而不裝入數(shù)據(jù)庫,當(dāng)

然也不打開數(shù)據(jù)庫。

1?安裝啟動

SVRMGR>startup(pfile=<filepath/init-file>)mount

該方式啟動數(shù)據(jù)庫的的用途一般為:

>為數(shù)據(jù)文件更名;

>增加、刪除或改名事物日志文件;

>使事物日志歸檔模式選項有效或失效;

>進(jìn)行完整數(shù)據(jù)庫的恢復(fù)操作

2?非安裝啟動

SVRMGR>startup{pfile=<filepath/init-file>}nomount

該方式啟動數(shù)據(jù)庫的用途一般為:

>創(chuàng)建一新的數(shù)據(jù)庫

2.3.獨(dú)占和共享啟動

獨(dú)占啟動選項是exclusive,表示只允許一個例程使用該數(shù)據(jù)庫;共享

啟動的參數(shù)是shared,表示允許多個例程并行使用該數(shù)據(jù)庫,即將數(shù)據(jù)庫裝

入多個現(xiàn)場。

1?共享啟動

SVRMGR>startup{pfile=<filepath/init-file>}exclusive

2?獨(dú)占啟動

SVRMGR>startup{pfile=<filepath/init-file>}shared

2.4.約束啟動

這種方式的選項是restrict?它啟動數(shù)據(jù)庫時裝入并打開它,但此時的

數(shù)據(jù)庫只能為有特殊權(quán)限的數(shù)據(jù)庫管理員使用,一般用戶不能聯(lián)入數(shù)據(jù)庫。

1?約束啟動

SVRMGR>startup{pfile=<filepath/init-file>}restrict

一般來說當(dāng)用戶有createsession權(quán)限十可聯(lián)入數(shù)據(jù)庫,但對于restrict

方式啟動的數(shù)據(jù)庫只有restrictedsession系統(tǒng)權(quán)限用戶才允許聯(lián)入。

若在restrict方式下改變數(shù)據(jù)庫運(yùn)行方式,則可用altersystem命令,如

下:

SVRMGR>altersystemdisablerestrictedsession;

2.5.強(qiáng)制啟動

在一些非正常情況下有可能在正常方式下啟動數(shù)據(jù)庫遇到麻煩,或在上次因

不能正常關(guān)閉數(shù)據(jù)庫(如:用了參數(shù)abort)而導(dǎo)致不能正常啟動數(shù)據(jù)庫,則可

考慮使用強(qiáng)制啟動數(shù)據(jù)庫,其參數(shù)為:force.

1?強(qiáng)制啟動

SVRMGR>startup{pfile=<filepath/init-file>}force;

此時,除非數(shù)據(jù)庫有重大系統(tǒng)錯誤,一般情況下數(shù)據(jù)庫可以起來。在應(yīng)注意

的是用此方式啟動的數(shù)據(jù)庫會上次非正常關(guān)閉數(shù)據(jù)導(dǎo)致的非正常數(shù)據(jù)丟掉,數(shù)據(jù)

庫房動后應(yīng)及時的查看數(shù)據(jù)庫的日志文件。

2.6.數(shù)據(jù)庫關(guān)閉

1?正常關(guān)閉

SVRMGR>shutdownnormal;

這種方式下關(guān)閉數(shù)據(jù)庫在關(guān)閉前檢查所有的連接,并且發(fā)出命令后不允

許再有新的連接,在等所有用戶斷開連接后關(guān)閉數(shù)據(jù)庫。在此方式下關(guān)

閉的數(shù)據(jù)庫下次啟動時不需要任何恢復(fù)過程。

2?立即關(guān)閉

SVRMGR>shutdournimmediate;

這種方式下關(guān)閉數(shù)據(jù)庫并不等待用戶斷開連接,而是由系統(tǒng)斷開與用戶

的連接,然后關(guān)閉數(shù)據(jù)庫。

3?異常關(guān)閉

SVRMGR>shutdownabort;

這種方式下關(guān)閉數(shù)據(jù)庫系統(tǒng)不做任何的檢查與回退操作而直接將數(shù)據(jù)庫

現(xiàn)場撤消。

2.7.PL/SQL基本程序的編寫

ORACLE提供功能了功能強(qiáng)大的第三代編程語言PL/SQL。在本小節(jié)主要介紹

基本的存儲過程、存儲函數(shù)及觸發(fā)器的編寫。

2.7.1.SQL語言簡介

2.7.1.1.SQL概述

SQL是一種面向數(shù)據(jù)庫的通用數(shù)據(jù)處理語言規(guī),能完成以下幾類功能:

提取查詢數(shù)據(jù),插入修改刪除數(shù)據(jù),生成修改和刪除數(shù)據(jù)庫對象,數(shù)據(jù)庫安

全控制,數(shù)據(jù)庫完整性及數(shù)據(jù)保護(hù)控制。

數(shù)據(jù)庫對象包括表、視圖、索引、同義詞、族、觸發(fā)器、函數(shù)、過程、

包、數(shù)據(jù)庫鏈、快照等(表空間、回滾段、角色、用戶)。數(shù)據(jù)庫通過對表的

操作來管理存儲在其中的數(shù)據(jù)。

2..SQL*PLUS界面

登錄?輸入SQLPLUS回車;輸入正確的ORACLE用戶名并回車;輸入用

戶口令并回車,顯示提示符:SQL>

退出:輸入EXIT即可。

2.7.1.1.2.命令的編輯與運(yùn)行

>在命令提示符后輸入SQL命令并運(yùn)行,以分號結(jié)束輸入;以斜杠結(jié)束

輸入;以空行結(jié)束輸入;

>利用SQL緩沖區(qū)進(jìn)行PL/SQL塊的編輯和運(yùn)行;

>利用命令文件進(jìn)行PL/SQL塊的編輯和運(yùn)行。

2.7.1,2.數(shù)據(jù)庫查詢

2..用SELECT語句從表中提取查詢數(shù)據(jù)

SELECT的語法為:

SELECT[DISTINCT]{columnl,column2,…}FROMtablenameWHERE(conditions)CROUP

BY{conditions}ORDERBY(expressions}[ASC/DESC;;

說明:SELECT子句用于指定檢索數(shù)據(jù)庫的中哪些列,F(xiàn)ROM子句用于指定從

哪一個表或視圖中檢索數(shù)據(jù)。

2.7.1.2.2.SELECT中的操作符及多表查詢WHERE子句

WHERE子句中的條件可以是一個包含等號或不等號的條件表達(dá)式,也可以是

一個含有IN、NOTIN、BETWEEN、LIKE、ISNOTNULL等比較運(yùn)算符的條件式,

還可以是由單一的條件表達(dá)通過邏輯運(yùn)算符組合成復(fù)合條件。

2.7.1.2.3.ORDERBY子句

ORDERBY子句使得SQL在顯示查詢結(jié)果時將各返回行按順序排列,返回行

的排列順序由ORDERBY子句指定的表達(dá)式的值確定。

2..連接查詢

利用SELECT語句進(jìn)行數(shù)據(jù)庫查詢時,可以把多個表、視圖的數(shù)據(jù)結(jié)合

起來,使得查詢結(jié)果的每一行中包含來自多個表達(dá)式或視圖的數(shù)據(jù),這種操

作被稱為連接查詢。

連接查詢的方法是在SELECT命令的FROM子句中指定兩個或多個將被連

接查詢的表或視圖,并且在WHERE子句告訴ORACLE如何把多個表的數(shù)據(jù)進(jìn)行

合并。根據(jù)WHERE子句中的條件表達(dá)式是等還是不等式,可以把連接查詢分

為等式連接和不等式連接。

2.7.1.2.5.子查詢

如果某一個SELECT命令(查詢1)出現(xiàn)在另一個SQL命令(查詢2)的一個

子句中,則稱查詢1是查詢2的子查詢。

2.7.1.3.基本數(shù)據(jù)類型

ORACEL支持下列部數(shù)據(jù)類型:

>VARCHAR2變長字符串,最長為2000字符。

NUMBER數(shù)值型。

>LONG變長字符數(shù)據(jù),最長為2G字節(jié)。

>DATE日期型。

>RAW二進(jìn)制數(shù)據(jù),最長為255字節(jié)。

>LONGRAW變長二進(jìn)制數(shù)據(jù),最長為2G字節(jié)。

>ROWID二六進(jìn)制串,表示表的行的唯一地址。

>CHAR定長字符數(shù)據(jù),最長為255。

2.7.1.4.常用函數(shù)

一個函數(shù)類似于一個算符,它操作數(shù)據(jù)項,返回一個結(jié)果。函數(shù)在格式上

不同于算符,它個具有變元,可操作0個、一個、二個或多個變元,形式為:

函數(shù)名(變元,變元,…)

函數(shù)具有下列一般類形:

>單行函數(shù)

>分組函數(shù)

1-單行函數(shù)對查詢的表或視圖的每一行返回一個結(jié)果行。它有數(shù)值函

數(shù),字符函數(shù),日期函數(shù),轉(zhuǎn)換函數(shù)等。

2?分組函數(shù)返回的結(jié)果是基于行組而不是單行,所以分組函數(shù)不同于單

行函數(shù)。在許多分組函數(shù)中可有下列選項:

DISTRNCT該選項使分組函數(shù)只考慮變元表達(dá)式中的不同值。

>ALL該選項使分組函數(shù)考慮全部值,包含全部重復(fù)。

全部分組函數(shù)(除COUNT(*)外)忽略空值。如果具有分組函數(shù)的查詢,

沒有返回行或只有空值(分組函數(shù)的變元取值的行),則分組函數(shù)返回空值。

2.7.1.5.數(shù)據(jù)操縱語言命令

數(shù)據(jù)庫操縱語言(DML)命令用于查詢和操縱模式對象中的數(shù)據(jù),它不穩(wěn)式

地提交當(dāng)前事務(wù)。它包含UPDATE'INSERT、DELETE、EXPLAINPLAN、SELECT和

LOCKTABLE等命令。下面簡單介紹一下:

DUPDATEtabler.ameSET)co1umn1=expressionl,co1umn2=expression2,…}WHERE

{conditions);

例如:

SQL>updateservsetstate=FOK'whereserv_id=l23456and

serv_seq_nbr=l;

UPDATE子句指明了要修改的數(shù)據(jù)庫是EMP,并用WHERE子句限制了只

對名字(ENAME)為‘MARTIN'的職工的數(shù)據(jù)進(jìn)行修改,SET子句則說明修

改的方式,即把‘MARTION'的工作名稱(JOB)改為‘MARAGER,.

2)INSERTINTOtablename{colunml,column2,???}VALUES

{expression!,expression2,…};

例如:

SQL>insertintobill,servselect*fromtrans.serv_bak;

3)DELETEFROMtablenameWHERE{conditions};

例如:

SQL>deletefromacct_item_area01whereacct_id=l23245and

account_date=>200110'andacct_item_type_id=11001;

DELETE命令刪除一條記錄,而且DELETE命令只能刪除整行,而不能

刪除某行中的部分?jǐn)?shù)據(jù).

4)事務(wù)控制語句

提交命令(COMMIT):可以使數(shù)據(jù)庫的修改永久化.設(shè)置AUTOCOMMIT為允

許狀態(tài):SQL>SETAUTOCOMMITON;

回浪命令(ROLLBACK):消除上一個COMMIT命令后的所做的全部修改,使

得數(shù)據(jù)庫的容恢復(fù)到上一個COMMIT執(zhí)行后的狀態(tài).使用方法是:

2.7.1.6.創(chuàng)建表、視圖、索引、同義詞、用戶

2.7.1.6.1.表

建立表主要指定義下列信息:

>列定義

>完整性約束

>表所在表空間

>存儲特性

>可選擇的聚集

>從一查詢獲得數(shù)據(jù)

語法如下:

CREATETABLEtablenameCcolumnldatatype[DEFAULTexpression][constraint],

columnldatatype[DEFAULTexpression][constraint],)

[STORAGE子句][其他子句…];

例如:

SQL>createtableserv(serv_idnumber(lO),serv_seq_nbrnumber(3))

2tablespacedata_bi11

3storage(initial10mnext5m);

2.7.1.6.2.視圖

視圖是一個邏輯表,它允許操作者從其它表或視圖存取數(shù)據(jù),視圖本身

不包含數(shù)據(jù)。視圖所基于的表稱為基表。

引入視圖有下列作用:

>提供附加的表安全級,限制存取基表的行或/和列集合。

>隱藏數(shù)據(jù)復(fù)雜性。

>為數(shù)據(jù)提供另一種觀點。

>促使ORACLE的某些操作在包含視圖的數(shù)據(jù)庫上執(zhí)行,而不在另一個數(shù)

據(jù)庫上執(zhí)行。

2.7.1.6.3.索引

索引是種數(shù)據(jù)庫芯象。對于在表或聚集的索引列上的每一值將包含一項,為

行提供直接的快速存取。在下列情況ORACLE可利用索引改進(jìn)性能:

>按指定的索引列的值查找行。

>按索引列的順序存取表。

語法:

createindex<index_name>on<tab1e_name(co1umn1,co1umn2???)>

[storage語句][其它語句];

例如:

SQL>createindexidx_serv_01onserv(srev_id,serv_seq_nbr)

2tablespacedata_bi1l_idx

3storage(initial5mnext5m);

2..同義詞

同義詞:為表、視圖、序列、存儲函數(shù)、包、快照或其它同義詞的另一

個名字。使用同義詞為了安全和方便。對一對象建立同義詞可有下列好站:

>引用對象不需指出對象的持有者。

>引用對象不需指出它所位于的數(shù)據(jù)庫。

>為對象提供另一個名字。

語法:

craetesynonym<synonym_name>for[user_namej.<table_anme>;

例如:

(假定在CALL用戶下)

SQL>createsynonymservforbill.serv;

注意:在同義詞建立后要授權(quán)

2..用戶

語法:

CREATEUSERusernameIDENTIFIEDBYpassword;

例如:

SQL>createuserbi11identifiedbyjfxt;

2.7.2.PL/SQL簡介

2.7.2.1.PL/SQL概述

PL/SQL是Oracle對SQL規(guī)的擴(kuò)展,是一種塊結(jié)構(gòu)語言,即構(gòu)成一個PL/SQL

程序的基本單位(過程、函數(shù)和無名塊)是邏輯塊,可包含任何數(shù)目的嵌套了快。

這種程序結(jié)構(gòu)支持逐步求精方法解決問題。一個塊(或子塊)將邏輯上相關(guān)的說

明和語句組合在一起,其形式為:

DECLARE

-說明

BEGIN

一語句序列

EXCEPTION

一例外處理

END;

它有以下優(yōu)點:

>支持SQL;

>生產(chǎn)率高;

>性能好;

>可稱植性;

>與ORACLE集成.

2.7.2.2.PL/SQL體系結(jié)構(gòu)

PL/SQL運(yùn)行系統(tǒng)是種技術(shù),不是一種獨(dú)立產(chǎn)品,可認(rèn)為這種技術(shù)是PL/SQL

塊和子程序的一種機(jī),它可接收任何有效的PL/SQL塊或子程序。如圖所示:

PL/SQL機(jī)

PL/SQL塊過程性語句

PUSQL

執(zhí)行器

?

SQL語句

PL/SQL機(jī)可執(zhí)行過程性語句,而將SQL語句廢送到ORACLE服務(wù)器上的SQL

語句執(zhí)行器。在ORACLE預(yù)編譯程序或OCI程序中可嵌入無名的PL/SQL塊。如果

ORACLE具有PROCEDURAL選件,有名的PL/SQL塊(子程序)可單獨(dú)編譯,永久

地存儲在數(shù)據(jù)庫中,準(zhǔn)備執(zhí)行。

2.7.2.3.PL/SQL基礎(chǔ)

PL/SQL有一字符集、保留字、標(biāo)點、數(shù)據(jù)類型、嚴(yán)密語法等,它與SQL有

相同表示,現(xiàn)重點介紹。

2.7.2.3.1.數(shù)據(jù)類型

如下表所示:

數(shù)據(jù)類型子類型

純量數(shù)值BINARY.INTEGERNATURAL,POSITIVE

類型NUMBERDEC,DECIMAL,DOUBLE

PRECISION,PLOAT,INTEGER,INT,NUME

RIC,REAL,SMALLINT

字符CHARCHARACTER,STRING

VARCHAR2VARCIIAR

LONG

LONGRAW

RAW

RAWID

邏輯BODLEAN

日期DATE

組合記錄RECORD

類型表TABLE

2.7.2.3.2.變量和常量

在PL/SQL程序中可將值存儲在變量和常量中,當(dāng)程序執(zhí)行時,變量的值可

以改變,而常量的值不能改變。

2.7.2.3.3.程序塊式結(jié)構(gòu)

DECLARE

一變量說明部分

BEGIN

END;

2.7.2.3.4.控制語句

分支語句:

IFconditionTHEN

sequence_statements;

ENDIF;

IFconditionlTHEN

Sequence_statements1;

ELSE

Sequence_statements2;

ENDIF;

IFconditionlTHEN

Sequence_statementsl;

ELSIFcondition2THEN

Sequence_statements2;

ELSE

Sequence_statements(n+1);

ENDIF;

2.7.2.3.5.循環(huán)語句

LOOP

Statements;

IFconditionTHEN

EXIT;

ENDIF;

ENDLOOP;

WHILEconditionLOOP

Statements;

ENDLOOP;

FORcounterINlower_con..high_conI(data-cube)LOOP

Statements;

ENDLOOP;

2.7.2.3.6.子程序

2.7.2.3.6.1.存儲過程

語法:

create[orreplace]procedure函數(shù)名(參數(shù)1,參數(shù)2)ISIAS

[局部變量說明]

BEGIN

執(zhí)行語句;

END;

例:

以下為一簡單的樣例存儲過程:

CREATEORREPLACEPROCEDURE

utl_analyze_prg(

iOnwrINVARCHAR2DEFAULTNULL,

該參數(shù)為需要統(tǒng)計的用戶,缺省則為全部*/

iLevelINVARCHAR2DEFAULTNULL

/*參數(shù)iLeve1為統(tǒng)計,

其值為:1.fortable

2.forcolunis

3.foral1columNs

4.foral1indexedcolumns

5.foral1indcxes

IS

"該程序用來計算統(tǒng)計*/

/*注意:該程序應(yīng)在8i及以上版本中運(yùn)行*/

tOwnerVARCHAR2(30);一存儲輸入的用戶名

t_LevelVARCH.AR2C30);一存儲輸入的統(tǒng)計參數(shù)

t_TaleNameVARCHAR2(30);一存儲選取的表名

t_.\nalyzcStrVARCHAR2C300);一存儲形成的分析語句

BEGIN

t.Owner:=UPPER(TRIM(iOwer));

t.LevelUPPERCLTRIM(RTRIM((iLeve1)));

—若揄人的用戶名為空時則退出程序

IFt.OwnerISNULLTHEN

DBMS_OUTPUT.PUT_LINE('請輸入要用戶名,);

RETURN;

ENDIF;

—若揄人的iLevel不合法則退出程序

IFt_LevelNOTIN('FORTABLE','FORCOLUMS','FORALLCOLUMS,,

,FORALLINDEXEDCOLUMNS;FORALLINDEXES,)

THEN

DBMS_OUTPUT.PUTJINE('輸入的第二參數(shù)不合法,);

RETURN;

ENDIF;

FORRecIN(SELECTFROMall.tablesWHEREowner=t_0wner)

LOOP

BEGIN

t_AnalyzeStr:=*analyzetable*11Rec.table_nanie|\'computestatistics'||

t_Level;

EXECUTEIMMEDIATEt.AnalyzeStr;

EXCEPTIONWHENOTHERSTHEN

ROLLBACK;

RAISE;

END;

ENDLOOP;

END:

2.7.2.3.6.2.存儲函數(shù)

語法:

create[orreplace]function函數(shù)名(參數(shù)1*參數(shù)2)RETURN類型ISI

AS

[局部變量說明]

BEGIN

執(zhí)行語句;

END;

CREATEORREPLACEFUNCTION

utl_analyze_prg(iOnwerINVARCI1AR2DEFAULTNULL,

/*該參數(shù)為需要統(tǒng)計的用戶,缺省則為全部*/

iEstimatePercentINNUMBERDEFAULT100

/*該參數(shù)為需要估算統(tǒng)計的百分比*/

)

RETURNINTEGER

IS

/*該程序用來估算統(tǒng)計*/

/*注意:該程序應(yīng)在8i及以上版本中運(yùn)行*/

tOwnerVARCHAR2(30);一存儲輸入的用戶名

t_PerNUMBERO);--存儲拘人的估第統(tǒng)計的百分比參數(shù)

tTa1eNameVARCHAR2C30);一存儲選取的表名

t_.\nalyzcStrVAECHAR2C300);一存儲形成的分析語句

BEGIN

t_(hner:=UPPER(TRIM(iOw

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論