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

Oracle 初學者百問精解 (下):第 51~100 題

     編輯:Oracle 資料庫基礎

資料庫物件管理

  1. 小表放入 KEEP Pool:ALTER TABLE xxx STORAGE (BUFFER_POOL KEEP);
  2. 查詢已安裝 Patch:檢查 oraInventory 目錄下 ContentsXML 或 opatch lsinventory。
  3. SELECT 自動產生序號:SELECT ROWNUM, col FROM table;
  4. 查表所在 Tablespace:SELECT tablespace_name FROM user_tables WHERE table_name='TEST';
  5. SQL*Plus 修改 Procedure:SELECT line, TRIM(text) FROM user_source WHERE name='PROC' ORDER BY line; 再重建。
  6. 解除 Procedure 鎖定:ALTER SYSTEM KILL SESSION 'sid,serial#'; 或重命名 Procedure。

工具與文件

  1. SQL Reference:Oracle 官方 SQL 語法/函數手冊,OTN 文件中心可下載。
  2. 查看資料庫狀態:Unix ps -ef | grep ora;Windows 看服務 + 能否連線。

DDL 操作

  1. 修改主鍵:ALTER TABLE aaa DROP CONSTRAINT aaa_key; ALTER TABLE aaa ADD CONSTRAINT aaa_key PRIMARY KEY (a1,b1);
  2. 調整資料檔大小:ALTER DATABASE DATAFILE 'path' RESIZE 2G; (縮小需確保高水位以下)。

動態效能視圖

  1. 查看運行中程序:SELECT * FROM v$session;
  2. Tablespace 數量:SELECT * FROM dba_tablespaces;
  3. 修改用戶連線數上限:調整 init.ora processes 參數並重啟。
  4. 查詢列最後更新時間:使用 LogMiner 分析 Redo/Archive Log。

PL/SQL 進階

  1. 讀寫 OS 檔案:UTL_FILE 套件 (需 UTL_FILE_DIR 或 Directory 物件)。
  2. 插入 '&' 字元:INSERT INTO a VALUES (TRANSLATE('at{&}t','at{}','at')); 或 SET DEFINE OFF。
  3. EXP 使用 QUERY 參數:exp user/pass FILE=a.dmp TABLES=bscempms QUERY='"WHERE emp_no=\'S09394\'"

字元集與備份

  1. 8i 支援簡繁中文:ZHS16GBK。
  2. Data Guard:Standby Database 代產品,提供災難恢復/讀取分流。

SPFILE 與核心參數

  1. 建立 SPFILE:CREATE SPFILE FROM PFILE='.../init.ora'; 或指定輸出路徑。
  2. 核心參數速查:
    • shmmax = 物理記憶體 50%
    • shmmin = 1
    • shmmni = 100+
    • shmseg = 20
    • semmni = 所有實例 MAX(processes) + 10
    • semmns = Σ(processes) - MAX + MAX×2 + 10×實例數
    • semmsl = MAX(processes) + 10

權限與備份

  1. 查 SYSDBA/SYSOPER 用戶:SELECT * FROM v$pwfile_users;
  2. 單表備份:exp user/pass TABLES=(t1,t2)
  3. 單用戶備份:exp system/manager OWNER=(u1,u2) FILE=exp.dmp
  4. CLOB 全文檢索:SELECT * FROM a WHERE DBMS_LOB.INSTR(a.clob_col,'K',1,1) > 0;

常用查詢技巧

  1. 顯示當前用戶:SHOW USER
  2. 查資料檔路徑:SELECT tablespace_name, file_id, bytes/1024/1024, file_name FROM dba_data_files ORDER BY file_id;
  3. 查 Rollback Segment 狀態:SELECT segment_name, owner, tablespace_name, status FROM dba_rollback_segs;
  4. 修改 CHECK 約束範圍:Drop 再 Add。
  5. 核心系統檔視圖:v$database, v$datafile, v$logfile, v$controlfile, v$parameter

SQL 進階語法

  1. 內連結:SELECT a.* FROM a, b WHERE a.dpt_no = b.dpt_no;
  2. 外連結:WHERE a.dpt_no = b.dpt_no(+) (右外) / WHERE a.dpt_no(+) = b.dpt_no (左外)。
  3. 執行腳本:@$PATH/file.sql
  4. 快速清大表:TRUNCATE TABLE table_name;
  5. 實例數:SELECT * FROM v$instance;
  6. 表總數:SELECT * FROM all_tables;
  7. 測試 SQL 耗時:SET TIMING ON
  8. CHR 反函數:ASCII()
  9. 字串串接:|| 或 CONCAT()
  10. 結果導出檔案:SPOOL c:\out.txt; SELECT ...; SPOOL OFF;
  11. 估算 I/O:SET AUTOTRACE ON 或 SELECT * FROM v$filestat;
  12. 修改欄位長度:ALTER TABLE t MODIFY (col VARCHAR2(100)); (只能增不能減,除非欄為空)。
  13. 查某日資料:WHERE TRUNC(dt_col) = TO_DATE('2003-05-02','YYYY-MM-DD')
  14. 插入全年日期:INSERT INTO bsyear SELECT TO_DATE('20030101','YYYYMMDD')+ROWNUM-1 FROM all_objects WHERE ROWNUM <= TO_CHAR(TO_DATE('20031231','YYYYMMDD'),'DDD');
  15. 改表名:ALTER TABLE old RENAME TO new;
  16. 取得命令回傳碼:SQLCODE (0=成功)。
  17. 查用戶權限:SELECT * FROM dba_sys_privs;

授權與模式

  1. 下載版 vs 商業版:功能相同,OTN 版僅供開發/測試/原型,禁止生產商業用途。
  2. 判斷歸檔模式:DBA Studio → 歷程 → 資料庫 → 歸檔;或 ARCHIVE LOG LIST。
  3. PFILE/IFILE/SPFILE 差異:PFILE=文字參數檔;IFILE=include 引入其他檔;SPFILE=二進位、持久化、9i 預設;STARTUP 只能接 PFILE/SPFILE。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved