插件窝 干货文章 oracle数据库基础知识

oracle数据库基础知识

employees Oracle 数据 salary 975    来源:    2025-03-29

Oracle数据库基础知识

一、Oracle数据库概述

Oracle数据库是由Oracle公司开发的关系型数据库管理系统(RDBMS),是目前全球使用最广泛的企业级数据库之一。

主要特点:

  • 支持大规模数据处理
  • 高可用性架构
  • 强大的安全机制
  • 完善的备份恢复功能
  • 跨平台支持

二、Oracle体系结构

1. 物理结构

  • 数据文件(.dbf):存储实际数据
  • 控制文件(.ctl):记录数据库的物理结构信息
  • 重做日志文件(.log):记录所有数据变更
  • 参数文件(.ora):包含数据库配置参数
  • 归档日志文件:已满的重做日志文件的副本

2. 逻辑结构

  • 表空间(Tablespace):数据库的逻辑存储单元
  • 段(Segment):特定类型的数据库对象占用的空间
  • 区(Extent):空间分配的最小单位
  • 数据块(Block):I/O操作的最小单位

3. 内存结构

  • SGA(System Global Area):共享内存区域
    • 数据库缓冲区
    • 重做日志缓冲区
    • 共享池
    • 大池等
  • PGA(Program Global Area):私有内存区域

三、SQL基础

1. 数据定义语言(DDL)

-- 创建表
CREATE TABLE employees (
    emp_id NUMBER PRIMARY KEY,
    emp_name VARCHAR2(50) NOT NULL,
    hire_date DATE,
    salary NUMBER(10,2)
);

-- 修改表
ALTER TABLE employees ADD (department VARCHAR2(30));

-- 删除表
DROP TABLE employees;

2. 数据操作语言(DML)

-- 插入数据
INSERT INTO employees VALUES (1, '张三', SYSDATE, 5000);

-- 更新数据
UPDATE employees SET salary = 5500 WHERE emp_id = 1;

-- 删除数据
DELETE FROM employees WHERE emp_id = 1;

3. 数据查询语言(DQL)

-- 基本查询
SELECT emp_id, emp_name, salary FROM employees;

-- 条件查询
SELECT * FROM employees WHERE salary > 5000;

-- 排序
SELECT * FROM employees ORDER BY salary DESC;

-- 分组
SELECT department, AVG(salary) FROM employees GROUP BY department;

四、PL/SQL编程

PL/SQL是Oracle的过程化语言扩展,用于编写存储过程、函数、触发器等。

1. 基本结构

DECLARE
    -- 变量声明
    v_name VARCHAR2(50);
    v_salary NUMBER;
BEGIN
    -- 执行语句
    SELECT emp_name, salary INTO v_name, v_salary
    FROM employees WHERE emp_id = 1;

    -- 输出
    DBMS_OUTPUT.PUT_LINE(v_name || '的薪水是' || v_salary);
EXCEPTION
    WHEN NO_DATA_FOUND THEN
        DBMS_OUTPUT.PUT_LINE('没有找到数据');
END;

2. 存储过程

CREATE OR REPLACE PROCEDURE update_salary(
    p_emp_id IN NUMBER,
    p_amount IN NUMBER
) AS
BEGIN
    UPDATE employees 
    SET salary = salary + p_amount
    WHERE emp_id = p_emp_id;

    COMMIT;
EXCEPTION
    WHEN OTHERS THEN
        ROLLBACK;
        RAISE;
END;

3. 触发器

CREATE OR REPLACE TRIGGER audit_employee_changes
BEFORE INSERT OR UPDATE OR DELETE ON employees
FOR EACH ROW
BEGIN
    IF INSERTING THEN
        INSERT INTO employee_audit VALUES('INSERT', :new.emp_id, SYSDATE);
    ELSIF UPDATING THEN
        INSERT INTO employee_audit VALUES('UPDATE', :old.emp_id, SYSDATE);
    ELSIF DELETING THEN
        INSERT INTO employee_audit VALUES('DELETE', :old.emp_id, SYSDATE);
    END IF;
END;

五、数据库管理

1. 用户和权限管理

-- 创建用户
CREATE USER testuser IDENTIFIED BY password;

-- 授予权限
GRANT CONNECT, RESOURCE TO testuser;

-- 撤销权限
REVOKE RESOURCE FROM testuser;

2. 备份与恢复

-- 导出数据(expdp是数据泵工具)
expdp scott/tiger@orcl schemas=scott dumpfile=scott.dmp directory=DATA_PUMP_DIR

-- 导入数据
impdp scott/tiger@orcl schemas=scott dumpfile=scott.dmp directory=DATA_PUMP_DIR

3. 性能监控

-- 查看锁信息
SELECT * FROM v$locked_object;

-- 查看会话信息
SELECT sid, serial#, username, status FROM v$session;

-- 查看SQL执行计划
EXPLAIN PLAN FOR SELECT * FROM employees WHERE emp_id = 1;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

六、Oracle常用工具

  1. SQL*Plus:命令行界面工具
  2. SQL Developer:图形化开发工具
  3. Enterprise Manager:基于Web的管理控制台
  4. RMAN:恢复管理器(备份恢复工具)
  5. Data Pump:数据导入导出工具

七、Oracle版本发展

  • Oracle 8i (1999年):加入Internet支持
  • Oracle 9i (2001年):RAC和XML支持
  • Oracle 10g (2003年):网格计算
  • Oracle 11g (2007年):高级压缩和分区
  • Oracle 12c (2013年):多租户架构
  • Oracle 19c (2019年):长期支持版本

以上是Oracle数据库的基础知识概述,实际应用中还需要根据具体场景深入学习各个模块的详细内容。