Oracle数据库基础知识介绍



Oracle Database,常简称为Oracle,是美国甲骨文公司的一款关系数据库管理系统。它是世界上最早商业化的关系型数据库之一,以其强大的性能、高可靠性、安全性和可扩展性而闻名,广泛应用于大型企业、金融机构和政府单位的核心业务系统。

一、 Oracle数据库体系结构

理解Oracle的体系结构是学习它的基础,其核心组件包括:

组件类别组件名称描述
内存结构系统全局区 (SGA)数据库实例启动时分配的共享内存区域,包含数据库缓冲区缓存、共享池、重做日志缓冲区等。
程序全局区 (PGA)服务器进程启动时分配的私有内存区域,用于存储会话变量、游标状态等私有数据。
--
进程结构用户进程运行应用程序或Oracle工具的进程。
服务器进程处理连接到实例的用户进程的请求。
后台进程维护和增强数据库的物理结构和内存结构的之间的关系,包括PMON、SMON、DBWn、LGWR等。
--
存储结构表空间 (Tablespace)数据库的逻辑存储单元,一个数据库由多个表空间构成(如SYSTEM, SYSAUX, USERS等)。
数据文件 (Datafile)表空间在物理上的体现,对应操作系统上的一个或多个文件。
段 (Segment)、区 (Extent)、块 (Block)数据库存储的层次结构,数据块是Oracle最小的I/O单元。

二、 核心概念

概念描述
数据库 (Database)物理概念,是存储在磁盘上的数据集合,包括数据文件、控制文件、重做日志文件等。
实例 (Instance)内存概念,是访问数据库的一套后台进程和内存结构。一个实例只能打开一个数据库,但在RAC环境中,多个实例可以同时打开一个数据库。
模式 (Schema)数据库对象的集合,与用户名同名。一个用户对应一个模式。
数据字典一组只读的表和视图,存储了关于数据库本身及其所有对象的元数据信息。

三、 常用数据类型

类别数据类型说明
字符类型CHAR(n)定长字符串,长度不足时用空格填充。例如:CHAR(10) 'ABC' 实际存储为'ABC       '。
VARCHAR2(n)可变长字符串,最常用的字符类型。例如:VARCHAR2(10) 'ABC' 仅存储'ABC'。
NCHAR(n), NVARCHAR2(n)用于存储Unicode国家字符集数据。
--
数值类型NUMBER(p, s)可变长数值,p是精度(总位数),s是小数位数。例如:NUMBER(5,2) 可存储123.45。
INTEGER, FLOATNUMBER的子类型,为兼容ANSI标准而存在。
BINARY_FLOAT, BINARY_DOUBLEIEEE标准浮点数类型,运算速度比NUMBER快。
--
日期时间DATE存储日期和时间信息,精确到秒。例如:'2023-10-27 14:30:00'。
TIMESTAMP比DATE精度更高,可以精确到小数秒。
INTERVAL存储时间间隔。
大对象类型CLOB, BLOBCLOB存储大文本数据,BLOB存储大二进制数据(如图片、视频)。

四、 基本SQL操作

1. 数据定义语言 (DDL)

操作语法示例
创建表CREATE TABLE employees (
emp_id NUMBER PRIMARY KEY,
emp_name VARCHAR2(50) NOT NULL,
salary NUMBER(8,2),
hire_date DATE DEFAULT SYSDATE
);
创建序列CREATE SEQUENCE emp_seq
START WITH 1
INCREMENT BY 1
NOCACHE;
创建索引CREATE INDEX idx_emp_name ON employees(emp_name);

2. 数据操作语言 (DML)

操作语法示例
插入数据INSERT INTO employees (emp_id, emp_name, salary)
VALUES (emp_seq.NEXTVAL, '张三', 8000);
查询数据SELECT emp_id, emp_name, salary
FROM employees
WHERE salary > 5000
ORDER BY salary DESC;
更新数据UPDATE employees
SET salary = salary * 1.1
WHERE emp_id = 1001;
删除数据DELETE FROM employees WHERE emp_id = 1001;

五、 PL/SQL 简介

PL/SQL是Oracle对SQL语言的过程化扩展,它集成了程序化语言的特点,允许编写包含SQL语句的程序块。

PL/SQL组件描述简单示例
匿名块没有名字的PL/SQL块,一次性执行。BEGIN
DBMS_OUTPUT.PUT_LINE('Hello, Oracle!');
END;
存储过程存储在数据库中的命名PL/SQL程序块,可被多次调用。CREATE OR REPLACE PROCEDURE raise_salary(
p_emp_id IN NUMBER,
p_percent IN NUMBER
) AS
BEGIN
UPDATE employees SET salary = salary * (1 + p_percent/100)
WHERE emp_id = p_emp_id;
COMMIT;
END;
函数必须返回一个值的存储程序。CREATE OR REPLACE FUNCTION get_emp_name(
p_emp_id IN NUMBER
) RETURN VARCHAR2 AS
v_name VARCHAR2(50);
BEGIN
SELECT emp_name INTO v_name FROM employees
WHERE emp_id = p_emp_id;
RETURN v_name;
END;
触发器在特定数据库事件(如INSERT, UPDATE)发生时自动执行的PL/SQL块。CREATE OR REPLACE TRIGGER audit_emp_salary
BEFORE UPDATE OF salary ON employees
FOR EACH ROW
BEGIN
INSERT INTO salary_audit VALUES (:old.emp_id, :old.salary, :new.salary, SYSDATE);
END;

六、 Oracle特色功能

功能描述
RAC (实时应用集群)多个实例共享一个数据库,提供高可用性和可扩展性。
Data Guard提供数据保护和灾难恢复解决方案,通过创建和维护备用数据库来保护数据。
分区表将大表物理上分割成多个小表,提高查询性能和管理效率。
物化视图存储查询结果的物理副本,用于汇总数据和提高复杂查询性能。
闪回技术允许查看和恢复过去某个时间点的数据,无需从备份中恢复。

七、 学习建议

  1. 理解体系结构:掌握SGA、PGA、后台进程等核心概念。
  2. 熟练SQL和PL/SQL:这是使用Oracle的基础,特别是PL/SQL是Oracle的特色和优势。
  3. 掌握管理工具:熟悉SQL*Plus, SQL Developer, OEM等工具的使用。
  4. 实践性能优化:学习执行计划、索引策略、SQL调优等高级主题。
  5. 关注高可用方案:了解RAC、Data Guard等企业级功能的原理和应用。

❤️收藏 👍点赞

用户评论

发表评论

您还未登录,无法发表评论!
快来留下你的足迹吧~