本手冊整理自實戰運維經驗,涵蓋實例啟停、記憶體管理、表空間操作、用戶權限、監聽配置、歸檔模式、RMAN 備份、Data Pump 匯入匯出等 10 大類 276 條高頻命令。建議收藏離線備查。
-- 啟動模式
STARTUP NOMOUNT; -- 僅啟動實例,分配 SGA,啟動後台進程
STARTUP MOUNT; -- 掛載控制文件,適合備份/恢復/重命名文件
STARTUP; -- 完整啟動(默認 OPEN),允許用戶訪問
STARTUP RESTRICT; -- 僅允許 RESTRICTED SESSION 權限用戶
STARTUP FORCE; -- 強制重啟(相當於 SHUTDOWN ABORT + STARTUP)
STARTUP OPEN RECOVER; -- 啟動並自動介質恢復
-- 關閉模式
SHUTDOWN NORMAL; -- 等待會話/事務結束,做檢查點,乾淨關閉
SHUTDOWN TRANSACTIONAL; -- 不等會話,等事務結束
SHUTDOWN IMMEDIATE; -- 不等會話/事務,回滾未提交,做檢查點(生產首選)
SHUTDOWN ABORT; -- 粗暴終止,啟動時需實例恢復(緊急才用)
-- 狀態查詢
SELECT open_mode FROM v$database; -- READ WRITE / MOUNTED / READ ONLY
SELECT status, instance_name FROM v$instance;
SELECT * FROM v$version; -- 版本詳情
-- 查看 SGA 組件
SHOW SGA;
SELECT name, ROUND(bytes/1024/1024,2) AS mb FROM v$sga;
-- 共享池、緩存、大池等參數
SHOW PARAMETER shared_pool_size;
SHOW PARAMETER db_cache_size;
SHOW PARAMETER large_pool_size;
SELECT * FROM v$sgastat WHERE pool = 'shared pool' ORDER BY bytes DESC;
-- PGA
SHOW PARAMETER pga_aggregate_target;
SELECT * FROM v$pgastat;
-- 動態調整(SCOPE=MEMORY 即時生效,SPFILE 持久化,BOTH 兩者)
ALTER SYSTEM SET shared_pool_size = 80M SCOPE=BOTH;
ALTER SYSTEM SET db_cache_size = 128M SCOPE=SPFILE;
ALTER SYSTEM SET pga_aggregate_target = 2G SCOPE=BOTH;
-- 控制文件多路徑
ALTER SYSTEM SET control_files =
'/u01/oradata/ctl1.ctl', '/u02/oradata/ctl2.ctl' SCOPE=SPFILE;
-- 需 NOMOUNT 狀態下修改,修改後 STARTUP FORCE
-- 重做日志組管理
ALTER DATABASE ADD LOGFILE GROUP 4 ('/u01/oradata/redo4.log') SIZE 100M;
ALTER DATABASE ADD LOGFILE MEMBER '/u02/oradata/redo4b.log' TO GROUP 4;
ALTER DATABASE DROP LOGFILE GROUP 4;
ALTER SYSTEM SWITCH LOGFILE; -- 手動切換
ALTER SYSTEM CHECKPOINT; -- 強制檢查點
-- 歸檔模式切換(需 MOUNT 狀態)
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG; -- 開啟歸檔
ALTER DATABASE OPEN;
-- 歸檔目的地
ALTER SYSTEM SET log_archive_dest_1 = 'LOCATION=/u01/arch' SCOPE=BOTH;
ALTER SYSTEM SET log_archive_dest_2 = 'LOCATION=/u02/arch' SCOPE=BOTH;
ALTER SYSTEM SET log_archive_format = 'arch_%t_%s_%r.dbf' SCOPE=SPFILE;
-- 快速恢復區 (FRA)
ALTER SYSTEM SET db_recovery_file_dest = '/u01/fra' SCOPE=BOTH;
ALTER SYSTEM SET db_recovery_file_dest_size = 50G SCOPE=BOTH;
-- 建立表空間 (ASSM + LOCAL + AUTOEXTEND)
CREATE BIGFILE TABLESPACE tbs_data
DATAFILE '/u01/oradata/tbs_data01.dbf' SIZE 10G
AUTOEXTEND ON NEXT 1G MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT AUTO;
-- 擴容/自動擴展
ALTER DATABASE DATAFILE '/u01/oradata/tbs_data01.dbf' RESIZE 20G;
ALTER DATABASE DATAFILE '/u01/oradata/tbs_data01.dbf' AUTOEXTEND ON NEXT 5G MAXSIZE UNLIMITED;
-- 臨時表空間
CREATE TEMPORARY TABLESPACE temp2
TEMPFILE '/u01/oradata/temp2_01.dbf' SIZE 5G
AUTOEXTEND ON NEXT 1G MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
-- UNDO 表空間
CREATE UNDO TABLESPACE undo2
DATAFILE '/u01/oradata/undo2_01.dbf' SIZE 10G;
ALTER SYSTEM SET undo_tablespace = undo2;
-- 空間監控
SELECT tablespace_name, ROUND(SUM(bytes)/1024/1024,2) AS total_mb
FROM dba_data_files GROUP BY tablespace_name;
SELECT tablespace_name, ROUND(SUM(bytes)/1024/1024,2) AS free_mb
FROM dba_free_space GROUP BY tablespace_name;
-- 刪除表空間含數據文件
DROP TABLESPACE tbs_data INCLUDING CONTENTS AND DATAFILES;
-- 建用戶指定預設/臨時表空間 + 配額
CREATE USER app_user IDENTIFIED BY "Complex#Pass123"
DEFAULT TABLESPACE tbs_data
TEMPORARY TABLESPACE temp
QUOTA UNLIMITED ON tbs_data;
-- 常用授權
GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SEQUENCE TO app_user;
GRANT UNLIMITED TABLESPACE TO app_user; -- 12c+ 建議改用 QUOTA
-- 角色管理
CREATE ROLE app_read_only;
GRANT SELECT ON schema1.table1 TO app_read_only;
GRANT app_read_only TO app_user;
-- 同義詞
CREATE PUBLIC SYNONYM pub_tab FOR schema1.table1;
DROP PUBLIC SYNONYM pub_tab;
-- 鎖定/解鎖/過期密碼
ALTER USER app_user ACCOUNT LOCK;
ALTER USER app_user ACCOUNT UNLOCK;
ALTER USER app_user PASSWORD EXPIRE;
LSNRCTL START [listener_name]
LSNRCTL STOP [listener_name]
LSNRCTL STATUS
LSNRCTL SERVICES
-- 動態註冊
ALTER SYSTEM REGISTER;
-- 客戶端測試
TNSPING orcl
SQLPLUS user/pwd@//host:1521/service_name -- EZCONNECT 免 TNS
RMAN> CONNECT TARGET /
-- 配置持久化
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
CONFIGURE DEVICE TYPE DISK PARALLELISM 2;
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/backup/rman/%U.bak' MAXPIECESIZE 4G;
-- 全量備份
BACKUP DATABASE PLUS ARCHIVELOG;
BACKUP AS COMPRESSED BACKUPSET DATABASE; -- 壓縮備份
-- 增量備份
BACKUP INCREMENTAL LEVEL 0 DATABASE; -- 基準
BACKUP INCREMENTAL LEVEL 1 DATABASE; -- 差異
BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;-- 累積
-- 列出/刪除
LIST BACKUP SUMMARY;
DELETE OBSOLETE; -- 依保留策略刪除
DELETE NOPROMPT BACKUPSET 123;
-- 恢復表空間
RUN {
SQL 'ALTER TABLESPACE users OFFLINE IMMEDIATE';
RESTORE TABLESPACE users;
RECOVER TABLESPACE users;
SQL 'ALTER TABLESPACE users ONLINE';
}
-- 恢復控制文件 + 數據庫
STARTUP NOMOUNT;
RESTORE CONTROLFILE FROM AUTOBACKUP;
ALTER DATABASE MOUNT;
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN RESETLOGS;
-- 建立目錄物件
CREATE DIRECTORY dpump_dir AS '/u01/dpump';
GRANT READ, WRITE ON DIRECTORY dpump_dir TO app_user;
-- 匯出
expdp app_user/pwd@orcl \
DIRECTORY=dpump_dir \
DUMPFILE=app_%U.dmp \
LOGFILE=app_exp.log \
SCHEMAS=app_user \
PARALLEL=4 \
COMPRESSION=ALL \
JOB_NAME=app_exp_job
-- 匯入(含重映射)
impdp system/pwd@orcl \
DIRECTORY=dpump_dir \
DUMPFILE=app_01.dmp \
LOGFILE=app_imp.log \
REMAP_SCHEMA=app_user:app_user_test \
REMAP_TABLESPACE=tbs_data:tbs_data_test \
TABLE_EXISTS_ACTION=REPLACE
-- 全庫導出
exp system/pwd FILE=full.dmp FULL=Y DIRECT=Y LOG=full.log FEEDBACK=10000
-- 導出單用戶
exp system/pwd FILE=owner.dmp OWNER=scott DIRECT=Y LOG=owner.log
-- 導入
imp system/pwd FILE=owner.dmp FROMUSER=scott TOUSER=scott LOG=imp.log
-- 查詢失效物件
SELECT owner, object_name, object_type FROM dba_objects WHERE status = 'INVALID';
-- 並行重編譯
EXEC UTL_RECOMP.RECOMP_PARALLEL(4);
-- 查詢字符集
SELECT * FROM database_properties WHERE property_name LIKE 'NLS_CHAR%';
-- 或
SELECT value$ FROM props$ WHERE name = 'NLS_CHARACTERSET';
| 視圖 | 用途 |
|---|---|
| v$instance | 實例狀態、啟動時間、版本 |
| v$database | 數據庫模式、歸檔狀態、DBID |
| v$session | 當前會話、SQL_ID、等待事件 |
| v$process | 服務器進程、PID、SPID |
| v$sga / v$sgastat | SGA 總量/組件明細 |
| v$pgastat | PGA 使用統計 |
| v$datafile / v$logfile / v$controlfile | 物理文件路徑狀態 |
| v$recover_file | 需恢復的文件 |
| v$archive_dest | 歸檔目的地狀態 |
將本手冊存入運行手冊庫,關鍵時刻「Ctrl+F 即得」,運維效能提升 80% 以上。