![[整理]Oracle常用命令及Sql._第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/d4b858c5-9d16-44ab-ab1d-d30d0a498d5b/d4b858c5-9d16-44ab-ab1d-d30d0a498d5b1.gif)
![[整理]Oracle常用命令及Sql._第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/d4b858c5-9d16-44ab-ab1d-d30d0a498d5b/d4b858c5-9d16-44ab-ab1d-d30d0a498d5b2.gif)
![[整理]Oracle常用命令及Sql._第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/d4b858c5-9d16-44ab-ab1d-d30d0a498d5b/d4b858c5-9d16-44ab-ab1d-d30d0a498d5b3.gif)
![[整理]Oracle常用命令及Sql._第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/d4b858c5-9d16-44ab-ab1d-d30d0a498d5b/d4b858c5-9d16-44ab-ab1d-d30d0a498d5b4.gif)
![[整理]Oracle常用命令及Sql._第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/d4b858c5-9d16-44ab-ab1d-d30d0a498d5b/d4b858c5-9d16-44ab-ab1d-d30d0a498d5b5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、分頁(yè)select t2.* from (select rownum row no, t1.* from ( select *from AC_CUSTOMER)t1 where row num 0)select t2.* from (select rownum row no, t1.* from ()t1 where row num 0)左連接sql 的 left join 命令詳解表 aaid adate1 a12 a23 a3表 bbid bdate1 b12 b24 b4兩個(gè)表 a,b 相連接,要取出 id 相同的字段select * from a inner join b on a.ai
2、d = b.bid 這是僅取出匹配的數(shù)據(jù)此時(shí)的取出的是:1 a1 b12 a2 b2那么 left join 指:select * from a left join b on a.aid = b.bid首先取出 a 表中所有數(shù)據(jù),然后再加上與 a,b 匹配的的數(shù)據(jù)此時(shí)的取出的是:1 a1 b12 a2 b23 a3 空字符同樣的也有 right join指的是首先取出 b 表中所有數(shù)據(jù),然后再加上與 a,b 匹配的的數(shù)據(jù)此時(shí)的取出的是:1 a1 b12 a2 b24 空字符 b4LEFT JOIN 或 LEFT OUTER JOIN左向外聯(lián)接的結(jié)果集包括LEFT OUTER 子句中指定的左表的
3、所有行,而不僅僅是聯(lián)接列所匹配的行。如果左表的某行在右表中沒(méi)有匹配行,則在相關(guān)聯(lián)的結(jié)果集行中右表的所有選擇列表列均為空值。三范式第一范式:1)任何給定行的列必須是只包含一個(gè)值;2)表中的每一行必須有相同數(shù)量的列;3 )表中的每一行必須是唯一的即是不相同的;第二范式:1)必須滿足第一范式;2)表中的所有非主鍵必須依賴(lài)一整個(gè)主鍵;第三范式:1)必須滿足第二范式;2)表中的所有非主鍵必須相互獨(dú)立;范式中還有復(fù)合主鍵的用法;查看表SQL select * from tab;查看表結(jié)構(gòu)SQL describe 表名簡(jiǎn)寫(xiě)以上命令SQL desc 表名系統(tǒng)時(shí)間selectto char(sysdate,yy
4、yymmdd hhss) from dual;select to_char(sysdate,yyyy-mm-dd,hh24:mi:ss) from dual;導(dǎo)入/導(dǎo)出導(dǎo)入:imp crddev/amcamc file=c:amc.dmp導(dǎo)出: exp crddev/amcamc file=c:amc.dmp如何單獨(dú)備份一個(gè)或多個(gè)用戶:D:exp scott/tiger file=導(dǎo)出文件D:exp system/manager owner=(用戶 1,用戶 2,,用戶 n) file=導(dǎo)出文件如何單獨(dú)備份一個(gè)或多個(gè)表:D:exp 用戶/密碼 tables=表D:exp 用戶/密碼 table
5、s=(表 1,,表 2)D:exp system/manager tables=( 用戶 1.表)D:exp system/manager tables=(用戶 1.表 1,用戶 2.表 1)如何導(dǎo)入指定表D:exp scott/tiger file=a.dmpD:imp test/test fromuser=scott tables=emp file=a.dmpD:imp test/test tables=dept file=a.dmp如果導(dǎo)出用戶沒(méi)有 DBA 權(quán)限,則導(dǎo)入用戶可以不用指定fromuser、touser 參數(shù)如果導(dǎo)出用戶擁有 DBA 權(quán)限,則導(dǎo)入用戶也必須擁有DBA 權(quán)限)注
6、釋SQLcomment on table 表 is 表注釋 ;注釋已創(chuàng)建。SQLcomment on column 表.列 is 列注釋 ;注釋已創(chuàng)建。查詢表注釋SQL select * from user_tab_comments where comments is not null;查詢列注釋SQL select * from user_col_comments where comments is not null;查看表空間查看表空間名字select distinct TABLESPACE_NAME from tabs;查看幾個(gè)表空間select count(distinct TABLE
7、SPACE_NAME) from tabs;select b.file_id文件 ID,b.tablespace_name表空間 ,b.file_name物理文件名 ,b.bytes總字節(jié)數(shù),(b.bytes-sum(nvl(a.bytes,0)已使用 ,sum(nvl(a.bytes,0)剩余 ,sum(nvl(a.bytes,0)/(b.bytes)*100 剩余百分比 from dba_free_space a,dba_data_files b wherea.file_id=b.file_id group by b.tablespace_name,b.file_name,b.file_i
8、d,b.bytesorder by b.tablespace_name-dba_free_space - 表空間剩余空間狀況-dba_data_files - 數(shù)據(jù)文件空間占用情況查看表空間是否自動(dòng)擴(kuò)展select file_name,autoextensible,increment_by from dba_data_files; 表空間自動(dòng)擴(kuò)展alter database datafile path:datafile name autoextend on next 1Mmaxsize 100M; 表空間大小select tablespace_name,count(*),sum(blocks)
9、,sum(bytes)/1024/1024from dba_data_files group by tablespace_name;使用情況select df.tablespace_name 表空間名 ,totalspace 總空間 M,freespace 剩余空間M,round(1-freespace/totalspace)*100,2) 使用率 % from(select tablespace_name,round(sum(bytes)/1024/1024) totalspace from dba_data_files group bytablespace_name) df, (selec
10、t tablespace_name,round(sum(bytes)/1024/1024) freespace fromdba_free_spacegroup by tablespace_name) fs where df.tablespace_name=fs.tablespace_name;使用情況SELECT a.tablespace_name 表空間名 ,total 表空間大小 ,free 表空間剩余大小 , (total-free) 表空間使用大小 ,ROUND(total-free)/total,4)*100 使用率 %FROM (SELECT tablespace_name,SUM
11、(bytes) free FROM DBA_FREE_SPACE GROUP BYtablespace_name ) a,(SELECT tablespace_name,SUM(bytes) total FROM DBA_DATA_FILESGROUP BY tablespace_name) bWHERE a.tablespace_name=b.tablespace_name控制DDL 數(shù)據(jù)定義語(yǔ)言:create、 alter 、drop 、 truncate (創(chuàng)建、修改結(jié)構(gòu)、刪除、截?cái)啵?(其他: rename ) DML 數(shù)據(jù)操縱語(yǔ)言:insert 、 delete 、 select、
12、update (增、刪、查、改)DCL 數(shù)據(jù)控制語(yǔ)言:grant、revoke (授權(quán)、回收)、set role事務(wù)控制:commit、 rollback 、 savepoint (其他: lock table、 set constraint(s) 、 set transaction) 審計(jì)控制:audit、 noaudit系統(tǒng)控制:alter system會(huì)話控制:alter session其他語(yǔ)句:comment (添加注釋?zhuān)xplain plan、analyze (收集統(tǒng)計(jì))、validate、call表結(jié)構(gòu)復(fù)制SQL create table b as select * from
13、a where 1=2;SQL create table b(b1,b2,b3) as select a1,a2,a3 from a where 1=2;查看回滾段SQLSELECTSEGMENT_NAME,OWNER,TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STAFUOSMDBA_ROLLBACK_SEGS;查看數(shù)據(jù)文件放置路徑SQL select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files order by file_id;查看當(dāng)前連接用戶SQL show user
14、SQL select 100*20 from dual;連接字符串SQL select 列 1| 列 2 from 表 1;SQL select con cat 列 1,列 2) from 表 1;復(fù)制數(shù)據(jù)用戶間復(fù)制數(shù)據(jù)SQL copy from user1 to user2 create table2 using select * from table1;視圖group by視圖中不能使用 order by ,但可用 group by 代替來(lái)達(dá)到排序目的 SQL create view a as select b1,b2from b group by b1,b2;創(chuàng)建用戶通過(guò)授權(quán)的方式來(lái)創(chuàng)建
15、用戶SQL grant connect,resource to test identified by test;備份create table yhda_bak as select * from yhda;分組統(tǒng)計(jì)select sid,count(*) from yhda a group by sid having count(*)1select函數(shù)ORDER BY -按照指定列排序返回結(jié)果的子句DISTINCT -只返回結(jié)果集合內(nèi)唯一行的關(guān)鍵詞COUNT - 返回匹配查詢的數(shù)據(jù)行總數(shù)數(shù)值的函數(shù)AVG-該函數(shù)返回指定列的平均值SUM-該函數(shù)把指定的列中的數(shù)字加起來(lái)MIN-該函數(shù)返回列中最小的非
16、NULL 值MAX-該函數(shù)返回列中的最大值GROUP BY -按列匯集查詢函數(shù)結(jié)果的子句存儲(chǔ)查詢結(jié)果利用 Oracle 中的 Spool 緩沖池技術(shù)可以實(shí)現(xiàn) Oracle 數(shù)據(jù)導(dǎo)出到文本文件。 在 Oracle PL/SQL 中輸入緩沖開(kāi)始命令,并指定輸出的文件名:spool d:output.txt在命令行中隨便輸入你的SQL 查詢:select mobile from customer; select mobile from client;在命令行中輸入緩沖結(jié)果命令:spool off; 則系統(tǒng)將緩沖池中的結(jié)果都輸出到 output.txt 文件中。 以 TAB 鍵分隔刪除表注意事項(xiàng)在刪除
17、一個(gè)表中的全部數(shù)據(jù)時(shí),須使用 TRUNCATE TABL 表名;因?yàn)橛?DROP TABLE DELETE *FROM 表名時(shí),TABLESPAC 表空間該表的占用空間并未釋放,反復(fù)幾次 DROP, DELETE 操作后,該 TABLESPAC 上百兆的空間就被耗光了。having用法having 子句對(duì) group by 子句所確定的行組進(jìn)行控制 ,having 子句條件中只允許涉及常量 , 聚 組函數(shù)或 group by 子句中的列 .外聯(lián)接+用法外部聯(lián)接 +按其在 =的左邊或右邊分左聯(lián)接和右聯(lián)接 .若不帶 +運(yùn)算符的表中的一個(gè)行不 直接匹配于帶 +預(yù)算符的表中的任何行 ,則前者的行與后者
18、中的一個(gè)空行相匹配并被返回 若二者均不帶 +,則二者中無(wú)法匹配的均被返回 .利用外部聯(lián)接 +,可以替代效率十分低下 的 not in 運(yùn)算 ,大大提高運(yùn)行速度 .例如 ,下面這條命令執(zhí)行起來(lái)很慢用外聯(lián)接提高表連接的查詢速度在作表連接 (常用于視圖 )時(shí),常使用以下方法來(lái)查詢數(shù)據(jù) :SELECT PAY_NO, PROJECT_NAMEFROM AWHERE A.PAY_NO NOT IN (SELECT PAY_NO FROM B WHERE VALUE =120000);-但是若表 A 有 10000 條記錄,表 B 有 10000 條記錄,則要用掉 30 分鐘才能查完,主要 因?yàn)?NOTI
19、N 要進(jìn)行一條一條的比較,共需要 10000*10000 次比較后,才能得到結(jié)果。該用 外聯(lián)接后,可以縮短到 1 分左右的時(shí)間 :SELECT PAY_NO,PROJECT_NAMEFROM A,BWHERE A.PAY_NO=B.PAY_NO(+)AND B.PAY_NO IS NULLAND B.VALUE =12000;select a.empno from emp a where a.empno not in (select empno from emp1 where job=倘若利用外部聯(lián)接 ,改寫(xiě)命令如下 :select a.empno from emp a ,emp1 bwher
20、e a.empno=b.empno(+)and b.empno is nulland b.job= SALE ;可以發(fā)現(xiàn) ,運(yùn)行速度明顯提高 .set transaction用法在執(zhí)行大事務(wù)時(shí) ,有時(shí) oracle 會(huì)報(bào)出如下的錯(cuò)誤 :ORA-01555:snapshot too old (rollback segment too small)這說(shuō)明 oracle 給此事務(wù)隨機(jī)分配的回滾段太小了 ,這時(shí)可以為它指定一個(gè)足夠大的回滾段,以確保這個(gè)事務(wù)的成功執(zhí)行 .例如set transaction use rollback segment roll_abc;delete from table_n
21、ame where .commit;回滾段 roll_abc 被指定給 delete 事務(wù) ,commit 命令則在事務(wù)結(jié)束之后取消了回滾段的指定 .庫(kù)重建注意事項(xiàng)在利用 import 進(jìn)行數(shù)據(jù)庫(kù)重建過(guò)程中 ,有些視圖可能會(huì)帶來(lái)問(wèn)題 ,因?yàn)榻Y(jié)構(gòu)輸入的順序可能造 成視圖的輸入先于它低層次表的輸入,這樣建立視圖就會(huì)失敗 .要解決這一問(wèn)題 , 可采取分兩步走的方法 :首先輸入結(jié)構(gòu) ,然后輸入數(shù)據(jù) .命令舉例如下 (uesrname:jfcl,password:hfjf,host sting:ora1, 數(shù)據(jù)文件 :expdata.dmp): imp jfcl/hfjfora1 SALEfile=em
22、pdata.dmp rows=Nimp jfcl/hfjfora1 file=empdata.dmp full=Y buffer=64000 commit=Y ignore=Y第一條命令輸入所有數(shù)據(jù)庫(kù)結(jié)構(gòu),但無(wú)記錄 .第二次輸入結(jié)構(gòu)和數(shù)據(jù) ,64000 字節(jié)提交一次 .ignore=Y 選項(xiàng)保證第二次輸入既使對(duì)象存在的情況下也能成功 .刪除重復(fù)記錄:-查找表中 num 列重復(fù)的,列出重復(fù)的記錄數(shù),并列出他的 name 屬性select count(num), max(name) from studentgroup by numhaving count(num) 1-按 num 分組后找出表中
23、num 列重復(fù),即出現(xiàn)次數(shù)大于一次delete from student( 上面 Select 的 ) 這樣的話就把所有重復(fù)的都刪除了。 慎重-執(zhí)行下面 SQL 語(yǔ)句后就可以顯示所有 DRAWING 和 DSNO 相同且重復(fù)的記錄SELECT * FROM EM5_PIPE_PREFABWHERE ROWID!=(SELECT MAX(ROWID) FROM EM5_PIPE_PREFAB D 相當(dāng)于 First,SecondWHERE EM5_PIPE_PREFAB.DRAWING=D.DRAWING ANDEM5_PIPE_PREFAB.DSNO=D.DSNO);-執(zhí)行下面 SQL 語(yǔ)句后
24、就可以刪除所有 DRAWING 和 DSNO 相同且重復(fù)的記錄DELETE FROM EM5_PIPE_PREFABWHERE ROWID!=(SELECT MAX(ROWID) FROM EM5_PIPE_PREFAB DWHERE EM5_PIPE_PREFAB.DRAWING=D.DRAWING ANDEM5_PIPE_PREFAB.DSNO=D.DSNO);返回表中N,M條記錄:取得某列中第 N 大的行select column_name from(select table_name.*,dense_rank() over (order by column desc) rank fro
25、m table_name) where rank =&N ;假如要返回前 5 條記錄:select * from tablename where rownum6;( 或是 rownum = 5 或是 rownum != 6) 假如要返回第 5-9 條記錄:select * from tablenamewhere and rownum 10min usselect * from table namewhere and rownum5order by n ame選出結(jié)果后用 name 排序顯示結(jié)果。(先選再排序)注意:只能用以上符號(hào)(、,=,=,Between.and。由于 rownum
26、是一個(gè)總是從 1 開(kāi)始的偽列,Oracle 認(rèn)為這種條件不成立,查不到記錄.另外,這個(gè)方法更快:select * from (select rownum r,a from yourtablewhere rownum 10這樣取出第 11-20 條記錄!(先選再排序再選)要先排序再選則須用select 嵌套:內(nèi)層排序外層選。rownum 是隨著結(jié)果集生成的,一旦生成,就不會(huì)變化了;同時(shí),生成的結(jié)果是依次遞加的,沒(méi)有 1 就永遠(yuǎn)不會(huì)有 2!rownum 是在查詢集合產(chǎn)生的過(guò)程中產(chǎn)生的偽列,并且如果 where 條件中存在 rownum 條件的話,則:1:假如 判定條件是常量,則:只能 rownum
27、 = 1, SPOOL ON.SQLSQL SELECT ALTER VIEW |TNAME| COMPILE; FROM TAB;SQL SPOOL OFF然后執(zhí)行 ON.SQL 即可。SQL ON.SQL當(dāng)然,授權(quán)和創(chuàng)建同義詞也可以快速進(jìn)行,如:SQL SELECT GRANT SELECT ON |TNAME| TO USERNAME; FROM TAB;SQL SELECT CREATE SYNONYM|TNAME| FOR USERNAME.|TNAME|; FROM TAB;讀寫(xiě)文本型操作系統(tǒng)文件-在 PL/SQL 3.3 以上的版本中,UTL_FILE 包允許用戶通過(guò) PL/SQ
28、L 讀寫(xiě)操作系統(tǒng)文件。如下:DECALREFILE_HANDLE UTL_FILE.FILE_TYPE;BEGINFILE_HANDLE:=UTL_FILE.FOPEN(,TESTA.TX)T; ,UTL_FILE.PUT_LINE(FILE_HANDLE, HELLO,IT S A TEST TXT FILE );UTL_FILE.FCLOSE(FILE_HANDLE); END;1、ORACLE數(shù)據(jù)庫(kù)的啟動(dòng)和關(guān)閉對(duì)于 DBA 們來(lái)說(shuō),關(guān)閉和重新啟動(dòng)數(shù)據(jù)庫(kù)以便優(yōu)化、調(diào)整應(yīng)用的運(yùn)行是經(jīng)常碰到的事情。如果用戶已經(jīng) log 進(jìn)如了數(shù)據(jù)庫(kù),你用 SHUTDOWN IMMEDIATE 或 SHUTDO
29、WN ABORT 命令來(lái)執(zhí)行 關(guān)閉數(shù)據(jù)庫(kù),那用戶將不能連接,直到數(shù)據(jù)庫(kù)重新啟動(dòng),用戶時(shí)常會(huì)抱怨:怎么又要重起。其實(shí),每次這樣的啟動(dòng)關(guān)閉都是為了數(shù)據(jù)庫(kù)能更好的運(yùn)做。 這篇文章將具體介紹 shutdown/startup 操作時(shí)應(yīng)想到的步驟和許多注意事項(xiàng),或許這些能對(duì)你有所幫助。NOTE 在執(zhí)行第一步前,SHUT DOWN 數(shù)據(jù)庫(kù),不要提前關(guān)閉SQL*NET,直到你確認(rèn)關(guān)閉了SERVERh的數(shù)據(jù)庫(kù)后再關(guān)閉 SQL*NET 因?yàn)橐坏┠汴P(guān)閉了 SQL*NET,用戶將將失去和數(shù)據(jù)庫(kù)的會(huì)話。第一步 -存檔或刪除老的 trace files 和 logs當(dāng)你啟動(dòng) ORACLE 的一個(gè)實(shí)例(INSTANCE
30、時(shí),ORACLE 把關(guān)于該實(shí)例的診斷信息寫(xiě)入指定 的 trace和 log 文件。每個(gè)后臺(tái)進(jìn)程都增加一個(gè) TRACE 文件,它被存儲(chǔ)在指定的目錄(該路徑由 INIT.ORA或 CONFIG.ORA 文件中的 BACKGROUND_DUMP_DES 參數(shù)指定)。用戶在數(shù)據(jù)庫(kù)中遇到一個(gè) 內(nèi)部錯(cuò)誤時(shí)也 增力口 USERS TRACE 文件,該文件的 位置由 INIT.ORA 或 CONFIG.ORA 文件中的USER_DUMP_DEST參數(shù)指定。TRACE 文件的個(gè)數(shù)和名稱(chēng)形式由你的操作系統(tǒng)決定。例如在UNIX 下,文件名是一個(gè)數(shù)字加下畫(huà)線加后臺(tái)進(jìn)程號(hào),類(lèi)似 3_12345.trc ,當(dāng)你下一次啟動(dòng)
31、實(shí)例時(shí),一個(gè)新的文件將被產(chǎn)生,因?yàn)檫M(jìn) 程號(hào)的不同,文件名可能是 3_13245.trc 。由于每次啟動(dòng)和關(guān)閉數(shù)據(jù)庫(kù)時(shí),ORACLE 并不自動(dòng)刪除 TRACE 文件,所以如果忽略這個(gè)步驟,那這些沒(méi)有用的文件將占據(jù)大量的自由空間。所以DBA 應(yīng)該主動(dòng)的管理這些文件,或刪除或存檔在別的指定目錄下,如何管理主要是根據(jù)你自己的開(kāi)發(fā)環(huán)境需要而訂了。SQL*NET 也產(chǎn)生 LOG 文件,一般叫LISTENER.LOG 為了能知道他的位置,可以鍵入命令lsnrctl statusLISTENER.LOGt 件大小也隨著啟動(dòng)的次數(shù)不斷的變大,所以通過(guò)妥善管理它也能有效的利用空間。第二步-改名 ALERT LOG
32、件ALERT LOG 文件也是用來(lái)記錄 INSTANCE 的診斷信息的。它的存放目錄也通過(guò)BACKGROUND_DUMP_DEST參數(shù)來(lái)指定。一般情況下 ALERT LOG 文件命名方式為:ALERT_ .LOG ALTER LOG 文牛包括了 一些數(shù)據(jù)庫(kù)主要事件信息,例如: startup,dhutdown, redo log 的使用, tablespace 的改變,文件的 改變,內(nèi)部錯(cuò)誤信息,tablespace-backup 的狀態(tài)的改變等。 ALTER LOG 文件是重要的,同時(shí)該 文件的大小增長(zhǎng)的速度也很驚人, 如果你不檢查他, 一段時(shí)間后你想看看它將是很費(fèi)勁, 因?yàn)樗?已經(jīng)很大了,
33、查起來(lái)也費(fèi)勁。為了既能留下這些有用的信息, 同時(shí)不至于浪費(fèi)很大的空間, 可以用改名的方法。 你可以在 任何時(shí)候更改 ALTER LOG 文件名,甚至在 DATABASEOPEN 時(shí)。當(dāng) ORACLE 不能找到被BACKGROUND_DUMP_DESC指定的文件時(shí),他將增加一個(gè)新的ALTER LOG 文牛。雖然改名不要求 SHUTDOW 但選擇在SHUTDOWN/STARTU 澈 據(jù)庫(kù)時(shí)更改名字是一個(gè)好的主意。NOTE 下面的幾步是在 restart 數(shù)據(jù)庫(kù)時(shí)做的。第三步 -產(chǎn)生一個(gè)增加控制文件( CREATE CONGROLFIL)E 命令的文件為了 recover 一個(gè)被破壞的數(shù)據(jù)庫(kù),你不得
34、不用CREATECONTROLFILE 命令來(lái)重建 controlfiles。CREATE CONTROLFI 命令有兩個(gè)使用:1、在你的現(xiàn)有 CONTROL FILE 文件破化后重建它2、 在 ALTER DATABASES 別的參數(shù)時(shí),如: MAXDATAFILES你可以手輸入命令,但最好在STARTUP 前發(fā)送一命令,以便你擁有最新版本的CREATECONTROLFIL 命 令。從進(jìn)入 SQLDBA SERVER MANAGE 或者 SQL*PLUS 輸入:alter database backup controlfile to trace;該命令在 USER_DUMP_DESC 參數(shù)指
35、定的 路徑產(chǎn) 生一個(gè) TRACE 文件,名字可能是SIDNAME_PROCESSID.TRC該文件將包含針對(duì)你的數(shù)據(jù)庫(kù)的完整的CREATE CONTROLFIL 語(yǔ)法。第四步-扌把 PACKAGES 和 PROCEDURE 駐留 SGA 區(qū)眾所周知,當(dāng) PL/SQL OBJECTS 被一個(gè)用戶調(diào)用時(shí),它將被存儲(chǔ)在SGA 區(qū)的 SQL 共享池中,當(dāng)別人再度調(diào)用該 OBJECT 寸直接從 SGA 區(qū)讀取,能感受到明顯的速度提升。所以,把常用的 PACKAGES和PROCEDURE 在 STARTUP 寸就載入并駐留 SGA 將提高應(yīng)用的整體性能。通過(guò)從新編譯、調(diào) 用等方法可以調(diào)用 OBJECT(
36、PROCEDURES CURSORS 進(jìn) SGA 然后用 DBMS_SHARED_POOL.KEE 來(lái)駐 留SGA=如下:alter package APPOWNER.ADD_CLIENT compile;execute DBMS_SHARED_POOL.KEEP(APPOWNER.ADD_CLIENT,P);(P 代表 PROCEDURES C 代表 CURSORS般每個(gè)數(shù)據(jù)庫(kù)包括兩類(lèi)駐留程序:1、數(shù)據(jù)庫(kù)的核心 PACKAGES2、用戶自定義的 PACKAGES核心 PACKAGE 包括 SYS 所有的 PACKAGES STANDARD DBMS_SQL, DBMS_UTILITYDIUT
37、IL, 為了查看你的 INSTANCE 中那些被駐留了,查詢 DBA_OBJECT_SIZE 用下面的語(yǔ)句:select Owner,Name,Type,Source_Size+Code_Size+Parsed_Size+Error_Size Total_Bytesfrom DBA_OBJECT_SIZEwhere Type = PACKAGE BODY order by 4 desc;2、Oracle基本知識(shí)一個(gè)表空間只能屬于一個(gè)數(shù)據(jù)庫(kù)每個(gè)數(shù)據(jù)庫(kù)最少有一個(gè)控制文件(建議3 個(gè),分別放在不同的磁盤(pán)上)每個(gè)數(shù)據(jù)庫(kù)最少有一個(gè)表空間(SYSTEM 表空間)建立 SYSTEM 表空間的目的是盡量將目的
38、相同的表存放在一起,以提高使用效率每個(gè)數(shù)據(jù)庫(kù)最少有兩個(gè)聯(lián)機(jī)日志文件一個(gè)數(shù)據(jù)文件只能屬于一個(gè)表空間一個(gè)數(shù)據(jù)文件一旦被加入到一個(gè)表空間中,就不能再?gòu)倪@個(gè)表空間中移走,也不能再加入到其他表空間中建立新的表空間需要建立新的數(shù)據(jù)文件數(shù)據(jù)文件被 ORACLE格式化為 ORACLE塊, ORACLE塊的大小是在第一次創(chuàng)建數(shù)據(jù)庫(kù)時(shí)設(shè) 定的,并且以后不能改變單獨(dú)一個(gè)事務(wù)不能跨越多個(gè)回滾段索引表不含 ROWID 值擁有不同大小的回滾段沒(méi)有任何益處ORACLE 在初始安裝時(shí)建立一個(gè)缺省數(shù)據(jù)庫(kù),實(shí)例名為ORCL一個(gè)塊的最大長(zhǎng)度為 16KB 有 2K、4K、8K、16K)每個(gè)數(shù)據(jù)庫(kù)最大文件數(shù)(按塊大?。?K 塊2000
39、0 個(gè)文件4K 塊40000 個(gè)文件8K 塊或以上65536 個(gè)文件oracle server 可以同時(shí)啟動(dòng)多個(gè)數(shù)據(jù)庫(kù)一套操作系統(tǒng)上只能安裝一個(gè)版本的ORACLE 數(shù)據(jù)庫(kù)系統(tǒng)一套 ORACLE 數(shù)據(jù)庫(kù)系統(tǒng)中可以有多個(gè)ORACLE 數(shù)據(jù)庫(kù)每個(gè) ORACLE 數(shù)據(jù)庫(kù)擁有一個(gè)數(shù)據(jù)庫(kù)實(shí)例(INSTANCE所以,一套操作系統(tǒng)上同時(shí)可以有多個(gè)oracle 數(shù)據(jù)庫(kù)實(shí)例啟動(dòng)3、oracle數(shù)據(jù)庫(kù)的幾種啟動(dòng)方式1、startup nomount非安裝啟動(dòng),這種方式啟動(dòng)下可執(zhí)行:重建控制文件、重建數(shù)據(jù)庫(kù) 啟動(dòng) instanee,即啟動(dòng) SGA 和后臺(tái)進(jìn)程,這種啟動(dòng)只需要init.ora 文件。2、startup
40、mount dbname安裝啟動(dòng),這種方式啟動(dòng)下可執(zhí)行:數(shù)據(jù)庫(kù)日志歸檔、數(shù)據(jù)庫(kù)恢復(fù)、重新命名一些數(shù)據(jù)庫(kù)文件如:系統(tǒng)表空間或日志文件。 執(zhí)行nomoun”然后打開(kāi)控制文件3、startup open dbname先執(zhí)行“nomoun”然后執(zhí)行“mount”再打開(kāi)包括 Redo log 文件在內(nèi)的所有數(shù)據(jù)庫(kù)文件, 這種方式下可訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù)。4、startup,等于以下三個(gè)命令startup nomountalter database mountalter database ope n5、startup restrict約束方式啟動(dòng)這種方式能夠啟動(dòng)數(shù)據(jù)庫(kù),但只允許具有一定特權(quán)的用戶訪問(wèn)非特權(quán)用
41、戶訪問(wèn)時(shí),會(huì)出現(xiàn)以下提示:ERROR:ORA-01035: ORACLE 只允許具有 RESTRICTED SESSIO 權(quán)限的用戶使用6、 startup force 強(qiáng)制啟動(dòng)方式 當(dāng)不能關(guān)閉數(shù)據(jù)庫(kù)時(shí),可以用 startup force 來(lái)完成數(shù)據(jù)庫(kù)的關(guān)閉 先關(guān)閉數(shù)據(jù)庫(kù),再執(zhí)行正常啟動(dòng)數(shù)據(jù)庫(kù)命令7、 startup pfile= 參數(shù)文件名 帶初始化參數(shù)文件的啟動(dòng)方式 先讀取參數(shù)文件,再按參數(shù)文件中的設(shè)置啟動(dòng)數(shù)據(jù)庫(kù) 例: startup pfile=E:Oracleadminoradbpfileinit.ora8、startup EXCLUSIVE4、Oracle8的不安全因素作為對(duì)象關(guān)系型
42、數(shù)據(jù)庫(kù)的杰出代表,Oracle 無(wú)疑是最具實(shí)力的。無(wú)論是在數(shù)據(jù)庫(kù)的規(guī)模,多媒體數(shù)據(jù)類(lèi)型的支持,SQL 操作復(fù)制的并行性還是在安全服務(wù)方面,Oracle 均比 SYBASEInformix 強(qiáng)許多, 加上其最新版本 Oracle8.0.4 更是增強(qiáng)了這方面的特性,而且還引入了一些 新的特性, 比如: 數(shù)據(jù)分區(qū) (Data Partitioning) 、 對(duì)象關(guān)系技術(shù) (Object Relational Technology) 、 唯索引表(Indexonly tables)、連接管理器(Connection Manager)NET8 特性卜高級(jí)隊(duì)列 (Advaneed Quening)等,所以
43、有一種說(shuō)法:Oracle8 是適用于如 Peoplesoft, SAP 和 Baan 等圭寸裝式應(yīng)用系統(tǒng)最好的數(shù)據(jù)庫(kù)引擎。雖然 Oracle8 有許多的優(yōu)點(diǎn),但正如微軟的WINDOWS 系統(tǒng)也會(huì)死機(jī)一樣,任何再好的軟件也有他的缺陷, 一個(gè)優(yōu)秀的軟件不可能就是十全十美, 他只是避免了大多數(shù)常見(jiàn)的或者可能 被考慮到的問(wèn)題,而一些不容易被發(fā)現(xiàn)卻非常致命的問(wèn)題往往會(huì)被疏忽掉。Oracle8 也同樣存在著不安全的因素,許多正在想盡快升級(jí)到 Oracle8 的 Oracle7.1 、 Oracle7.2、 Oracle7.3 用 戶不能不考慮到這個(gè)因素。 當(dāng)然, 這個(gè)不安全因素并不是一下子就發(fā)現(xiàn)的, 而是
44、我們?cè)趯?duì)一 個(gè)非常龐大的表進(jìn)行管理時(shí)發(fā)現(xiàn)的,這種隱患在使用Oracle 創(chuàng)建的小型或者中型數(shù)據(jù)庫(kù)中可能不會(huì)出現(xiàn)或根本無(wú)法發(fā)現(xiàn), 因?yàn)?Oracle8 獨(dú)有的特性已經(jīng)將這種隱患降低到最低的程度, 你大可放心你的數(shù)據(jù)庫(kù)系統(tǒng)的安全。問(wèn)題 我們安裝的 Oracle8 數(shù)據(jù)庫(kù)是工作于主機(jī) -終端方式下的, 系統(tǒng)主機(jī)采用的是四臺(tái) HP-9000 小 型機(jī)、1.5G 的內(nèi)存。建庫(kù)初期時(shí)設(shè)定的最大事務(wù)數(shù)是按Oracle8 的默認(rèn)取值這也是 Oracle7的默認(rèn)取值取的:塊值為 2K,事務(wù)數(shù)為 32 (對(duì)于一個(gè)要處理非常龐大的數(shù)據(jù)庫(kù)時(shí),一般我 們?cè)O(shè)定的塊值要大于 2K,至少應(yīng)為 4K 或者 16K,當(dāng)然這還與主
45、機(jī)的 CPU 能力和 I/O 能力值 有關(guān)),并在建庫(kù)時(shí)沒(méi)有進(jìn)行分區(qū)建表,這也許就為以后數(shù)據(jù)庫(kù)出問(wèn)題留下了隱患。由于日 訪問(wèn)數(shù)據(jù)庫(kù)的用戶非常多,而且對(duì)同一表操作的用戶數(shù)量太大, 致使那個(gè)表經(jīng)常被鎖住, 不 斷有用戶抱怨他們進(jìn)不了系統(tǒng),主機(jī)發(fā)送的數(shù)據(jù)包太慢,經(jīng)常報(bào)ORA-6OO 的錯(cuò)誤。起初我們以為是系統(tǒng)網(wǎng)絡(luò)問(wèn)題,但這種可能性比較小,因?yàn)槲覀儼l(fā)現(xiàn)系統(tǒng)CPU 峰值經(jīng)常在 90%多,空閑很小, 數(shù)據(jù)庫(kù)資源太忙, 同時(shí)有十多個(gè)人鎖住一個(gè)大表進(jìn)行操作, 自然一部分用戶就無(wú) 法進(jìn)入系統(tǒng),對(duì)此我們寫(xiě)了如下的SQL 語(yǔ)句對(duì)鎖表用戶進(jìn)行監(jiān)控:SELECT OBJECT_ID,SESSION_ID,SERIAL#
46、,ORACLE_USENAME,OS_USER_NAME,S_PROCESSFROM V$LOCKED_OBJECT 1,V$SESSION S WHERE 1.SESSION_ID=S.SID;也許有的人會(huì)問(wèn)為什么不用如下的SQL 語(yǔ)句進(jìn)行查詢:SELECT a.username,a.sid,a.serial#,b.id1,c.sql_text from v$session a,V$lock b,v$sqltext c where a.lockwait=b.kaddr anda. sql_address=c.address and a.sql_hash_value=c.hash_value;
47、以上兩個(gè) SQL 語(yǔ)句都會(huì)查詢返回當(dāng)前被鎖住的用戶列表,但第二個(gè)SQL 語(yǔ)句由于加入了sql_text 從而使這個(gè)查詢變得非常的慢長(zhǎng),特別是在有許多用戶同時(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作時(shí), 建議不用,第一個(gè) SQL 語(yǔ)句會(huì)在很短的時(shí)間內(nèi)查詢出是誰(shuí)在鎖表,從而有利于對(duì)數(shù)據(jù)庫(kù)的 管理,一但有用戶進(jìn)入不了, 我們就馬上殺死其鎖進(jìn)程SID, SERIAL# SQL 語(yǔ)句如下:ALTER SYSTEM KILL SESSN SJDSERIAL#,但這并不是解決問(wèn)題的根本方法,只能暫時(shí)緩解一下; 另外我們還發(fā)現(xiàn)回滾段時(shí)常有“online 與“offline 的現(xiàn)象,于是我們又考慮是否是回滾段引起的問(wèn)題: 因?yàn)槲覀円坏?/p>
48、對(duì)大的回滾段進(jìn)行操作, 馬上就會(huì)有用戶反映無(wú)法進(jìn)入。 我們知道回 退段的大小直接依賴(lài)于數(shù)據(jù)庫(kù)的活動(dòng)狀態(tài),而每一個(gè)EXTENTS 都應(yīng)具有相同的值(Oracle的推薦)INITIAL EXTENTS 勺值可以從 2K( 32)、4K( 69)、8K( 142)、16K、32K 等列表中選 擇 ,這將保證你刪掉一個(gè)區(qū)的時(shí)候,你可以重新使用它的空間而不會(huì)造成浪費(fèi),另外 MINEXTENTS應(yīng)設(shè)為 20,這將不會(huì)使回退段擴(kuò)展另一個(gè)EXTENT 時(shí)用到正在被活動(dòng)的事務(wù)所使用的空間, 因而我們就可以據(jù)此來(lái)確定回退段大小, 查出數(shù)據(jù)庫(kù)正常運(yùn)行時(shí)所需回滾段的 尺寸,為此我們重新設(shè)置了回退段的OPTIMAL 參
49、數(shù)事實(shí)是 OPTIMAL 的值并不足引起數(shù)據(jù)庫(kù)出錯(cuò),增大了 OPTIMAL 的值,使用命令 SET TRANSACTION USE ROLLBACK SEGME 為系統(tǒng) 指定了一個(gè)大的回退段 注意 OPTIMAL 參數(shù)要足夠大以使 ORACLE 不需經(jīng)?;乜s和重新分配 EXTENTS如果設(shè)得小于最小覆蓋值,性能將由于額外的段重設(shè)置而下降,對(duì)于一個(gè)要執(zhí)行 長(zhǎng)查詢的系統(tǒng),OPTIMAL 應(yīng)設(shè)成足夠大以避免 ORA-1555, “Smapshot too old 的錯(cuò)誤,而對(duì) 于運(yùn)行小的事務(wù),OPTIMAL 應(yīng)設(shè)得小一些,使回退段足夠小以便放于內(nèi)存中,這將提高系統(tǒng)性能。 ,但我們發(fā)現(xiàn)這樣做后, OR
50、A-600 的錯(cuò)誤依然出現(xiàn),而且鎖表越來(lái)越嚴(yán)重;我們又 考慮暫時(shí)鎖住這個(gè)表, 不讓用戶進(jìn)入, 先把用戶的鎖進(jìn)程全部殺完再看, 由于一開(kāi)始就采用 了主機(jī) -終端的工作方式,因而根本就無(wú)法清除得完,除非斷掉外部的所有網(wǎng)絡(luò)連接,但那 樣無(wú)疑是重啟數(shù)據(jù)庫(kù),最終我們選擇了重啟數(shù)據(jù)庫(kù)。重啟數(shù)據(jù)庫(kù)后系統(tǒng)資源一下子得以釋放, 用戶明顯感覺(jué)速度上來(lái)了, 能夠保證正常使用, 就 在我們認(rèn)為系統(tǒng)可能是因?yàn)殚L(zhǎng)期沒(méi)有 DOWN 機(jī),用戶登錄數(shù)過(guò)多造成數(shù)據(jù)庫(kù)死鎖的時(shí)候,一個(gè)非常嚴(yán)重的問(wèn)題出現(xiàn)了, 那個(gè)表中的一個(gè)數(shù)據(jù)無(wú)法進(jìn)行UPDATE UPDATE 就報(bào) ORACLE內(nèi)部代碼錯(cuò)誤,當(dāng)時(shí)我們并沒(méi)在意,但是不久, 我們又發(fā)現(xiàn)
51、另一表中編號(hào)有重復(fù)的現(xiàn)象, 根 據(jù) ORACLE8的數(shù)據(jù)唯索引表性,這種現(xiàn)象應(yīng)該根本不會(huì)存在,因?yàn)槲覀冊(cè)谶@個(gè)表中只建立 了唯一索引,于是我們電話詢問(wèn)ORACLE 公司的技術(shù)工程師,也許 ORACLE 的技術(shù)工程師們也是第一次遇到這種問(wèn)題,他們的回答是數(shù)據(jù)字典太老,數(shù)據(jù)索引壞掉,建議重建索引,并把問(wèn)題向亞太反映。在 ORACLE 公司的技術(shù)工程師的指導(dǎo)下,我們重建了該表,并重新建立 了索引,在重建索引過(guò)程中,開(kāi)始幾次都不成功,而且無(wú)法 DROP 掉先前的表,經(jīng)過(guò)仔細(xì)的 查找,我們發(fā)現(xiàn)ORACLE8 中的確有索引重復(fù)的現(xiàn)象,一個(gè)表中有兩條重復(fù)的索引,直接導(dǎo) 致數(shù)據(jù)庫(kù) HANG,不能訪問(wèn),但查看系統(tǒng)
52、狀態(tài)、 進(jìn)程、LISTENERS 都正常,從日志文件來(lái)看, 文件過(guò)?。?MB),CHECK POINT頻繁,影響到了系統(tǒng)的性能,通過(guò)以上調(diào)整后,數(shù)據(jù)庫(kù)問(wèn) 題暫時(shí)緩解了,可以做 UPDATE 但是ORACLE 的內(nèi)部代碼錯(cuò)誤卻依然存在,只是暫時(shí)還不會(huì)影響到我們對(duì)數(shù)據(jù)庫(kù)的使用,而回滾段開(kāi)始出現(xiàn)“online rollback segment 的問(wèn)”題,更加令人不解的是數(shù)據(jù)庫(kù)居然出現(xiàn)了自動(dòng)DOWN 機(jī)的現(xiàn)象,于是我們?cè)俅卧儐?wèn) ORACLE 公司的技術(shù)工程師,他們的答復(fù)是 ORACLE 已經(jīng)注意到了 ORACLE8.O.4 版本的一些問(wèn)題,他們將會(huì)給數(shù) 據(jù)庫(kù)打 PATCH 希望能夠解決到這些問(wèn)題,但是
53、考慮到給數(shù)據(jù)庫(kù)打一個(gè)PATCH 將會(huì)把所有的數(shù)據(jù)都要 EXPORT 出來(lái),這將是一個(gè)非常危險(xiǎn)的操作,而且所有主機(jī)上的程序都要重新編 譯一到,沒(méi)有一個(gè)星期的時(shí)間是無(wú)法做好的, 而那是根本不可能的事情, 因而我們現(xiàn)在還在 等待 ORACLE 公司一個(gè)更好的解決辦法。說(shuō)明以上問(wèn)題可能是 ORACLE 的個(gè) BUG,但任何軟件都有它不完善的一面,否則又何必出什么補(bǔ)丁了, 有了補(bǔ)丁肯定會(huì)比沒(méi)有補(bǔ)丁強(qiáng), 但是我們?cè)谠O(shè)計(jì)一個(gè)系統(tǒng)時(shí)也一定要考慮到以下的 一些方面:1、 主機(jī)系統(tǒng)的 CPU 能力與 I/0 能力:HP 偏重于 I/0 能力,CPU 能力不強(qiáng),你的數(shù)據(jù)庫(kù)就應(yīng) 該盡量避免讓 CPU 占用率太大;DE
54、C 偏重于 CPU 能力,I/O 能力不強(qiáng),你的數(shù)據(jù)庫(kù)就可以考 慮適當(dāng)增大某些占用 CPU 參數(shù)的設(shè)置;SUN 的 CPU 能力與 1/0 能力差不多,你的數(shù)據(jù)庫(kù)就應(yīng) 該考慮平衡參數(shù),過(guò)大過(guò)小都不好。2、 增大日志文件的 SIZE 至少一會(huì)低于 8MB,日志文件過(guò)小會(huì)導(dǎo)致 CHECK POINT 頻繁, 從而影響到系統(tǒng)的性能。3、 回滾段最好保持一個(gè)比較合理的值,對(duì)一些較大的回滾段可適當(dāng)增加MINEXTENTS 并設(shè)置 OPTIMAL,保證一般事物處理無(wú)需經(jīng)常動(dòng)態(tài)分配空間與及時(shí)回收空間。4 、 要 充 分 利 用 CPU 系 統(tǒng) 資 源 及 提 高 CPU 的 命 中 率 , 可 適 當(dāng) 增
55、大log_simultaneous_copies,db_block_latches,db_writes 的設(shè)置。5、 適當(dāng)增加 db_block_buffer 與 share_poll_size 的 SIZE 以提高 BUFFER 值,增加內(nèi)存,盡 快提高BUFF 及 SQL 的命中率。6、 主機(jī)-終端方式盡管可以便于數(shù)據(jù)維持,但主機(jī)-終端方式卻造成主機(jī)負(fù)荷太重,建議采 用客戶-服務(wù)端方式建系統(tǒng)。5、Oracle數(shù)據(jù)庫(kù)碎片整理我們知道, oracle 作為一種大型數(shù)據(jù)庫(kù),廣泛應(yīng)用于金融、郵電、電力、民航等 數(shù)據(jù)吞吐量巨大,計(jì)算機(jī)網(wǎng)絡(luò)廣泛普及的重要部門(mén)。對(duì)于系統(tǒng)管理員來(lái)講,如何 保證網(wǎng)絡(luò)穩(wěn)定運(yùn)行
56、,如何提高數(shù)據(jù)庫(kù)性能,使其更加安全高效,就顯得尤為重要 。作為影響數(shù)據(jù)庫(kù)性能的一大因素-數(shù)據(jù)庫(kù)碎片,應(yīng)當(dāng)引起dba 的足夠重視,及時(shí)發(fā)現(xiàn)并整理碎片乃是 dba 一項(xiàng)基本維護(hù)內(nèi)容。1、碎片是如何產(chǎn)生的當(dāng)生成一個(gè)數(shù)據(jù)庫(kù)時(shí),它會(huì)分成稱(chēng)為表空間( tablespace )的多個(gè)邏輯段(segment),如系統(tǒng)(system)表空間,臨時(shí)(temporary )表空間等。一個(gè)表空間 可以包含多個(gè)數(shù)據(jù)范圍(exte nt)和一個(gè)或多個(gè)自由范圍塊,即自由空間( free space)。表空間、段、范圍、自由空間的邏輯關(guān)系如下:當(dāng)表空間中生成一個(gè)段時(shí),將從表空間有效自由空間中為這個(gè)段的初始范圍 分配空間。在這
57、些初始范圍充滿數(shù)據(jù)時(shí),段會(huì)請(qǐng)求增加另一個(gè)范圍。這樣的擴(kuò)展 過(guò)程會(huì)一直繼續(xù)下去,直到達(dá)到最大的范圍值,或者在表空間中已經(jīng)沒(méi)有自由空 間用于下一個(gè)范圍。最理想的狀態(tài)就是一個(gè)段的數(shù)據(jù)可被存在單一的一個(gè)范圍中 。這樣,所有的數(shù)據(jù)存儲(chǔ)時(shí)靠近段內(nèi)其它數(shù)據(jù),并且尋找數(shù)據(jù)可少用一些指針。 但是一個(gè)段包含多個(gè)范圍的情況是大量存在的,沒(méi)有任何措施可以保證這些范圍 是相鄰存儲(chǔ)的,如圖 1。當(dāng)要滿足一個(gè)空間要求時(shí),數(shù)據(jù)庫(kù)不再合并相鄰的自 由范圍(除非別無(wú)選擇) , 而是尋找表空間中最大的自由范圍來(lái)使用。這樣將逐 漸形成越來(lái)越多的離散的、分隔的、較小的自由空間,即碎片。例如:2、碎片對(duì)系統(tǒng)的影響隨著時(shí)間推移,基于數(shù)據(jù)庫(kù)
58、的應(yīng)用系統(tǒng)的廣泛使用,產(chǎn)生的碎片會(huì)越來(lái)越多,將對(duì)數(shù)據(jù)庫(kù)有以下兩點(diǎn)主要影響:( 1)導(dǎo)致系統(tǒng)性能減弱如上所述,當(dāng)要滿足一個(gè)空間要求時(shí),數(shù)據(jù)庫(kù)將首先查找當(dāng)前最大的自由范 圍,而 最大自由范圍逐漸變小,要找到一個(gè)足夠大的自由范圍已變得越來(lái)越困 難,從而導(dǎo)致表空間中的速度障礙,使數(shù)據(jù)庫(kù)的空間分配愈發(fā)遠(yuǎn)離理想狀態(tài);2)浪費(fèi)大量的表空間盡管有一部分自由范圍(如表空間的pctincrease 為非 0)將會(huì)被 smon (系統(tǒng)監(jiān)控)后臺(tái)進(jìn)程周期性地合并,但始終有一部分自由范圍無(wú)法得以自動(dòng)合并,浪 費(fèi)了大量的表空間。3、自由范圍的碎片計(jì)算由于自由空間碎片是由幾部分組成,如范圍數(shù)量、最大范圍尺寸等,我們可 用
59、fsfi-free spacefragmentation index (自由空間碎片索引)值來(lái)直觀體現(xiàn)fsfi=100*sqrt(max(extent)/sum(extents)*1/sqrt(sqrt(count(extents)可以看出, fsfi 的最大可能值為 100(一個(gè)理想的單文件表空間) 。隨著范 圍的增加, fsfi 值緩慢下降,而隨著最大范圍尺寸的減少, fsfi 值會(huì)迅速下降。下面的腳本可以用來(lái)計(jì)算 fsfi 值:rem fsfi value computerem fsfi.sqlcolumn fsfi format 999,99select tablespace_name
60、,sqrt(max(blocks)/sum(blocks)* (100/sqrt(sqrt(count(blocks) fsfifrom dba_free_spacegroup by tablespace_name order by 1;spool fsfi.rep;/spool off;比如,在某數(shù)據(jù)庫(kù)運(yùn)行腳本 fsfi.sql, 得到以下 fsfi 值:tablespace_name fsfirbs 74.06system 100.00temp 22.82tools 75.79users 100.00user_tools 100.00ydcx_data 47.34ydcx_idx 57.19yd
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 內(nèi)墻裝飾工程合同范本
- 保健購(gòu)銷(xiāo)合同范本
- 勞動(dòng)定金合同范本
- 代理公司廣告合同范本
- 勞務(wù)合同范本領(lǐng)取
- 買(mǎi)賣(mài)金礦合同范本
- 兼職人員雇傭合同范本
- 減水劑合同范本
- 互聯(lián)網(wǎng)裝修預(yù)算合同范例
- 剪輯拍攝合同范本
- 2024年重慶市優(yōu)質(zhì)企業(yè)梯度培育政策解讀學(xué)習(xí)培訓(xùn)課件資料(專(zhuān)精特新 專(zhuān)精特新小巨人中小企業(yè) 注意事項(xiàng))
- 智能制造概論(高職)全套教學(xué)課件
- 跟單員工作職責(zé)與流程
- 氣流組織模擬分析報(bào)告教程
- 點(diǎn)亮生命-大學(xué)生職業(yè)生涯發(fā)展與就業(yè)指導(dǎo)全套教學(xué)課件
- 外墻清洗成本分析報(bào)告
- 特殊作業(yè)現(xiàn)場(chǎng)監(jiān)護(hù)人安全培訓(xùn)課件
- 《會(huì)計(jì)發(fā)展史》課件
- 幼兒同伴關(guān)系對(duì)幼兒社會(huì)性發(fā)展的研究開(kāi)題報(bào)告
- 環(huán)境修復(fù)原理與技術(shù)-第5章-污染環(huán)境的植物修復(fù)原理
- 2024年1月浙江省首考普通高等學(xué)校招生全國(guó)統(tǒng)一考試英語(yǔ)試題
評(píng)論
0/150
提交評(píng)論