DM8-工具合集
1. dexp和dimp
1.1 功能介绍
DM数据库的备份还原包括两种类型:物理备份还原和逻辑备份还原;
RMAN工具是物理备份还原,是对数据库的操作系统物理文件(如数据文件、控制文件和日志文件等)的备份还原;
dexp和dimp是逻辑备份还原,是对数据库逻辑组件(如表、视图和存储过程等数据库对象)的备份还原。
逻辑备份和逻辑还原都是在联机方式下完成,联机方式是指数据库服务器正常运行过程中进行的备份和还原。
1.2 dexp和dimp介绍
区别 | 作用 | 介绍 |
---|---|---|
dexp逻辑导出 | 备份数据 | dexp可以对本地或远程数据库进行数据库级、用户级、模式级和表级的阔基备份;备份的内容灵活,可以选择是否备份索引、数据行和权限,是否忽略各种约束(外键约束、非空约束、唯一约束等),在备份前还可以先择生成日志文件,记录备份的过程等。 dexp和dexpdp语法和作用相同,唯一的区别是:dexp导出的文件必须放在客户端,dexpdb导出的文件必须放在服务器端。 |
dimp逻辑导入 | 还原数据 | dimp可以对dexp生成的备份文件对本地或远程的数据库进行联机逻辑还原。dimp导入时dexp导出的相反过程。还原的方式可以灵活选择,如是否忽略对象存在而导致的创建错误、是否导入约束、是否导入索引、导入时是否需要编译、是否生成日志等。 dimp和dimpdb语法和作用相同,唯一的区别是:dimp导入的文件必须存放在客户端,dexpdb导入的文件必须存放在服务器端。 |
1.3 逻辑备份的级别
逻辑导出和逻辑带入数据库对象分为四种级别:数据库级、用户级、模式级和表级。四种级别独立互斥,不能同时存在。
级别 | |
---|---|
数据库级(FULL) | 导出或导入整个数据库中的所有对象 |
用户级(OWNER) | 导出或导入一个或多个用户所拥有的所有对象 |
模式级(SCHEMAS) | 导出或导入一个或多个模式下的所有对象 |
表级(TABLES) | 导出或导入一个或多个指定的表或表分区 |
1.4 dexp
1.4.1 dexp参数介绍
参数 | 含义 | 备注 |
---|---|---|
USERID | 数据库的连接信息 | 必选 |
FILE | 明确指定导出文件名称 | 可选,缺省则导出文件名为dexp.dmp |
DIRECTORY | 导出文件所在目录 | 可选 |
FULL | 导出整个数据库(N) | 可选,四选一,缺省为SCHEMAS |
OWNER | 用户名列表,导出一个或多个用户所拥有的所有对象 | 可选,四选一,缺省为SCHEMAS |
SCHEMAS | 模式列表,导出一个或多个模式下的所有对象 | 可选,四选一,缺省为SCHEMAS |
TABLES | 表名列表,导出一个或多个指定的表或表分区 | 可选,四选一,缺省为SCHEMAS |
FUZZY_MATCH | TABLES选项是否支持模糊匹配(N) | 可选 |
QUERY | 用于指定对导出表的数据进行过滤的条件 | 可选 |
PARALLEL | 用于指定导出的过程中所使用的线程数目 | 可选 |
TABLE_PARALLEL | 用于指定导出每张表所使用的线程数,在MPP模式下会转换成单线程 | 可选 |
TABLE_POOL | 用于设置导出过程中存储表的缓冲区个数 | 可选 |
EXCLUDE | 1.导出内容中忽略指定的对象。对象有CONSTRAINTS、INDEXES、ROWS、TRIGGERS和GRANTS。比如EXCLUDE= (CONSTRAINTS,INDEXES) 2.忽略指定的表,使用TABLES:INFO格式,如果使用表级导出方式导出,则使用TABLES:INFO格式的EXCLUDE无效。例如:EXCLUDE= TABLES:table1,table2 3.忽略指定的模式,使用SCHEMAS:INFO格式,如果使用表级,模式级带出方式导出,则使用SCHEMAS:INFO格式的EXCLUDE无效。例如:EXCLUDE=SCHEMAS:SCH1,SCH2 | 可选 |
INCLUDE | 导出内容中包含指定的对象,例如:INCLUDE=(CONSTRAINTS,INDEXES)或者INCLUDE=TABLES:table1,table2 | 可选 |
CONSTRAINTS | 导出约束(Y) | 可选,设置一个即可 |
TABLESPACE | 导出的对象定义是否包含表空间(N) | 可选,设置一个即可 |
GRANTS | 导出权限(Y) | 可选,设置一个即可 |
INDEXES | 导出索引(Y) | 可选,设置一个即可 |
TRIGGERS | 导出触发器(Y) | 可选,设置一个即可 |
ROWS | 导出数据行(Y) | 可选,设置一个即可 |
LOG | 明确指定日志文件名称 | 可选,缺省则导出文件名为dexp.log |
NOLOGFILE | 不使用日志文件(N) | 可选 |
NOLOG | 屏幕上不显示日志信息(N) | 可选 |
LOG_WRITE | 日志信息实时写入文件(N) | 可选 |
OUMMY | 交互信息处理:打印§,默认NO,不打印交互信息 | 可选 |
PARFILE | 参数文件名,如果dexp的参数很多,可以存成村塾文件 | 可选 |
FEEDBACK | 每x行显示进度(O) | 可选 |
COMPRESS | 是否压缩导出数据文件(N) | 可选 |
ENCRYPT | 导出数据是否加密(N) | 可选 |
ENCRYPT_PASSWORD | 导出数据的加密密钥 | 可选 |
ENCRYPT_NAME | 导出数据的加密算法 | 可选 |
FILESIZE | 用于指定单个导出文件大小上限,可以按字节[B]、K[B]、M[B]、G[B]的方式指定大小 | 可选 |
FILENUM | 多文件导出时,一个模板可以生成文件数,范围为1-99,默认99 | 可选 |
DROP | 导出后删除原表,但不联级删除(N) | 可选 |
DESCRIBE | 导出数据文件的描述信息,记录在数据文件中 | 可选 |
HELP | 显示帮助信息 | 可选 |
1.4.2 dexp使用
将用户名和密码为SYSDBA,IP为10.0.0.21,端口号是5236的数据库采用FULL方式完全导出,导出文件名为db_str.dmp。导出的日志文件名为db_str.log,导出文件的路径为/dm8/data/DAMENG
1.导出
[dmdba@dm01 /dm8/bin]$ ./dexp USERID=SYSDBA/SYSDBA@10.0.0.21:5236 FILE=db.str.dmp DIRECTORY=/dm8/data/DAMENG LOG=db.str.log FULL=Y
dexp V8
导出第 1 个SYSPACKAGE_DEF: SYSTEM_PACKAGES
导出第 2 个SYSPACKAGE_DEF: SYS_VIEW
----- [2022-10-08 15:50:34]导出表:BAK_DMINI_220926 -----
导出模式下的对象权限...
表BAK_DMINI_220926导出结束,共导出 760 行数据
模式[SYSDBA]导出结束.....
成功导出 第4 个SCHEMA :SYSDBA
共导出 4 个SCHEMA
整个导出过程共花费 0.674 s
成功终止导出, 没有出现警告
2.检查
[dmdba@dm01 /dm8/bin]$ ll /dm8/data/DAMENG/db.str.*
-rw-r--r-- 1 dmdba dinstall 187690 10月 8 15:50 /dm8/data/DAMENG/db.str.dmp
-rw-r--r-- 1 dmdba dinstall 5919 10月 8 15:50 /dm8/data/DAMENG/db.str.log
1.5 dimp
1.5.1 dimp参数
参数 | 含义 | 备注 |
---|---|---|
USERID | 数据库的连接信息 | 必选 |
FILE | 输入文件,即dexp导出的文件 | 必选 |
DIRECTORY | 导入文件所在目录 | 可选 |
FULL | 导入整个数据库(N) | 可选,四选一,缺省为SCHEMAS |
OWNER | 导入指定的用户名下的模式 | 可选,四选一,缺省为SCHEMAS |
SCHEMAS | 导入的模式列表 | 可选,四选一,缺省为SCHEMAS |
TABLES | 表名列表,指定导入的tables名称,不支持对外部表进行导入 | 可选,四选一,缺省为SCHEMAS |
PARALLEL | 用于指定导入的过程中所使用的线程数目 | 可选 |
TABLE_PARALLEL | 用于指定导入的过程中每个表所使用的子线程数目 | 可选,在FAST_LOAD为Y时有效 |
IGNORE | 忽略创建错误(N)。如果表已经存在则向表中插入数据,否则报错表已存在。 | 可选 |
TABLE_EXISTS_ACTION | 需要的导入表在目标库中存在时采取的操作[SKIP|APPEND|TRUNCATE|REPLACE] | 可选 |
FAST_LOAD | 是否使用dmfldr进行数据导入(N) | 可选 |
FLDR_ORDER | 使用 dmfldr 是否需要严格按顺序来导数据(Y) | 可选 |
COMMIT_ROWS | 批量提交的行数(5000) | 可选 |
EXCLUDE | 忽略指定对象(CONSTRAINTS,INDEXES,ROWS,TRIGGERS,GRANTS)。 格式:EXCLUDE=(CONSTRAINTS,INDEXES,ROWS,TRIGGERS,GRANTS) | 可选,例如:EXCLUDE=( CONSTRAIN) |
GRANTS | 导入权限 (Y) | 可选 |
CONSTRAINTS | 导入约束 (Y) | 可选 |
INDEXES | 导入索引 (Y) | 可选 |
TRIGGERS | 导入触发器(Y) | 可选 |
ROWS | 导入数据行 (Y) | 可选 |
LOG | 日志文件 | 可选 |
NOLOGFILE | 不使用日志文件(N) | 可选 |
NOLOG | 屏幕上不显示日志信息(N) | 可选 |
DUMMY | 交互信息处理: 打印§。取值 Y/N。 Y:打印所有交互信息。 N:不打印交互信息。 | 可选 |
LOG_WRITE | 日志信息实时写入文件(N) | 可选 |
PARFILE | 参数文件名,如果 dimp 的参数很多,可以存成参数文件。 | 可选 |
FEEDBACK | 显示每 x 行 (0) 的进度 | 可选 |
COMPILE | 编译过程,程序包和函数 (Y) | 可选 |
INDEXFILE | 将表的索引/约束信息写入指定的文件 | 可选 |
INDEXFIRST | 导入时先建索引(N) | 可选 |
ENCRYPT_PASSWORD | 数据的加密密钥 | 可选。和dexp中的ENCRYPT_PASSWORD设置的密钥一样 |
ENCRYPT_NAME | 数据的加密算法的名称 | 可选。和dexp中的ENCRYPT_NAME设置的加密算法一样 |
SHOW/ DESCRIBE | 只列出文件内容 (N) | 可选 |
TASK_THREAD_NUMBER | 设置 dmfldr 处理用户数据的线程数目 | 可选 |
BUFFER_NODE_SIZE | 设置 dmfldr 读入文件缓冲区大小 | 可选 |
TASK_SEND_NODE_NUMBER | 用于设置 dmfldr 发送节点个数[16,65535] | 可选 |
LOB_NOT_FAST_LOAD | 如果一个表含有大字段,那么不使用 dmfldr,因为 dmfldr 是一行一行提交的 | 可选 |
PRIMARY_CONFLICT | 主键冲突的处理方式[IGNORE|OVERWRITE|OVERWRITE2],默认报错。 | 可选 |
TABLE_FIRST | 是否强制先导入表 (默认 N),Y 表示先导入表,N 正常导入 | 可选 |
SHOW_SERVER_INFO | 是否显示服务器信息(默认 N),Y 表示显示导出文件对应服务器信息,实际不导入,N 表示不显示导出文件对应服务器信息,正常导入 | 可选 |
HELP | 显示帮助信息 | 可选 |
1.5.2 dimp使用
将逻辑备份采用FULL方式完全导入到用户名和密码为SYSDBA,IP地址为10.0.0.21,端口号为5236的数据库,导入文件名为db_str.dmp,导入的日志文件名为db_str.log。路径为/dm8/data/DAMENG/
[dmdba@dm01 /dm8/bin]$ ./dimp USERID=SYSDBA/SYSDBA@10.0.0.21:5236 FILE=db.str.dmp DIRECTORY=/dm8/data/DAMENG LOG=db_str.log FULL=y
2. dmdbchk
2.1 简介
dmdbchk是DM提供的用于检查数据库完整性、正确性的命令行工具。在服务器正常关机后的脱机情况下,用户可以使用dmdbchk对数据库进行校验,包括校验DM数据库内部的物理存储结构是否正常,对象信息是否合法灯,对象信息是否合法等。除此之外,dmdbchk工具还可以检测并和删除操作系统中残留的信号量和共享内存,避免达到操作系统上限后数据库服务无法启动。
检验的内容 | 说明 |
---|---|
数据文件合法性检验 | 数据文件检验只校验数据文件大小。如果数据库文件大小>=或=文件头中记录的大小,则合法。 |
索引正确性校验 | 索引校验包括:普通表B树索引校验、LIST表扁平B树索引校验、列存储索引校验。 校验内容具体包括:B树的层次、层次关系,每层的内部页、叶子页以及页之间的前后链接关系,每个页的页头信息(如页类型等)。 |
对象ID合法性校验 | 对象ID校验包括数据库内的所有对象的ID校验。对象包括:索引、表、约束、存储过程、模式、同义词、用户等。如果从系统表中查出的对象ID小于库的ID预留页中记录的该类型对象的下一分配ID,则合法。因为库的ID预留页中记录的是各类型对象下一个新分配对象将使用的ID,因此容系统表中的对象ID大于或等于该ID,说明库已损坏。 |
残留信号量和共享内存的检测及删除 | 一般Linux下默认可创建的信号量个数为128个,共享内存为4096个。DM数据库服务器正常退出的情况下,会将创建的信号量或共享内存删除,但如果服务器异常退出,这些信号量及共享内存会一直留在操作系统中直到通过手工方式删除。如果残留的信号量或共享内存个数达到操作系统上线,服务器再次启动时,会因为创建信号量或共享内存失败而无法启动成功,因此在本工具中提供对Linux残留信号量和共享内存的检测及删除命令。 |
2.2 使用dmdbchk
⚠️dmdbchk工具不同的参数用法不同,如果时校验数据库的参数,则要求必须时经过初始化,且正常关闭的数据库,才能被dmdbchk工具校验,否则dmdbchk会报错退出。
正常关闭数据库后,使用dmdbchk对数据库进项校验
[dmdba@dm01 /dm8/bin]$ ./dmdbchk path=/dm8/data/DAMENG/dm.ini
[2022-10-09 11:13:40] dmdbchk V8
[2022-10-09 11:13:40] file dm.key not found, use default license!
Can not open ini file dmdcr.ini!
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
ndct db load finished
[2022-10-09 11:13:40] DM DB CHECK START......
[2022-10-09 11:13:40] --------check dbf file size start---------
[2022-10-09 11:13:40] FILE=(ts_id=0, fil_id=0, path=/dm8/data/DAMENG/SYSTEM.DBF)
[2022-10-09 11:13:40] FILE=(ts_id=1, fil_id=0, path=/dm8/data/DAMENG/ROLL.DBF)
[2022-10-09 11:13:40] FILE=(ts_id=4, fil_id=0, path=/dm8/data/DAMENG/MAIN.DBF)
[2022-10-09 11:13:40] --------check dbf file size end-----------
[2022-10-09 11:13:40] --------check indexes start---------------
[2022-10-09 11:13:40] INDEX=(id=33554433, name=SYSINDEXCOLUMNS, table_name=SYSCOLUMNS)
[2022-10-09 11:13:40] INDEX=(id=33554434, name=SYSINDEXINDEXES, table_name=SYSINDEXES)
[2022-10-09 11:13:40] INDEX=(id=33554440, name=SYSINDEXTUSERS, table_name=SYSUSER$)
[2022-10-09 11:13:40] INDEX=(id=33554442, name=SYSINDEXSYSGRANTS, table_name=SYSGRANTS)
[2022-10-09 11:13:40] INDEX=(id=33554452, name=SYSINDEXCONSTRAINTS, table_name=SYSCONS)
[2022-10-09 11:13:40] INDEX=(id=33554458, name=SYSINDEXSYSAUDIT, table_name=SYSAUDIT)
[2022-10-09 11:13:40] INDEX=(id=33554459, name=SYSINDEXSYSAUDITSQLSEQ, table_name=SYSAUDITSQLSEQ)
[2022-10-09 11:13:40] INDEX=(id=33554464, name=SYSINDEXCONTEXTINDEXES, table_name=SYSCONTEXTINDEXES)
[2022-10-09 11:13:40] INDEX=(id=33554468, name=SYSINDEXSTATS, table_name=SYSSTATS)
[2022-10-09 11:13:40] INDEX=(id=33554489, name=SYSINDEXSPWDCHGS, table_name=SYSPWDCHGS)
[2022-10-09 11:13:40] INDEX=(id=33554498, name=SYSINDEXSYSAUDITRULES, table_name=SYSAUDITRULES)
[2022-10-09 11:13:40] INDEX=(id=33554510, name=SYSINDEXCONTEXTLIBS, table_name=SYSCONTEXTLIBS)
[2022-10-09 11:13:40] INDEX=(id=33554539, name=SYSINDEXCLASSES, table_name=SYSCLASSES)
[2022-10-09 11:13:40] INDEX=(id=33554540, name=SYSINDEXSYSOBJECTS, table_name=SYSOBJECTS)
[2022-10-09 11:13:40] INDEX=(id=33554541, name=SYSINDEXSYSDUAL, table_name=SYSDUAL)
[2022-10-09 11:13:40] INDEX=(id=33554543, name=SYSINDEXSYSTEXTS, table_name=SYSTEXTS)
[2022-10-09 11:13:40] INDEX=(id=33554544, name=SYSINDEXSYSTYPEINFOS, table_name=SYSTYPEINFOS)
[2022-10-09 11:13:40] INDEX=(id=33554546, name=SYSINDEXSYSACCHISTORIES, table_name=SYSACCHISTORIES)
[2022-10-09 11:13:40] INDEX=(id=33554548, name=SYSINDEXSYSHPARTTABLEINFO, table_name=SYSHPARTTABLEINFO)
[2022-10-09 11:13:40] INDEX=(id=33554549, name=SYSINDEXMACPLYS, table_name=SYSMACPLYS)
[2022-10-09 11:13:40] INDEX=(id=33554550, name=SYSINDEXMACLVLS, table_name=SYSMACLVLS)
[2022-10-09 11:13:40] INDEX=(id=33554551, name=SYSINDEXMACCOMPS, table_name=SYSMACCOMPS)
[2022-10-09 11:13:40] INDEX=(id=33554552, name=SYSINDEXMACGRPS, table_name=SYSMACGRPS)
[2022-10-09 11:13:40] INDEX=(id=33554553, name=SYSINDEXMACLABELS, table_name=SYSMACLABELS)
[2022-10-09 11:13:40] INDEX=(id=33554554, name=SYSINDEXMACTABPLY, table_name=SYSMACTABPLY)
[2022-10-09 11:13:40] INDEX=(id=33554555, name=SYSINDEXMACUSRPLY, table_name=SYSMACUSRPLY)
[2022-10-09 11:13:40] INDEX=(id=33554556, name=SYSINDEXSYSOBJINFOS, table_name=SYSOBJINFOS)
[2022-10-09 11:13:40] INDEX=(id=33554559, name=SYSINDEXCOLCYT, table_name=SYSCOLCYT)
[2022-10-09 11:13:40] INDEX=(id=33554560, name=SYSINDEXMACOBJ, table_name=SYSMACOBJ)
[2022-10-09 11:13:40] INDEX=(id=33554561, name=SYSINDEXSYSRESOURCES, table_name=SYSRESOURCES)
[2022-10-09 11:13:40] INDEX=(id=33554562, name=SYSINDEXTABLECOMMENTS, table_name=SYSTABLECOMMENTS)
[2022-10-09 11:13:40] INDEX=(id=33554563, name=SYSINDEXCOLUMNCOMMENTS, table_name=SYSCOLUMNCOMMENTS)
[2022-10-09 11:13:40] INDEX=(id=33554564, name=SYSINDEXSYSREWRITE, table_name=SYS_REWRITE_EQUIVALENCES)
[2022-10-09 11:13:40] INDEX=(id=33554565, name=SYSINDEXSYSDISTABLEINFO, table_name=SYSDISTABLEINFO)
[2022-10-09 11:13:40] INDEX=(id=33554566, name=RINDEXSYSCONS, table_name=SYSCONS)
[2022-10-09 11:13:40] INDEX=(id=33554567, name=FINDEXSYSCONS, table_name=SYSCONS)
[2022-10-09 11:13:40] INDEX=(id=33554568, name=SYSINDEXCOLINFOS, table_name=SYSCOLINFOS)
[2022-10-09 11:13:40] INDEX=(id=33554569, name=SYSINDEXSYSDEPENDENCIES, table_name=SYSDEPENDENCIES)
[2022-10-09 11:13:40] INDEX=(id=33554570, name=RINDSYSDEPENDENCIES, table_name=SYSDEPENDENCIES)
[2022-10-09 11:13:40] INDEX=(id=33554571, name=SYSINDEXFREQROOTS, table_name=SYSFREQROOTS)
[2022-10-09 11:13:40] INDEX=(id=33554572, name=SYSINDEXTABLECOMMENTSKEYS, table_name=SYSTABLECOMMENTS)
[2022-10-09 11:13:40] INDEX=(id=33554573, name=SYSINDEXCOLUMNCOMMENTSKEYS, table_name=SYSCOLUMNCOMMENTS)
[2022-10-09 11:13:40] INDEX=(id=33554574, name=SYSINDEXSYSUSERINI$, table_name=SYSUSERINI$)
[2022-10-09 11:13:40] INDEX=(id=33554575, name=SYSINDEXSYSINJECTHINT, table_name=SYSINJECTHINT)
[2022-10-09 11:13:40] INDEX=(id=33554576, name=SYSINDEXIDSYSOBJECTS, table_name=SYSOBJECTS)
[2022-10-09 11:13:40] INDEX=(id=33554577, name=SYSINDEXSYSDUAL2, table_name=SYSDUAL2)
[2022-10-09 11:13:40] INDEX=(id=33554578, name=SYSINDEXMSTATS, table_name=SYSMSTATS)
[2022-10-09 11:13:40] INDEX=(id=33554579, name=SYSINDEXOPENHISTORY, table_name=SYSOPENHISTORY)
[2022-10-09 11:13:40] INDEX=(id=33554580, name=SYSINDEXSYSSTATPREFS, table_name=SYSSTATPREFS)
[2022-10-09 11:13:40] INDEX=(id=33554581, name=SYSINDEXSYSSTATTABLEIDU, table_name=SYSSTATTABLEIDU)
[2022-10-09 11:13:40] INDEX=(id=33554582, name=SYSINDEXFCOLDEFAULT, table_name=SYSFCOLDEFAULT)
[2022-10-09 11:13:40] INDEX=(id=33554583, name=SYSINDEXPROXYINFOS, table_name=PROXY_INFO$)
[2022-10-09 11:13:40] INDEX=(id=33554584, name=SYSPROFILES, table_name=SYSPROFILES)
[2022-10-09 11:13:40] INDEX=(id=33554585, name=SYSUSERPROFILES, table_name=SYSUSERPROFILES)
[2022-10-09 11:13:40] INDEX=(id=33554586, name=SYSINDEXSYSTUNINGTASK, table_name=SYSTUNINGTASK)
[2022-10-09 11:13:40] INDEX=(id=33554587, name=SYSINDEXSYSTUNINGEXECUTION, table_name=SYSTUNINGEXECUTION)
[2022-10-09 11:13:40] INDEX=(id=33554588, name=SYSINDEXSYSTUNINGREPORT, table_name=SYSTUNINGREPORT)
[2022-10-09 11:13:40] INDEX=(id=33554589, name=SYSINDEXSYSMODIFICATIONS, table_name=SYSMODIFICATIONS)
[2022-10-09 11:13:40] INDEX=(id=33554590, name=SYSINDEXNAMESYSOBJECTS, table_name=SYSOBJECTS)
[2022-10-09 11:13:40] INDEX=(id=33554591, name=SYSINDEXSYSPKGPROCINFOS, table_name=SYSPKGPROCINFOS)
[2022-10-09 11:13:40] INDEX=(id=33554592, name=SYSINDEXSYSPKGPROCPARAMS, table_name=SYSPKGPROCPARAMS)
[2022-10-09 11:13:40] INDEX=(id=33554606, name=SYSINDEX_DPC_TABLESPACE, table_name=DPC_TABLESPACE)
[2022-10-09 11:13:40] INDEX=(id=33554608, name=SYSINDEX_SYSTSGROUPS, table_name=SYSTSGROUPS)
[2022-10-09 11:13:40] INDEX=(id=33554609, name=SYSINDEXREDEFSTATUS, table_name=SYSREDEFSTATUS)
[2022-10-09 11:13:40] INDEX=(id=33554610, name=SYSINDEXREDEFOBJECT, table_name=SYSREDEFOBJECT)
[2022-10-09 11:13:40] INDEX=(id=33554611, name=SYSINDEXREDEFDERROR, table_name=SYSREDEFDERROR)
[2022-10-09 11:13:40] INDEX=(id=33555432, name=INDEX33555432, table_name=SYSMACPLYS)
[2022-10-09 11:13:40] INDEX=(id=33555433, name=SYSINDEXPIDIDSYSOBJECTS, table_name=SYSOBJECTS)
[2022-10-09 11:13:40] INDEX=(id=33555434, name=SECOND_INDXE_SYS_REWRITE_EQUIVALENCES_X7Q1, table_name=SYS_REWRITE_EQUIVALENCES)
[2022-10-09 11:13:40] INDEX=(id=33555435, name=INDEX33555435, table_name=SYSAUDITSQLSEQ)
[2022-10-09 11:13:40] INDEX=(id=33555438, name=INDEX33555438, table_name=DPC_TABLESPACE)
[2022-10-09 11:13:40] INDEX=(id=33555441, name=SYSINDEXPARTTIDSYSHPARTTABLEINFO, table_name=SYSHPARTTABLEINFO)
[2022-10-09 11:13:40] INDEX=(id=33555442, name=INDEX33555442, table_name=SYSTUNINGTASK)
[2022-10-09 11:13:40] INDEX=(id=33555444, name=INDEX33555444, table_name=SYSTUNINGEXECUTION)
[2022-10-09 11:13:40] INDEX=(id=33555449, name=INDEX33555449, table_name=POLICY_GROUPS)
[2022-10-09 11:13:40] INDEX=(id=33555450, name=INDEX33555450, table_name=POLICIES)
[2022-10-09 11:13:40] INDEX=(id=33555451, name=INDEX33555451, table_name=POLICY_CONTEXTS)
[2022-10-09 11:13:40] INDEX=(id=33555452, name=INDEX33555452, table_name=POLICY_COLS)
[2022-10-09 11:13:40] INDEX=(id=33555453, name=INDEX33555453, table_name=DBMS_LOCK_ALLOCATED)
[2022-10-09 11:13:40] INDEX=(id=33555454, name=INDEX33555454, table_name=DBMS_ALERT_INFO)
[2022-10-09 11:13:40] INDEX=(id=33555455, name=INDEX33555455, table_name=AQ$_QUEUE_TABLES)
[2022-10-09 11:13:40] INDEX=(id=33555456, name=INDEX33555456, table_name=AQ$_QUEUE_TABLES)
[2022-10-09 11:13:40] INDEX=(id=33555457, name=INDEX33555457, table_name=AQ$_QUEUES)
[2022-10-09 11:13:40] INDEX=(id=33555458, name=INDEX33555458, table_name=AQ$_QUEUES)
[2022-10-09 11:13:40] INDEX=(id=33555459, name=INDEX33555459, table_name=AQ$_QUEUES)
[2022-10-09 11:13:40] INDEX=(id=33555461, name=INDEX33555461, table_name=REG$)
[2022-10-09 11:13:40] INDEX=(id=33555462, name=INDEX33555462, table_name=SYSTSGROUPS)
[2022-10-09 11:13:40] INDEX=(id=33555463, name=INDEX33555463, table_name=TABLE_1)
[2022-10-09 11:13:40] INDEX=(id=33555464, name=INDEX33555464, table_name=BOOK_1)
[2022-10-09 11:13:40] INDEX=(id=33555465, name=INDEX33555465, table_name=TABLE_2)
[2022-10-09 11:13:40] INDEX=(id=33555467, name=INDEX33555467, table_name=BOOK_1)
[2022-10-09 11:13:40] INDEX=(id=33555468, name=INDEX33555468, table_name=PERSON)
[2022-10-09 11:13:40] INDEX=(id=33555469, name=INDEX33555469, table_name=EMPINFO)
[2022-10-09 11:13:40] INDEX=(id=33555470, name=INDEX33555470, table_name=TEST1)
[2022-10-09 11:13:40] INDEX=(id=33555471, name=INDEX33555471, table_name=BAK_DMINI_220923)
[2022-10-09 11:13:40] INDEX=(id=33555474, name=INDEX33555474, table_name=T01)
[2022-10-09 11:13:40] INDEX=(id=33555475, name=INDEX33555475, table_name=BAK_DMINI_220926)
[2022-10-09 11:13:40] --------check indexes end-----------------
[2022-10-09 11:13:40] --------check iid start-------------------
[2022-10-09 11:13:40] check cons id ...
[2022-10-09 11:13:40] check index id ...
[2022-10-09 11:13:40] check table id ...
[2022-10-09 11:13:40] check proc id ...
[2022-10-09 11:13:40] check schema id ...
[2022-10-09 11:13:40] check synonym id ...
[2022-10-09 11:13:40] check user id ...
[2022-10-09 11:13:40] --------check iid end---------------------
[2022-10-09 11:13:40] DM DB CHECK END......
[2022-10-09 11:13:40] error count is 0
2.3 参数
[dmdba@dm01 /dm8/bin]$ ./dmdbchk help
[2022-10-09 11:15:49] dmdbchk V8
version: 03134283904-20220630-163817-20005
格式: ./dmdbchk KEYWORD=value
例程: ./dmdbchk path=/opt/dmdbms/bin/dm.ini
关键字 说明
--------------------------------------------------------------------------------
PATH dm.ini绝对路径或者当前目录的dm.ini
DCR_INI dmdcr.ini的路径
HELP 打印帮助信息
START_INDEXID 最小检查索引号
END_INDEXID 最大检查索引号
CHECK_SEMA 检查当前系统信号量使用情况(只适用于LINUX,1:只做检查 2:检查并删除残留信号量)
CHECK_SHM 检查当前系统共享内存使用情况(只适用于LINUX,1:只做检查 2:检查并删除残留共享内存)
2.4 dmdbchk报告解读
检验完毕后,dmdbchk会在当前目录下(dmdbchk所在目录)生成一个名为dbchk_err.txt的检查报告。
/**一 dmdbchk 版本信息**/
[2015-12-31 16:57:29] dmdbchk V7.1.5.42-Build(2015.12.30-64335trunc)
/**二开始标志**/
[2015-12-31 16:57:30] DM DB CHECK START......
/**三数据文件校验结果**/
[2015-12-31 16:57:30] --------check dbf file size start---------
[2015-12-31 16:57:30] FILE=(ts_id=0, fil_id=0, path=D:\xx\DAMENG\SYSTEM.DBF)
[2015-12-31 16:57:30] FILE=(ts_id=1, fil_id=0, path=D:\xx\DAMENG\ROLL.DBF)
[2015-12-31 16:57:30] FILE=(ts_id=4, fil_id=0, path=D:\xx\DAMENG\MAIN.DBF)
[2015-12-31 16:57:30] FILE=(ts_id=5, fil_id=0, path=D:\xx\DAMENG\BOOKSHOP.DBF)
[2015-12-31 16:57:30] --------check dbf file size end-----------
/**四索引校验结果**/
[2015-12-31 16:57:30] --------check indexes start---------------
[2015-12-31 16:57:30] INDEX=(id=33554433, name=SYSINDEXCOLUMNS,
table_name=SYSCOLUMNS)
[2015-12-31 16:57:30] INDEX=(id=33554434, name=SYSINDEXINDEXES,
table_name=SYSINDEXES)
[2015-12-31 16:57:30] INDEX=(id=33554440, name=SYSINDEXTUSERS,
table_name=SYSUSER$)
[2015-12-31 16:57:30] INDEX=(id=33554442, name=SYSINDEXSYSGRANTS,
table_name=SYSGRANTS)
[2015-12-31 16:57:30] INDEX=(id=33554452, name=SYSINDEXCONSTRAINTS,
table_name=SYSCONS)
[2015-12-31 16:57:30] INDEX=(id=33554458, name=SYSINDEXSYSAUDIT,
table_name=SYSAUDIT)
[2015-12-31 16:57:30] INDEX=(id=33554459, name=SYSINDEXSYSAUDITSQLSEQ,
table_name=SYSAUDITSQLSEQ)
[2015-12-31 16:57:30] INDEX=(id=33554464, name=SYSINDEXCONTEXTINDEXES,
table_name=SYSCONTEXTINDEXES)
......
省略一部分索引校验结果......
......
[2015-12-31 16:57:30] INDEX=(id=33555528, name=INDEX33555528, table_name=EMPTAB)
[2015-12-31 16:57:30] INDEX=(id=33555529, name=INDEX33555529, table_name=EMPTAB)
[2015-12-31 16:57:30] INDEX=(id=33555530, name=INDEX33555530,
table_name=SALGRADE)
[2015-12-31 16:57:30] INDEX=(id=33555531, name=INDEX33555531,
table_name=COMPANYHOLIDAYS)
[2015-12-31 16:57:30] --------check indexes end-----------------
/**五对象 ID 校验结果**/
[2015-12-31 16:57:30] --------check iid start-------------------
[2015-12-31 16:57:30] check cons id ...
[2015-12-31 16:57:30] check index id ...
[2015-12-31 16:57:30] check table id ...
[2015-12-31 16:57:30] check proc id ...
[2015-12-31 16:57:30] check schema id ...
[2015-12-31 16:57:30] check synonym id ...
[2015-12-31 16:57:30] check user id ...
[2015-12-31 16:57:30] --------check iid end---------------------
/**六结束标志**/
[2015-12-31 16:57:30] DM DB CHECK END......
/**七错误总数**/
[2015-12-31 16:57:30] error count is 0
2.4.1 检测某台Linux机器上信号量的使用情况
[dmdba@dm01 /dm8/bin]$ ./dmdbchk CHECK_SEMA=1
/**一 dmdbchk 版本信息**/
[2018-11-05 14:54:44] dmdbchk V8.0.0.105-Build(2018.10.31-98635-debug)ENT
/**二所有信号量检测结果**/
[2018-11-05 14:54:44] get semid 40992768(key:0xcc020ab4) current value:0,
cur_time:1541400884, last op time:1540894468, need delete it!
[2018-11-05 14:54:44] get semid 41025537(key:0xcd020ab4) current value:0,
cur_time:1541400884, last op time:1540894468, need delete it!
[2018-11-05 14:54:44] get semid 53116930(key:0xcd02111d) current value:0,
cur_time:1541400884, last op time:1541318198, need delete it!
/**三总数归类**/
[2018-11-05 14:54:44] check os semaphore finished:
[2018-11-05 14:54:44] total_cnt:3, active_cnt:0, check_err_cnt:0, need_del:3, real_del:0, del_err_cnt:0!
2.4.2 删除某台Linux机器上的残留信号量
[dmdba@dm01 /dm8/bin]$ ./dmdbchk CHECK_SEMA=2
/**一 dmdbchk 版本信息**/
[2018-11-05 14:54:47] dmdbchk V8.0.0.105-Build(2018.10.31-98635-debug)ENT
/**二所有信号量检测结果**/
[2018-11-05 14:54:47] get semid 40992768(key:0xcc020ab4) current value:0, cur_time:1541400887, otime:1540894468, delete it success!
[2018-11-05 14:54:47] get semid 41025537(key:0xcd020ab4) current value:0, cur_time:1541400887, otime:1540894468, delete it success!
[2018-11-05 14:54:47] get semid 53116930(key:0xcd02111d) current value:0, cur_time:1541400887, otime:1541318198, delete it success!
/**三总数归类**/
[2018-11-05 14:54:47] check os semaphore finished:
[2018-11-05 14:54:47] total_cnt:3, active_cnt:0, check_err_cnt:0,need_del:3, real_del:3, del_err_cnt:0!
3. dmfldr
3.1 概述
3.1.1 功能介绍
dmfldr(DM Fast Loader)是DM提供的快速数据装载命令行工具,用户通过使用dmfldr工具能够把按照一定格式排序的文本数据一简单、快速、高效的方式载入到DM数据库中,或把DM数据库中的数据按照一定格式写入文本文件。
3.1.2 系统结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YDgxkUMX-1665712527121)(D:\typora图片\image-20221009135911900.png)]
dmfldr实际上出了客户端工具,还包含一个在数据库服务器中的dmfldr功能模块,他们共同完成dmfldr的各项功能。
当进行数据载入时,dmfldr客户端接收用户提交的命令与参数,分析控制文件与数据文件,将数据打包发送给服务器端的dmfldr模块,由服务器完成数据的真正装载工作。并分析服务器返回的消息,必要时根据用户参数指定生成日志文件与错误数据文件。
当进行数据导出时,dmfldr客户端接收用户提交的命令和参数,分析控制文件,将用户要求转换成相应消息发给服务器端的dmfldr模块。服务器解析并打包需要导出的数据,发送给dmfldr客户端,客户端将数据写入指定的数据文件,必要时根据用户参数指定生成日志文件。
3.2 参数介绍
[dmdba@dm01 /dm8/bin]$ ./dmfldr help
version: 03134283904-20220630-163817-20005
格式: ./dmfldr KEYWORD=value
例程: ./dmfldr SYSDBA/SYSDBA CONTROL='/opt/data/fldr.ctl'
USERID 必须是命令行中的第一个参数
CONTROL 必须是命令行中的第二个参数
字符串类型参数必须以引号封闭
关键字 说明(默认值)
--------------------------------------------------------------------------------
USERID 用户名/口令, 格式:{<username>[/<password>] | /}[@<connect_identifier>][<opt ion>] [<os_auth>]
<connect_identifier> : [<svc_name> | host[:port] | <unixsocket_file>]
<option> : #{<exetend_option>=<value>[,<extend_option>=<value>]...}
--此行外层{}是为了封装参数之用,书写时需要保留
<os_auth> : AS {SYSDBA|SYSSSO|SYSAUDITOR|USERS|AUTO}
CONTROL 控制文件,字符串类型
LOG 日志文件,字符串类型 (fldr.log)
BADFILE 错误数据记录文件,字符串类型 (fldr.bad)
SKIP 初始忽略逻辑行数 (0)
LOAD 需要装载的行数 (ALL)
ROWS 提交频次 (50000), DIRECT为FALSE有效
DIRECT 是否使用快速方式装载 (TRUE)
SET_IDENTITY 是否插入自增列 (FALSE)
SORTED 数据是否已按照聚集索引排序 (FALSE)
INDEX_OPTION 索引选项 (1)
1 不刷新二级索引,数据按照索引先排序,装载完后再
将排序的数据插入索引
2 不刷新二级索引,数据装载完成后重建所有二级索引
3 刷新二级索引, 数据装载的同时将数据插入二级索引
ERRORS 允许的最大数据错误数 (100)
CHARACTER_CODE 字符编码,字符串类型 (GBK, UTF-8, SINGLE_BYTE, EUC-KR)
MODE 装载方式,字符串类型 IN表示载入,OUT表示载出,
OUTORA表示载出ORACLE (IN)
CLIENT_LOB 大字段目录是否在本地 (FALSE)
LOB_DIRECTORY 大字段数据文件存放目录
LOB_FILE_NAME 大字段数据文件名称,仅导出有效 (dmfldr.lob)
BUFFER_NODE_SIZE 读入文件缓冲区的大小 (10),有效值范围1~2048
LOG_SIZE 日志信息缓冲区的大小 (1),有效值范围1~100
READ_ROWS 工作线程一次最大处理的行数 (100000),最大支持2^26-10000
NULL_MODE 载入时NULL字符串是否处理为NULL
载出时空值是否处理为NULL字符串 (FALSE)
NULL_STR 载入时视为NULL值处理的字符串
SEND_NODE_NUMBER 运行时发送节点的个数 (20),有效值范围16~65535
TASK_THREAD_NUMBER 处理用户数据的线程数目,默认与处理器核数量相同,有效值范围1~128
BLDR_NUM 服务器BLDR数目 (64),有效值范围1~1024
BDTA_SIZE bdta的大小 (5000),有效值范围100~10000
COMPRESS_FLAG 是否压缩bdta (FALSE)
MPP_CLIENT MPP环境,是否本地分发 (TRUE)
SINGLE_FILE MPP/DPC环境,是否只生成单个数据文件(FALSE)
LAN_MODE MPP/DPC环境,是否以内网模式装载数据(FALSE)
UNREP_CHAR_MODE 非法字符处理选项(0),为0时表示跳过该数据行,为1时表示使用(*)替换错误字节
SILENT 是否静默方式装载数据(FALSE)
BLOB_TYPE BLOB类型字段数据值的实际类型,字符串类型 (HEX_CHAR)
HEX表示值为十六进制,HEX_CHAR表示值为十六进制字符类型
仅在direct=FALSE有效
OCI_DIRECTORY OCI动态库所在的目录
DATA 指定数据文件路径
ENABLE_CLASS_TYPE 允许用户导入CLASS类型数据 (FALSE)
FLUSH_FLAG 提交时是否立即刷盘 (FALSE)
IGNORE_BATCH_ERRORS 是否忽略错误数据继续导入 (FALSE)
SINGLE_HLDR_HP 是否使用单个HLDR装载HUGE水平分区表 (TRUE)
EP 指定需要发送数据的站点序号列表,仅向MPP/DPC环境导入数据时有效
PARALLEL 是否开启并行装载(FALSE)
SQL 使用自定义查询语句,仅导出模式有效
TABLE 导入/出表
ROW_SEPERATOR 行分隔符
FIELD_SEPERATOR 列分隔符
COMMIT_OPTION 提交选项(0), 0:每发送一批数据后提交, 1:发送完所有数据后提交
APPEND_OPTION 追加选项(0), 0: 追加方式, 1: 替代方式, 2: 插入方式
COLNAME_HEADING 是否在导出文件头中打印列名(FALSE)
IGNORE_AIMLESS_DATA 是否忽略无目标数据(FALSE)
LOB_AS_VARCHAR 是否将CLOB作为VARCHAR进行导入导出(FALSE)
LOB_AS_VARCHAR_SIZE 将CLOB作为VARCHAR进行导入导出时, lob数据最大大小(10)MB
LOG_LEVEL 记录错误数据信息级别(3), 0: 不记录 1: 只记录到log文件 2: 只记录到bad文件 3: 记录到log和bad文件
FLDR_INI 配置文件路径,字符串类型
HELP 打印帮助信息
3.3 dmfldr实战
3.3.1 指定数据文件
1.建表
DROP TABLE TEST;
CREATE TABLE TEST(C1 INT,C2 INT,C3 DATE);
2.编辑数据文件test.txt,存放路径为/dm8/data/DAMENG/test.txt,内容如下:
1 1|2015-11-06
2 2|2015-11-05
3 3|2015-11_04
3.编辑控制文件test.ctl,存放路径为/dm8/data/DAMENG/test.ctl。内容如下:
LOAD DATA
INFILE '/dm8/data/DAMENG/test.txt'
INTO TABLE test
FIELDS '|'
(
C1 TERMINATED BY ' ',
C2,
C3 DATE FORMAT 'yyyy-mm-dd'
)
4.使用dmfldr进行数据载入
[dmdba@dm01 /dm8/bin]$ ./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=\'/dm8/data/DAMENG/test.ctl\'
dmfldr V8
控制文件:
加载行数:全部
每次提交服务器行数:50000
跳过行数:0
允许错误数:100
是否直接加载:Yes
是否插入自增列:No
数据是否已按照聚集索引排序:No
字符集:GBK
数据文件共1个:
/dm8/data/DAMENG/test.txt
错误文件:fldr.bad
目标表:TEST
列名 包装数据类型 终止
C1 CHARACTER WHT
C2 CHARACTER |
C3 yyyy-mm-dd |
行缓冲区数量: 2
任务线程数量: 1
3行记录已提交
目标表:TEST
load success.
3 行加载成功。
0 行由于数据格式错误被丢弃。
0 行由于数据错误没有加载。
跳过的逻辑记录总数:0
读取的逻辑记录总数:3
拒绝的逻辑记录总数:0
2.605(ms)已使用
3.3.2 使用DATA参数指定数据文件
1.建表
DROP TABLE TEST;
CREATE TABLE TEST(C1 INT,C2 INT,C3 DATE);
2.编辑数据文件test.txt,存放路径为/dm8/data/DAMENG/test.txt,文件内容如下:
1 1|2015-11-06
2 2|2015-11-05
3 3|2015-11_04
3.编辑控制文件test.ctl,存放路径为/dm8/data/DAMENG/test.ctl,内容如下:
LOAD DATA
INFILE *
INTO TABLE test
FIELDS '|'
(
C1 TERMINATED BY ' ',
C2,
C3 DATE FORMAT 'yyyy-mm-dd'
)
4.使用dmfldr进行数据装载
[dmdba@dm01 /dm8/bin]$ ./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=\'/dm8/data/DAMENG/test.ctl\' badfile=\'/dm8/data/DAMENG/test.bad\'
dmfldr V8
控制文件:
加载行数:全部
每次提交服务器行数:50000
跳过行数:0
允许错误数:100
是否直接加载:Yes
是否插入自增列:No
数据是否已按照聚集索引排序:No
字符集:GBK
数据文件共1个:
/opt/data/test.txt
错误文件:/dm8/data/DAMENG/test.bad
目标表:TEST
列名 包装数据类型 终止
C1 CHARACTER WHT
C2 CHARACTER |
C3 yyyy-mm-dd |
行缓冲区数量: 2
任务线程数量: 1
打开文件失败
目标表:TEST
load success.
0 行加载成功。
0 行由于数据格式错误被丢弃。
0 行由于数据错误没有加载。
跳过的逻辑记录总数:0
读取的逻辑记录总数:0
拒绝的逻辑记录总数:0
1.007(ms)已使用
3.4 提升dmfldr性能
参数 | |
---|---|
BUFFER_NODE_SIZE | 设置读取文件缓冲区页大小,值越大,缓冲区的页越大,每次读取的数据就越多,每次发送到服务器的数据也就越多,效率越高。但其大小受dmfldr客户端内存大小限制。 |
READ_ROWS | 在某些情况下,BUFFER_NODE_SIZE读入的数据行数很大,而后续操作处理不了这么大的行数,此时可以用READ_ROWS来限制处理的行数。dmfldr取READ_ROWS和BUFFER_NODE_SIZE中较小的值作为一次处理的行数。 |
SEND_NODE_NUMBER | 指定dmfldr在数据载入时发送节点的个数,默认由系统计算一个初始值。若在数据载入时发现节点不够用,系统会动态增加分配。在系统内存足够的情况下,可以适当设大SEND_NODE_NUMBER值,提升dmfldr载入性能。 |
TASK_THREAD_NUMBER | 指定dmfldr在数据载入时处理用户数据的线程数目。默认情况下,dmfldr将该参数值设为系统CPU个数,但当CPU个数大于8时,默认值都被置为8.在dmfldr客户端所有机器CPU大于8环境中,提高TASK_THREAD_NUMBER值可以提升dmfldr装载性能。 |
BLDR_NUM | 水平分区表装载时,指定服务器BLDR的最大个数,默认为64. 服务器的BLDR保存水平分区子表相关信息,BLDR_NUM的设置也就指定了服务器性能同时载入的水平分区子表的个数。若BLDR_NUM设置太大,当水平分区子表数过多时,可能会导致服务器内存不足。当载入时实际需要的BLDR个数超出BLDR_NUM设置时,会淘汰指定子表的BLDR,并替换为新的子表BLDR。 |
BDTA_SIZE | BDTA(Batch Data)的大小,默认为5000. BDTA代表DM数据库批量数据处理机制中一个批量,在内存、CPU允许的条件下,增大BDTA_SIZE能加快装载速度,在网络是装载性能瓶颈时,增大BDTA_SIZE影响不大。 |
INDEX_OPTION | 索引的设置选项,默认为1。INDEX_OPTION的可选项有1、2和3: 1.代表服务器装载数据时先不刷新二级索引,而是将数据按照索引预先排序,在装载完成后,再将排好序的数据插入索引。如果在数据载入前,目标表中已有较多数据,建议INDEX_OPTION置为1. 2.代表服务器在快速装载过程中不刷新二级索引数据,只在装载完成时重建所有二级索引。如果在数据载入前,目标表中没有数据或数据量较小,建议INDEX_OPTION置为2。 3.代表服务器使用追加模式来进行而今索引的插入,在数据装载的过程中,同时进行二级索引的插入,当原有数据量远大于插入数据量时,建议INDEX_OPTION置为3。 |
3.5 dmfldr使用限制
使用限制 |
---|
不支持向临时表、外部表装载数据 |
不支持向系统表装载数据 |
不支持向带有位图索引的表装载数据 |
不支持向带有函数索引的表装载数据 |
不支持向带有全文索引的表装载数据 |
不支持向带有全局索引的表装载数据 |
不支持向SCP代理装载数据 |
dmfldr装载时,对约束进行检查,对各种约束的处理机制如下表所示:
约束 | 数据不满足时 | 数据插入与否 | 约束是否有效 |
---|---|---|---|
非空约束(NOT NULL) | 报错 | 不插入 | 有效 |
聚集索引(CLUSTER PRIMARY KEY) | 报错 | 不插入 | 有效 |
唯一约束(UNIQUE, PRIMARY KEY) | 报错 | 插入 | 失效 |
引用约束(FOREIGN KEY) | 不报错 | 插入 | 有效 |
CHECK约束(CHECK) | 不报错 | 插入 | 有效 |
4. dminit
4.1 概述
dminit是DM数据库初始化工具。系统管理员可以利用dminit工具提供的各种参数,设置数据库存放路径、段页大小、是否对大小写敏感、以及是否使用UNICODE等,创建出满足用户需要的数据库。该工具位于安装目录的/bin目录下。
4.2 dminit参数
参数 | 说明 |
---|---|
INI_FILE | 初始化文件dm.ini存放的路径 |
PATH | 初始数据库存放的路径 |
CTL_PATH | 控制文件路径 |
LOG_PATH | 日志文件路径 |
EXTENT_SIZE | 数据文件使用的簇大小(16),可选值:16, 32, 64,单位:页 |
PAGE_SIZE | 数据页大小(8),可选值:4, 8, 16, 32,单位:K |
LOG_SIZE | 日志文件大小(256),单位为:M,范围为:256M ~ 2G |
CASE_SENSITIVE | 大小敏感(Y),可选值:Y/N,1/0 |
CHARSET/UNICODE_FLAG | 字符集(0),可选值:0[GB18030],1[UTF-8],2[EUC-KR] |
SEC_PRIV_MODE | 权限管理模式(0),可选值:0[TRADITION],1[BMJ],2[EVAL],3[ZB] |
LENGTH_IN_CHAR | VARCHAR类型长度是否以字符为单位(N),可选值:Y/N,1/0 |
SYSDBA_PWD | 设置SYSDBA密码(SYSDBA) |
SYSAUDITOR_PWD | 设置SYSAUDITOR密码(SYSAUDITOR) |
DB_NAME | 数据库名(DAMENG) |
INSTANCE_NAME | 实例名(DMSERVER) |
PORT_NUM | 监听端口号(5236) |
BUFFER | 系统缓存大小(100),单位M |
TIME_ZONE | 设置时区(+08:00) |
PAGE_CHECK | 页检查模式(0),可选值:0/1/2 |
PAGE_HASH_NAME | 设置页检查HASH算法 |
EXTERNAL_CIPHER_NAME | 设置默认加密算法 |
EXTERNAL_HASH_NAME | 设置默认HASH算法 |
EXTERNAL_CRYPTO_NAME | 设置根密钥加密引擎 |
RLOG_ENCRYPT_NAME | 设置日志文件加密算法,若未设置,则不加密 |
USBKEY_PIN | 设置USBKEY PIN |
PAGE_ENC_SLICE_SIZE | 设置页加密分片大小,可选值:0、512、4096,单位:Byte |
ENCRYPT_NAME | 设置全库加密算法 |
BLANK_PAD_MODE | 设置空格填充模式(0),可选值:0/1 |
SYSTEM_MIRROR_PATH | SYSTEM数据文件镜像路径 |
MAIN_MIRROR_PATH | MAIN数据文件镜像 |
ROLL_MIRROR_PATH | 回滚文件镜像路径 |
MAL_FLAG | 初始化时设置dm.ini中的MAL_INI(0) |
ARCH_FLAG | 初始化时设置dm.ini中的ARCH_INI(0) |
MPP_FLAG | Mpp系统内的库初始化时设置dm.ini中的mpp_ini(0) |
CONTROL | 初始化配置文件(配置文件格式见系统管理员手册) |
AUTO_OVERWRITE | 是否覆盖所有同名文件(0) 0:不覆盖 1:部分覆盖 2:完全覆盖 |
USE_NEW_HASH | 是否使用改进的字符类型HASH算法(1) |
ELOG_PATH | 指定初始化过程中生成的日志文件所在路径 |
AP_PORT_NUM | 分布式环境下协同工作的监听端口 |
DFS_FLAG | 初始化时设置dm.ini中的DFS_INI(0) |
DFS_PATH | 启用dfs时指定数据文件的缺省路径 |
DFS_HOST | 指定连接分布式系统DFS的服务地址(localhost) |
DFS_PORT | 指定连接分布式系统DFS的服务端口号(3332) |
DFS_COPY_NUM | 指定分布式系统的副本数(3) |
DFS_DB_NAME | 指定分布式系统的中数据库名(默认与DB_NAME一致) |
SHARE_FLAG | 指定分布式系统中该数据库的共享属性(0) |
REGION_MODE | 指定分布式系统中该数据库的系统表空间数据文件的区块策略(0) 0:微区策略 1:宏区策略 |
HUGE_WITH_DELTA | 是否仅支持创建事务型HUGE表(1) 1:是 0:否 |
RLOG_GEN_FOR_HUGE | 是否生成HUGE表REDO日志(0) 1:是 0:否 |
PSEG_MGR_FLAG | 是否仅使用管理段记录事务信息(0) 1:是 0:否 |
CHAR_FIX_STORAGE | CHAR是否按定长存储(N),可选值:Y/N,1/0 |
SQL_LOG_FORBID | 是否禁止打开SQL日志(N),可选值:Y/N,1/0 |
DPC_MODE | 指定DPC集群中的实例角色(0) 0:无 1:MP 2:BP 3:SP,取值1/2/3时也可以用MP/BP/SP代替 |
HELP | 打印帮助信息 |
4.3 使用dminit
初始数据库存放的路径为/dm8/data,设置页的大小是32kb,簇的大小是32kb,大小写敏感,字符集为utf_8,数据库名为DAMENG,实例名为DMSERVER,端口为5236
[dmdba@dm01 /dm8/bin]$ ./dminit path=/dm8/data PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y CHARSET=1 DB_NAME=DAMENG INSTANCE_NAME=DMSERVER PORT_NUM=5236
统中该数据库的系统表空间数据文件的区块策略(0) 0:微区策略 1:宏区策略|
| HUGE_WITH_DELTA | 是否仅支持创建事务型HUGE表(1) 1:是 0:否|
| RLOG_GEN_FOR_HUGE | 是否生成HUGE表REDO日志(0) 1:是 0:否|
| PSEG_MGR_FLAG | 是否仅使用管理段记录事务信息(0) 1:是 0:否|
| CHAR_FIX_STORAGE | CHAR是否按定长存储(N),可选值:Y/N,1/0|
| SQL_LOG_FORBID | 是否禁止打开SQL日志(N),可选值:Y/N,1/0|
| DPC_MODE | 指定DPC集群中的实例角色(0) 0:无 1:MP 2:BP 3:SP,取值1/2/3时也可以用MP/BP/SP代替|
| HELP | 打印帮助信息|
4.3 使用dminit
初始数据库存放的路径为/dm8/data,设置页的大小是32kb,簇的大小是32kb,大小写敏感,字符集为utf_8,数据库名为DAMENG,实例名为DMSERVER,端口为5236
[dmdba@dm01 /dm8/bin]$ ./dminit path=/dm8/data PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y CHARSET=1 DB_NAME=DAMENG INSTANCE_NAME=DMSERVER PORT_NUM=5236
详情请参考:https://eco.dameng.com