达梦数据库:无效的表名MLOG$_

Oracle数据库迁移数据到达梦数据库:
创建表遇到的问题:
迁移物化视图时,报的一个错误

温馨提示:
A 用户连接达梦数据库,执行SQL 语句 默认去 A 模式执行,强烈建议养成一个良好的习惯,
sql语句编写为  
SELECT * FROM 模式名.表名 
这样的SQL执行,会非常准确,避免用户执行SQL语句时误操作

无效的表名[MLOG$_1]
示例sql:

create table DMHR.MLOG$_1
(AAA CHAR(1));
执行失败(语句1)2 行附近出现错误[-2104]:
无效的表名[MLOG$_1]

 经过查询达梦数据库 SQL语言使用手册发现的问题如下: 
 表名以 MLOG$_ 开头是对表,或者物化视图创建的物化视图中的日志表,
 所以自行创建 MLOG$_ 开头的 TABLE 是无法创建的。

关于详细的介绍:

7.6  物化视图日志的定义
物化视图的快速刷新依赖于基表上的物化视图日志,物化视图日志记录了基表的变化信
息。
语法格式
CREATE MATERIALIZED VIEW LOG ON [<模式名>.]<表名>
[<STORAGE 子句>][<WITH 子句>][<PURGE 选项>]
<WITH 子句>::= WITH { PRIMARY KEY| ROWID | SEQUENCE | (<列名> {, <列名>})}
<PURGE 选项>::= PURGE IMMEDIATE [ SYNCHRONOUS | ASYNCHRONOUS ]
| PURGE START WITH datetime_expr [ NEXT datetime_expr | REPEAT INTERVAL
interval_expr]

达梦数据库:无效的表名MLOG$__第1张图片

参数
1. <模式名> 指明物化视图日志基表所属的模式,缺省为当前模式;
2. <表名> 指明创建日志的基表;
3.  基表中的哪些列将被包含到物化视图日志中,SEQUENCE 表示物
第 7 章 物化视图
301
化视图日志表中有 SEQUENCE$$唯一标识列,SEQUENCE 为默认选项;
4.  指定每隔多长时间对物化视图日志中无用的记录进行一次清除。
分两种情况:一是 IMMEDIATE 立即清除;二是 START WITH 定时清除。缺省是
PURGE IMMEDIATE。SYNCHRONOUS 为同步清除;ASYNCHRONOUS 为异步清除。
ASYNCHRONOUS 和SYNCHRONOUS的区别是前者新开启一个事务来进行日志表的
清理,后者是在同一个事务里。目前,ASYNCHRONOUS 仅语法支持,功能未实现;
5. datetime_expr 只能是日期常量表达式,SYSDATE[+数值常量]或日期间隔;
6. 与普通视图可能依赖多个基表不同,物化视图日志只对应一个基表,因此物化视图
日志是否使用行外大字段存储与基表保持一致。(此处与原文略有修改)
原文为:
《6. 与物化视图可能依赖多个基表不同,物化视图日志只对应一个基表,因此物化视图
日志是否使用行外大字段存储与基表保持一致。》

图例
达梦数据库:无效的表名MLOG$__第2张图片
使用说明

1.在表 T 上创建物化视图日志后会生成:
	1)MLOG$_T 的日志表;
	2)MTRG$_T 的表级触发器;
	3)定时 purge 物化视图日志的触发器:MTRG_PURGE_MVLOG_1270 
	(假定MLOG$_T 对象的 ID 是 	1270)。用户可以对 MLOG$_T 进行查询但是不能进行插入、
	删除和更新,触发器由系统维护,用户无法修改删除;
2.由于物化视图日志表的命名规则所限,日志基表名称长度必须小于 123 个字符;
3.如果在物化视图 MV 上创建物化视图日志,系统会自动转为在物化视图的基表
MTAB$_MV 上 创 建 物 化 视 图 日 志 , 因 此 会 生 成 MLOG$_MTAB$_MV 的 日 志 表 和
MTRG$_MTAB$_MV 的表级触发器,且要求物化视图名称必须小于 116 个字符,其余限制和普通表一致。

权限

1.如果是物化视图日志基表的拥有者,使用者必须拥有 CREATE TABLE 系统权限;
2.如果物化视图日志基表是其它模式下的表,使用者必须拥有 CREATE ANY TABLE系统权限,
	且物化视图日志的拥有者必须对<查询说明>中的每个表均具有 SELECT 权限或者具有 SELECT ANY TABLE 系统权限;
3.物化视图日志表仅支持基于的表为普通表、堆表和物化视图。

举例说明

例 在 PURCHASING. VENDOR 上创建物化视图日志,每天定时 PURGE。
CREATE  MATERIALIZED  VIEW  LOG  ON  PURCHASING.VENDOR  WITH
ROWID(ACCOUNTNO,NAME,ACTIVEFLAG,WEBURL,CREDIT) PURGE START WITH SYSDATE + 5

REPEAT INTERVAL ‘1’ DAY;
☐ 注:间隔一天 PURGE 也可以写成 PURGE NEXT SYSDATE + 1。

你可能感兴趣的:(数据库,数据库)