管理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 查询访问性能视图
相关推荐
李元豪38 分钟前
grpo nl2sql qwen3 模型强化学习训练有效果的成立条件有哪些
数据库·oracle
Hello.Reader4 小时前
RedisJSON 路径语法深度解析与实战
数据库·redis·缓存
TDengine (老段)4 小时前
TDengine 使用最佳实践(2)
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
设计师小聂!7 小时前
Linux系统中部署Redis详解
linux·运维·数据库·redis
kfepiza7 小时前
Debian-10编译安装Mysql-5.7.44 笔记250706
linux·数据库·笔记·mysql·debian·bash
Touper.7 小时前
Redis 基础详细介绍(Redis简单介绍,命令行客户端,Redis 命令,Java客户端)
java·数据库·redis
不剪发的Tony老师7 小时前
phpMyAdmin:一款经典的MySQL在线管理工具又回来了
数据库·mysql·phpmyadmin
极限实验室7 小时前
TDBC 2025 可信数据库发展大会,极限科技邀您来赴约!
数据库
lixia0417mul29 小时前
使用Starrocks替换Clickhouse的理由
数据库
张璐月10 小时前
mysql的性能优化:组提交、数据页复用、全表扫描优化、刷脏页
数据库·mysql·性能优化