初識 Oracle,首先要搞清兩個「超級用戶」—— `SYS` 與 `SYSTEM` 的權限邊界、默認密碼、登錄身份區別,掌握密碼修改方法,熟悉 `SQL*Plus` 基礎交互,並學會使用圖形化工具 `Navicat` 高效連接管理。本文為零基礎入門者提供圖文並茂的實戰指南。
| 屬性 | SYS | SYSTEM |
|---|---|---|
| 角色定位 | 超級用戶,擁有最高權限 | 系統管理員,日常運維主力 |
| 擁有角色 | `DBA`、`SYSDBA`、`SYSOPER` | `DBA`、`SYSOPER` |
| 核心特權 | 創建數據庫 (`CREATE DATABASE`)、掛載/打開/關閉數據庫、備份恢復核心操作 | 創建用戶/表空間、管理對象、監控性能、備份恢復輔助操作,**無創建數據庫權限** |
| 默認密碼 (安裝時指定,舊版本默認) | `change_on_install` | `manager` |
| 登錄身份選項 | `AS SYSDBA` (最高)、`AS SYSOPER` (運維)、`NORMAL` (極少用) | `AS SYSOPER`、`NORMAL` (推薦日常運維用 NORMAL + DBA 角色) |
| 模式對象所有者 | 數據字典基表 (`SYS.*`)、核心包 (`DBMS_*`、`SYS.*`) | 管理工具表、統計信息表、部分應用對象 |
| 安全建議 | 嚴禁業務應用使用;僅 DBA 核心維護使用;強制複雜密碼;審計所有登錄 | 日常運維首選;可創建具體權限的運維賬號替代;定期輪換密碼 |
安裝完成後**首要任務**修改默認弱密碼。
C:\> sqlplus /nolog SQL> CONN / AS SYSDBA -- 或 CONN sys/old_password AS SYSDBA Connected. SQL> ALTER USER sys IDENTIFIED BY "NewComplexPass#123"; User altered. SQL> ALTER USER system IDENTIFIED BY "NewComplexPass#456"; User altered.
# Linux/Unix $ORACLE_HOME/bin/orapwd file=$ORACLE_HOME/dbs/orapwORCL password=NewSysPassword entries=10 force=y # Windows %ORACLE_HOME%\bin\orapwd file=%ORACLE_HOME%\database\PWDORCL.ora password=NewSysPassword entries=10 force=y -- 然後以 SYSDBA 身份連接 (OS 認證) 修改 SYSTEM 密碼 sqlplus / as sysdba ALTER USER system IDENTIFIED BY "NewSystemPass";
-- 創建驗證函數 (長度、大小寫、數字、特殊字符、不含用戶名) CREATE OR REPLACE FUNCTION verify_complexity ( username VARCHAR2, password VARCHAR2, old_password VARCHAR2 ) RETURN BOOLEAN IS ... -- 內部邏輯檢查 -- 創建 Profile 綁定函數 CREATE PROFILE secure_profile LIMIT PASSWORD_VERIFY_FUNCTION verify_complexity PASSWORD_LIFE_TIME 90 PASSWORD_GRACE_TIME 7 FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TIME 1/24; -- 1小時鎖定 -- 分配給 SYS/SYSTEM (需謹慎,可能影響啟動腳本) ALTER USER sys PROFILE secure_profile; ALTER USER system PROFILE secure_profile;
| 命令 | 作用 | 示例 |
|---|---|---|
| `sqlplus /nolog` | 無登錄啟動 | 進入後再 `CONN` |
| `CONN user/pass[@tns]` | 連接數據庫 | `CONN scott/tiger@ORCL` |
| `CONN / AS SYSDBA` | OS 認證以 SYSDBA 登錄 | 需 OS 用戶在 `ORA_DBA` 組 |
| `SHOW USER` | 顯示當前用戶 | `USER is "SCOTT"` |
| `SET LINESIZE 200` | 設置行寬 | 防止換行亂碼 |
| `SET PAGESIZE 50` | 設置頁行數 | 減少重複表頭 |
| `SET AUTOTRACE ON` | 顯示執行計劃/統計 | 調優必備 |
| `SET TIMING ON` | 顯示執行時間 | 性能分析 |
| `DESC table_name` | 描述表結構 | 列名、類型、可空性 |
| `EDIT` | 調用編輯器修改緩衝區 SQL | 定義 `EDITOR=notepad++` |
| `/` 或 `RUN` | 執行緩衝區最近 SQL | |
| `EXIT` / `QUIT` | 退出 SQL*Plus | `EXIT` 提交事務,`QUIT` 回滾 |
從認識 `SYS`/`SYSTEM` 開始,到掌握 `SQL*Plus` 與 `Navicat`,完成了 Oracle 入門的「儀式」。真正的旅程在於每天寫 SQL、讀計劃、調優化、處理故障、自動化運維。建議建立個人知識庫,記錄每個報錯、每個調優案例、每個最佳實踐,厚積薄發,方能成為資深 DBA 或數據架構師。