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

Oracle 核心運維命令大全:啟停、表空間、用戶、權限、Data Pump 導入導出

     編輯:Oracle 資料庫相關知識

整理 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;

四、Data Pump (EXPDP/IMPDP) 核心範例

1. 導出

-- 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

2. 導入

-- 同 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/IMP 兼容範例(僅限舊版本互通)

-- 導出指定表
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 的必經之路。

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