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

Linux Oracle 自動啟動配置與 11g+ Data Pump 匯入匯出實戰

     編輯:Oracle 資料庫相關知識

涵蓋 Linux 下 Oracle 開機自啟設定、11g 必用 Data Pump 替代傳統 exp/imp、共享記憶體不足 (ORA-00845) 與鎖定檔殘留 (ORA-01102) 兩大安裝/啟動常見錯誤排查。

一、Linux 開機自動啟動 Oracle

1. 修改 /etc/oratab 啟用 dbstart/dbshut

# 格式: SID:ORACLE_HOME:Y|N
# 將最後一欄改為 Y
orcl:/u01/app/oracle/product/19.0.0/dbhome_1:Y

2. 編輯 /etc/rc.d/rc.local(或 systemd 服務)

su - oracle -c "/u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl start"
su - oracle -c "/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbstart"

建議:生產環境改用 systemd 服務單元,支援依賴順序與日誌管理。

3. 重啟驗證

reboot
# 開機後確認
ps -ef | grep pmon
lsnrctl status

二、Oracle 11g+ 必須使用 Data Pump (expdp/impdp)

11g 空表預設不分配段(DEFERRED_SEGMENT_CREATION=TRUE),傳統 exp 會略過空表,導致結構遺失。Data Pump 為 Server 端平行處理,支援壓縮、加密、網路鏈路匯入。

expdp 完整流程

-- 1. 建立目錄物件
CREATE DIRECTORY dmpdir AS '/u01/backup';
GRANT READ, WRITE ON DIRECTORY dmpdir TO system;

-- 2. 匯出
expdp system/oracle@orcl directory=dmpdir dumpfile=full_%U.dmp logfile=exp_full.log full=y parallel=4 compression=all

impdp 完整流程(含綱要重對應)

-- 1. 目標端建立目錄(同路徑或不同路徑均可)
CREATE DIRECTORY dmpdir AS '/u01/backup';
GRANT READ, WRITE ON DIRECTORY dmpdir TO system;

-- 2. 匯入
impdp system/oracle@orcl directory=dmpdir dumpfile=full_01.dmp logfile=imp_full.log remap_schema=scott:newuser table_exists_action=replace

同機器操作:目標端已有目錄物件與權限,可省略建立步驟。

三、常見安裝/啟動錯誤排查

1. ORA-00845: MEMORY_TARGET not supported on this system

原因:/dev/shm 共享記憶體小於 MEMORY_TARGET。

# 查看目前大小
df -h /dev/shm

# 永久調大至 2G(視實體記憶體而定)
vi /etc/fstab
# 修改或新增:
tmpfs /dev/shm tmpfs defaults,size=2048M 0 0

# 立即生效
mount -o remount /dev/shm

2. ORA-01102: cannot mount database in EXCLUSIVE mode

原因:殘留鎖定檔 lk*。

cd $ORACLE_HOME/dbs
fuser -u lk*      # 查看佔用進程
fuser -k lk*      # 強制釋放
# 或直接刪除
rm -f lk*

檔案權限檢查清單

  • 目錄物件對應 OS 路徑擁有者為 oracle:oinstall,權限 775。
  • .dmp、.log 檔案可被 oracle 讀寫。
  • 服務名稱 SERVICE_NAME = INSTANCE_NAME(單實例環境)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved