欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Oracle常見(jiàn)錯(cuò)誤代碼的分析與解決

 更新時(shí)間:2007年03月07日 00:00:00   作者:  
正在看的ORACLE教程是:Oracle常見(jiàn)錯(cuò)誤代碼的分析與解決。

 在使用ORACLE的過(guò)程過(guò),我們會(huì)經(jīng)常遇到一些ORACLE產(chǎn)生的錯(cuò)誤,對(duì)于初學(xué)者而言,這些錯(cuò)誤可能有點(diǎn)模糊,而且可能一時(shí)不知怎么去處理產(chǎn)生的這些錯(cuò)誤,本人就使用中出現(xiàn)比較頻繁的錯(cuò)誤代碼一一做出分析,希望能夠幫助你找到一個(gè)合理解決這些錯(cuò)誤的方法,同時(shí)也希望你能夠提出你的不同看法。畢竟作為一種交流的手段,個(gè)人意見(jiàn)難免過(guò)于偏頗,而且也必定存在著不足,出錯(cuò)之處在所難免。寫(xiě)這篇文章的目的就是想通過(guò)相互之間的交流共同促進(jìn),共同進(jìn)步。 


  產(chǎn)生原因:上述ORACLE錯(cuò)誤為回滾段表空間不足引起的,這也是ORACLE數(shù)據(jù)管理員最常見(jiàn)的ORACLE錯(cuò)誤信息。當(dāng)用戶在做一個(gè)非常龐大的數(shù)據(jù)操作導(dǎo)致現(xiàn)有回滾段的不足,使可分配用的回滾段表空間已滿,無(wú)法再進(jìn)行分配,就會(huì)出現(xiàn)上述的錯(cuò)誤。 

  解決方式:使用“ALTER TABLESPACE tablespace_name ADD DATAFILE filename SIZE size_of_file”命令向指定的數(shù)據(jù)增加表空間,根據(jù)具體的情況可以增加一個(gè)或多個(gè)表空間。當(dāng)然這與還與你主機(jī)上的裸盤(pán)設(shè)備有關(guān),如果你主機(jī)的裸盤(pán)設(shè)備已經(jīng)沒(méi)有多余的使用空間,建議你不要輕意的增加回滾段表空間的大小,可使用下列的語(yǔ)句先查詢一下剩余的tablespace空間有多少: 


  如果多余的空間比較多,就可以適當(dāng)追加一個(gè)大的回滾段給表空間使用,從而避免上述的錯(cuò)誤。你也可以用以下語(yǔ)句來(lái)檢測(cè)一下rollback segment的競(jìng)爭(zhēng)狀況: 


  如果任何一個(gè)class in count/sum(value)大于1%,就應(yīng)該考慮增加rollback segment。 

相應(yīng)的英文如下: 


  產(chǎn)生原因:ORACLE臨時(shí)段表空間不足,因?yàn)镺RACLE總是盡量分配連續(xù)空間,一但沒(méi)有足夠的可分配空間或者分配不連續(xù)就會(huì)出現(xiàn)上述的現(xiàn)象。 

  解決方法:我們知道由于ORACLE將表空間作為邏輯結(jié)構(gòu)-單元,而表空間的物理結(jié)構(gòu)是數(shù)據(jù)文件,數(shù)據(jù)文件在磁盤(pán)上物理地創(chuàng)建,表空間的所有對(duì)象也存在于磁盤(pán)上,為了給表空間增加空間,就必須增加數(shù)據(jù)文件。先查看一下指定表空間的可用空間,使用視圖SYS.DBA_FREE_SPACE,視圖中每條記錄代表可用空間的碎片大小: 


  返回的信息可初步確定可用空間的最大塊,看一下它是否小于錯(cuò)誤信息中提到的尺寸,再查看一下缺省的表空間參數(shù): 


  通過(guò)下面的SQL命令修改臨時(shí)段表空間的缺省存儲(chǔ)值: 

[NextPage]

 適當(dāng)增大缺省值的大小有可能解決出現(xiàn)的錯(cuò)誤問(wèn)題,也可以通過(guò)修改用戶的臨時(shí)表空間大小來(lái)解決這個(gè)問(wèn)題: 


  使用ALTER TABLESPACE命令,一但完成,所增加的空間就可使用,無(wú)需退出數(shù)據(jù)庫(kù)或使表空間脫機(jī),但要注意,一旦添加了數(shù)據(jù)文件,就不能再刪除它,若要?jiǎng)h除,就要?jiǎng)h除表空間。 

  一個(gè)報(bào)錯(cuò)例子如下: 


  相應(yīng)的英文如下:


  產(chǎn)生原因:當(dāng)ORACLE訪問(wèn)一個(gè)數(shù)據(jù)塊時(shí),由于1、硬件的I/O錯(cuò)誤;2、操作系統(tǒng)的I/O錯(cuò)誤或緩沖問(wèn)題;3、內(nèi)存或paging問(wèn)題;4、ORACLE試圖訪問(wèn)一個(gè)未被格式化的系統(tǒng)塊失??;5、數(shù)據(jù)文件部分溢出等上述幾種情況的一種引起了邏輯壞塊或者物理壞塊,這時(shí)就會(huì)報(bào)ORA-01578的錯(cuò)誤。 

  解決方式:由于ORACLE只有在訪問(wèn)到有問(wèn)題的數(shù)據(jù)文件時(shí)才會(huì)報(bào)錯(cuò),所以報(bào)錯(cuò)的時(shí)間有可能會(huì)比實(shí)際出錯(cuò)的時(shí)間要晚,如果ORA-01578出錯(cuò)信息提示數(shù)據(jù)壞塊指向的是用戶自己的數(shù)據(jù)文件,則用以下方法來(lái)解決: 

  如果通過(guò)下面的SQL語(yǔ)句查出的壞塊出現(xiàn)有索引上,則只需重建索引即可 


  (和分別是ORA-01578報(bào)出的壞塊出現(xiàn)的文件號(hào)和塊號(hào)) 

  如果壞塊出現(xiàn)在表上,先用以下語(yǔ)句分析是否為永久性壞塊(建議多執(zhí)行一兩次,有助于鑒別數(shù)據(jù)壞塊是永久性的(硬盤(pán)上的物理壞塊)還是隨機(jī)性的(內(nèi)存或硬件錯(cuò)誤引起)): 

  執(zhí)行該命令后,可能會(huì)出現(xiàn)以下的結(jié)果: 

  ORA-01578:與原先錯(cuò)誤信息有相同的參數(shù),為永久性的物理或邏輯壞塊;與原先錯(cuò)誤信息有不同的參數(shù),可能與內(nèi)存,page space和I/O設(shè)備有關(guān)。 

  如果用戶有此表的最新備份,那么最好是用此備份來(lái)恢復(fù)此表,或者使用event 10231來(lái)取出壞塊以外的數(shù)據(jù): 

  <1>.先關(guān)閉數(shù)據(jù)庫(kù) 

  <2>.編輯init.ora文件,加入: 


  <3>.startup restrict 

  <4>.創(chuàng)建一個(gè)臨時(shí)表:SQL>create table errortemp as select * from error;(error是壞表的表名) 

  <5>.把event從init.ora文件中刪掉并重起數(shù)據(jù)庫(kù) 

  <6>.rename壞表,把臨時(shí)表rename成壞表的表名 

  <7>.創(chuàng)建表上的INDEX等 

[NextPage]

 如果ORA-01578出錯(cuò)信息提示數(shù)據(jù)壞塊指向的是數(shù)據(jù)字典或者是回滾段的話,你應(yīng)該立即與ORACLE公司聯(lián)系,共同商量一個(gè)好的解決辦法。 

  這里所講的解決方法只是比較常見(jiàn)的一種,一些更為具體的解決辦法可以查看一下ORACLE的故障解決手冊(cè),那里面有浞及使用ROWID方法來(lái)取出壞塊以外的數(shù)據(jù)的方法,這里就不介紹了。 

  相應(yīng)的英文如下: 


  產(chǎn)生原因:這種錯(cuò)誤通常為一個(gè)回滾段和一個(gè)表空間已經(jīng)達(dá)到MAXEXTENTS參數(shù)設(shè)置的極限。要注意的是這個(gè)MAXEXTENTS不是該回滾段或表空間的硬件極限,硬件極限取決于數(shù)據(jù)庫(kù)創(chuàng)建時(shí)在init.ora文件中指定的DB_BLOCK_SIZE參數(shù)的值。 

  解決方法:使用SQL命令A(yù)LTER TABLESPACE…STORAGE(MAXEXTENTS XXXX)來(lái)增加 MAXEXTENTS,其中“XXXX”值必須大于錯(cuò)誤信息中所指的數(shù)值,但不能大于LARGEST MAXEXTENT的值,如果已經(jīng)達(dá)到了LARGEST MAXEXTENT VALUE,解決的辦法就是重新創(chuàng)建較大的范圍尺寸,使用帶有選項(xiàng)COMPRESS=Y的Export工具導(dǎo)出表,如果表空間有可用空間,先給表做一個(gè)備份,用alter tablespace tablespace_name更改其名字,然后再裝載表回?cái)?shù)據(jù)庫(kù)。 

  查看其錯(cuò)誤出現(xiàn)的地方,如果出現(xiàn)在回滾段或索引上,那么必須將其刪除并重建,如果出現(xiàn)在臨時(shí)表空間,修改臨時(shí)表空間的存儲(chǔ)字段,便可解決這個(gè)問(wèn)題。 

  一個(gè)報(bào)錯(cuò)例子如下: 


  相應(yīng)的英文如下:  

[NextPage]


  產(chǎn)生原因:這種錯(cuò)誤通常為ORACLE的內(nèi)部錯(cuò)誤,只對(duì)OSS和ORACLE開(kāi)發(fā)有用。ORA-600的錯(cuò)誤經(jīng)常伴隨跟蹤文件的狀態(tài)轉(zhuǎn)儲(chǔ)(系統(tǒng)狀態(tài)和進(jìn)程狀態(tài)),系統(tǒng)狀態(tài)存儲(chǔ)將包括ORACLE RDBMS持有的當(dāng)前對(duì)象的信息,進(jìn)程狀態(tài)轉(zhuǎn)儲(chǔ)則將顯示特殊進(jìn)程持有的對(duì)象,當(dāng)進(jìn)程符合了某錯(cuò)誤條件時(shí),經(jīng)常是由于一些信息取自它持有的一個(gè)塊,如果我們知道這些錯(cuò)誤進(jìn)程持有的塊,就容易跟蹤問(wèn)題的來(lái)源。 

  解決方法:一般來(lái)說(shuō)出現(xiàn)這個(gè)錯(cuò)誤我們本身是無(wú)法解決的,只有從提高系統(tǒng)本身各方面來(lái)解決這個(gè)內(nèi)部問(wèn)題,如增加硬件設(shè)備,調(diào)整系統(tǒng)性能,使用OPS(當(dāng)然OPS從某種意義上說(shuō)并不是一種好的解決方式)等。ORA-600錯(cuò)誤的第一個(gè)變量用于標(biāo)記代碼中錯(cuò)誤的位置(代碼中的每個(gè)部分的第一變量都不一樣),從第二個(gè)到第五個(gè)變量顯示附加信息,告訴OSS代碼在哪里出現(xiàn)了錯(cuò)誤。 

  一個(gè)報(bào)錯(cuò)例子如下: 


  相應(yīng)的

[1] [2] 下一頁(yè)

正在看的ORACLE教程是:Oracle常見(jiàn)錯(cuò)誤代碼的分析與解決。英文如下: 


  Time-outs(超時(shí)) 

  File corruption(文件太老) 

  Failed data checks in memory(內(nèi)存檢索失?。?nbsp;

  Hardware,memory,or I/O errors(硬件、內(nèi)存或者磁盤(pán)錯(cuò)誤) 

  Incorrectly restored files(錯(cuò)誤的重建文件) 

  ORA-03113:end-of-file on communication channel 

  產(chǎn)生原因:通訊不正常結(jié)束,從而導(dǎo)致通訊通道終止 

  解決方法:1>.檢查是否有服進(jìn)程不正常死機(jī),可從alert.log得知 

  2>.檢查sql*Net Driver是否連接到ORACLE可執(zhí)行程序 

  3>.檢查服務(wù)器網(wǎng)絡(luò)是否正常,如網(wǎng)絡(luò)不通或不穩(wěn)定等 

  4>.檢查同一個(gè)網(wǎng)上是否有兩個(gè)同樣名字的節(jié)點(diǎn) 

  5>.檢查同一個(gè)網(wǎng)上是否有重復(fù)的IP地址 

  相應(yīng)的英文如下: 

[NextPage]

 產(chǎn)生原因:這是由于裝載的表或視圖不存在,多半是CATEXP.SQL還沒(méi)有運(yùn)行,無(wú)法執(zhí)行Export視圖,如果CATEXP.SQL已經(jīng)運(yùn)行,則可能是版本錯(cuò)誤。 

  解決方法:因?yàn)镮mport和Export共享的一些視圖是通過(guò)運(yùn)行CATEXP.SQL來(lái)裝載的(它們具有相同的視圖),并不生成單獨(dú)的CATEXP.SQL,因而造成視圖與Export代碼不同步,較難保持彼此之間的兼容,用戶就必須建立自己的Export應(yīng)用,從而避免ORA-00942的錯(cuò)誤。 

  相應(yīng)的英文如下:
上述錯(cuò)誤均為我們?cè)谑褂没貪L段時(shí)比較常見(jiàn)的問(wèn)題,ORA-01598指明當(dāng)前使用的回滾段的狀態(tài)為“not online”,不能使用,將它改為“online”狀態(tài)即可使用;ORA-01636指明當(dāng)前回滾段已經(jīng)為“online”狀態(tài),可以直接使用,不用再集合它。 


  我們?cè)谧鼋y(tǒng)計(jì)時(shí)還可能遇到下述問(wèn)題:一個(gè)rollback segment的狀態(tài)為”Needs Recovery”的現(xiàn)象,這是由于ORACLE回退一個(gè)事物表中的沒(méi)有提交的事物時(shí)失敗所造成的。通常原因?yàn)橐粋€(gè)datafile或者tablespace是在offline的狀態(tài)或者一個(gè)undo的目標(biāo)被破壞或者rollback segment被破壞。解決的辦法是將所有的tablespace和datafile都置為online狀態(tài),如果不能解決則做下面的工作:

  1>.在initsid.ora中加入event=”10015 trace name context forever lever 10”;

  2>.shutdown數(shù)據(jù)庫(kù)然后重啟;

  3>.在$ORACLE_HOME/rdbms/log下,找到startup時(shí)生成的trace file;

  4>.在trace文件中,找到下列信息“error recovery tx(#,#) object #”;

  5>.根據(jù)object#(與sys.dba_objects表中的object_id相同)在sys.dba_objects表中查出該object的名字;

  6>.將該object drop掉;

  7>.在init.ora文件中將該rollback segment放回rollback_segments參數(shù)中,刪除event;8>.shutdown數(shù)據(jù)庫(kù)然后重啟。此時(shí)”Needs Recovery”的問(wèn)題應(yīng)該是完全解決了,否則就是rollback segment被破壞了。 



  產(chǎn)生原因:指定的tablespace空間已經(jīng)被占用滿,無(wú)法擴(kuò)展。 

  解決方法:使用“ALTER TABLESPACE ADD DATAFILE”命令增加文件系統(tǒng)文件和原始分區(qū),或者增加INITIAL的大?。ㄈ纾篴lter tablespace CDRS101 default storage(next 500M pctincrease 1))應(yīng)該能夠解決,否則就是有人使用你的表空間上創(chuàng)建了一個(gè)比較大的數(shù)據(jù)文件導(dǎo)致你的表空間不夠用。 

  一個(gè)報(bào)錯(cuò)例子如下: ORA-1688: unable to extend table RMMCDR.LOCAL_CDR partition LOCAL_CDR101 by 460800 in tablespace CDRS101 

  相應(yīng)的英文如下: 

上一頁(yè)       

上一頁(yè)  [1] [2] 

相關(guān)文章

最新評(píng)論