資源描述:
《Oracle數(shù)據(jù)庫(kù)常見(jiàn)問(wèn)題答疑.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。
1、Oracle數(shù)據(jù)庫(kù)常見(jiàn)問(wèn)題答疑Oracle數(shù)據(jù)庫(kù)以其強(qiáng)大的功能和穩(wěn)定性而著稱(chēng),但同時(shí),在開(kāi)發(fā)和管理方面也存在很多困難,筆者在此總結(jié)了一些Oracle數(shù)據(jù)庫(kù)開(kāi)發(fā)和管理的常見(jiàn)問(wèn)題,希望能對(duì)大家有所幫助。問(wèn):如果發(fā)現(xiàn)表中有壞塊,如何檢索其它未壞的數(shù)據(jù)?答:首先需要找到壞塊的ID(可以運(yùn)行dbverify實(shí)現(xiàn)),假設(shè)為1234。運(yùn)行下面的查詢查找段名:selectsegment_name,segment_type,block_id,blocksfromdba_extentswhere(1234betweenblock_idand(b
2、lock_id+blocks-1));一旦找到壞段名稱(chēng),若段是一個(gè)表,則最好建立一個(gè)臨時(shí)表,存放好的數(shù)據(jù)。若段是索引,則刪除它,再重建。createtablegood_tableasselectfrombad_tablewhererowidnotin(select/+index(bad_table,any_index)/rowidfrombad_tablewheresubstr(rowid,1,8)=1234)問(wèn):如請(qǐng)問(wèn)如何關(guān)閉FORM調(diào)用REPORT時(shí)的小窗口?答:在利用Oracle數(shù)據(jù)庫(kù)的Develop2000設(shè)計(jì)
3、開(kāi)發(fā)界面的過(guò)程中,當(dāng)FORM調(diào)用REPORT時(shí),會(huì)顯示一個(gè)背景窗口REPORTBACKGROUDENGINE,等待FORM對(duì)REPORT的調(diào)用,當(dāng)FORM調(diào)用其它REPORT時(shí),也使用這個(gè)后臺(tái)服務(wù)器,不論調(diào)用多少個(gè)REPORT,這個(gè)后臺(tái)服務(wù)器存在且只有一個(gè)。但當(dāng)FORM與REPORT全部退出后,該窗口仍處于等待狀態(tài),不會(huì)關(guān)閉,這時(shí),我們需要手工將其關(guān)閉。我們可以使用以下參數(shù)在FORM調(diào)用REPORT時(shí)不顯示這個(gè)小窗口:Add_Parameter(pl_id,'ORACLE_SHUTDOWN',TEXT_Parameter,'
4、Yes');需要注意的是,該參數(shù)必須加在所有參數(shù)的前面,即它必須為第一個(gè)參數(shù)。問(wèn):請(qǐng)問(wèn)如何根據(jù)查詢條件在REPORT中動(dòng)態(tài)顯示記錄?答:1.在REPORT的“數(shù)據(jù)模型”下面的“用戶參數(shù)”中,創(chuàng)建用戶自定義參數(shù)W_CLAUSE,W_CLAUSE為從FORM傳遞過(guò)來(lái)的查詢條件,數(shù)據(jù)類(lèi)型為字符型,缺省值為NULL。2.修改查詢Q_1,將SQL查詢語(yǔ)句修改為selectfromdept&&w_clause。3.在運(yùn)行報(bào)表時(shí),報(bào)表會(huì)自動(dòng)將符合&&w_clause的查詢條件記錄顯示出來(lái)。如果從FORM傳遞過(guò)來(lái)的w_clause為whe
5、redept=1,本報(bào)表的SQL查詢自動(dòng)轉(zhuǎn)換為selectfromdeptwheredept=1,并在報(bào)表運(yùn)行結(jié)果中顯示符合該查詢條件的記錄,如果從FORM傳遞過(guò)來(lái)的w_cluase為whereto_char(年度,'YYYY.MM')='2000.03',則在報(bào)表運(yùn)行結(jié)果中自動(dòng)顯示2000年3月份的記錄。問(wèn):在Oracle中,我們?nèi)绾尾榭茨潮砩系募s束?答:我們可以使用下面語(yǔ)句從all_constraints視圖中查看某表上的約束:SELECTconstraint_name,table_name,r_owner,r_con
6、straint_nameFROMall_constraintsWHEREtable_name='table_name'andowner='owner_name';另一個(gè)視圖ALL_CONS_COLUMNS也包括組成表上約束列的信息。問(wèn):如何將數(shù)據(jù)庫(kù)從noarchivelog方式改變?yōu)閍rchivelog方式?答:首先打開(kāi)Init.ora文件,確保存檔日志目標(biāo)指向一有效目錄。然后啟動(dòng)ServerManagersvrmgrl〉shutdownimmediatesvrmgrl〉startupmountsvrmgrl〉alterda
7、tabasearchivelog;svrmgrl〉alterdatabaseopen;svrmgrl〉archiveloglist;在init.ora中設(shè)置參數(shù)archive_log_start=TRUE,它設(shè)置存檔日志為自動(dòng)啟動(dòng)。在Oracle8i中支持多個(gè)存檔日志的目標(biāo),因此參數(shù)修改為log_archive_dest[n],其中n為1到5。問(wèn):在Oracle數(shù)據(jù)庫(kù)中,我們?nèi)绾卧黾颖砜臻g的大???答:在開(kāi)發(fā)Oracle數(shù)據(jù)庫(kù)中,我們有兩種方法增加表空間的大?。?.增加額外的數(shù)據(jù)文件到表空間中例如:altertablespac
8、eusersadddatafile'/u01/oradata/orcl/users02.dbf'size25m;2.修改表空間當(dāng)前的數(shù)據(jù)文件例如:alterdatabasedatafile'/u01/oradata/orcl/users01.dbf'resize50M;問(wèn):請(qǐng)問(wèn)如何在REP