当前位置: 首页 > news >正文

Oracle 数据库管理与维护实战指南(用户权限、备份恢复、性能调优)

关键词:Oracle 用户权限管理、冷热备份、RMAN 备份、AWR 报告、SQL 调优、等待事件分析


✅ 摘要

在企业级 Oracle 数据库运维中,用户权限管理、数据备份恢复机制、性能监控与调优 是保障系统安全、稳定和高效运行的三大核心任务。

本文将围绕以下内容进行详细讲解:

  • 用户与权限管理:创建用户、角色、授权与回收权限

  • 备份与恢复策略:物理备份(冷/热)、逻辑备份(EXP/IMP)、RMAN 工具使用

  • 性能监控与调优:AWR/ASH 报告分析、SQL 执行计划优化、索引建议、等待事件定位瓶颈

    每部分都配有 完整的 SQL 示例代码 和操作说明


一、用户与权限管理

🔹 1. 创建用户(CREATE USER)

-- 创建一个普通用户
CREATE USER test_user IDENTIFIED BY test_password;
示例:设置默认表空间和临时表空间
CREATE USER finance_user IDENTIFIED BY finance_pwd
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;

🔹 2. 创建角色(ROLE)

-- 创建一个只读角色
CREATE ROLE read_only_role;-- 创建一个开发人员角色
CREATE ROLE dev_role;

🔹 3. 授予权限(GRANT)

-- 给用户授予连接权限
GRANT CONNECT TO test_user;-- 授予资源权限(可建表)
GRANT RESOURCE TO test_user;-- 授予对特定表的查询权限
GRANT SELECT ON hr.employees TO test_user;-- 将权限赋予角色
GRANT SELECT, INSERT ON hr.departments TO dev_role;-- 将角色赋予用户
GRANT dev_role TO test_user;

🔹 4. 回收权限(REVOKE)

-- 收回对 employees 表的查询权限
REVOKE SELECT ON hr.employees FROM test_user;-- 收回角色
REVOKE dev_role FROM test_user;

🔹 5. 删除用户与角色

-- 删除用户及其所有对象
DROP USER test_user CASCADE;-- 删除角色
DROP ROLE dev_role;

二、备份与恢复

🔹 1. 物理备份(冷备份 & 热备份)

冷备份(关闭数据库后拷贝文件)
-- 停止数据库服务
sqlplus / as sysdba
SHUTDOWN IMMEDIATE;-- 拷贝数据文件、控制文件、日志文件等
cp -r /u01/oradata/mydb /backup/-- 启动数据库
STARTUP;
热备份(在线备份,需归档模式)
-- 设置为归档模式
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;-- 开始热备份
ALTER TABLESPACE users BEGIN BACKUP;
-- 拷贝对应的数据文件到备份目录
cp /u01/oradata/mydb/users01.dbf /backup/
-- 结束热备份
ALTER TABLESPACE users END BACKUP;

🔹 2. 逻辑备份(EXP/IMP)

使用 EXP 导出数据
exp system/password file=/backup/hr.dmp log=/backup/hr.log tables=hr.employees,hr.departments
使用 IMP 导入数据
imp system/password file=/backup/hr.dmp full=y ignore=y

🔹 3. RMAN 备份与恢复(推荐方式)

配置 RMAN 设置
-- 查看当前配置
RMAN> SHOW ALL;-- 设置默认备份路径
RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/backup/rman/%U';-- 启用控制文件自动备份
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
完整备份数据库
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
恢复场景:恢复整个数据库
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP MOUNT;
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
RMAN> ALTER DATABASE OPEN;
恢复单个表空间
RMAN> SQL 'ALTER TABLESPACE users OFFLINE';
RMAN> RESTORE TABLESPACE users;
RMAN> RECOVER TABLESPACE users;
RMAN> SQL 'ALTER TABLESPACE users ONLINE';

三、性能监控与调优

🔹 1. AWR 报告分析(Automatic Workload Repository)

生成 AWR 报告步骤:
-- 登录 sqlplus
sqlplus / as sysdba-- 执行 awrrpt.sql 脚本
@?/rdbms/admin/awrrpt.sql-- 输入报告类型(html 或 text)
Enter value for report_type: html-- 输入开始快照 ID 和结束快照 ID
Enter value for begin_snap: 100
Enter value for end_snap: 105-- 生成报告路径
Enter value for report_name: /tmp/awr_report.html
关键关注指标:
指标说明
Buffer Nowait %缓冲命中率,应 >90%
CPU per Transaction单事务 CPU 时间
SQL Per Transaction单事务 SQL 数量
Top SQL消耗最多资源的 SQL
Wait Events最常见的等待事件

🔹 2. ASH 报告分析(Active Session History)

生成 ASH 报告:
@?/rdbms/admin/ashrpt.sql
分析重点:
  • 当前活跃会话数
  • 主要等待事件(如 enq: TX - row lock contention)
  • 高频执行的 SQL
  • 是否存在锁竞争或死锁

🔹 3. SQL 调优(执行计划 + 索引优化)

查看 SQL 执行计划
EXPLAIN PLAN FOR
SELECT * FROM employees WHERE department_id = 60;SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
示例输出:
Plan hash value: 782277289---------------------------------------------------------------------------------
| Id  | Operation                    | Name       | Rows  | Bytes | Cost (%CPU)|
---------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |            |     1 |    69 |     2   (0)|
|   1 |  TABLE ACCESS BY INDEX ROWID | EMPLOYEES  |     1 |    69 |     2   (0)|
|*  2 |   INDEX RANGE SCAN           | EMP_DEPT_IX|     1 |       |     1   (0)|
---------------------------------------------------------------------------------
常见优化建议:
  • 添加缺失的索引(如 WHERE, JOIN 字段)
  • 避免全表扫描(Table Access Full)
  • 减少排序操作(SORT ORDER BY)
  • 使用绑定变量避免硬解析

🔹 4. 等待事件与资源瓶颈定位

查询当前等待事件
SELECT sid, event, p1, p2, p3, wait_time, seconds_in_wait
FROM v$session_wait
WHERE state != 'WAITING';
常见等待事件及处理建议:
等待事件可能原因解决方案
SQL*Net message from client客户端处理慢优化客户端逻辑
Enq: TX - row lock contention行级锁争用优化事务并发控制
Log file sync提交频繁调整提交频率或启用异步提交
Direct path read大表扫描添加索引或分区表
Library cache pin共享池不足增加共享池大小

✅ 总结

通过本文的学习,你应该已经掌握了以下内容:

模块技能点
用户权限管理创建用户、角色、授权与回收
备份与恢复冷备份、热备份、RMAN 工具备份与恢复
性能调优AWR/ASH 报告解读、SQL 执行计划分析、索引优化、等待事件排查

📚 参考资料

  • Oracle Database Administrator’s Guide
  • Oracle Performance Tuning Guide
http://www.dtcms.com/a/272640.html

相关文章:

  • 深度学习与图像处理案例 │ 基于深度学习的自动驾驶小车
  • GitHub上优秀的开源播放器项目介绍及优劣对比
  • 申请注册苹果iOS企业级开发者证书需要公司拥有什么规模条件
  • Nacos的基本功能以及使用Feign进行微服务间的通信
  • 【网络编程】 TCP 协议栈的知识汇总
  • ZW3D 二次开发-创建圆柱体
  • Qt cannot find C:\WINDOWS\TEMP\cctVBBgu: Invalid argument
  • QT5使用cmakelists引入Qt5Xlsx库并使用
  • 达梦数据库不兼容 SQL_NO_CACHE 报错解决方案
  • C++交叉编译工具链制作以及QT交叉编译环境配置
  • 生产环境CI/CD流水线构建与优化实践指南
  • 医院多部门协同构建知识库-指南库-预测模型三维网络路径研究
  • 12大产品规划工具对比:功能、价格与适用场景
  • (LeetCode 面试经典 150 题 ) 11. 盛最多水的容器 (贪心+双指针)
  • 2023 年 12 月青少年软编等考 C 语言七级真题解析
  • 2025年语言处理、大数据与人机交互国际会议(DHCI 2025)
  • QBoost 2025版:加速手机性能,提升使用体验
  • django中如何使用Django REST Framework
  • 基于SpringBoot旅游资源信息管理系统的设计与实现
  • 【Learning Notes】 Derak Callan‘s Business English P30~31
  • Redis数据库基础
  • 网安系列【15】之Docker未授权访问漏洞
  • Pytest 预期失败测试:如何标记“已知问题”用例
  • squash压缩合并
  • 【无标题】 RV1126平台(Buildroot Linux)+ SunplusIT SPCA2688 USB摄像头 RTSP推流全流程复盘与问题解决记录
  • 系统性部署系统母盘【rhel7和rhel9】
  • 7月10号总结 (1)
  • 大数据的安全挑战与应对
  • Linux:库的原理
  • swift开发,关于应用、页面、视图的生命周期