杰瑞科技汇

Oracle 10g基础教程,核心知识点有哪些?

Oracle 10g 基础教程

第一章:Oracle 数据库简介

1 什么是 Oracle 数据库?

Oracle 数据库是一个关系型数据库管理系统,它是一个结构化的数据集合,其中的数据以行和列的形式存储在表中,RDBMS 使用 SQL(结构化查询语言)来管理、查询和操作这些数据。

Oracle 10g基础教程,核心知识点有哪些?-图1
(图片来源网络,侵删)

2 什么是 Oracle 10g?

  • Oracle 10g 是 Oracle 公司于 2003 年发布的数据库版本。
  • "g" 代表 "Grid Computing"(网格计算),这是其核心特性,旨在将多个服务器整合成一个单一的、巨大的计算资源池,以提高资源利用率和系统的可伸缩性。
  • 尽管它很古老,但其核心的 SQL 方言、PL/SQL 语言、体系结构和许多基本概念至今仍在现代 Oracle 数据库(如 12c, 19c, 21c)中传承。

3 Oracle 数据库的核心组件

理解 Oracle 的架构是学习的第一步,主要组件包括:

  • 数据文件: 存储数据库中所有数据的物理文件(.dbf),一个或多个数据文件构成一个表空间
  • 控制文件: 一个小型二进制文件,记录了数据库的物理结构,如数据文件名、日志文件名、数据库创建时间戳等。恢复操作绝对依赖它。
  • 重做日志文件: 记录对数据库所做的所有更改,当实例故障时,可以利用这些日志将未提交的更改应用到数据文件,实现实例恢复
  • 日志写入器: 后台进程,负责将内存中的重做日志缓冲区内容写入到重做日志文件中。
  • 数据库写入器: 后台进程,负责将内存中的脏数据(已修改但未写入磁盘)写入到数据文件中。
  • 系统全局区: 一个共享的内存区域,存储数据库实例的数据和控制信息,包含缓冲缓存共享池重做日志缓冲区等。
  • 程序全局区: 为每个服务器进程分配的非共享内存区域,存储用户会话信息、游标信息等。
  • 实例: 由 Oracle 内存结构和后台进程组成,一个数据库可以被多个实例打开(如 RAC 环境),但通常我们说的“一个数据库对应一个实例”。

第二章:安装与配置

1 系统要求

  • 操作系统: Windows Server 2003, Red Hat Enterprise Linux 4 等。
  • 硬件: 至少 1GB 内存(推荐 2GB+),几 GB 的可用磁盘空间。
  • 软件: Oracle 10g 安装介质。

2 安装步骤(以 Windows 为例)

  1. 运行安装程序: 解压下载的安装包,找到 setup.exe 并运行。
  2. 安装配置助手: 等待安装程序检查系统要求。
  3. 选择安装类型: 通常选择“企业版”或“标准版”。
  4. 指定主目录: 选择 Oracle 软件的安装路径。
  5. 安装数据库: 选择“仅安装数据库软件”或“安装并创建数据库”。
    • 安装并创建数据库: 会引导你创建一个数据库实例,设置口令、数据文件位置等,这是新手最快的方式。
    • 仅安装数据库软件: 只安装 Oracle 程序文件,稍后需要手动创建数据库。
  6. 配置管理工具: 安装 Oracle Enterprise Manager (OEM) 控制台。
  7. 完成安装: 按照向导完成最后步骤。

3 环境变量配置

安装完成后,需要配置 PATHORACLE_HOME 等环境变量,以便在命令行中使用 Oracle 工具。

  • ORACLE_HOME: 指向 Oracle 软件安装的根目录。
  • PATH:PATH 变量中添加 %ORACLE_HOME%\bin (Windows) 或 $ORACLE_HOME/bin (Linux)。

第三章:SQL 基础

SQL 是与 Oracle 数据库交互的语言,主要分为四类:

  1. DDL (Data Definition Language - 数据定义语言):

    Oracle 10g基础教程,核心知识点有哪些?-图2
    (图片来源网络,侵删)
    • CREATE: 创建数据库对象(表、视图等)。
    • ALTER: 修改数据库对象。
    • DROP: 删除数据库对象。
    • TRUNCATE: 清空表数据。
    • RENAME: 重命名对象。
  2. DML (Data Manipulation Language - 数据操纵语言):

    • INSERT: 向表中插入数据。
    • UPDATE: 更新表中的数据。
    • DELETE: 从表中删除数据。
  3. DQL (Data Query Language - 数据查询语言):

    • SELECT: 从表中查询数据。(DQL 是 DML 的一个子集,但通常单独列出)
  4. DCL (Data Control Language - 数据控制语言):

    • GRANT: 授予权限。
    • REVOKE: 撤销权限。

1 创建表

CREATE TABLE employees (
    employee_id    NUMBER(6) PRIMARY KEY,
    first_name     VARCHAR2(20),
    last_name      VARCHAR2(25) NOT NULL,
    email          VARCHAR2(25) UNIQUE,
    hire_date      DATE DEFAULT SYSDATE,
    salary         NUMBER(8, 2),
    department_id  NUMBER(4)
);
  • NUMBER(p, s): 精度 p,小数位数 s。
  • VARCHAR2(s): 可变长度字符串,最大长度 s。
  • DATE: 日期类型。
  • PRIMARY KEY: 主键约束,值唯一且非空。
  • NOT NULL: 非空约束。
  • UNIQUE: 唯一约束,值唯一但可为空。
  • DEFAULT SYSDATE: 默认值为当前系统时间。

2 插入数据

INSERT INTO employees (employee_id, first_name, last_name, email, salary, department_id)
VALUES (100, 'Steven', 'King', 'SKING', 24000.00, 90);
-- 插入多行
INSERT INTO employees (employee_id, first_name, last_name, email, department_id)
VALUES (101, 'Neena', 'Kochhar', 'NKOCHHAR', 17000.00, 90),
       (102, 'Lex', 'De Haan', 'LDEHAAN', 17000.00, 90);

3 查询数据

-- 查询所有列
SELECT * FROM employees;
-- 查询指定列
SELECT first_name, last_name, salary FROM employees;
-- 使用 WHERE 子句过滤
SELECT * FROM employees WHERE salary > 20000;
-- 使用 ORDER BY 排序
SELECT first_name, last_name, salary FROM employees ORDER BY salary DESC;
-- 使用聚合函数
SELECT COUNT(*) AS total_employees, AVG(salary) AS average_salary FROM employees;

4 更新和删除数据

-- 更新数据
UPDATE employees SET salary = 25000.00 WHERE employee_id = 100;
-- 删除数据
DELETE FROM employees WHERE employee_id = 102;

第四章:PL/SQL 编程基础

PL/SQL 是 Oracle 对 SQL 的过程化扩展,它允许在数据库服务器上编写逻辑块。

Oracle 10g基础教程,核心知识点有哪些?-图3
(图片来源网络,侵删)

1 PL/SQL 块结构

DECLARE
    -- 声明部分: 定义变量、游标等
    v_employee_name VARCHAR2(50);
    v_salary NUMBER(8, 2);
BEGIN
    -- 执行部分: 包含 SQL 语句和 PL/SQL 逻辑
    SELECT first_name || ' ' || last_name, salary
    INTO v_employee_name, v_salary
    FROM employees
    WHERE employee_id = 100;
    DBMS_OUTPUT.PUT_LINE('Employee: ' || v_employee_name);
    DBMS_OUTPUT.PUT_LINE('Salary: ' || v_salary);
EXCEPTION
    -- 异常处理部分: 处理错误
    WHEN NO_DATA_FOUND THEN
        DBMS_OUTPUT.PUT_LINE('Employee not found.');
    WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE('An error occurred: ' || SQLERRM);
END;
/
  • DECLARE (可选): 声明变量。
  • BEGIN ... END;: 主执行逻辑。
  • EXCEPTION ... END; (可选): 错误处理。
  • DBMS_OUTPUT.PUT_LINE: 在控制台输出信息,需要先在 SQL*Plus 中执行 SET SERVEROUTPUT ON;

2 控制结构

-- IF 语句
DECLARE
    v_score NUMBER := 85;
BEGIN
    IF v_score >= 90 THEN
        DBMS_OUTPUT.PUT_LINE('Grade: A');
    ELSIF v_score >= 80 THEN
        DBMS_OUTPUT.PUT_LINE('Grade: B');
    ELSE
        DBMS_OUTPUT.PUT_LINE('Grade: C');
    END IF;
END;
/
-- LOOP 循环
DECLARE
    i NUMBER := 1;
BEGIN
    LOOP
        DBMS_OUTPUT.PUT_LINE(i);
        i := i + 1;
        EXIT WHEN i > 5;
    END LOOP;
END;
/

第五章:用户与权限管理

1 创建用户

-- 使用具有 DBA 权限的用户(如 SYSTEM)登录
CREATE USER scott
IDENTIFIED BY tiger; -- 默认密码是 tiger

2 授予权限

新创建的用户没有任何权限,需要手动授予。

-- 授予连接数据库的权限
GRANT CONNECT TO scott;
-- 授予创建表的权限
GRANT RESOURCE TO scott;
-- 授予查询特定表的权限
GRANT SELECT ON employees TO scott;

3 角色

角色是权限的集合,可以简化权限管理。

-- 创建角色
CREATE ROLE app_user_role;
-- 将权限授予角色
GRANT CREATE SESSION, CREATE TABLE TO app_user_role;
-- 将角色授予用户
GRANT app_user_role TO scott;

第六章:常用工具

1 SQL*Plus

  • 是什么: Oracle 提供的命令行工具,用于执行 SQL 和 PL/SQL 脚本。
  • 如何启动: 在命令行输入 sqlplus /nologCONNECT username/password
  • 常用命令:
    • CONNECT username/password@database_alias: 连接数据库。
    • SET SERVEROUTPUT ON;: 开启输出显示。
    • DESC table_name;: 描述表结构。
    • SPOOL filename;: 将屏幕输出保存到文件。
    • @script.sql: 执行一个 SQL 脚本文件。

2 Oracle Enterprise Manager (OEM)

  • 是什么: 基于 Web 的图形化管理控制台。
  • 如何访问: 安装后,通常可以通过 http://localhost:1156/em 访问(端口可能不同)。
  • 功能: 可以通过图形界面执行几乎所有数据库管理任务,如启动/停止数据库、管理用户、查看性能、执行 SQL 等,非常直观。

3 SQL Developer

  • 注意: SQL Developer 是在 Oracle 10g 发布之后推出的,但它完全兼容 10g,它是一个 免费 的图形化工具,比 OEM 更现代、更易用,强烈推荐使用。
  • 如何使用: 下载并安装 SQL Developer,配置好 Oracle Home,即可连接和管理 10g 数据库。

第七章:数据备份与恢复基础

1 导出/导入 (EXP/IMP)

这是 10g 中最常用的逻辑备份工具。

  • 导出数据:

    exp system/manager@orcl file=d:\backup\expdat.dmp log=d:\backup\expdat.log full=y
    • system/manager: 具有导出权限的用户和密码。
    • file: 导出文件路径。
    • log: 日志文件路径。
    • full=y: 导出整个数据库。
  • 导入数据:

    imp system/manager@orcl file=d:\backup\expdat.dmp log=d:\backup\impdat.log full=y
    • fromuser/touser: 指定从哪个用户导入到哪个用户。

2 RMAN (Recovery Manager)

RMAN 是 Oracle 提供的 powerful 物理备份和恢复工具,它比 EXP/IMP 更强大、更可靠,是生产环境的首选。

  • 启动 RMAN:
    rman target /  # 连接到本地数据库实例
  • 执行备份:
    RMAN> BACKUP DATABASE PLUS ARCHIVELOG; -- 备份数据库和归档日志
  • 执行恢复:
    RMAN> RESTORE DATABASE; -- 从备份中恢复数据文件
    RMAN> RECOVER DATABASE; -- 应用重做日志进行恢复

总结与学习建议

  1. 打好基础: 熟练掌握 SQL 是一切的基础,多写多练 SELECT, INSERT, UPDATE, DELETE, JOIN, SUBQUERY
  2. 理解架构: 不要只停留在命令层面,要理解 SGA、PGA、数据文件、日志文件等是如何协同工作的。
  3. 动手实践: 安装一个虚拟机(如 VirtualBox),在里面装一个 Linux 系统,再安装 Oracle 10g,亲手去创建用户、建表、写 PL/SQL 块,体验真实的环境。
  4. 善用工具: 优先使用 SQL Developer,它能让你更专注于学习,而不是被命令行的繁琐操作所困扰。
  5. 关注文档: Oracle 的官方文档是权威的,虽然 10g 的文档比较老旧,但依然是最好的参考资料。

虽然 Oracle 10g 已经过时,但它所包含的数据库核心思想和技术至今仍然适用,掌握了这些基础,你将能轻松过渡到更新的 Oracle 版本或其他任何关系型数据库,祝你学习顺利!

分享:
扫描分享到社交APP
上一篇
下一篇