版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年海外房地產(chǎn)購置與租賃合同
- 2024年度文化藝術(shù)活動舉辦合作協(xié)議
- 2024年版專屬墓地買賣標(biāo)準(zhǔn)化協(xié)議版B版
- 2024年離婚合同模板:詳盡財產(chǎn)分割與子女撫養(yǎng)一
- 2024年拖拉機(jī)銷售與農(nóng)業(yè)生態(tài)環(huán)境保護(hù)合作協(xié)議3篇
- 2024年標(biāo)準(zhǔn)個人貸款協(xié)議樣式版
- 教育培訓(xùn)機(jī)構(gòu)考勤制度
- 2024年短視頻內(nèi)容創(chuàng)作版權(quán)許可協(xié)議
- 2024版汽車典當(dāng)質(zhì)押借款服務(wù)協(xié)議書3篇
- 城市中學(xué)宿舍管理制度比較研究
- 舊廠房改造調(diào)研分析報告
- 職業(yè)規(guī)劃樣本
- 漢語拼音書寫紙(打印版).
- NJRD系列軟起動器出廠參數(shù)設(shè)置表
- 食堂食品定點采購詢價記錄表
- 黑龍江醫(yī)藥公司目錄
- 2021-2022無錫市六年級數(shù)學(xué)上冊期末試卷真題
- 銷售合同風(fēng)險與防范培訓(xùn)(共40頁).ppt
- 情景劇《皇帝選妃》
- 2020年領(lǐng)導(dǎo)干部個人有關(guān)事項報告表
- 一年級童謠誦讀計劃
評論
0/150
提交評論