程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle數據庫常見問題答疑

Oracle數據庫常見問題答疑

編輯:Oracle數據庫基礎

Oracle數據庫以其強大的功能和穩定性而著稱,但同時,在開發和管理方面也存在很多困難,筆者在此總結了一些Oracle數據庫開發和管理的常見問題,希望能對大家有所幫助。

  問:如果發現表中有壞塊,如何檢索其它未壞的數據?
  答:首先需要找到壞塊的ID(可以運行dbverify實現),假設為1234。運行下面的查詢查找段名:

  select segment_name, segment_type, block_id, blocks

  from dba_extents

  where (1234 between block_id and (block_id + blocks - 1));

  一旦找到壞段名稱,若段是一個表,則最好建立一個臨時表,存放好的數據。若段是索引,則刪除它,再重建。

  create table good_table

  as

  select  from bad_table where rowid not in

  ( select /+index(bad_table, any_index)/ rowid

  from bad_table where substr( rowid, 1, 8 ) = 1234)

  問:如請問如何關閉FORM調用REPORT時的小窗口?
  答:在利用Oracle數據庫的Develop 2000設計開發界面的過程中,當FORM調用REPORT時,會顯示一個背景窗口REPORT BACKGROUD ENGINE,等待FORM對REPORT的調用,當FORM調用其它REPORT時,也使用這個後台服務器,不論調用多少個REPORT,這個後台服務器存在且只有一個。但當FORM與REPORT全部退出後,該窗口仍處於等待狀態,不會關閉,這時,我們需要手工將其關閉。

  我們可以使用以下參數在FORM調用REPORT時不顯示這個小窗口:

  Add_Parameter( pl_id, ‘Oracle_SHUTDOWN‘,TEXT_Parameter, ‘Yes‘ );

  需要注意的是,該參數必須加在所有參數的前面,即它必須為第一個參數。

  問:請問如何根據查詢條件在REPORT中動態顯示記錄?
  答:1. 在REPORT的“數據模型”下面的“用戶參數”中,創建用戶自定義參數W_CLAUSE,W_CLAUSE為從FORM傳遞過來的查詢條件,數據類型為字符型,缺省值為NULL。

  2. 修改查詢Q_1,將SQL查詢語句修改為select  from dept &&w_clause。

  3. 在運行報表時,報表會自動將符合&&w_clause的查詢條件記錄顯示出來。

  如果從FORM傳遞過來的w_clause為where dept=1,本報表的SQL查詢自動轉換為select  from dept where dept=1,並在報表運行結果中顯示符合該查詢條件的記錄,如果從FORM傳遞過來的w_cluase為where to_char(年度,‘YYYY.MM‘)=‘2000.03‘,則在報表運行結果中自動顯示2000年3月份的記錄。

  問:在Oracle中,我們如何查看某表上的約束?
  答:我們可以使用下面語句從all_constraints視圖中查看某表上的約束:

  SELECT constraint_name, table_name, r_owner, r_constraint_name

  FROM all_constraints

  WHERE table_name = ‘table_name‘ and owner = ‘owner_name‘;

  另一個視圖ALL_CONS_COLUMNS也包括組成表上約束列的信息。

  問:如何將數據庫從noarchivelog方式改變為archivelog方式?
  答:首先打開Init.ora文件,確保存檔日志目標指向一有效目錄。



  然後啟動Server Manager

  svrmgrl〉 shutdown immediate

  svrmgrl〉 startup mount

  svrmgrl〉 alter database archivelog;

  svrmgrl〉 alter database open;

  svrmgrl〉 archive log list;

  在init.ora中設置參數archive_log_start=TRUE,它設置存檔日志為自動啟動。在Oracle 8i中支持多個存檔日志的目標,因此參數修改為log_archive_dest[n],其中n為1到5。

  問:在Oracle數據庫中,我們如何增加表空間的大小?
  答: 在開發Oracle數據庫中,我們有兩種方法增加表空間的大小:

  1.增加額外的數據文件到表空間中

  例如:alter tablespace users add datafile ‘/u01/oradata/orcl/users02.dbf‘ size 25m;

  2.修改表空間當前的數據文件

  例如:alter database datafile

  ‘/u01/oradata/orcl/users01.dbf‘ resize 50M;

  問:請問如何在REPORT中設置動態顯示域?
  答:在REPORT中設置動態顯示域的方法如下:

  1. 在REPORT的“數據模型”下面的“用戶參數”中,創建用戶自定義參數,如RQ,RQ是從FORM傳遞過來的顯示日期,數據類型為字符型。

  2. 在布局模型中,創建一個顯示域F_1,在屬性選項板中修改該顯示域的源為用戶自定義參數RQ,並且設為“不可見的”。

  3. 在動態預覽中,創建一個文本域D_1,調整該文本域的位置和寬度,在該域的內容中輸入&&F_1,則該域會動態顯示用戶定義參數RQ的值。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved