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

Oracle 常用 DDL/DCL 指令速查:表空間、使用者、匯入匯出、刪除物件完整範例

     編輯:Oracle 資料庫相關知識

整理 Oracle 資料庫日常運維最常用的建立、刪除、授權、匯入匯出指令,附關鍵參數說明與避坑提醒,適合 DBA 隨時查閱。

表空間管理

建立暫存表空間

CREATE TEMPORARY TABLESPACE zfmi_temp
TEMPFILE 'D:/oracle/oradata/zfmi/zfmi_temp.dbf'
SIZE 32M
AUTOEXTEND ON NEXT 32M MAXSIZE 2048M
EXTENT MANAGEMENT LOCAL;

關鍵:必須指定 TEMPFILE。

建立永久表空間

CREATE TABLESPACE zfmi
LOGGING
DATAFILE 'D:/oracle/oradata/zfmi/zfmi.dbf'
SIZE 100M
AUTOEXTEND ON NEXT 32M MAXSIZE 2048M
EXTENT MANAGEMENT LOCAL;

關鍵:必須指定 DATAFILE。

刪除表空間(含內容與資料檔)

DROP TABLESPACE zfmi INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
  • INCLUDING CONTENTS:刪除段內容。
  • AND DATAFILES:同步刪除 OS 層資料檔。
  • CASCADE CONSTRAINTS:連帶刪除參考此表空間表格的外鍵。

誤刪資料檔後的補救(9i 驗證可行)

SQLPLUS /NOLOG
CONN / AS SYSDBA
SHUTDOWN ABORT
STARTUP MOUNT
ALTER DATABASE DATAFILE '被刪檔案完整路徑' OFFLINE DROP;
ALTER DATABASE OPEN;
DROP TABLESPACE 表空間名 INCLUDING CONTENTS;

使用者與權限

建立使用者並指定預設/暫存表空間

CREATE USER zfmi IDENTIFIED BY zfmi
DEFAULT TABLESPACE zfmi
TEMPORARY TABLESPACE zfmi_temp;

授予 DBA 角色(含所有系統權限)

GRANT DBA TO zfmi;

刪除使用者及其所有物件

DROP USER zfmi CASCADE;

習慣加 CASCADE,否則使用者擁有物件時無法刪除。

匯入匯出(傳統 exp/imp,適用 10g 以前)

匯出範例

exp userid=system/manager file=full.dmp full=y log=exp.log
exp userid=scott/tiger file=scott.dmp tables=(emp,dept) grants=y indexes=y

匯入範例

imp userid=system/manager file=full.dmp full=y log=imp.log
imp userid=scott/tiger file=scott.dmp fromuser=scott touser=scott ignore=y

關鍵參數對照

參數說明預設
FULL全庫匯出/匯入N
OWNER / FROMUSER來源綱要-
TABLES指定表清單-
IGNORE忽略建立錯誤(匯入)N
GRANTS / INDEXES / CONSTRAINTS權限/索引/約束Y
ROWS是否匯入資料列Y
BUFFER緩衝區大小-
FILE匯出/匯入檔名EXPDAT.DMP
LOG日誌檔螢幕

Oracle 11g+ 必須改用 Data Pump (expdp/impdp)

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

-- 匯出
expdp scott/tiger@orcl directory=dmpdir dumpfile=scott.dmp logfile=exp.log

-- 匯入(含綱要重對應)
impdp scott/tiger@orcl directory=dmpdir dumpfile=scott.dmp logfile=imp.log REMAP_SCHEMA=scott:newuser

注意:11g 空表預設不匯出,需 INCLUDE=TABLE:"IN (SELECT table_name FROM user_tables)" 或改用 Data Pump。

常見錯誤快速查核

  • ORA-00845: MEMORY_TARGET not supported → 調大 /dev/shm(修改 /etc/fstab 加 size=2G 並 mount -o remount /dev/shm)。
  • ORA-01102: cannot mount database in EXCLUSIVE mode → 殘留鎖定檔,fuser -k lk* 釋放。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved