返回首页

gbase数据、南大通用产品文档:GBase8s

更新日期:2024年09月11日

Numerical month value can not be determined from date string based on DBDATE
发生此错误是由于指定的日期字符串不具有 DBDATE 格式字符串所需的有效的数值月份
指示符。例如,如果 DBDATE 设置为 Y2MD-,但是您指定的日期字符串表示形式
为 98-blah-15,这是错误的,因为 blah 是一个无效的数值月份表示形式。
要修复此问题,请修改此日期字符串,使其包含基于 DBDATE 格式字符串设置的有效的数
值月份(从 1 到 12)。

本节描述 SMI 表及如何访问它们以监视数据库服务器操作。
了解 SMI 表
SMI (系统监视接口)由数据库服务器自动维护的表和伪表组成。当 SMI 表作为表向用户
显示时,它们不像普通的表那样记录在磁盘上。相反,数据库服务器视需要在内存中根据
该瞬时共享内存中的信息构造表。当查询SMI 表时,数据库服务器从这些共享内存中读取
信息。由于数据库服务器不断更新共享内存中的数据,所以 SMI 所提供的信息允许您检查
数据库服务器的当前状态。
SMI 表提供关于以下主题的信息:
 审计

GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 178 -
 检查点
 Chunk I/O
 Chunks
 数据库日志记录状态
 Dbspaces
 磁盘使用
 环境变量
 Extents
 锁
 网络
 SQL 语句高速缓存统计信息
 SQL 跟踪
 构建系统概要文件
 表
 构建用户概要文件
 虚拟处理器 CPU 使用
当用户访问并修改数据库服务器所管理的数据库时,SMI 表中的数据动态更改。
访问 SMI 表
任何用户都可以使用 SQL
SELECT 语句查询 SMI 表,但是标准用户不能执行 SELECT 以外
的语句。如果试图这样做,那么会导致权限错误。管理员可以执行 SQL 以外的语句,但这
类语句的结果是不可预料的。
提示: 对于可预料的结果,应查询与每个表相关联的的视图而不是直接查询表。
如果直接查询 systabpaghdrs 表,必须为 pg_partnum 参数指定一个合适的值。
pg_partnum 的值 >
1048576 。然而,如果查询与 systabpaghdrs 表关联的视图,就不用
指定 pg_partnum 参数的值。
GBase 8s 包括 sysadtinfo 和 sysaudit 表。只有用户 gbasedbt(在 UNIX™ 上)或
Gbasedbt-Admin 组的成员 (在 Windows™ 上)可以查询 sysadtinfo 和 sysaudit 表。
在 sysmaster 数据库的任何表上都无法使用 dbschema 或 dbexport 。如果这样做,数据
库服务器将生成以下错误信息:
Database has pseudo tables - can't build schema
SELECT 语句
您可以在对普通表使用 SELECT 的任何场合对 SMI 表使用 SELECT 语句。
例如,从 DB-Access ,在 SPL 例程中,以 GBase 8s ESQL/C 等,您可以使用 SELECT 语
句。

GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 179 -
限制: 当查询 SMI 表时,无法有意义地引用 rowid 。使用 rowid 的 SELECT 语句不返
回任何错误,但是结果是不可预料的。
包括表之间的连接、输出顺序排序等等在内所有标准 SQL 语法,都可使用于 SMI 表。如
果要连接 SMI 表和非 SMI 表,那么用以下标准语法给出 SMI 表的名称:
sysmaster[@dbservername]:[owner.]tablename
触发器和事件报警
基于对 SMI 表的更改的触发器从不运行。尽管可以在 SMI 表上定义触发器,但触发器只
在表上出现 INSERT、UPDATE 或 DELETE 语句时才被激活。对 SMI 数据的更新发生在数据
库服务器中,这不需要使用 SQL ,因此尽管由 SELECT 语句返回的数据提示它应被激活,
但 SMI 表上的触发器不会被激活。
要创建事件警报,请以预定时间间隔查询特定条件,并在警报的必需条件满足时执行 SPL
例程。
SPL 和 SMI 表
可以在 SPL 例程中访问 SMI 表。当引用 SMI 表时,请使用与引用标准表相同的语法。
锁定和 SMI 表
SMI 表中信息根据数据库服务器活动而变更。然而,数据库服务器不使用 SQL 语句更新信
息。当以锁定对象的隔离级别使用 SMI 表时,它阻止其他用户访问该对象但不阻止更改数
据。在这种意义上,所有 SMI 表都具有永久的 Dirty Read 隔离级别。

即使启用消息传输优化,GBase 8s ODBC 也不会链接 SQL 函数。
ODBC 不链接的 SQL 函数有:

SQLDisconnect

SQLConnect

SQLEndTran

SQLExecute(如果驱动程序使用 select 或调用过程返回结果,并且驱动程序使用
insert 游标指向批量插入)

SQLExtendedFetch

SQLFetch

SQLFetchScroll

SQLPrepare
当驱动程序接触到上表所列的函数时,它执行以下操作:
1.
只有当遇到需要数据库服务器响应的 SQL 语句时,会将消息队列刷新到数据库服
务器。
当驱动程序运行不需要网络流量的函数时,它不会刷新消息队列,例如
SQLAllocStmt。
2.
继续后续 SQL 语句的消息链接。