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

Oracle 常用命令大全:啟動關閉、資料字典、備份腳本、權限管理、SQL*Plus 技巧

     編輯:Oracle 資料庫相關知識

Oracle DBA 日常運維高頻指令彙總:實例啟動關閉模式、資料字典查詢技巧、邏輯備份排程腳本、會話管理、SQL*Plus 編輯技巧、DDL/DML/DCL 常用語法、Schema 物件操作。

一、實例啟動與關閉

單機環境

su - oracle
svrmgrl
SVRMGR> CONNECT INTERNAL
SVRMGR> STARTUP
SVRMGR> QUIT

# 關閉
SVRMGR> SHUTDOWN

Oracle 9i+ SQL*Plus 方式

sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> STARTUP

八種啟動模式

模式指令用途
NOMOUNTSTARTUP NOMOUNT重建控制檔、建立資料庫
MOUNTSTARTUP MOUNT歸檔設定、媒體恢復、離線資料檔
OPENSTARTUP OPEN正常業務存取
RESTRICTSTARTUP RESTRICT僅限 RESTRICTED SESSION 權限用戶
FORCESTARTUP FORCE強制關閉後重啟
PFILE 指定STARTUP PFILE='path'參數檔異動後啟動
EXCLUSIVESTARTUP EXCLUSIVE叢集環境單節點獨佔

二、資料字典高效查詢

-- 查找含 index 的字典表
SELECT * FROM dictionary WHERE INSTR(comments, 'index') > 0;

-- 查 USER_INDEXES 欄位含義
SELECT column_name, comments FROM dict_columns WHERE table_name = 'USER_INDEXES';

常用字典分類速查

類別核心視圖典型查詢
用戶USER_USERS, USER_ROLE_PRIVS, USER_SYS_PRIVS預設表空間、角色、系統權限
表USER_TABLES, USER_OBJECTS, USER_SEGMENTS表清單、建立時間、大小
索引USER_INDEXES, USER_IND_COLUMNS索引類型、欄位、大小
序列USER_SEQUENCESLAST_NUMBER 當前值
視圖USER_VIEWSTEXT 欄位查看定義 SQL
同義詞USER_SYNONYMS
約束USER_CONSTRAINTS, USER_CONS_COLUMNS主鍵、外鍵、檢查約束
PL/SQLUSER_OBJECTS (TYPE), ALL_SOURCE狀態、原始碼

三、資料庫狀態查詢 SQL

-- 表空間大小
SELECT tablespace_name, ROUND(SUM(bytes)/1024/1024,0) size_mb
FROM dba_data_files GROUP BY tablespace_name;

-- 表空間使用率
SELECT a.tablespace_name, a.bytes total, b.bytes used, c.bytes free,
       ROUND(b.bytes*100/a.bytes,1) pct_used
FROM sys.sm$ts_avail a, sys.sm$ts_used b, sys.sm$ts_free c
WHERE a.tablespace_name=b.tablespace_name AND a.tablespace_name=c.tablespace_name;

-- 控制檔/日誌檔
SELECT name FROM v$controlfile;
SELECT member FROM v$logfile;

-- 版本/建立時間/歸檔模式
SELECT version FROM product_component_version WHERE SUBSTR(product,1,6)='Oracle';
SELECT created, log_mode FROM v$database;

四、會話管理

-- 查看連線
SELECT username, sid, serial# FROM v$session;

-- 殺掉會話
ALTER SYSTEM KILL SESSION 'sid,serial#';

-- 找不到則查 OS 進程
SELECT p.spid FROM v$session s, v$process p WHERE s.sid=21 AND s.paddr=p.addr;
-- OS: kill -9 spid

五、SQL*Plus 編輯技巧

  • L 列出緩衝區
  • n 設定第 n 行为當前行
  • C/舊/新 替換當前行文字
  • I 插入新行
  • EDIT file.sql 呼叫外部編輯器(DEFINE _EDITOR=vi)
  • @file.sql / START file.sql 執行腳本

六、邏輯備份排程腳本

# 完全備份 exp_comp.sh
rq=`date +"%m%d"`
su - oracle -c "exp system/manager full=y inctype=complete file=/oracle/export/db_comp$rq.dmp"

# 累積備份 exp_cumu.sh
su - oracle -c "exp system/manager full=y inctype=cumulative file=/oracle/export/db_cumu$rq.dmp"

# 增量備份 exp_incr.sh
su - oracle -c "exp system/manager full=y inctype=incremental file=/oracle/export/db_incr$rq.dmp"

# crontab -e
0 2 1 * * /oracle/exp_comp.sh
30 2 * * 0-5 /oracle/exp_incr.sh
45 2 * * 6 /oracle/exp_cumu.sh

七、DDL/DML/DCL/Schema 物件速查

-- 建表
CREATE TABLE t (id NUMBER PRIMARY KEY, name VARCHAR2(50), dt DATE DEFAULT SYSDATE);

-- 增刪改欄位
ALTER TABLE t ADD (age NUMBER(3));
ALTER TABLE t MODIFY (name VARCHAR2(100));
ALTER TABLE t DROP COLUMN age;

-- 索引
CREATE INDEX idx_t_name ON t(name);
ALTER INDEX idx_t_name REBUILD;

-- 視圖/同義詞/DB Link
CREATE VIEW v AS SELECT * FROM t WHERE id > 100;
CREATE SYNONYM syn_t FOR t;
CREATE DATABASE LINK dbl CONNECT TO u IDENTIFIED BY p USING 'tns_str';

-- 權限
GRANT SELECT, INSERT ON t TO user1;
REVOKE INSERT ON t FROM user1;

八、實用查詢片段

-- 錯誤代碼統計
SELECT error_code, COUNT(*) FROM sm_histable0513 GROUP BY error_code ORDER BY error_code;

-- 話單統計
SELECT SUM(successcount) FROM tbl_middlemt0411 WHERE servicetype2=111;
SELECT servicetype, SUM(successcount) FROM tbl_middlemt0411 GROUP BY servicetype;

收藏此頁,DBA 日常操作秒查手冊。

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