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

Oracle 常見問題 12 題精選:安裝、版本、遷移、管理實用速查

     編輯:Oracle 資料庫基礎

12 題 Oracle 實戰高頻問題與標準答案

Q1:Oracle 安裝完成後的預設帳號密碼?

最佳實踐:安裝完成立即執行 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;

延伸實用查詢速查

帳號預設密碼備註
INTERNALORACLE8i 及以前,等同 SYS
SYSCHANGE_ON_INSTALL最高權限,**安裝後必改**
SYSTEMMANAGERDBA 管理帳號,**安裝後必改**
SCOTTTIGER範例結構,**生產環境建議鎖定/刪除**
SYSMANOEM_TEMPEnterprise Manager 管理帳號

總結

這 12 題涵蓋安裝、版本識別、工具演進、遷移概念、日常管理查詢。掌握這些基礎,能應付 80% 的初級運維面試與日常排查。進階 DBA 需深入:架構原理、效能調優、高可用架構、自動化運維、雲原生部署。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
需求SQL
當前連線 Session 數SELECT COUNT(*) FROM V$SESSION WHERE USERNAME IS NOT NULL;
長時間運行 SQLSELECT 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;