涵蓋 Linux 下 Oracle 開機自啟設定、11g 必用 Data Pump 替代傳統 exp/imp、共享記憶體不足 (ORA-00845) 與鎖定檔殘留 (ORA-01102) 兩大安裝/啟動常見錯誤排查。
# 格式: SID:ORACLE_HOME:Y|N
# 將最後一欄改為 Y
orcl:/u01/app/oracle/product/19.0.0/dbhome_1:Y
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 服務單元,支援依賴順序與日誌管理。
reboot
# 開機後確認
ps -ef | grep pmon
lsnrctl status
11g 空表預設不分配段(DEFERRED_SEGMENT_CREATION=TRUE),傳統 exp 會略過空表,導致結構遺失。Data Pump 為 Server 端平行處理,支援壓縮、加密、網路鏈路匯入。
-- 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
-- 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
同機器操作:目標端已有目錄物件與權限,可省略建立步驟。
原因:/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
原因:殘留鎖定檔 lk*。
cd $ORACLE_HOME/dbs
fuser -u lk* # 查看佔用進程
fuser -k lk* # 強制釋放
# 或直接刪除
rm -f lk*
oracle:oinstall,權限 775。.dmp、.log 檔案可被 oracle 讀寫。SERVICE_NAME = INSTANCE_NAME(單實例環境)。