Oracle 10g 基础教程
第一部分:Oracle 10g 简介
什么是 Oracle 数据库? Oracle 数据库是一个关系型数据库管理系统,它使用结构化查询语言 来管理和查询存储在表中的数据,你可以把它想象成一个高度安全、可扩展、有组织的电子表格仓库。

什么是 "10g" 中的 "g"? "10g" 是 Oracle Database 10g 的简称,其中的 "g" 代表 Grid Computing(网格计算),这是 Oracle 当时的一个重要战略,旨在将多个服务器和存储资源整合成一个单一的、虚拟的“计算网格”,从而实现高可用性、负载均衡和资源弹性分配,对于初学者来说,可以先理解为这是一个强大的、可扩展的数据库版本。
为什么学习 10g?
- 理解基础概念:很多核心概念(如实例、表空间、用户、权限)在 10g 中已经非常成熟。
- 历史背景:了解过去有助于更好地理解现在,现代 Oracle 的许多特性都是在 10g 的基础上发展起来的。
- 维护旧系统:在一些企业中,可能仍然存在需要维护的 10g 数据库。
第二部分:核心概念
在开始操作之前,必须理解几个最核心的概念,这会让你事半功倍。
数据库

- 物理层面:指存储在硬盘上的所有文件的总和,包括数据文件、控制文件、重做日志文件等,这些文件是持久化的,即使数据库关闭,数据也不会丢失。
- 逻辑层面:指数据的组织结构,包括表空间、模式、表、视图等。
实例
- 定义:Oracle 数据库在内存中的一组进程和后台进程的总和,实例是数据库的“大脑”和“心脏”,负责处理所有用户请求和管理数据。
- 关键组成:
- SGA (System Global Area):系统全局区,是一块巨大的共享内存区域,用于缓存数据、索引、执行计划等,以提高性能。
- 后台进程:如 PMON(进程监控)、DBWn(数据库写入)、LGWR(日志写入)等,它们协同工作,保证数据库的稳定运行。
- 重要关系:一个实例只能对应一个数据库,但一个数据库可以被多个实例打开(RAC环境)。
表空间
- 定义:数据库中用于存储数据的逻辑容器,它是一个逻辑概念,而不是物理文件。
- 作用:
- 管理存储:可以将不同类型的数据(如表、索引、LOB对象)存放在不同的表空间中,便于管理和维护。
- 空间管理:可以控制表空间的大小和增长策略。
- 性能优化:可以将频繁访问的数据和不常访问的数据分开存放在不同的物理磁盘上。
- 示例:
SYSTEM表空间(存储核心数据字典)、SYSAUX表空间、USERS表空间(存放普通用户对象)、UNDOTBS1表空间(用于事务回滚)。
模式
- 定义:一个用户所拥有的所有数据库对象的集合(如表、视图、索引、存储过程等),模式名通常与用户名相同。
- 理解:当你创建一个用户
scott时,同时也会创建一个名为scott的模式,之后scott用户创建的所有表都属于scott模式。
用户与权限

- 用户:是访问数据库的账户,每个用户都有自己的身份验证信息(用户名和密码)和默认表空间。
- 权限:控制用户能执行什么操作,分为两类:
- 系统权限:允许用户执行特定数据库操作的权限,如
CREATE SESSION(连接数据库)、CREATE TABLE(创建表)。 - 对象权限:允许用户对特定数据库对象(如表、视图)进行操作的权限,如
SELECT(查询)、INSERT(插入)、UPDATE(更新)、DELETE(删除)。
- 系统权限:允许用户执行特定数据库操作的权限,如
第三部分:安装与登录
安装 Oracle 10g
- 注意:由于版本老旧,官方安装包可能已不易获取,你需要从 Oracle 官网归档部分下载。
- 系统要求:确保你的操作系统(如 Windows Server 2003, Red Hat Enterprise Linux 4)满足 10g 的要求,推荐使用虚拟机(如 VMware, VirtualBox)来安装,避免污染主机环境。
- 安装过程:双击安装文件
setup.exe,然后按照图形化向导的提示进行操作,主要步骤包括:- 安装通用安装器。
- 选择“安装数据库”。
- 选择“高级安装”以获得更多控制。
- 指定主目录、安装类型(企业版是功能最全的)。
- 配置数据库,包括:
- 全局数据库名(如
orcl)。 - 系统口令(
SYS,SYSTEM,SYSMAN等管理员用户的密码)。 - 数据库文件存储位置。
- 全局数据库名(如
- 等待安装完成。
登录数据库 安装完成后,你可以使用以下几种方式登录:
-
*SQLPlus (命令行工具)**
- 在 Windows 开始菜单中找到 "Application Development" -> "SQL*Plus"。
- 输入用户名和密码。
- 示例:
SQL> conn scott/tiger 已连接。注意:
scott/tiger是 Oracle 提供的示例用户和密码。
-
Oracle Enterprise Manager (OEM)
- 这是一个基于 Web 的图形化管理工具,安装后,通常可以通过
http://localhost:1156/em访问。 - 使用
SYS或SYSTEM用户登录,可以对整个数据库实例进行可视化管理。
- 这是一个基于 Web 的图形化管理工具,安装后,通常可以通过
第四部分:常用 SQL 语句
SQL 是与 Oracle 数据库交互的语言,主要分为三类:DML, DDL, DCL。
DML (Data Manipulation Language) - 数据操纵语言
| 语句 | 描述 | 示例 |
|---|---|---|
SELECT |
从表中查询数据 | SELECT * FROM emp; |
INSERT |
向表中插入新数据 | INSERT INTO emp (empno, ename) VALUES (7369, 'SMITH'); |
UPDATE |
更新表中的数据 | UPDATE emp SET sal = 2000 WHERE ename = 'SMITH'; |
DELETE |
从表中删除数据 | DELETE FROM emp WHERE ename = 'SMITH'; |
DDL (Data Definition Language) - 数据定义语言
| 语句 | 描述 | 示例 |
|---|---|---|
CREATE |
创建数据库对象 | CREATE TABLE my_table (id NUMBER, name VARCHAR2(50)); |
ALTER |
修改数据库对象 | ALTER TABLE my_table ADD (email VARCHAR2(100)); |
DROP |
删除数据库对象 | DROP TABLE my_table; |
TRUNCATE |
清空表中的所有数据(速度快,不可恢复) | TRUNCATE TABLE my_table; |
DCL (Data Control Language) - 数据控制语言
| 语句 | 描述 | 示例 |
|---|---|---|
GRANT |
授予权限 | GRANT SELECT ON scott.emp TO my_user; |
REVOKE |
收回权限 | REVOKE SELECT ON scott.emp FROM my_user; |
第五部分:实战演练 (使用 SCOTT 模式)
Oracle 10g 安装时会默认创建一个名为 SCOTT 的示例用户,它包含了几张经典的表:EMP (员工), DEPT (部门), BONUS (奖金), SALGRADE (薪资等级)。
连接到 SCOTT 用户
SQL> conn scott/tiger 已连接。
查询数据
查询 EMP 表中的所有员工信息。
SQL> SELECT * FROM emp;
查询 EMP 表中所有员工的姓名和薪资。
SQL> SELECT ename, sal FROM emp;
过滤数据 查询薪资高于 2000 的员工。
SQL> SELECT * FROM emp WHERE sal > 2000;
查询 10 号部门的员工,并按薪资降序排列。
SQL> SELECT * FROM emp WHERE deptno = 10 ORDER BY sal DESC;
连接查询 查询每个员工的姓名及其所在的部门名称。
SQL> SELECT e.ename, d.dname 2 FROM emp e 3 JOIN dept d ON e.deptno = d.deptno;
分组查询 统计每个部门的员工人数。
SQL> SELECT deptno, COUNT(*) AS employee_count 2 FROM emp 3 GROUP BY deptno;
插入、更新、删除数据
向 EMP 表插入一条新记录(注意:必须提供 NOT NULL 列的值)。
-- 假设 deptno 50 存在
SQL> INSERT INTO emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
2 VALUES (7999, 'Alice', 'CLERK', 7788, TO_DATE('2003-05-01', 'YYYY-MM-DD'), 1500, NULL, 50);
将员工 'ALLEN' 的薪资增加 10%。
SQL> UPDATE emp SET sal = sal * 1.1 WHERE ename = 'ALLEN';
删除刚才插入的员工 'Alice'。
SQL> DELETE FROM emp WHERE ename = 'Alice';
重要提示:在 DML 操作后,如果你希望永久保存更改,需要执行 COMMIT;,如果希望撤销,可以执行 ROLLBACK;。
第六部分:PL/SQL 简介
PL/SQL 是 Oracle 对 SQL 的扩展,它是一种过程化语言,允许你在数据库中编写复杂的程序块。
一个简单的 PL/SQL 示例:给所有员工涨薪 10%
DECLARE
-- 声明部分(可选)
v_emp_count NUMBER;
BEGIN
-- 执行部分
UPDATE emp SET sal = sal * 1.1;
-- 输出受影响的行数
v_emp_count := SQL%ROWCOUNT;
DBMS_OUTPUT.PUT_LINE('成功更新了 ' || v_emp_count || ' 名员工的薪资。');
-- 提交事务
COMMIT;
EXCEPTION
-- 异常处理部分(可选)
WHEN OTHERS THEN
ROLLBACK;
DBMS_OUTPUT.PUT_LINE('发生错误: ' || SQLERRM);
END;
/
DECLARE: 声明变量。BEGIN ... END;: 程序主体。DBMS_OUTPUT.PUT_LINE: 在屏幕上输出信息,需要先执行SET SERVEROUTPUT ON;来启用。- 在 SQL*Plus 中,用 来执行 PL/SQL 块。
第七部分:学习资源与进阶
- 官方文档:Oracle Database 10g Documentation Library 是最权威的资料,但可能需要一些技巧才能访问。
- 经典书籍:
- 《Oracle Database 10g DBA Handbook》
- 《Oracle PL/SQL Programming》 by Steven Feuerstein (PL/SQL领域的“圣经”)
- 在线社区:
- Oracle Community (原 OTN)
- Stack Overflow (搜索
oracle-10g
进阶方向:
- 数据库管理:学习备份与恢复、性能调优、安全管理。
- 高级开发:深入学习 PL/SQL、存储过程、函数、触发器、包。
- 高可用性:学习 RAC (Real Application Clusters)、Data Guard。
- 新版本学习:在掌握了 10g 的基础后,强烈建议转向学习 Oracle 12c/19c,了解如多租户容器、JSON 支持、In-Memory 等现代特性。
这份教程为你提供了一个 Oracle 10g 的基础框架,核心在于理解 实例、数据库、表空间 的关系,并熟练掌握 SQL 语言,PL/SQL 则是让你从简单查询走向复杂应用的桥梁。
虽然 10g 已经过时,但它所奠定的坚实基础是通用的,祝你学习顺利!
