首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 七大疑難雜症解決方案匯總

     編輯:Oracle 資料庫基礎

問題 1:表有壞塊,如何撈取完好資料?

先用 DBVERIFY 找壞塊 ID (假設 1234),查段名:

SELECT SEGMENT_NAME, SEGMENT_TYPE, BLOCK_ID, BLOCKS
FROM DBA_EXTENTS
WHERE 1234 BETWEEN BLOCK_ID AND (BLOCK_ID + BLOCKS - 1);
  • 段是表 → 建立暫存表排除壞塊 ROWID:
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'
);
  • 段是索引 → 刪除重建。

問題 2:Form 呼叫 Report 時的背景小視窗如何關閉?

在參數清單最前面加入:

ADD_PARAMETER(PL_ID, 'ORACLE_SHUTDOWN', TEXT_PARAMETER, 'YES');

問題 3:Report 依查詢條件動態顯示記錄

  1. 資料模型 → 使用者參數建立 W_CLAUSE (CHAR, 預設 NULL)
  2. 修改查詢 Q_1:SELECT * FROM DEPT &&W_CLAUSE
  3. 執行時傳入條件 (如 WHERE DEPT=1),報表自動套用。

問題 4:查看某表的約束條件

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 取得約束欄位明細。

問題 5:NOARCHIVELOG 轉 ARCHIVELOG

  1. 確認 INIT.ORA 歸檔目標目錄有效
  2. SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN; ARCHIVE LOG LIST;
  3. INIT.ORA 設定 LOG_ARCHIVE_START=TRUE (8i 多目標用 LOG_ARCHIVE_DEST_n)

問題 6:增加表空間大小兩法

  1. 新增資料檔:ALTER TABLESPACE USERS ADD DATAFILE '/u01/oradata/orcl/users02.dbf' SIZE 25M;
  2. 擴充現有檔案:ALTER DATABASE DATAFILE '/u01/oradata/orcl/users01.dbf' RESIZE 50M;

問題 7:Report 設定動態顯示欄位

  1. 建立使用者參數 RQ (CHAR)
  2. 版面模型建顯示欄位 F_1,來源指向 RQ,設不可見
  3. 動態預覽建文字欄位 D_1,內容輸入 &&F_1,即可動態顯示參數值
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved