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

Oracle資料庫常見問題答疑:壞塊修復、Report參數化、約束查詢與表空間擴充

     編輯:Oracle 資料庫基礎

DBA 實戰問題解決方案

壞塊資料搶救

  1. 用 DBVERIFY 找出壞塊 ID(假設 1234)
  2. 查詢段名稱:
SELECT SEGMENT_NAME, SEGMENT_TYPE, BLOCK_ID, BLOCKS
FROM DBA_EXTENTS
WHERE 1234 BETWEEN BLOCK_ID AND (BLOCK_ID + BLOCKS - 1);
  1. 若為表:建立臨時表存放好資料
  2. 若為索引:直接重建
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 時的背景小視窗

在參數列表最前端加入:

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

注意:必須為第一個參數。

Report 依查詢條件動態顯示記錄

  1. 資料模型 → 使用者參數 → 新增 W_CLAUSE (CHAR, NULL)
  2. 修改查詢 Q_1:SELECT * FROM DEPT &&W_CLAUSE
  3. 執行時自動帶入條件,如 WHERE DEPT=1 或 WHERE TO_CHAR(年份,'YYYY.MM')='2000.03'

查詢表上的約束定義

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

  1. 確認 INIT.ORA 歸檔目的地有效
  2. SVRMGR> SHUTDOWN IMMEDIATE
  3. SVRMGR> STARTUP MOUNT
  4. SVRMGR> ALTER DATABASE ARCHIVELOG;
  5. SVRMGR> ALTER DATABASE OPEN;
  6. SVRMGR> ARCHIVE LOG LIST;
  7. 設定 LOG_ARCHIVE_START=TRUE (8i 以降用 LOG_ARCHIVE_DEST_n)

增加表空間大小兩大法

  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 動態顯示欄位設定

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