整理 Oracle DBA 日常高頻操作命令,涵蓋實例啟停、表空間/用戶/權限管理、傳統 EXP/IMP 與 Data Pump 導入導出,作為隨手查閱的速查手冊。
# 切換 oracle 用戶
su - oracle
# 啟動監聽
lsnrctl start
lsnrctl status
lsnrctl stop
# SQL*Plus 啟動/關閉實例
sqlplus /nolog
CONN / AS SYSDBA
STARTUP -- 正常啟動
STARTUP MOUNT -- 掛載模式(備份/恢復/修改歸檔模式)
STARTUP NOMOUNT -- 僅啟動實例(建庫/恢復控制檔)
SHUTDOWN IMMEDIATE -- 正常關閉(等待事務提交、斷開會話)
SHUTDOWN ABORT -- 緊急關閉(實例崩潰恢復啟動較慢)
-- 切換用戶
CONN username/password
-- 查看當前用戶下所有表
SELECT * FROM user_tables;
-- 查看實例名稱
SELECT instance_name FROM v$instance;
-- 查看所有用戶
SELECT username FROM dba_users;
-- 查看版本
SELECT * FROM v$version;
-- 建立用戶並授權 DBA(測試環境)
CREATE USER ts IDENTIFIED BY ts;
GRANT DBA TO ts;
-- 查看資料檔位置
SELECT * FROM dba_data_files;
SELECT * FROM dba_directories;
-- 建立表空間(自動擴展、本地管理)
CREATE TABLESPACE bp_oracle
LOGGING
DATAFILE '/u02/oradata/devdb/bp_oracle.dbf' SIZE 100M
AUTOEXTEND ON NEXT 50M MAXSIZE 200M
EXTENT MANAGEMENT LOCAL;
-- 建立用戶並指定預設表空間
CREATE USER bp_oracle IDENTIFIED BY bp_oracle
DEFAULT TABLESPACE bp_oracle;
-- 核心權限授予(生產環境遵循最小權限)
GRANT CONNECT, RESOURCE TO bp_oracle;
-- 若需建立視圖
GRANT CREATE VIEW TO bp_oracle;
-- 授予目錄讀寫(Data Pump 必備)
GRANT READ, WRITE ON DIRECTORY dump_dir TO bp_oracle;
-- 若目錄不存在
CREATE DIRECTORY dump_dir AS '/u01/dpdump';
-- 查看目錄
SELECT * FROM dba_directories;
-- Schema 模式導出(含版本參數相容舊庫)
expdp bp_oracle/bp_oracle \
SCHEMAS=bp_oracle \
DIRECTORY=dump_dir \
DUMPFILE=bp_oracle_20240115.dmp \
LOGFILE=bp_oracle_20240115.log \
VERSION=12.2 \
PARALLEL=4 \
COMPRESSION=ALL
-- 全庫導出
expdp system/manager \
FULL=Y \
DIRECTORY=dump_dir \
DUMPFILE=full_20240115.dmp \
LOGFILE=full_20240115.log
-- 同 Schema 導入
impdp bp_oracle/bp_oracle \
DIRECTORY=dump_dir \
DUMPFILE=bp_oracle_20240115.dmp \
LOGFILE=imp_20240115.log \
TABLE_EXISTS_ACTION=SKIP
-- 跨 Schema/表空間映射導入
impdp bp_oracle/bp_oracle \
DIRECTORY=dump_dir \
DUMPFILE=other_schema.dmp \
LOGFILE=imp_map.log \
REMAP_SCHEMA=src_user:bp_oracle \
REMAP_TABLESPACE=src_ts:bp_oracle \
TABLE_EXISTS_ACTION=REPLACE
-- 導出指定表
exp nmswxt_mhwz/nmswxt_mhwz \
FILE=/home/oracle/dmp/nmswxt_mhwz_news_content.dmp \
TABLES=table1,table2,table3
-- 注意:TABLES 後無括號,不可與 OWNER 同時使用
-- 導入並映射用戶
imp nmswxt_mhzz/nmswxt_mhzz \
FILE=/home/oracle/dmp/nmswxt_mhwz_news_content.dmp \
FROMUSER=nmswxt_mhwz \
TOUSER=nmswxt_mhzz
-- 刪除表空間含資料檔
DROP TABLESPACE bp_oracle INCLUDING CONTENTS AND DATAFILES;
-- 刪除用戶級聯刪除所有物件
DROP USER bp_oracle CASCADE;
-- 修改密碼
ALTER USER bp_oracle IDENTIFIED BY new_password;
.sh + .sql 組合,配合 crontab 定時備份。DATE=$(date +%Y%m%d_%H%M) 變數自動命名 Dump/Log。RMAN BACKUP DATABASE PLUS ARCHIVELOG 並驗證 RESTORE VALIDATE。熟練掌握這些命令是 DBA 入門門檻;將其自動化、參數化、監控化,才是邁向高級 DBA 的必經之路。