【问题标题】:Querying RDB$TRANSACTIONS Table in Firebird (2.1)在 Firebird (2.1) 中查询 RDB$TRANSACTIONS 表
【发布时间】:2012-11-15 19:24:21
【问题描述】:

如何在 firebird 中使用与交易相关的元数据(使用 2.1 版)?

例如:

1) 打开一个 isql 会话,更改一些表,保持事务打开。

2) 打开另一个 isql 会话,执行以下查询:

SELECT * FROM RDB$TRANSACTIONS;

不返回任何行。我需要启用什么特殊功能才能获取此信息吗?

【问题讨论】:

    标签: transactions metadata firebird


    【解决方案1】:

    表 RDB$TRANSACTIONS 仅用于分布式事务(即针对多个数据库运行的事务)。要监控常规事务,请改用表 MON$TRANSACTIONS。

    MON$TRANSACTIONS (started transactions)
      - MON$TRANSACTION_ID (transaction ID)
      - MON$ATTACHMENT_ID (attachment ID)
      - MON$STATE (transaction state)
           0: idle
           1: active
      - MON$TIMESTAMP (transaction start date/time)
      - MON$TOP_TRANSACTION (top transaction)
      - MON$OLDEST_TRANSACTION (local OIT number)
      - MON$OLDEST_ACTIVE (local OAT number)
      - MON$ISOLATION_MODE (isolation mode)
           0: consistency
           1: concurrency
           2: read committed record version
           3: read committed no record version
      - MON$LOCK_TIMEOUT (lock timeout)
          -1: infinite wait
           0: no wait
           N: timeout N
      - MON$READ_ONLY (read-only flag)
      - MON$AUTO_COMMIT (auto-commit flag)
      - MON$AUTO_UNDO (auto-undo flag)
      - MON$STAT_ID (statistics ID)
    

    【讨论】:

    • SQL> 从 MON$TRANSACTIONS 中选择 *;语句失败,SQLCODE = -204 动态 SQL 错误 -SQL 错误代码 = -204 -表未知 -MON$TRANSACTIONS -在第 1 行,第 15 列 SQL> 显示版本; ISQL版本:WI-V2.1.1.17910 Firebird 2.1 服务器版本:Firebird/x86/Windows NT(访问方式),版本“WI-V2.1.1.17910 Firebird 2.1
    • 很抱歉格式错误,所以我不会因为某种原因缩进它。它说我没有 MON$TRANSACTIONS 表。
    • 您的数据库的 ODS 版本是什么?你备份/恢复了吗?似乎是通过新服务器访问旧数据库。
    • 请原谅我的无知,什么是 ODS 版本?
    • 在磁盘结构上。数据库文件内部结构的版本。新版本的 Firebird 引入了新的 ODS,但可以与旧版本一起使用。监控表 MON$,仅在最近的 ODS 中引入。
    猜你喜欢
    • 2012-03-01
    • 2014-02-20
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 2011-12-16
    相关资源
    最近更新 更多