oracle傻瓜手冊_第1頁
oracle傻瓜手冊_第2頁
oracle傻瓜手冊_第3頁
oracle傻瓜手冊_第4頁
oracle傻瓜手冊_第5頁
已閱讀5頁,還剩71頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、ORACLE傻 瓜 手 冊To be DBA or not to be, that is NOT the question.- Arron作者允許自由散發(fā)此文檔,但對其進行的任何修改應通知作者,以便于維護版本。作者email:Oracle8以8.1.5為界分為普通版本和internet版本。普通版版本號8.0.x,接觸較多的是8.0.5;internet版版本號包括8.1.5(Release 1),8.1.6(Release 2),8.1.7(Release 3)。普通版簡稱Oracle 8,internet版簡稱Oracle 8i。如果不作特別說明,文中凡出現(xiàn)Oracle 8i均指8.1.7

2、版。Oracle9i目前出到第二版,版本號為9.2,簡稱Oracle 9i。如果不作特別說明,文中凡出現(xiàn)Oracle 9i均指9.2版。本手冊介紹Oracle配置的基本方法,描述的是“所然”而不是“所以然”。全部操作以命令行方式出現(xiàn),不涉及GUI(只有白刃戰(zhàn)才是真正的戰(zhàn)斗)。鑒于大家對Windows已經十分熟悉,同時為了避免Windows和Unix兩種截然不同的使用和開發(fā)風格給描述帶來的復雜性,所以本手冊不介紹在Windows上的Oracle(上帝的歸上帝,愷撒的歸愷撒)。文中所有例子以oradb作為數(shù)據(jù)庫實例名,數(shù)據(jù)庫用戶dbuser,口令oracle。如果不作特別說明,關于Oracle 8

3、i所有的例子都在Solaris 8 Intel Platform+Oracle 8iR3上通過,關于Oracle 9i所有的例子都在RedHat Linux 7.3+Oracle 9iR2上通過。附錄文件sample.tar包含全部示例,簡稱附錄。大量使用表emp作為例子(參見附錄08_proc/proc/single/emp.sql):create table emp( nonumber(12) not null, namechar(20) not null, agenumber(6) not null, dutychar(1) not null, salarynumber(12) not

4、null, upd_tsdate not null,primary key (no);開發(fā)中對應emp表結構,定義其宿主結構(參見附錄08_proc/proc/single/db.h):typedef structdoubleno;charname21;intage;charduty2;doublesalary;charupd_ts15; emp_t;修改歷史:2000/07版本1.02000/09版本1.1增加Linux安裝,export,import使用,數(shù)據(jù)庫監(jiān)控及優(yōu)化(utlbstat,utlestat,分析session),語言時間環(huán)境變量設置,Oracle8.0.5手工建庫腳本(w

5、ei_dick提供,稍加修改)2000/10版本1.2修改Linux安裝中RedHat 6.x+Oracle 8.1.6、數(shù)據(jù)庫優(yōu)化中配置文件和session分析、常用技巧中下載上傳文本數(shù)據(jù)和訪問他機數(shù)據(jù)庫;增加創(chuàng)建數(shù)據(jù)庫實例中數(shù)據(jù)字典參考、常用技巧中刪除冗余記錄、應用開發(fā),常見錯誤感謝liu_freeman,jiao_julian,huang_miles等人對開發(fā)工具所作的努力2001/03版本1.3修改安裝部分、init.ora配置、常用技巧、應用開發(fā);增加手工建庫、MTS配置;重寫開發(fā)工具感謝li_bo的大力幫助2001/09版本1.4修改數(shù)據(jù)庫優(yōu)化,使之較系統(tǒng)化;增加應用開發(fā)中多線程下

6、的數(shù)據(jù)庫連接2002/04版本1.5修改數(shù)據(jù)庫優(yōu)化、多線程條件下數(shù)據(jù)庫編程;分離附錄的程序范例2002/12版本2.0重新安排內容,增加Oracle 9i安裝配置、OCI開發(fā)、mysql安裝配置開發(fā),補充數(shù)據(jù)庫優(yōu)化、PROC開發(fā)ORACLE傻 瓜 手 冊11安裝61.1通用設置61.2UnixWare77Oracle 871.3HP-UX8Oracle 881.4Linux9kernel 2.0 & glibc 2.09kernel 2.2 & glibc 2.19kernel 2.4 & glibc 2.2101.5Solaris112創(chuàng)建132.1Oracle 8

7、& 8i13工具創(chuàng)建13手工創(chuàng)建13MTS(multi-threaded server)14調整臨時表空間15調整回滾表空間15調整日志15調整用戶表空間16創(chuàng)建用戶17創(chuàng)建數(shù)據(jù)對象17創(chuàng)建只讀用戶18啟動及關閉數(shù)據(jù)庫實例19網絡配置192.2Oracle 9i21手工創(chuàng)建21創(chuàng)建用戶表空間223初始化文件配置233.1Oracle 8 & 8i233.2Oracle 9i254工具264.1sqlldr264.2exp274.3imp284.4sqlplus29命令行參數(shù)29提示符命令29SET選項30例子305備份及恢復325.1export與import方式325.2冷備

8、份325.3聯(lián)機全備份+日志備份32設置32步驟33恢復335.4注意要點346數(shù)據(jù)庫優(yōu)化356.1通用設置35硬件配置35應用配置35日常性能監(jiān)控366.2實戰(zhàn)分析36總體分析37詳細分析376.3專題分析39巨表查詢39對比測試41上下載數(shù)據(jù)44回滾空間快照陳舊(snapshot too old)467常用技巧487.1增加、更改和刪除域487.2刪除冗余記錄497.3更改字符集497.4表數(shù)據(jù)遷移507.5成批生成數(shù)據(jù)507.6注意要點518嵌入式SQL(C)538.1編譯538.2SQL語句54內部類型與宿主類型對應54連接和斷開54事務55標準SQL語句55動態(tài)SQL語句55數(shù)組操作

9、568.3編程框架58總體原則58單線程和多線程59開發(fā)工具609OCIOracle Call Interface619.1連接和斷開61句柄層次61連接流程61斷開流程629.2SQL語句62事務62無結果集的sql語句63有結果集的sql語句63LOB659.3編程框架67總體原則67sql語句68函數(shù)6910附錄MYSQL7210.1安裝配置7210.2管理72初始調整72建立用戶對象7310.3開發(fā)73連接和斷開73無結果集的sql語句74有結果集的sql74錯誤處理751 安裝所有參見內容都在附件01_install_02_create_03_init/下。1.1 通用設置文件系統(tǒng)s

10、wap創(chuàng)建文件系統(tǒng)時應考慮Oracle對swap的需要,大約每個oracle服務進程將占用10-20Mswap空間,通常操作系統(tǒng)建議2倍于內存的swap空間,數(shù)據(jù)庫系統(tǒng)可能要求更多些。操作系統(tǒng)用戶和環(huán)境變量Oracle文檔要求為數(shù)據(jù)庫系統(tǒng)的管理和使用建立3個或更多的組,但這個需求是可以忽略的,實踐中并沒有體現(xiàn)其必要性。為簡化操作起見,只建立dba組,即擁有更新軟件和管理最高權限(SYSDBA)的操作系統(tǒng)用戶組,此組稱為OSDBA,屬于此組的用戶可以SYSDBA身份登錄進任何一個數(shù)據(jù)庫實例,簡單的,只建立一個用戶,習慣上使用oracle的名稱。$ groupadd dba$ useradd g

11、dba d /home/oracle m s /bin/bash oracle確定oracle 系統(tǒng)的根目錄ORACLE_BASE,如/opt/oracle,所有的軟件和配置都在這個目錄下展開,雖然并非一定需要如此,但這是一個良好的習慣。同時確定軟件安裝的起始點ORACLE_HOME,通常在ORACLE_BASE下。修改oracle用戶的.profile,加入以下各行,或者修改/etc/profile,使每一個用戶都獲得環(huán)境變量設置umask 022ORACLE_BASE=/opt/oracleORACLE_HOME=$ORACLE_BASE/product/版本號(如8.0.5,8.1.7,

12、9.2.0等)ORACLE_SID=oradbORACLE_TERM=ansi 僅與Oracle8字符界面安裝有關ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data 字符集支持NLS_LANG=American_America.ZHS16CGB231280(Oracle8支持)|ZHS16GBK(Oracle8i支持)|ZHS16GB18030(Oracle9i支持)NLS_DATE_FORMAT=YYYYMMDDHH24MISSLD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH 動態(tài)連接路徑,Unixwa

13、re中要確保/usr/ucb/lib在/usr/ccs/lib之后出現(xiàn)TMPDIR=/tmp 安裝中Oracle會在此目錄下存儲相當數(shù)量的文件,所以TMPDIR所在的磁盤分區(qū)要確保空閑空間的大小,至少在1G左右PATH=$PATH:$ORACLE_HOME/binexport ORACLE_BASE ORACLE_HOME ORACLE_SID ORACLE_TERM ORA_NLS33 NLS_LANG NLS_DATE_FORMAT LD_LIBRARY_PATH TMPDIR參見profile。注意:NLS_LANG=American_America.ZHS16CGB231280(ZHS

14、16GBK)“American”指顯示信息時所用的語言,竊以為憑大家的英語水平足夠應付,如改為SIMPLIFIED CHINESE,在不帶中文支持的終端上就沒人能看懂了。“America”指地區(qū)“ZHS16CGB231280”指Client工具使用的字符集,一般使用”ZHS16CGB231280”,Oracle8i已支持到”ZHS16GBK”NLS_DATE_FORMAT=YYYYMMDDHH24MISSOracle的date類型過于靈活,為統(tǒng)一時間格式,利于編程,應將時間的輸入輸出格式限定為14位字符串,如”20000101235959”據(jù)oracle文檔,此參數(shù)可按照session,操作系

15、統(tǒng)用戶環(huán)境,init.ora由高到低的優(yōu)先級順序設置,依次覆蓋。相關系統(tǒng)表:v$nls_parameters v$nls_valid_valuesX-WindowOracle 8的安裝程序是光盤mount點/bin/orainst,使用字符界面,不用考慮X-Window。Oracle 8i和9i使用光盤mount點/runInstaller進行安裝,它是用Java編寫的圖形界面,對中文處理有問題,所以應在進入X-Window前確保語言(LANG)和地域(LC_ALL,LC_TYPE,)環(huán)境變量不是中文。LANG=CLC_ALL=C安裝選項Oracle 8i的主要軟件包在安裝選項Enterpri

16、se中,但并不包括proc,必須進行第二次安裝,可選擇安裝選項Client中的programmer。Oracle 9i的主要軟件包在安裝選項Enterprise安裝選項中,但并不包括proc,必須進行第二次安裝,一定要選擇安裝選項Client中的Administrator。runInstaller的穩(wěn)定性欠佳,建議每次安裝結束后,先退出,再進行下一次安裝。1.2 UnixWare71.2.1 Oracle 8確認操作系統(tǒng)的交換分區(qū)swap不少于350M認為該打的補丁統(tǒng)統(tǒng)打上,寧濫毋缺。UnixWare7.0.1必須打的補丁為ptf7033,ptf7051,ptf7052,ptf7068,ptf

17、7096。將/etc/default/login中的ulimit設為大于2113674(稍大一點即可,太大會有問題)將/etc/conf/node.d/async中的600改為666修改以下核心參數(shù)核心參數(shù)必需值解釋SHMMAX2147483647共享內存段最大尺寸SHMMNI100系統(tǒng)共享內存段標識最大數(shù)目SHMSEG15每個進程所能使用最大共享內存段數(shù)目SEMMNI100核心信號量標識最大數(shù)目SEMMSL150每個信號量標識包含的信號量個數(shù)SCORLIM0X7FFFFFFFCore文件最大尺寸HCORLIM0X7FFFFFFFSDATLIM0X7FFFFFFF進程堆最大尺寸HDATLIM0

18、X7FFFFFFFSVMMLIM0X7FFFFFFF進程最大映射地址HVMMLIM0X7FFFFFFFSFSZLIM0X7FFFFFFF進程文件最大偏移量HFSZLIM0X7FFFFFFFSFNOLIM128進程能打開的最大文件個數(shù)HFNOLIM2048NPROC20+(8*MAXUSERS)MAX:125000ARG_MAX1,048,576NPBUF100I/O緩沖區(qū)數(shù)目MAXUP1000用戶同時使用的最大進程個數(shù)STRTHRESH0X500000流能使用的最大字節(jié)數(shù)為優(yōu)化應用系統(tǒng)修改以下核心參數(shù)核心參數(shù)參考值解釋MSGMAX8192消息最大尺寸MSGMNB81920消息隊列尺寸MSGMN

19、I2048系統(tǒng)能并存的最大消息隊列數(shù)目MSGSSZ16384MSGTQL4096系統(tǒng)能并用的消息頭數(shù)目SEMMNI1024SEMMSL150也可通過編輯/etc/conf/cf.d/stune達到同樣效果重新連接內核,重起或運行/etc/conf/bin/idbuild B修改核心參數(shù)SEMMAP時,注意要同時修改/etc/conf/mtune.d/ipc中相應的MAX值建立/var/opt/oracle,使oracle成為此目錄屬主mount oracle光盤,通常mount目錄為/SD-CDROM_1root用戶,ORACLE_OWNER=oracle,執(zhí)行光盤上orainst中orata

20、b.sh,建立/var/opt/oracle/oratab安裝時,選custom方式,安裝時不建立數(shù)據(jù)庫,字符集可選Simplified Chinese1.3 HP-UX1.3.1 Oracle 8流程大致與unixware相同,調整kernel參數(shù)可通過sam,選擇/Kernel Configuration/Actions/Apply Tuned Parameter Set/OLTP Database Server System,另外為提高I/O能力,還需調整以下參數(shù):核心參數(shù)參考值解釋bufpages61992緩沖頁dbc_max_pct10動態(tài)緩存占內存最大百分比dbc_min_pct1

21、0動態(tài)緩存占內存最小百分比nbuf設定共享庫目錄SHLIB_PATH,不是LD_LIBRARY_PATHSHLIB_PATH=$SHLIB_PATH:$ORACLE_HOME/lib;export SHLIB_PATH1.4 Linux1.4.1 kernel 2.0 & glibc 2.0代表產品為Red Hat Linux 5.1。Oracle 8在RedHat5.1上能成功安裝,安裝軟件包為805ship.tgz一般不會在RedHat5.1上安裝Oracle8i以上的版本修改共享內存最大尺寸限制:在系統(tǒng)初始化腳本/etc/rc.d/rc.sysinit中加入:echo 21474

22、83648 >/proc/sys/kernel/shmmax重啟計算機。這樣做避免了Oracle分配的共享內存碎片化,對提高效率有好處。原$ORACLE_HOME/precomp/admin/pcscfg.cfg中sys_include有誤,使proc預處理pc程序失敗,安裝結束后,應設為:sys_include=(/usr/include,/usr/lib/gcc -lib/i386-redhat-linux/egcs-2.91.66/include)(視gcc版本而定)1.4.2 kernel 2.2 & glibc 2.1代表產品為Red Hat Linux 6.2。修改共

23、享內存最大尺寸限制:在系統(tǒng)初始化腳本/etc/rc.d/rc.sysinit中加入:echo 2147483648 >/proc/sys/kernel/shmmax重啟計算機。這樣做避免了Oracle分配的共享內存碎片化,對提高效率有好處。原$ORACLE_HOME/precomp/admin/pcscfg.cfg中sys_include有誤,使proc預處理pc程序失敗,安裝結束后,應設為sys_include=(/usr/include,/usr/lib/gcc -lib/i386-redhat-linux/egcs-2.91.66/include) (視gcc版本而定)1.4.2.

24、1 Oracle 8本來已經很少有人在LinuxKernel2.2的系統(tǒng)中安裝Oracle8.0.5,但筆者實在懷念8.0.5純粹的文本界面和與之相處的無數(shù)不眠之夜,故收錄如下:Oracle8在kernel為2.2.x的linux中是無法正常運行的,運行可執(zhí)行文件如svrmgrl,sqlplus時會導致“Segmentation fault”,原因在于這些linux使用了默認的libc2.1,與Oracle8程序重連接所需的libc2.0不兼容。Oracle的補丁程序其實是將Oracle可執(zhí)行程序的重連接腳本中l(wèi)ibc位置重新定位到libc2.0上去,并用舊版的gcc,ld重新連接可執(zhí)行文件。

25、為此必須先在系統(tǒng)中安裝兼容庫和相應工具。這是權宜之計,而且僅對RedHat有效。root用戶rpm ivh tcl-8.0.3-20.i386.rpm Oracle的Intelligent Agent要使用版本號可略有差異oracle用戶安裝但不創(chuàng)建instance,如選擇安裝文檔,則會產生如下錯誤:A write error occurred while try to copy to (No such file or directory).這是安裝程序的一個bug不能創(chuàng)建目錄。可進入$ORACLE_HOME/doc,mkdir p server.805/install,再選擇Retry從下載

26、glibcpatch.tgz,在某一目錄(如/patch)下展開cd /patchglibcpatch.sh經過一段時間后,看到“Applied glibc patch for Oracle 8.0.5.x successfully”,表明補丁成功。此時就能成功創(chuàng)建instance。 Oracle 8i推薦使用典型安裝,否則會產生難以預料的錯誤。1.4.3 kernel 2.4 & glibc 2.2代表產品為Red Hat Linux 7.3,SuSE Linux 7.3。 Oracle 8i與Oracle8在RedHat Linux 6.2上安裝所遇到的

27、問題一樣,Oracle 8i使用的glibc 2.1與操作系統(tǒng)自帶的glibc 2.2不能兼容,解決的方法也一樣,要安裝glibc 2.1的兼容庫,并重新連接Oracle各組件。除非萬不得已,不建議使用兼容方式,因此省略安裝步驟,可參閱網上有關文檔。 Oracle 9iRedHat 7.3修改共享內存最大尺寸限制:在系統(tǒng)初始化腳本/etc/rc.d/rc.sysinit中加入:echo 2147483648 >/proc/sys/kernel/shmmax。修改信號量參數(shù):在系統(tǒng)初始化腳本/etc/rc.d/rc.sysinit中加入:echo 250 32000 100

28、128 >/proc/sys/kernel/sem。這4個參數(shù)依次為SEMMSL(每個用戶擁有信號量最大數(shù)量),SEMMNS(系統(tǒng)信號量最大數(shù)量),SEMOPM(每次semop系統(tǒng)調用操作數(shù)),SEMMNI(系統(tǒng)信號量集最大數(shù)量),事實上只有SEMOP是需要調整的。重啟計算機。在連接可執(zhí)行文件過程中,會發(fā)生中斷,打開$ORACLE_HOME/ctx/lib/env_ctx.mk,找到INSO_LINK,在-L$(CTXLIB) -L$(LDLIBFLAG)m后加入-L$(LDLIBFLAG)dl,重試。SuSE 7.3與RedHat類似,但SuSE沒有/etc/rc.d/rc.sysin

29、it,筆者選擇/etc/rc.d/rc,將核心參數(shù)修改添加到最后exit語句之前。安裝過程中沒有發(fā)生任何問題。1.5 SolarisOracle 8i在Solaris 7,8 Intel Platform上均能順利安裝,未測試Solaris Sparc Platform。Oracle 9i目前無Solaris Intel Platform上的版本,由于條件所限,未測試在Solaris Sparc Platform上的Oracle 9i。修改下列核心參數(shù):核心參數(shù)參考值解釋Shmmax物理內存/2共享內存段最大尺寸Shmmin1共享內存段最小尺寸Shmmni100系統(tǒng)共享內存段標識最大數(shù)目Shm

30、seg10每個進程所能使用最大共享內存段數(shù)目Semmni100系統(tǒng)信號量標識最大數(shù)目Scesses+10每個信號量標識包含的信號量數(shù)目Semmnssum(cesses)*10+max(cesses)+count(init.ora)*10系統(tǒng)信號量最大數(shù)目Semopm100每個semop調用最大操作數(shù)目rlim_fd_max4096系統(tǒng)文件句柄最大數(shù)目rlim_fd_cur1024每個進程文件句柄最大數(shù)目修改/etc/system,并重啟使核心參數(shù)生效例:set shmsys:shminfo_shmmax=2147

31、483648set shmsys:shminfo_shmmin=1set shmsys:shminfo_shmmni=100set shmsys:shminfo_shmseg=10set semsys:seminfo_semmni=200set semsys:seminfo_semmsl=200set semsys:seminfo_semmns=1000set semsys:seminfo_semopm=100set semsys:seminfo_semmap=200set semsys:seminfo_semmnu=250set semsys:seminfo_semvmx=32767set

32、msgsys:msginfo_msgmni=200set msgsys:msginfo_msgmap=200set msgsys:msginfo_msgmax=65536set msgsys:msginfo_msgmnb=655360set msgsys:msginfo_msgssz=64set msgsys:msginfo_msgtql=1000set msgsys:msginfo_msgseg=16384set rlim_fd_max=4096set rlim_fd_cur=1024參見solaris_7_8/system注意:一定要先重建好kernel后再安裝,因為oracle安裝時根據(jù)

33、kernel動態(tài)連接程序,如果先安裝oracle,即使隨后正確調整kernel,也會帶來許多問題,如oracle進程不能拉起,instance創(chuàng)建失敗等。在kernel參數(shù)中,對數(shù)據(jù)庫運行影響最大的主要是SHMMAX,SEMMNS,SEMMNI,SEMMSL,SHMMAX取內存一半即可,SEMMNS理論上應等于SEMMNI*SEMMSL,實際取一個較大值即可。SEMMNS: 信號量最大個數(shù),有些系統(tǒng)可忽略,因為他與SEMMNI,SEMMSL有關。2 創(chuàng)建所有參見內容都在附件01_install_02_create_03_init/下。以oracle用戶進行操作,設定數(shù)據(jù)庫實例名為oradb(長

34、度建議不要超過8個字符)。2.1 Oracle 8 & 8i2.1.1 工具創(chuàng)建Oracle 8運行$ORACLE_HOME/bin/orainst(安裝數(shù)據(jù)庫時必須選中oracle installer),選擇create database object,安裝界面中選Oracle Enterprise Server(RDBMS) mount point暫為$ORACLE_BASE,字符集為ZHS16CGB231280或ZHS16GBK,調整system,tools,users,rbs,temp,redolog等尺寸。創(chuàng)建過程中會提示輸入osdba,osoper的UNIX組,這是向ins

35、tance表明此組的成員享有角色sysdba或sysoper的權限,從而用connect / as sysdba替換掉connect internalOracle 8i進入X WINDOW,運行dbassist2.1.2 手工創(chuàng)建任何工具都有其局限性,熟練的數(shù)據(jù)庫管理員可采用手工方法創(chuàng)建數(shù)據(jù)庫,以增加對系統(tǒng)的靈活控制。對于手工建庫Oracle 8與Oracle 8i的區(qū)別主要是建立的數(shù)據(jù)字典和存儲過程有些不同,Oracle8i的dbassistant可以生成建庫腳本供以后使用。取得/8i/initoradb.ora,編輯如db_name,control_file,dump_dest等參數(shù),以符

36、合實際情況。如不需要生成remote_login_passwordfile,可在initoradb.ora中設remote_login_passwordfile=none;如需要,在initoradb.ora中設remote_login_passwordfile=exclusive,運行orapwd file=<file> password=<password>必須創(chuàng)建新生成文件所要用到的目錄,如在配置文件中指定的bdump,cdump,udump等目錄,以及數(shù)據(jù)文件存儲目錄。將initoradb.ora轉移到$ORACLE_BASE/admin/oradb/pfile

37、/,并連接到$ORACLE_HOME/dbs/initoradb.ora。ln s $ORACLE_BASE/admin/oradb/pfile/initoradb.ora $ORACLE_HOME/dbs/initoradb.ora取得8i/createdb.sh,編輯如pfile,數(shù)據(jù)文件目錄等參數(shù),以符合實際情況,并轉移到$ORACLE_BASE/admin/oradb/create/下,執(zhí)行。相關系統(tǒng)表:v$databasev$datafile(file#,ts#,name)v$tablespace(ts#,name)v$parameter(SQL>show parameter)

38、v$sga(SQL>show sga)2.1.3 MTS(multi-threaded server)Oracle8使用兩種配置模式:dedicated server(專用模式)和shared server(即multi-threaded server共享模式),缺省使用專用模式。在連接數(shù)不很大且保持長期連接的情況下,專用模式為每個連接設立一個專用oracle服務進程,以保持較高的性能和穩(wěn)定性。而當連接數(shù)上升到非常高的數(shù)目且不保持長期連接時,數(shù)據(jù)庫管理開銷增大,并且占用大量系統(tǒng)資源,給操作系統(tǒng)形成帶來極大的壓力。在這種情況下,共享模式更為有利,它通過緩沖池和預先設定數(shù)目的server提供

39、服務,每個連接不再有專用的oracle服務進程,每次SQL操作由分配器(dispatcher)確定oracle服務進程。multi-thread僅表示分配器展開的多個服務流程,并非操作系統(tǒng)意義上的多線程配置:Ø initoradb.ora加入mts_dispatchers = “(address=(protocol=TCP)(dispatchers=10)” #初始分配器數(shù)量mts_max_dispatchers = 15 #最大分配器數(shù)量mts_servers = 50 #初始服務進程數(shù)量mts_max_servers = 80 #最大服務進程數(shù)量mts_service = ora

40、db3#MTS方式下對外提供的數(shù)據(jù)庫服務,非service_name表明instance能夠提供MTS服務,不意味著取消dedicated方式Ø listener.ora應刪除所有SID_LIST,SID_LIST的存在決定LISTENER以dedicated還是shared方式啟動oracle連接。如SID_LIST存在,LISTENER不再接受instance的登記,以dedicated方式啟動oracle連接; 如SID_LIST不存在,LISTENER啟動時不為任何instance服務,由instance來登記MTS service,以shared方式啟動oracle連接&#

41、216; clientMTS在client端配置頗為怪誕,在tnsnames.ora中的host一定要寫數(shù)據(jù)庫server的名字,而且必須作全名解析,似乎server端接收到client端請求后會將主機字符串返回,應此client端必須能夠解析,否則會報出諸如“database service not exist”的錯誤tnsnames.ora =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS=(PROTOCOL=TCP)(HOST= dbserver)(PORT = 1521) )(CONNECT_DATA =(SERVICE_NAME = oradb)/etc/

42、hostsdbserver啟動:先起LISTENER,后起instance以下步驟均在數(shù)據(jù)庫open狀態(tài)下,由system用戶完成2.1.4 調整臨時表空間alter tablespace temp temporary;#Oracle8的orainst沒有將temp的缺省值permanent改為temporary,這樣用戶在temp上暫存的數(shù)據(jù)均為永久對象,很快將temp空間耗完。Oracle8i已修正。SQL>alter tablespace temp default storage (initial 128k next 128k maxextents 5000 pct

43、increase 0);SQL查詢操作如group by,order by,distinct,join等需要在臨時段上展開數(shù)據(jù),須充分考慮臨時段的大小。如果實例啟動參數(shù)指定hash_join_enabled=true(缺省為true),當oracle選擇以hash join方式進行表與表的聯(lián)接,oracle根據(jù)查詢操作的實際情況計算出hash_multiblock_io_count,此參數(shù)從屬于session,平時顯示為0,即hash join一次I/O讀寫需要的連續(xù)數(shù)據(jù)空間。這樣當此參數(shù)大于臨時段的next擴展塊時,hash join操作會中斷。如果預知聯(lián)接表的規(guī)模比較巨大,可使用alter

44、 tablespace temp default storage(next )將next值設為較大值,待全部操作完成后,再恢復正常。2.1.5 調整回滾表空間先將建庫工具缺省設定的若干個回滾段刪除SQL>alter rollback segment r01 offline;SQL>drop rollback segment r01;根據(jù)實際需要創(chuàng)建回滾段(如r01-r10),供聯(lián)機處理和批處理使用SQL>create rollback segment r01 storage(initial 128k next 128k maxextents 5000 optimal 5M)

45、tablespace rbs;SQL>alter rollback segment r01 online;注意修改$ORACLE_HOME/dbs/initoradb.ora中的激活回滾段段名另創(chuàng)建一個尺寸無限制的回滾段(r99),供特殊用途SQL>create rollback segment r99 storage(initial 128k next 128k maxextents 5000) tablespace rbs;如果在創(chuàng)建回滾段時使用create public rollback segment,則不需要在$ORACLE_HOME/dbs/initoradb.ora中

46、用rollback_segment=()選項激活,推薦使用public方式相關系統(tǒng)表:SQL>select segment_name, initial_extent, next_extent, max_extents, extents,bytes from dba_segments where segment_type=ROLLBACK; #回滾段占用空間狀況SQL>select segment_name, status from dba_rollback_segs; #回滾段狀態(tài)2.1.6 調整日志建立日志組SQL>alter database add logfile gr

47、oup x(log1a,log1b) size 10M;增加日志組成員SQL>alter database add logfile member log1c to group x;刪除日志數(shù)據(jù)庫實例至少需要2個日志組,只有狀態(tài)為inactive的日志組才能被刪除,而當前日志組狀態(tài)為current,上一個切換的日志組狀態(tài)為active,這就意味著至少存在3個日志組才能刪除其中的一個,如果要更新全部日志組,只能刪除一個,再創(chuàng)建一個,直至全部被更新。SQL>alter database drop logfile group x;如果要刪除的日志組是當前日志組,必須先將其切換至狀態(tài)為ina

48、ctive,再刪除。SQL>alter system switch logfile;刪除日志組成員SQL>alter database drop logfile member log1c;相關系統(tǒng)表v$log 日志組狀態(tài)、占用空間、順序號等v$logfile 日志組文件2.1.7 調整用戶表空間創(chuàng)建表空間假定表數(shù)據(jù)在ts_data,索引在ts_indexSQL>create tablespace ts_data default storage(initial 10M next 10M maxextents 5000 pctincrease 0) datafile path/d

49、ata_01.dbf size 500M;SQL>create tablespace ts_index default storage(initial 5M next 5M maxextents 5000 pctincrease 0) datafile path/index_01.dbf size 500M;參考命令:刪除表空間SQL>drop tablespace data including contents; 刪除表空間及其包含的所有數(shù)據(jù)對象相關系統(tǒng)表:user(dba)_tablespaces增加表空間尺寸假定表空間ts_data由path/data_01.dbf和path

50、/data_02.dbf(500M)組成增加一個數(shù)據(jù)文件:SQL>alter tablespace ts_data add datafile path/data_03.dbf size 500M;擴大原有文件大小:SQL>alter database datafile path/data_01.dbf resize 1000M;移動表空間數(shù)據(jù)文件假如要求為:將path1下data_01.dbf移至path2下,并把文件名改為data01.dbf實例處于關閉狀態(tài)sqlplus “/ as sysdba”SQL>startup mount回到shell環(huán)境下$ mv path1/

51、data_01.dbf path2/data01.dbf$ mv path1/data_02.dbf path2/data02.dbf再到sqlplus環(huán)境中SQL>alter database rename file path1/data_01.dbf to path2/data01.dbf;或SQL>alter tablespace tbsdata rename datafile path/data_01.dbf to path2/data01.dbf;SQL>alter database open;查看剩余空間SQL>select tablespace_name,

52、sum(bytes),max(bytes) from dba_free_space group by tablespace_name;注意:空閑數(shù)據(jù)塊總和sum(bytes)夠用并不意味每個空閑塊都滿足分配需要,所以當表空間不夠分配擴展塊的時候,還要查看最大空閑數(shù)據(jù)塊max(bytes)的大小。合并空閑塊如果表空間上的數(shù)據(jù)對象經常發(fā)生類似drop-create的變動,加之未采用統(tǒng)一的擴展塊尺寸,使那些采用較大擴展塊的數(shù)據(jù)對象不能利用較小的空間碎片,造成空間浪費。可通過將較小的空閑塊合并成較大的空閑塊的方法,減少空間浪費。SQL>alter tablespace tbsdata coale

53、sce;2.1.8 創(chuàng)建用戶SQL>create user dbuser identified by oracle default tablespace data temporary tablespace temp quota unlimited on data quota 0 on system quota 0 on tools quota 0 on users;SQL>grant connect to dbuser;SQL>grant create procedure to dbuser; 這些權限足夠用于開發(fā)及生產環(huán)境SQL>grant select on dba

54、_pending_transactions to dbuser; 二階段提交過程中類似Tuxedo的軟件需要檢索掛起交易的狀態(tài),所以必須得到對此視圖的select權限,以sys用戶身份賦予修改用戶可使用alter user dbuser .參考命令:drop user dbuser cascade; 刪除用戶及其所有的數(shù)據(jù)對象revoke connect from dbuser;取消用戶角色權限相關系統(tǒng)表:user(dba)_usersuser(dba)_role_privs角色權限user(dba)_sys_privs系統(tǒng)權限user(dba)_tab_privs對其他用戶表操作的權限use

55、r_ts_quotas表空間限額2.1.9 創(chuàng)建數(shù)據(jù)對象相關系統(tǒng)表:user_catalog(cat)user_objects(obj)表和索引建立在表空間上,如果不指定表空間,使用本用戶的缺省表空間(default tablespace);如果不指定本對象的存儲參數(shù),使用建于其上的表空間的缺省存儲參數(shù)(default storage)。表(table)建表腳本通常是以下形式:create table emp (no number(12), name char(20), ,constraint emp_x00 primary key(no)) storage(initial 100M next 100M pctincrease 0 maxextents 5000) pctused 70 pctfree 10 tablespace tbs_data enable primary key using index tablespace tbs_index;然

溫馨提示

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

最新文檔

評論

0/150

提交評論