管理Oracle实例(二)

会话(删除连接的会话)

所有的会话都在表 v$session 中。

sql 复制代码
select sid,serial#,username from v$session;  # 通过这个查询可以了解当前活动的数据库会话情况。
alter system kill session 'sid,serial#';     # 用于终止指定会话

自己不能杀自己。。。

Read-Only Mode只读模式

只读模式(Read-Only Mode) 是一种数据库操作模式,允许用户查询数据,但不允许对数据进行任何修改。以下是只读模式的作用和特点:

作用

  • 执行查询,使用本地管理的表空间执行磁盘排序。
  • 将数据文件离线和在线,但不包括表空间。
  • 执行离线数据文件和空间的恢复。
  • 保护数据:防止数据被意外或恶意修改,确保数据的完整性和一致性。
  • 提高性能:在只读模式下,数据库可以优化查询性能,因为不需要处理写操作的锁和日志。
  • 适合用于生成报告和数据分析,用户可以安全地查询数据而不影响数据库的状态。
  • 维护和备份:在进行数据库维护或备份时,可以将数据库设置为只读模式,以确保备份数据的一致性。
    特点
  • 访问限制:只读模式下,用户无法执行INSERT、UPDATE、DELETE等数据修改操作。
  • 会话级和实例级:可以在会话级别或实例级别设置只读模式。会话级别的设置只影响当前会话,而实例级别的设置影响整个数据库实例。
  • 恢复模式:可以在需要时轻松切换回读写模式,恢复对数据的修改权限。
  • 适用场景:常用于数据仓库、报告服务器、备份期间等场景。

设置只读模式:

sql 复制代码
ALTER DATABASE READ ONLY;

设置会话为只读模式:

sql 复制代码
ALTER SESSION SET READ ONLY;

取消只读模式, 将实例设置为读写模式:

sql 复制代码
ALTER DATABASE READ WRITE;

总结

只读模式是一种有效的数据库管理策略,能够保护数据、提高查询性能,并适用于多种场景。通过合理使用只读模式,可以确保数据的安全性和一致性。

关闭数据库

关闭数据库的过程

关闭Oracle数据库是一个重要的操作,涉及多个步骤,以确保数据的完整性和一致性。以下是关闭数据库的详细过程:

  1. 数据写入

    在关闭数据库时,Oracle会将SGA(系统全局区)中的所有数据库数据和恢复数据分别写入数据文件和重做日志文件。这一过程确保所有未写入的数据都被安全保存。

  2. 关闭在线数据文件

    接下来,Oracle会关闭所有在线数据文件和重做日志记录。任何处于离线状态的表空间及其数据文件也会被关闭。这意味着:在线数据文件的所有更改都已写入。离线表空间的数据文件保持关闭状态。

  3. 数据库状态

    此时,数据库处于关闭状态,无法进行正常的操作。用户无法连接到数据库,所有的事务和查询都将被拒绝。

  4. 控制文件状态

    在关闭数据库后,控制文件保持打开状态,但仍然处于挂载状态。这意味着控制文件仍然可以用于管理数据库的结构,但不允许进行任何数据操作。
    卸载数据库

  5. 卸载过程

    在关闭数据库后,Oracle将卸载数据库,以解除与实例的关联。此时,实例仍然保留在计算机的内存中。卸载数据库的步骤包括:

    解除数据库与实例的连接。

    关闭数据库的控制文件。

  6. 控制文件关闭

    卸载数据库后,Oracle关闭该数据库的控制文件,确保不再对该数据库进行任何操作。

关闭实例

  1. 关闭实例的步骤
    关闭实例是关闭数据库的最后一步。当您关闭一个实例时,Oracle会执行以下操作:
    从内存中删除SGA(系统全局区)。
    终止所有后台进程。
  2. 实例关闭后的状态
    关闭实例后,数据库和实例之间的所有关联都被解除,Oracle数据库完全停止运行。此时,计算机的内存中不再保留任何与该数据库相关的信息。

总结

关闭数据库是一个多步骤的过程,涉及数据写入、关闭数据文件、卸载数据库和关闭实例等步骤。每个步骤都至关重要,以确保数据的完整性和系统的稳定性。正确地执行这些操作可以避免数据丢失和系统故障。

数据库的关闭模式

1.NORMAL 模式

这是一种较为温和的关机方式。在 NORMAL 模式下,数据库不允许新的连接,会等待当前会话结束后才进行关机操作。这意味着如果有用户正在进行数据库操作,数据库会等待这些操作完成后再关闭。这种模式可以确保数据的完整性和一致性,避免因突然关机而导致数据丢失或损坏。例如,当你在进行一些重要的业务处理,不希望被意外中断时,可以选择这种模式进行关机。

2.IMMEDIATE 模式

IMMEDIATE 模式会立即中断所有正在进行的数据库操作,不等待当前会话和事务结束。它会强制回滚未提交的事务,并关闭数据库。这种模式适用于需要快速关闭数据库的情况,比如在数据库出现严重故障或需要紧急维护时。但是,由于不等待事务结束,可能会导致一些数据不一致的情况,因此在使用这种模式时需要谨慎考虑。

3.TRANSACTIONAL 模式

在 TRANSACTIONAL 模式下,数据库会等待当前事务结束后再进行关机。这可以确保所有已提交的事务都被正确保存,而未提交的事务会被回滚。这种模式在一定程度上保证了数据的完整性,同时也比 NORMAL 模式更快地关闭数据库,因为它不需要等待所有会话结束。

4.ABORT 模式

ABORT 模式是一种比较极端的关机方式,它会立即终止数据库进程,不进行任何清理操作。这种模式可能会导致数据文件损坏、事务丢失等严重问题,因此只有在数据库无法以其他方式关闭时才应使用。在使用 ABORT 模式后,重新启动数据库时需要进行恢复操作,以确保数据库的一致性。

诊断文件
  1. 警报日志(Alert Log)
  • 描述:记录数据库的启动、关闭、错误、警告和重要事件。
  • 位置 :通常位于 ORACLE_HOME/diag/rdbms/<dbname>/<dbname>/trace/alert_<dbname>.log
  • 用途
    • 用于监控数据库的健康状态。
    • 查看错误和警告信息。
    • 记录日常操作信息。
    • 诊断数据库错误。
  • 特点
    • 每个条目都包含时间戳和由 DBA 管理的信息。
    • 记录数据库的启动、关闭、错误、警告和重要事件。
    • BACKGROUND_DUMP_DEST 定义的位置。
    • 是数据库管理员监控和维护数据库的重要工具。
  1. 跟踪文件(Trace Files)
  • 描述:记录特定会话或进程的详细信息,包括 SQL 执行、性能统计和错误信息。
  • 位置 :通常位于 ORACLE_HOME/diag/rdbms/<dbname>/<dbname>/trace/
  • 用途
    • 深入分析特定问题,如性能瓶颈、死锁等。
    • 记录 SQL 执行的详细信息,帮助优化查询。
  • 生成方式
    • 由数据库进程或会话生成。
    • 可以通过设置跟踪级别或使用 ALTER SESSION 命令启用。
  • 内容
    • 包含 SQL 语句、绑定变量、执行计划和性能统计信息。
    • 记录错误信息和警告。
  • 创建时机
    • 当跟踪被启用时,或在发生错误时自动生成。
  • 文件大小
    • 文件大小通常没有限制,直到手动删除或达到系统限制。
  1. 用户跟踪文件
  • 描述:由用户会话生成,记录会话的执行情况。
  • 用途
    • 用于调试和分析特定用户的操作。
    • 识别性能问题和错误。
  • 生成方式
    • 用户跟踪文件由用户会话生成,通常通过执行 ALTER SESSION SET SQL_TRACE = TRUE 命令启用。
    • 也可以由服务器进程生成,记录特定会话的执行信息。
  • 内容
    • 包含跟踪 SQL 语句的执行统计信息,如执行时间、逻辑读、物理读等。
    • 记录用户的错误消息,当用户会话遇到错误时,会生成相应的跟踪文件。
  • 创建时机
    • 当用户会话启用跟踪时,系统会创建用户跟踪文件。
  • 位置
    • 用户跟踪文件的位置由初始化参数 USER_DUMP_DEST 定义。
  • 文件大小
    • 文件大小由初始化参数 MAX_DUMP_FILE_SIZE 定义,限制了单个跟踪文件的最大大小。
  1. 诊断目录(Diagnostic Destination)
  • 描述:Oracle 11g 及更高版本引入的集中管理诊断文件的目录。
  • 位置 :通过初始化参数 DIAGNOSTIC_DEST 指定。
  • 用途
    • 简化诊断文件的管理和访问。
    • 集中存储所有相关的诊断文件,便于查找和维护。
  • 特点
    • 包含警报日志、跟踪文件和其他诊断信息。
    • 提供统一的目录结构,方便 DBA 管理。
  1. 性能视图
  • 描述 :通过动态性能视图(如 V$DIAG_INFOV$SESSION)获取诊断信息。
  • 用途
    • 实时监控数据库状态,获取会话和性能信息。
    • 帮助 DBA 进行性能调优和故障排查。
  • 生成方式
    • 动态生成,实时反映数据库的运行状态。
  • 内容
    • 提供会话状态、锁信息、性能统计等。
    • 可通过 SQL 查询访问,实时获取信息。
  • 特点
    • 不会持久保存,随时可以查询。
    • 提供丰富的数据库运行时信息,帮助 DBA 进行监控和分析。

总结

这些诊断文件和信息对于数据库管理员来说是非常重要的工具,帮助他们监控数据库的运行状态、诊断问题并进行性能调优。

不同版本Oracle诊断文件的命名规则

文件类型 Oracle 10g 及之前版本 Oracle 11g 及更高版本 Oracle 12c 及更高版本
警报日志 alert_<dbname>.log alert_<dbname>.log alert_<dbname>.log
跟踪文件 ora_<pid>.trc ora_<pid>.trc ora_<pid>.trc
用户跟踪文件 <username>_<sid>_<serial#>.trc <username>_<sid>_<serial#>.trc <username>_<sid>_<serial#>.trc
诊断目录 不适用 ORACLE_HOME/diag/rdbms/<dbname>/<dbname>/trace/ ORACLE_HOME/diag/rdbms/<dbname>/<dbname>/trace/

说明

  • <dbname>:数据库名称
  • <pid>:进程 ID
  • <username>:用户名
  • <sid>:会话 ID
  • <serial#>:序列号
启用与关闭用户跟踪
  • 会话级别启用/禁用用户跟踪
  1. 使用 ALTER SESSION 命令

    sql 复制代码
    ALTER SESSION SET SQL_TRACE = TRUE;   # 启用跟踪
    ALTER SESSION SET SQL_TRACE = FALSE;  # 禁用跟踪
  2. 执行 DBMS 过程

    sql 复制代码
    EXEC DBMS_SESSION.SET_SQL_TRACE(TRUE);   # 启用跟踪
    EXEC DBMS_SESSION.SET_SQL_TRACE(FALSE);  # 禁用跟踪
  • 实例级别启用/禁用用户跟踪
  1. 设置初始化参数

    sql 复制代码
    ALTER SYSTEM SET SQL_TRACE = TRUE SCOPE=SPFILE;   # 启用跟踪
    
    ALTER SYSTEM SET SQL_TRACE = FALSE SCOPE=SPFILE;  # 禁用跟踪
    • 注意:更改实例级别的参数通常需要重启数据库才能生效。
诊断文件生命周期和启动原因
诊断文件 生命周期 启动原因
警报日志 数据库启动时创建,持续更新 数据库启动、关闭或发生重要事件时
跟踪文件 跟踪启用时创建,跟踪会话结束或错误发生时更新 用户或 DBA 启用 SQL 跟踪时,或遇到错误时
用户跟踪文件 会话启用跟踪时创建,持续存在 用户通过 ALTER SESSION 启用跟踪时,或遇到错误时
诊断目录 数据库创建时定义,持续存在 通过初始化参数 DIAGNOSTIC_DEST 指定
性能视图 动态生成,实时反映数据库状态 DBA 通过 SQL 查询访问性能视图
相关推荐
m0_748244832 分钟前
StarRocks 排查单副本表
大数据·数据库·python
C++忠实粉丝12 分钟前
Redis 介绍和安装
数据库·redis·缓存
wmd1316430671227 分钟前
将微信配置信息存到数据库并进行调用
数据库·微信
是阿建吖!41 分钟前
【Linux】基础IO(磁盘文件)
linux·服务器·数据库
凡人的AI工具箱1 小时前
每天40分玩转Django:Django国际化
数据库·人工智能·后端·python·django·sqlite
ClouGence1 小时前
Redis 到 Redis 数据迁移同步
数据库·redis·缓存
m0_748236581 小时前
《Web 应用项目开发:从构思到上线的全过程》
服务器·前端·数据库
苏三说技术1 小时前
Redis 性能优化的18招
数据库·redis·性能优化
Tttian6221 小时前
基于Pycharm与数据库的新闻管理系统(2)Redis
数据库·redis·pycharm
做梦敲代码2 小时前
达梦数据库-读写分离集群部署
数据库·达梦数据库