版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度婚前個(gè)人財(cái)產(chǎn)保護(hù)合同3篇
- 安全作業(yè)票管理制度模版(2篇)
- 社區(qū)食品安全示范創(chuàng)建工作制度(3篇)
- 一小實(shí)驗(yàn)室安全管理制度(2篇)
- 醫(yī)院食品衛(wèi)生安全管理制度(2篇)
- 職業(yè)病危害前期預(yù)防管理制度(2篇)
- 企業(yè)級(jí)員工培訓(xùn)效果評(píng)估與改進(jìn)措施優(yōu)化合同
- 2024年新型高性能碎石料研發(fā)與應(yīng)用合同3篇
- 2024年版物業(yè)服務(wù)合同:商業(yè)綜合體管理方與業(yè)主之間的權(quán)利義務(wù)規(guī)定
- 2024年度企業(yè)間短期融資券發(fā)行合同3篇
- 舊廠房改造調(diào)研分析報(bào)告
- 職業(yè)規(guī)劃樣本
- 漢語(yǔ)拼音書寫紙(打印版).
- NJRD系列軟起動(dòng)器出廠參數(shù)設(shè)置表
- 食堂食品定點(diǎn)采購(gòu)詢價(jià)記錄表
- 黑龍江醫(yī)藥公司目錄
- 2021-2022無(wú)錫市六年級(jí)數(shù)學(xué)上冊(cè)期末試卷真題
- 銷售合同風(fēng)險(xiǎn)與防范培訓(xùn)(共40頁(yè)).ppt
- 情景劇《皇帝選妃》
- 2020年領(lǐng)導(dǎo)干部個(gè)人有關(guān)事項(xiàng)報(bào)告表
- 一年級(jí)童謠誦讀計(jì)劃
評(píng)論
0/150
提交評(píng)論