| 帳號 | 預設密碼 | 備註 |
| INTERNAL | ORACLE | 8i 及以前,等同 SYS |
| SYS | CHANGE_ON_INSTALL | 最高權限,**安裝後必改** |
| SYSTEM | MANAGER | DBA 管理帳號,**安裝後必改** |
| SCOTT | TIGER | 範例結構,**生產環境建議鎖定/刪除** |
| SYSMAN | OEM_TEMP | Enterprise Manager 管理帳號 |
最佳實踐:安裝完成立即執行 ALTER USER SYS IDENTIFIED BY <強密碼>; 等,並啟用密碼複雜度驗證函數。
Q2:Oracle 9iAS Web Cache 預設管理帳號?
ADMINISTRATOR / ADMINISTRATOR
Q3:Oracle 8.0.5 如何建立資料庫?
使用 ORAINST 工具。若有 Motif 圖形介面:ORAINST /M
Q4:Oracle 8.1.7 如何建立資料庫?
使用 DBASSIST (Database Assistant 圖形介面)
Q5:Oracle 9i 如何建立資料庫?
使用 DBCA (Database Configuration Assistant),支援樣本、自訂、進階模式
Q6:Oracle「裸裝置」指什麼?
繞過檔案系統、直接存取的儲存空間 (Raw Partition / Raw Logical Volume)。Oracle 直接對區塊裝置讀寫,避免 FS 層開銷,舊版 RAC/高效能場景常用。10g+ 建議用 ASM 取代。
Q7:如何區分 Oracle 64-bit / 32-bit 版本?
$ SQLPLUS '/ AS SYSDBA'
SQL> SELECT * FROM V$VERSION;
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.0.1.0.0 - Production
PL/SQL Release 9.0.1.0.0 - Production
CORE 9.0.1.0.0 Production
TNS for Solaris: Version 9.0.1.0.0 - Production
NLSRTL Version 9.0.1.0.0 - Production
-- 關鍵看 "TNS for :" 那一行
-- 64-bit 會顯示 "64-bit Production" 或 "64bit Production"
-- 32-bit 則無此標記
Q8:SVRMGR 是什麼?
SVRMGR (Server Manager) 是 9i 前的管理工具。9i 起已移除,完全由 SQLPLUS 取代。
對應指令:SVRMGR> CONNECT INTERNAL → SQLPLUS / AS SYSDBA 或 SQLPLUS /NOLOG → CONNECT / AS SYSDBA
Q9:如何查詢用戶從哪台機器登入 Oracle?
SELECT MACHINE, TERMINAL FROM V$SESSION WHERE USERNAME = '<用戶名>';
-- MACHINE: 作業系統機器名/ IP
-- TERMINAL: 客戶端終端機識別 (如 SQL Developer、JDBC Thin Client 等)
Q10:如何查詢表結構與欄位資訊?
-- 表結構 (SQL*Plus 專用)
DESC TABLE_NAME
-- 或
DESCRIBE TABLE_NAME
-- 欄位詳細資訊 (可查詢、可程式化)
SELECT COLUMN_NAME, DATA_TYPE, DATA_LENGTH, DATA_PRECISION, DATA_SCALE,
NULLABLE, DATA_DEFAULT, COLUMN_ID
FROM ALL_TAB_COLUMNS
WHERE TABLE_NAME = '<表名>' AND OWNER = '<擁有者>'
ORDER BY COLUMN_ID;
-- 所有表清單
SELECT * FROM ALL_TABLES WHERE TABLE_NAME LIKE '%關鍵字%';
Q11:如何取得 Trigger / Procedure / Function 的建立腳本?
-- 查看原始碼
DESC USER_SOURCE
-- NAME, TYPE, LINE, TEXT
SELECT TEXT FROM USER_SOURCE
WHERE NAME = '<物件名>' AND TYPE = ''
ORDER BY LINE;
-- Trigger 專用
SELECT TRIGGER_NAME, TRIGGER_TYPE, TRIGGERING_EVENT, TABLE_NAME, STATUS, TRIGGER_BODY
FROM USER_TRIGGERS;
Q12:如何計算一個表佔用的空間大小?
SELECT OWNER, TABLE_NAME,
NUM_ROWS,
BLOCKS * AAA / 1024 / 1024 AS "SIZE_MB",
EMPTY_BLOCKS,
LAST_ANALYZED
FROM DBA_TABLES
WHERE TABLE_NAME = 'XXX';
-- AAA = DB_BLOCK_SIZE (bytes),查詢:SHOW PARAMETER DB_BLOCK_SIZE
-- XXX = 目標表名
-- 注意:此為統計資訊估算值,實際段大小查 DBA_SEGMENTS
-- 更精確:查段大小
SELECT SEGMENT_NAME, SUM(BYTES)/1024/1024 AS SIZE_MB
FROM DBA_SEGMENTS
WHERE SEGMENT_NAME = 'XXX' AND OWNER = 'SCHEMA'
GROUP BY SEGMENT_NAME;
延伸實用查詢速查
| 需求 | SQL |
| 當前連線 Session 數 | SELECT COUNT(*) FROM V$SESSION WHERE USERNAME IS NOT NULL; |
| 長時間運行 SQL | SELECT SQL_TEXT, ELAPSED_TIME/1E6 AS SEC FROM V$SQL_MONITOR WHERE ELAPSED_TIME > 60E6; |
| 表空間使用率 | SELECT TABLESPACE_NAME, ROUND(USED_SPACE*BLOCK_SIZE/1024/1024) USED_MB, ROUND(TABLESPACE_SIZE*BLOCK_SIZE/1024/1024) TOTAL_MB FROM DBA_TABLESPACE_USAGE_METRICS; |
| 失效索引 | SELECT INDEX_NAME FROM DBA_INDEXES WHERE STATUS = 'UNUSABLE'; |
| 鎖等待鏈 | SELECT * FROM DBA_WAITERS; |
總結
這 12 題涵蓋安裝、版本識別、工具演進、遷移概念、日常管理查詢。掌握這些基礎,能應付 80% 的初級運維面試與日常排查。進階 DBA 需深入:架構原理、效能調優、高可用架構、自動化運維、雲原生部署。
- 上一篇文章: Oracle 9i Windows/Linux 自動備份腳本實戰:排程任務與日期變數應用
- 下一篇文章: Oracle Advanced Replication 同步複寫完整配置實戰:雙主架構步驟詳解
Copyright ©
程式碼之家 All Rights Reserved