首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

Oracle 入門實戰:SYS/SYSTEM 權限差異、密碼修改、SQL*Plus 基礎與 Navicat 連接指南

     編輯:Oracle 教學

Oracle 入門實戰:SYS/SYSTEM 權限差異、密碼修改、SQL*Plus 基礎與 Navicat 連接指南

初識 Oracle,首先要搞清兩個「超級用戶」—— `SYS` 與 `SYSTEM` 的權限邊界、默認密碼、登錄身份區別,掌握密碼修改方法,熟悉 `SQL*Plus` 基礎交互,並學會使用圖形化工具 `Navicat` 高效連接管理。本文為零基礎入門者提供圖文並茂的實戰指南。

一、 SYS vs SYSTEM:權限與身份的本質區別

屬性SYSSYSTEM
角色定位超級用戶,擁有最高權限系統管理員,日常運維主力
擁有角色`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 核心維護使用;強制複雜密碼;審計所有登錄日常運維首選;可創建具體權限的運維賬號替代;定期輪換密碼
三種登錄身份解析:
  • NORMAL: 普通用戶身份,權限由授予的角色/系統權限/對象權限決定。業務應用、開發人員、日常運維賬號均用此身份。
  • SYSDBA: 系統管理員身份,相當於 OS `root`/`Administrator`。擁有 `ALTER DATABASE`、`STARTUP`/`SHUTDOWN`、`CREATE DATABASE`、`ARCHIVELOG` 等特權。`SYS` 默認此身份。
  • SYSOPER: 系統操作員身份,權限較 `SYSDBA` 窄。可 `STARTUP`/`SHUTDOWN`、`ALTER DATABASE OPEN/MOUNT/BACKUP`、`ARCHIVELOG`、`RECOVER`,**不可** `CREATE DATABASE`、`CREATE USER`、查看用戶數據。`SYSTEM` 默認此身份。

二、 修改 SYS/SYSTEM 密碼:命令行實戰

安裝完成後**首要任務**修改默認弱密碼。

方法 1:SQL*Plus 連接修改 (需知舊密碼)

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.

方法 2:忘記密碼時 - 密碼文件重建 (ORAPWD)

# 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";

方法 3:12c+ 密碼驗證函數 / Profile 強制複雜度

-- 創建驗證函數 (長度、大小寫、數字、特殊字符、不含用戶名)
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;

三、 SQL*Plus 基礎交互生存指南

命令作用示例
`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` 回滾

四、 Navicat 連接 Oracle 圖文步驟 (Windows 為例)

  1. 下載安裝: Navicat Premium (付費) 或 Navicat for Oracle (輕量版)。
  2. 新建連接: 左上角「連接」→「Oracle」。
  3. 基礎設置:
    • 連接名:`PROD_ORCL`
    • 類型:`Basic` (基本) / `TCPS` (SSL) / `LDAP` (OID)
    • 主機:`192.168.1.100` (或 `localhost`)
    • 端口:`1521` (默認)
    • 服務名:`ORCL` (或 `ORCLPDB1` 12c+ PDB) / SID:`ORCL` (傳統)
  4. 認證:
    • 用戶名:`system` / `scott` / 自建運維賬號
    • 密碼:對應密碼
    • 角色:`Normal` / `SYSDBA` / `SYSOPER` (對應 Oracle 身份)
  5. 高級/驅動設置 (關鍵):
    • 勾選「使用 OCI 庫」→ 瀏覽選擇 `oci.dll` 路徑 (如 `D:\app\client\product\19.0.0\client_1\bin\oci.dll`)。必須安裝 Oracle Instant Client 或完整 Client。
    • 字符集:`ZHS16GBK` (簡體中文舊庫) / `AL32UTF8` (現代庫) → 需與數據庫 `NLS_CHARACTERSET` 一致,否則中文亂碼。
  6. 測試連接: 點擊「測試連接」→ 成功顯示綠燈 → 「確定」保存。
  7. 常用功能: 對象瀏覽器、SQL 編輯器 (代碼補全、格式化、執行計劃)、數據傳輸 (導入導出 CSV/Excel/SQL)、結構同步、作業調度、報表構建器。
常見連接失敗排查:
  • ORA-12154 / TNS:could not resolve: `tnsnames.ora` 未配置或路徑錯誤 → Navicat 可直接用「基本」模式填 IP/端口/服務名,無需 TNS。
  • ORA-12514 / Listener does not currently know of SID: 服務名/ SID 填錯 → `lsnrctl status` 確認實例名。
  • ORA-12560 / TNS:protocol adapter error: 客戶端無 Oracle Client / 版本不匹配 / 防火牆阻擋 → 安裝 Instant Client、配置 `PATH`、放行 1521 端口。
  • 中文亂碼: Navicat 字符集與數據庫不一致 → 修改連接屬性「高級」→「字符集」匹配 `SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET'`。

五、 入門後的進階學習路徑

  1. SQL 基礎: `SELECT`、`JOIN`、子查詢、聚合、分析函數、CTE。練習 `SCOTT.EMP/DEPT` 經典數據集。
  2. PL/SQL 程式設計: 變量、控制結構、游標、異常、存儲過程/函數/包、觸發器、集合、動態 SQL。
  3. 管理核心: 表空間/數據文件、用戶/權限/角色/Profile、Undo/Redo/Controlfile、備份恢復 (RMAN)、Data Guard、性能調優 (AWR/ASH/ADDM、執行計劃、索引、統計信息)。
  4. 新特性跟進: 12c 多租戶 (CDB/PDB)、18c/19c/21c/23c 自動索引、實時統計、JSON、區塊鏈表、圖數據、AI/ML 整合。
  5. 工具生態: SQLcl (現代 CLI)、SQL Developer (免費 IDE)、DBA Tools (OEM/Cloud Control)、監控 (Prometheus/Grafana + Oracle Exporter)、CI/CD (Flyway/Liquibase)。

從認識 `SYS`/`SYSTEM` 開始,到掌握 `SQL*Plus` 與 `Navicat`,完成了 Oracle 入門的「儀式」。真正的旅程在於每天寫 SQL、讀計劃、調優化、處理故障、自動化運維。建議建立個人知識庫,記錄每個報錯、每個調優案例、每個最佳實踐,厚積薄發,方能成為資深 DBA 或數據架構師。

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