步驟:
DBVERIFY 確認壞塊 ID (假設 1234)SELECT segment_name, segment_type FROM dba_extents WHERE 1234 BETWEEN block_id AND block_id+blocks-1;CREATE TABLE good AS SELECT * FROM bad WHERE rowid NOT IN (SELECT /*+ INDEX(bad idx) */ rowid FROM bad WHERE SUBSTR(rowid,1,8)=1234);DROP INDEX ...; CREATE INDEX ...;在參數清單最前面加入:
Add_Parameter(pl_id, 'ORACLE_SHUTDOWN', TEXT_PARAMETER, 'Yes');
必須為第一個參數才生效。
W_CLAUSE (CHAR, DEFAULT NULL)SELECT * FROM dept &&W_CLAUSEWHERE dept=1 或 WHERE TO_CHAR(year,'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。
-- 確認 init.ora log_archive_dest 指向有效目錄
SVRMGR> SHUTDOWN IMMEDIATE
SVRMGR> STARTUP MOUNT
SVRMGR> ALTER DATABASE ARCHIVELOG;
SVRMGR> ALTER DATABASE OPEN;
SVRMGR> ARCHIVE LOG LIST;
-- 設定 log_archive_start=TRUE (8i) 或 log_archive_dest_n (8i+)
ALTER TABLESPACE users ADD DATAFILE '/u01/oradata/users02.dbf' SIZE 25M;ALTER DATABASE DATAFILE '/u01/oradata/users01.dbf' RESIZE 50M;RQ (CHAR)F_1,Source 指向 RQ,Visible=NoD_1,內容輸入 &&F_1現象:CONNECT sys/pwd AS SYSDBA 失敗 ORA-01017,但 CONNECT sys/pwd 成功。
原因:密碼檔建立時指定密碼 (orapwd password=foobar) 與資料庫 SYS 密碼 (change_on_install) 不同。AS SYSDBA 讀取密碼檔,需使用密碼檔密碼。
解決:
ALTER USER SYS IDENTIFIED BY new_pwd; 會自動同步密碼檔GRANT SYSDBA TO scott; 後,scott 使用自身密碼即可 AS SYSDBA問題:WHERE 子句含特殊字元 (=, <, >, 空格) 在命令列會被 Shell 解析錯誤。
最佳實踐:使用參數檔 (PARFILE)
-- exp.par 內容
USERID=/
TABLES=t
QUERY="WHERE object_id < 5000"
-- 執行
exp PARFILE=exp.par
Windows/Unix 完全相容,避免跳脫字元地獄。
DBMS_RANDOM.VALUE -- 0 <= r < 1
DBMS_RANDOM.VALUE(low, high) -- low <= r < high
DBMS_RANDOM.NORMAL -- 標準常態分佈 (μ=0, σ=1)
DBMS_RANDOM.STRING(opt, len) -- 隨機字串: 'U'大寫, 'L'小寫, 'A'混合, 'X'大寫+數字, 'P'可列印
查詢原始碼:SELECT text FROM all_source WHERE name='DBMS_RANDOM' AND type='PACKAGE' ORDER BY line;
查詢:WHERE emp.dept_num = dept.num AND emp.name LIKE 'S%' AND dept.name='IT'
執行順序取決於:索引、統計資訊、OPTIMIZER_MODE、初始化參數。不可假設固定順序。
反例:表 T(x,y) 含 ('a','1'), ('b','x')。WHERE x='a' AND y=1 若先算 y=1 會因 'x' 無法轉數字報 ORA-01722。統計資訊改變後優化器可能先算 x='a' 而成功。隱含轉換極度危險。