首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle DBA 必備 276 條核心命令速查手冊:從實例管理到備份恢復的完整清單

     編輯:Oracle 資料庫相關知識

使用指南

本手冊整理自實戰運維經驗,涵蓋實例啟停、記憶體管理、表空間操作、用戶權限、監聽配置、歸檔模式、RMAN 備份、Data Pump 匯入匯出等 10 大類 276 條高頻命令。建議收藏離線備查。

目錄導航

  1. 實例啟停與狀態查詢
  2. 記憶體結構(SGA/PGA)監控與調整
  3. 控制文件、重做日志、歸檔管理
  4. 表空間與數據文件全生命周期
  5. 用戶、權限、角色、同義詞管理
  6. 監聽器配置與網路診斷
  7. RMAN 備份恢復核心命令
  8. Data Pump (expdp/impdp) 實戰範本
  9. 傳統 exp/imp 遷移指令
  10. 失效物件重編譯與字符集查詢

1. 實例啟停與狀態查詢

-- 啟動模式
STARTUP NOMOUNT;        -- 僅啟動實例,分配 SGA,啟動後台進程
STARTUP MOUNT;          -- 掛載控制文件,適合備份/恢復/重命名文件
STARTUP;                -- 完整啟動(默認 OPEN),允許用戶訪問
STARTUP RESTRICT;       -- 僅允許 RESTRICTED SESSION 權限用戶
STARTUP FORCE;          -- 強制重啟(相當於 SHUTDOWN ABORT + STARTUP)
STARTUP OPEN RECOVER;   -- 啟動並自動介質恢復

-- 關閉模式
SHUTDOWN NORMAL;        -- 等待會話/事務結束,做檢查點,乾淨關閉
SHUTDOWN TRANSACTIONAL; -- 不等會話,等事務結束
SHUTDOWN IMMEDIATE;     -- 不等會話/事務,回滾未提交,做檢查點(生產首選)
SHUTDOWN ABORT;         -- 粗暴終止,啟動時需實例恢復(緊急才用)

-- 狀態查詢
SELECT open_mode FROM v$database;      -- READ WRITE / MOUNTED / READ ONLY
SELECT status, instance_name FROM v$instance;
SELECT * FROM v$version;               -- 版本詳情

2. SGA/PGA 監控與動態調整

-- 查看 SGA 組件
SHOW SGA;
SELECT name, ROUND(bytes/1024/1024,2) AS mb FROM v$sga;

-- 共享池、緩存、大池等參數
SHOW PARAMETER shared_pool_size;
SHOW PARAMETER db_cache_size;
SHOW PARAMETER large_pool_size;
SELECT * FROM v$sgastat WHERE pool = 'shared pool' ORDER BY bytes DESC;

-- PGA
SHOW PARAMETER pga_aggregate_target;
SELECT * FROM v$pgastat;

-- 動態調整(SCOPE=MEMORY 即時生效,SPFILE 持久化,BOTH 兩者)
ALTER SYSTEM SET shared_pool_size = 80M SCOPE=BOTH;
ALTER SYSTEM SET db_cache_size = 128M SCOPE=SPFILE;
ALTER SYSTEM SET pga_aggregate_target = 2G SCOPE=BOTH;

3. 控制文件、重做日志、歸檔管理

-- 控制文件多路徑
ALTER SYSTEM SET control_files = 
  '/u01/oradata/ctl1.ctl', '/u02/oradata/ctl2.ctl' SCOPE=SPFILE;
-- 需 NOMOUNT 狀態下修改,修改後 STARTUP FORCE

-- 重做日志組管理
ALTER DATABASE ADD LOGFILE GROUP 4 ('/u01/oradata/redo4.log') SIZE 100M;
ALTER DATABASE ADD LOGFILE MEMBER '/u02/oradata/redo4b.log' TO GROUP 4;
ALTER DATABASE DROP LOGFILE GROUP 4;
ALTER SYSTEM SWITCH LOGFILE;          -- 手動切換
ALTER SYSTEM CHECKPOINT;              -- 強制檢查點

-- 歸檔模式切換(需 MOUNT 狀態)
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;            -- 開啟歸檔
ALTER DATABASE OPEN;

-- 歸檔目的地
ALTER SYSTEM SET log_archive_dest_1 = 'LOCATION=/u01/arch' SCOPE=BOTH;
ALTER SYSTEM SET log_archive_dest_2 = 'LOCATION=/u02/arch' SCOPE=BOTH;
ALTER SYSTEM SET log_archive_format = 'arch_%t_%s_%r.dbf' SCOPE=SPFILE;

-- 快速恢復區 (FRA)
ALTER SYSTEM SET db_recovery_file_dest = '/u01/fra' SCOPE=BOTH;
ALTER SYSTEM SET db_recovery_file_dest_size = 50G SCOPE=BOTH;

4. 表空間與數據文件全生命周期

-- 建立表空間 (ASSM + LOCAL + AUTOEXTEND)
CREATE BIGFILE TABLESPACE tbs_data
  DATAFILE '/u01/oradata/tbs_data01.dbf' SIZE 10G
  AUTOEXTEND ON NEXT 1G MAXSIZE UNLIMITED
  EXTENT MANAGEMENT LOCAL AUTOALLOCATE
  SEGMENT SPACE MANAGEMENT AUTO;

-- 擴容/自動擴展
ALTER DATABASE DATAFILE '/u01/oradata/tbs_data01.dbf' RESIZE 20G;
ALTER DATABASE DATAFILE '/u01/oradata/tbs_data01.dbf' AUTOEXTEND ON NEXT 5G MAXSIZE UNLIMITED;

-- 臨時表空間
CREATE TEMPORARY TABLESPACE temp2
  TEMPFILE '/u01/oradata/temp2_01.dbf' SIZE 5G
  AUTOEXTEND ON NEXT 1G MAXSIZE UNLIMITED
  EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;

-- UNDO 表空間
CREATE UNDO TABLESPACE undo2
  DATAFILE '/u01/oradata/undo2_01.dbf' SIZE 10G;
ALTER SYSTEM SET undo_tablespace = undo2;

-- 空間監控
SELECT tablespace_name, ROUND(SUM(bytes)/1024/1024,2) AS total_mb
FROM dba_data_files GROUP BY tablespace_name;

SELECT tablespace_name, ROUND(SUM(bytes)/1024/1024,2) AS free_mb
FROM dba_free_space GROUP BY tablespace_name;

-- 刪除表空間含數據文件
DROP TABLESPACE tbs_data INCLUDING CONTENTS AND DATAFILES;

5. 用戶、權限、角色、同義詞

-- 建用戶指定預設/臨時表空間 + 配額
CREATE USER app_user IDENTIFIED BY "Complex#Pass123"
  DEFAULT TABLESPACE tbs_data
  TEMPORARY TABLESPACE temp
  QUOTA UNLIMITED ON tbs_data;

-- 常用授權
GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SEQUENCE TO app_user;
GRANT UNLIMITED TABLESPACE TO app_user;  -- 12c+ 建議改用 QUOTA

-- 角色管理
CREATE ROLE app_read_only;
GRANT SELECT ON schema1.table1 TO app_read_only;
GRANT app_read_only TO app_user;

-- 同義詞
CREATE PUBLIC SYNONYM pub_tab FOR schema1.table1;
DROP PUBLIC SYNONYM pub_tab;

-- 鎖定/解鎖/過期密碼
ALTER USER app_user ACCOUNT LOCK;
ALTER USER app_user ACCOUNT UNLOCK;
ALTER USER app_user PASSWORD EXPIRE;

6. 監聽器配置與網路診斷

LSNRCTL START [listener_name]
LSNRCTL STOP [listener_name]
LSNRCTL STATUS
LSNRCTL SERVICES

-- 動態註冊
ALTER SYSTEM REGISTER;

-- 客戶端測試
TNSPING orcl
SQLPLUS user/pwd@//host:1521/service_name   -- EZCONNECT 免 TNS

7. RMAN 備份恢復核心命令


RMAN> CONNECT TARGET /

-- 配置持久化
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
CONFIGURE DEVICE TYPE DISK PARALLELISM 2;
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/backup/rman/%U.bak' MAXPIECESIZE 4G;

-- 全量備份
BACKUP DATABASE PLUS ARCHIVELOG;
BACKUP AS COMPRESSED BACKUPSET DATABASE;  -- 壓縮備份

-- 增量備份
BACKUP INCREMENTAL LEVEL 0 DATABASE;           -- 基準
BACKUP INCREMENTAL LEVEL 1 DATABASE;           -- 差異
BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;-- 累積

-- 列出/刪除
LIST BACKUP SUMMARY;
DELETE OBSOLETE;           -- 依保留策略刪除
DELETE NOPROMPT BACKUPSET 123;

-- 恢復表空間
RUN {
  SQL 'ALTER TABLESPACE users OFFLINE IMMEDIATE';
  RESTORE TABLESPACE users;
  RECOVER TABLESPACE users;
  SQL 'ALTER TABLESPACE users ONLINE';
}

-- 恢復控制文件 + 數據庫
STARTUP NOMOUNT;
RESTORE CONTROLFILE FROM AUTOBACKUP;
ALTER DATABASE MOUNT;
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN RESETLOGS;

8. Data Pump 範本


-- 建立目錄物件
CREATE DIRECTORY dpump_dir AS '/u01/dpump';
GRANT READ, WRITE ON DIRECTORY dpump_dir TO app_user;

-- 匯出
expdp app_user/pwd@orcl \
  DIRECTORY=dpump_dir \
  DUMPFILE=app_%U.dmp \
  LOGFILE=app_exp.log \
  SCHEMAS=app_user \
  PARALLEL=4 \
  COMPRESSION=ALL \
  JOB_NAME=app_exp_job

-- 匯入(含重映射)
impdp system/pwd@orcl \
  DIRECTORY=dpump_dir \
  DUMPFILE=app_01.dmp \
  LOGFILE=app_imp.log \
  REMAP_SCHEMA=app_user:app_user_test \
  REMAP_TABLESPACE=tbs_data:tbs_data_test \
  TABLE_EXISTS_ACTION=REPLACE

9. 傳統 exp/imp 遷移指令


-- 全庫導出
exp system/pwd FILE=full.dmp FULL=Y DIRECT=Y LOG=full.log FEEDBACK=10000

-- 導出單用戶
exp system/pwd FILE=owner.dmp OWNER=scott DIRECT=Y LOG=owner.log

-- 導入
imp system/pwd FILE=owner.dmp FROMUSER=scott TOUSER=scott LOG=imp.log

10. 失效物件重編譯與字符集


-- 查詢失效物件
SELECT owner, object_name, object_type FROM dba_objects WHERE status = 'INVALID';

-- 並行重編譯
EXEC UTL_RECOMP.RECOMP_PARALLEL(4);

-- 查詢字符集
SELECT * FROM database_properties WHERE property_name LIKE 'NLS_CHAR%';
-- 或
SELECT value$ FROM props$ WHERE name = 'NLS_CHARACTERSET';

附:關鍵動態視圖速查

視圖用途
v$instance實例狀態、啟動時間、版本
v$database數據庫模式、歸檔狀態、DBID
v$session當前會話、SQL_ID、等待事件
v$process服務器進程、PID、SPID
v$sga / v$sgastatSGA 總量/組件明細
v$pgastatPGA 使用統計
v$datafile / v$logfile / v$controlfile物理文件路徑狀態
v$recover_file需恢復的文件
v$archive_dest歸檔目的地狀態

將本手冊存入運行手冊庫,關鍵時刻「Ctrl+F 即得」,運維效能提升 80% 以上。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved