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

下載本文檔

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

文檔簡(jiǎn)介

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

Normal

(公開(kāi))

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

ORACLE操作手冊(cè)

Version1.0.0

2002.11.05

TIMESON

天辰科技?2000,2001,2002

AllRightsReserved

前言4

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

1.1.以下為ORACLE一動(dòng)初始文件INITORA.ORA4

1.2.以下是建庫(kù)腳本6

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

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

2.2.安裝啟動(dòng)與非安裝啟動(dòng)12

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

2.4.約束啟動(dòng)13

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

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

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

2.7.1.SQL語(yǔ)言簡(jiǎn)介15

2.7.2.PL/SQL簡(jiǎn)介22

3.解決RDBMS問(wèn)題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.鎖實(shí)用程序54

3.4.ORACLE錯(cuò)誤分析和解決方案56

3.4.1.常見(jiàn)Oracle錯(cuò)誤56

3.4.2.ORACLE部錯(cuò)誤71

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

3.5.常見(jiàn)問(wèn)題78

前,言

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

編寫該操作手冊(cè)。

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

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

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

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

1.1.以下為ORACLE啟動(dòng)初始文件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.以下是建庫(kù)腳本

#!/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ù)庫(kù)本身的數(shù)據(jù)字典視圖

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

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

disconnect

spooloff

exit

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

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

ALTERTABLESPACE'*tablespace_nameMADDDATAFILE

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

CAUTOEXTENDONNEXT{sizeyoudesignedtoexednd};>

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

2.1.數(shù)據(jù)庫(kù)的正常啟動(dòng)

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

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

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

戶使用。具體操作如下:

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

Ssvrmgr1

SVRMGR>

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

$connectinternal

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

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

件名)

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

2.2.安裝啟動(dòng)與非安裝啟動(dòng)

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

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

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

1?安裝啟動(dòng)

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

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

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

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

>使事物日志歸檔模式選項(xiàng)有效或失效;

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

2?非安裝啟動(dòng)

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

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

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

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

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

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

入多個(gè)現(xiàn)場(chǎng)。

1?共享啟動(dòng)

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

2?獨(dú)占啟動(dòng)

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

2.4.約束啟動(dòng)

這種方式的選項(xiàng)是restrict?它啟動(dòng)數(shù)據(jù)庫(kù)時(shí)裝入并打開(kāi)它,但此時(shí)的

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

1?約束啟動(dòng)

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

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

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

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

下:

SVRMGR>altersystemdisablerestrictedsession;

2.5.強(qiáng)制啟動(dòng)

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

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

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

1?強(qiáng)制啟動(dòng)

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

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

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

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

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

1?正常關(guān)閉

SVRMGR>shutdownnormal;

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

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

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

2?立即關(guān)閉

SVRMGR>shutdournimmediate;

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

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

3?異常關(guān)閉

SVRMGR>shutdownabort;

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

現(xiàn)場(chǎng)撤消。

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

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

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

2.7.1.SQL語(yǔ)言簡(jiǎn)介

2.7.1.1.SQL概述

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

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

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

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

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

操作來(lái)管理存儲(chǔ)在其中的數(shù)據(jù)。

2..SQL*PLUS界面

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

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

退出:輸入EXIT即可。

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

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

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

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

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

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

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

SELECT的語(yǔ)法為:

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

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

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

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

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

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

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

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

2.7.1.2.3.ORDERBY子句

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

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

2..連接查詢

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

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

作被稱為連接查詢。

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

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

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

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

2.7.1.2.5.子查詢

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

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

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

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

>VARCHAR2變長(zhǎng)字符串,最長(zhǎng)為2000字符。

NUMBER數(shù)值型。

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

>DATE日期型。

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

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

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

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

2.7.1.4.常用函數(shù)

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

不同于算符,它個(gè)具有變?cè)?,可操?個(gè)、一個(gè)、二個(gè)或多個(gè)變?cè)?,形式為?/p>

函數(shù)名(變?cè)冊(cè)?,…?/p>

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

>單行函數(shù)

>分組函數(shù)

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

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

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

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

DISTRNCT該選項(xiàng)使分組函數(shù)只考慮變?cè)磉_(dá)式中的不同值。

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

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

沒(méi)有返回行或只有空值(分組函數(shù)的變?cè)≈档男校?,則分組函數(shù)返回空值。

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

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

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

LOCKTABLE等命令。下面簡(jiǎn)單介紹一下:

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

{conditions);

例如:

SQL>updateservsetstate=FOK'whereserv_id=l23456and

serv_seq_nbr=l;

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

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

改的方式,即把‘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ù)控制語(yǔ)句

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

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

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

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

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

2.7.1.6.1.表

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

>列定義

>完整性約束

>表所在表空間

>存儲(chǔ)特性

>可選擇的聚集

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

語(yǔ)法如下:

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.視圖

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

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

引入視圖有下列作用:

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

>隱藏?cái)?shù)據(jù)復(fù)雜性。

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

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

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

2.7.1.6.3.索引

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

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

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

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

語(yǔ)法:

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

[storage語(yǔ)句][其它語(yǔ)句];

例如:

SQL>createindexidx_serv_01onserv(srev_id,serv_seq_nbr)

2tablespacedata_bi1l_idx

3storage(initial5mnext5m);

2..同義詞

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

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

>引用對(duì)象不需指出對(duì)象的持有者。

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

>為對(duì)象提供另一個(gè)名字。

語(yǔ)法:

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

例如:

(假定在CALL用戶下)

SQL>createsynonymservforbill.serv;

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

2..用戶

語(yǔ)法:

CREATEUSERusernameIDENTIFIEDBYpassword;

例如:

SQL>createuserbi11identifiedbyjfxt;

2.7.2.PL/SQL簡(jiǎn)介

2.7.2.1.PL/SQL概述

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

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

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

明和語(yǔ)句組合在一起,其形式為:

DECLARE

-說(shuō)明

BEGIN

一語(yǔ)句序列

EXCEPTION

一例外處理

END;

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

>支持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塊過(guò)程性語(yǔ)句

PUSQL

執(zhí)行器

?

SQL語(yǔ)句

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

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

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

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

2.7.2.3.PL/SQL基礎(chǔ)

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

相同表示,現(xiàn)重點(diǎ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程序中可將值存儲(chǔ)在變量和常量中,當(dāng)程序執(zhí)行時(shí),變量的值可

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

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

DECLARE

一變量說(shuō)明部分

BEGIN

END;

2.7.2.3.4.控制語(yǔ)句

分支語(yǔ)句:

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)語(yǔ)句

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.存儲(chǔ)過(guò)程

語(yǔ)法:

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

[局部變量說(shuō)明]

BEGIN

執(zhí)行語(yǔ)句;

END;

例:

以下為一簡(jiǎn)單的樣例存儲(chǔ)過(guò)程:

CREATEORREPLACEPROCEDURE

utl_analyze_prg(

iOnwrINVARCHAR2DEFAULTNULL,

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

iLevelINVARCHAR2DEFAULTNULL

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

其值為:1.fortable

2.forcolunis

3.foral1columNs

4.foral1indexedcolumns

5.foral1indcxes

IS

"該程序用來(lái)計(jì)算統(tǒng)計(jì)*/

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

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

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

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

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

BEGIN

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

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

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

IFt.OwnerISNULLTHEN

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

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.存儲(chǔ)函數(shù)

語(yǔ)法:

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

AS

[局部變量說(shuō)明]

BEGIN

執(zhí)行語(yǔ)句;

END;

CREATEORREPLACEFUNCTION

utl_analyze_prg(iOnwerINVARCI1AR2DEFAULTNULL,

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

iEstimatePercentINNUMBERDEFAULT100

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

)

RETURNINTEGER

IS

/*該程序用來(lái)估算統(tǒng)計(jì)*/

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

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

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

tTa1eNameVARCHAR2C30);一存儲(chǔ)選取的表名

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

BEGIN

t_(hner:=UPPER(TRIM(iOw

溫馨提示

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

評(píng)論

0/150

提交評(píng)論