如
如何确保数据库正常关闭?(哪些行为可缩短下次启动数据库所需时间?)(DBMR2517)
如果数据库的关闭由系统异常事件引起,那么为确保数据一致性,DBMaster在下次启动时需执行实例自动恢复,而该动作将花费很长时间,从而导致重启dmserver用时过长。用户可在以下两种方法之中任选一种避免该情况的发生:一是在停止操作系统之前首先使用组策略(操作系统工具)停止应用程序和数据库;二是改变服务停止的超时设置。
如果使用脚本断开数据库用时过长,用户可在该脚本中“terminate db;”前增加一个检查点,然后再执行该脚本,以此缩短用时。
Version: DBMaster5.2.x
Product: Normal/Bundle
Platform: Windows/Linux ...
如果没有注册DSN怎样才能访问DBMaster?
如果您没有注册DSN,当使用ADO时,可以使用以下的连接字符串:
strConn="Driver=DBMaster4.1Driver;DATABASE=Dbsample4;SvAdr=192.168.0.164;PtNum=8888;UID=sysadm;Pwd=;ATCMT=1;"
您需要注意以下几点:
在连接字符串中不要改变关键字的顺序。
对于不同的数据库,您需要更改以下三个参数的值:DATABASE=Dbsample4; SvAdr=192.168.0.164; PtNum=8888
对于DBMaster 和 DBMaster的不同版本,您需要注意参数 Driver=DBMaster 4.1这样的设置,如下例:
eg:运行DBMaster 4.1, 设置Driver =DBMaster 4.1驱动;
运行DBMaster 4.2, 设置Driver =DBMaster 4.2驱动;
运行DBMaster 4.1, 设置Driver =DBMaster 4.1驱动;
运行DBMaster 4.1, ...
如何决定FILLFACTOR的值?
如何选择合适的FILLFACTOR值要根据具体情况而定,下面列出一些大致的规则,如果一个表符合下面的一条标准,请设置一个较大的FILLFACTOR值。
表很少更新。
记录大小基本上是固定的,也就是说,所有字段基本都是固定长度的和非空的。如果表的字段都是固定大小的,那么FILLFACTOR的值可以设为100.
以上两条都不满足,但是,频繁更新的字段大部分是固定长度的。
提供一些步骤计算下限,不过请注意,计算数据页的实际使用情况将是非常复杂的。这里提供的方法仅仅是给出一个快速而有效的方式来计算一个范围:
计算空值Empty:所有可以为空字段的空值和可变字段的空值。
计算满值Full:所有填满字段和满长字段。
然后,FILLFACTOR的值不应该小于50与Empty/Full*100之间的较大值。
对大多数情况,理想的FILLFACTOR值应该在这个值与100之间,通过计算实际情况的Empty值可以缩小这个范围。
例如,
table1 {
c1 int not null;
c2 int;
c3 char(20) not null;
c4 varchar(12) not null;
}
在这个例子中,Empty = 4 + 0 + 20 + 0 = ...
如何将数据库从3.x版移植到4.X中?
可以使用Unload/load命令移植数据库,也就是先从3.x卸载数据库,然后把它加载到4.x,下面的步骤用3.7和4.2数据库为例进行说明:
如果需要的话,备份旧的数据库。
使用DBMaster3.7的dmSQL工具连接到原始数据库(命名为MIS),将MIS卸载到一个目标路径,假设为C:\ 37MIS \。
复制路径DB_FoDir下的所有文件到路径C:\ 37MIS \。
在DBMaster 4.2创建一个新的数据库,我们命名为NEWMIS,它的dmconfig.ini配置和数据库MIS相同,但是数据库路径却不同。
使用DBMaster 4.2的dmSQL工具连接到NEWMIS数据库,从目标路径加载旧数据库,为C:\ 37MIS \.。
移植工作完成。
Check if all the objects, including stored procedure, UDF, View still work in the new database and ...
如果数据库异常关闭,DBMaster会做恢复动作吗?(USE: DMBR: 1667)
如果数据库异常关闭,可能是页缓冲区数据没有写入数据文件。在启动数据库后,DBMaster服务器将会做一次恢复。这个恢复将检查数据文件是否有异常事务。如果有事务没有提交或回滚,服务器将做re-do 和un-do的动作来恢复这些事务以保持数据库的一致性。 ...
如果遇到死锁的问题,如何来调查原因呢? (From DBMR1703, version: DBMaster 4.1.2, OS: Windows XP Embedded SP1)
为了调查原因,首先要监测锁,例如,如下所示:
dmSQL> select USER_NAME, TABLE_NAME, SYSLOCK.LK_OBJECT_ID,
SYSLOCK.LK_GRAN, SYSLOCK.HOLD_LK_CONNECTION, SYSLOCK.LK_CURRENT_MODE
from SYSLOCK, SYSTEM.SYSTABLE, SYSUSER where HOLD_LK_CONNECTION = CONNECTION_ID and LK_OBJECT_ID = TABLE_OID and TABLE_OWNER != 'SYSTEM' and LK_GRAN != ...
如何获得数据库系统信息? (Form as the above)
一般情况下,当用户遇到问题,他们需要分析数据库在发生问题之前和发生之时的系统信息。
所以用户需要监视数据库系统信息来了解系统状态,帮助更好地管理系统,然后解决问题。
为了不间断地监测数据库系统,用户可以编写一个时钟程序或者使用操作系统提供的时钟。Linux系统提供crontab命令,Windows系统提供at命令或通过图形化界面设置任务管理。
下面列出的脚本是关于Linux系统上crotab命令的使用示例和dmsqlc工具定时监测系统示例。
对于Windows平台,用户可以使用at命令和dmsql32工具设置执行相似的脚本。
crontab 设置从星期一到星期五每5分钟运行一次checksys.bat$HOME/checksys.bat crontab to set every 5 min and Mon-Friday to run checksys.bat$HOME/checksys.bat
crontab -e
*/5 * * * 1-5 $HOME/checksys.bat
2. checksys.bat (chmod +x checksys.bat)
cd $HOME
dmsqlc $HOME/script/ttt ...
如果我想减少磁盘I/O,怎么用DBMaster操作呢?(From DBMR1742)
DBMaster4.3支持两个内部配置关键字(DB_DSYNC, 和DB_JSYCN),它们能够关闭DBMaster flush功能并让操作系统去控制IO。但这是危险的,因为如果系统由于异常操作而崩溃,有可能引起数据库数据不一致。所以通常来讲,我们不建议这样做。如果确实想减少数据库的I/O,请尝试以下操作:
设置DB_JSYNC = 0(在启动数据库之前关闭日志文件flush功能,在配置文件dmconfig.ini中设置)
设置DB_DSYNC = 0(在启动数据库之前关闭日志文件flush功能,在配置文件dmconfig.ini中设置)
设置DB_STSVR = 0(关闭统计服务)
设置DB_BKSVR = 0(关闭备份服务)
设置DB_IOSVR = 0(关闭IO后台程序服务)
在查询中不能使用DISTINCT,GROUP BY, ORDER BY连接表(否则连接结果是很大的),这是为了避免DBMaster排序(创建一个临时文件)
不能创建系统文件对象(避免文件IO)
不能使用全文检索,重建索引(避免索引文件IO)
关闭表空间自动扩展功能。
...
如果想更改字符集,需要重新安装DBMaster和重建数据库吗?有没有像Oracle的NLS_LANG这种编码方法可以使用户不用重建数据库?(From DBMR 1805)
如果想更改字符集,用户只需用新DB_LCODE来重建DB。
NLS_LANGE是Oracle的一个参数,它只对客户端字符集有用。设置NLS_LANGE能够改变客户端的字符集设置。
DBMaster数据库字符集是由关键字DB_LCODE来决定的。客户端字符集是客户端操作系统默认的字符集设置。DBMaster对它没有设定,仅支持服务器端DB_LCODE。 ...
如何通过命令执行压缩备份和从压缩备份文件中恢复? (来自DBMR 1846)
DBMaster仅对完整备份文件进行压缩,不会压缩增量备份文件,因为增量备份的文件本身就很小,而它在恢复时容易导致一些其他问题。
目前,DBMaster不支持用命令行来恢复压缩的备份文件。压缩备份文件功能要通过备份服务器实现,或者开启关键字DB_BKZIP,然后使用JServer Manager工具实现。 ...
如何在4.1.6 bundle中安装rollover.exe,如何使用rollover.exe来执行完整恢复? (DBMR: 1892, version: DBMaster 4.1 bundle)
首先,用户必须复制rollover.exe到4.1.6的路径下,以保证它和其他exe文件和dll文件位于同一个路径下。
备份和恢复指导手册中有一章专门讲解如何使用rollover工具,详细信息请参考。
如果数据库中存在多份日志文件,并且用户需要恢复到发生崩溃前的最后状态,那么为当前的多个日志文件指定正确的顺序是非常重要的,尤其在rollover过程中。日志文件的顺序取决于DB_JNFIL的顺序。
例如,DB_JNFIL = jnl1.jnl jnl2.jnl jnl3.jnl
所以,在恢复当前日志时,jnl1.jnl是第一个,jnl2.jnl是第二个,jnl3.jnl是第三个。 ...
如何以csv格式输出查询结果? (DBMR: 1893, version: DBMaster 4.3.2 bundle)
Export 命令只支持基本表。
EXPORT [INTO data-file]
TABLE table-name
[DESCRIPTION description-file]
[LOG log-file]
[STOP_ON_ERROR],
不支持export出查询结果。
考虑到性能问题,可以创建一个视图来代替查询结果。
例如:
(1) Create view v2 as select * from t1 inner join t2 on t1.c1 = ...
如果用户设置了PITR时间,如02/10 10:00:00,DBMaster会把数据库恢复到这个时间点吗? (DBMR1968;Version: DBMaster 4.3.4 bundle)
会的,DBMaster会将数据库恢复到确切的时间点(DB_RTime)。
如果设置了DB_RTime,在执行恢复数据库的过程中,DBMaster会在各个日志文件中比较日志记录的时间,如果日志记录的时间早于DB_RTime,则恢复该日志记录,而对于没有提交的事务,则执行回滚操作。 ...
如果升级DBMaster 4.3到5.1,程序端有何注意事项?(DBMR1975; 版本:DBMaster 4.3)
程序端的注意事项有:
ODBC Driver: 如果程序参考了驱动名称(如“Driver={DBMaster 4.3 Driver}…”),用户需要更该为5.1驱动。
DSN: 如何程序参考了DSN,用户需要用5.1驱动重新建立DSN。
如果参考了dmapi43.lib,用户需要用dmapi51.lib将其替换。如果参考了4.3 include文件,用户应该用5.1include文件来替换。
JDBC Driver:如果使用了CLASSPATH 和 LD_LIBRARY_PATH环境变量。用户需要修改并使其参考5.1的相关文件。
DDL: 如果使用DLL,用户应该根据UTF-8数据来调整每个字段的长度。 如果要升级的数据库是5.0版本或5.0之后的版本,用户还需注意对象名称的长度限制。
...
如何使用函数TO_DATE (string_expr, date_format_string)?
函数TO_DATE (string_expr, date_format_string) 的作用是将指定字符串转换成DATE类型的数据。指定的字符串可以是任何数据类型,但是在转换成一个日期时,必须是一个有效的日期。TO_DATE函数包含两个参数:字符串(string_expr)和日期格式串(date_format_string)。字符串参数代表要转换的字符串,而日期格式串代表DATE类型的显示结果。这种显示结果必须和前面字符串的表达形式一样。详见下面的例子。
TO_DATE 函数位于DBMaster的安装目录DBMaster\version\shared\udf下,它并不是数据库默认创建的。如果要使用该函数,用户需要手动创建它。
可执行下面的命令来创建:
create function to_date.TO_DATE(varchar(20), varchar(20)) RETURNS DATE;
使用TO_DATE的示例:
select to_date('2009-Jan-01', 'YYYY-mon-DD');
select to_date('2009-1-01', 'YYYY-MM-DD');
select to_date('Feb/29-2000','MoM/DD-YYYY');
...
如何避免发生“错误(6101):分配了太多的操作命令”?(DBMR: 2017)
在一个连接里,程序默认可以分配的语句句柄为257个。当语句达到数据库限制值时,则返回此错误信息。因为在创建语句时并没有相应地关闭程序中的语句,从而引起语句的增加而达到限制值。若发生此错误,用户应该检查程序中是否删除了存在的语句。另外,如果由于事务或别的原因引起语句超过257的话,用户可以在dbmconfig.ini里设置关键字DB_MXCMD= xxx来解决此问题。需要注意的是,在设置DB_MXCMD关键字后需要重新启动数据库。
版本: DBMaster 5.x
产品: Normal, Bundle
平台: Windows, Linux ...
如何通过VB6.0或2005的ADODB连接,从SQL获得表的索引名?(DBMR2040)
使用单条SQL语句不能直接获得索引字段名,必须通过多条SQL语句才可以得到。首先,从system.sysindex获得num_column, reserve3;其次,使上述结果与system.syscolumn的column_name相匹配。我们可以通过ec来编写存储过程以实现上述操作。
我们可以凭借SQLStatistics通过openSchema的ADO函数来获得索引字段的数据库元数据。
请注意,DBMaster5.1的OLEDB可支持此方法。对于DBMaster4.3版本,您应该把提供商改为“MSDASQL,把数据源改为“dbsample4”;
使用方法如下:
DBMaster4.x
Dim conStr As String
Set conn = New ADODB.Connection
conStr = "Provider=MSDASQL; data source=dbsample4; user id=sysadm; password=; "
conn.Open conStr
'Set rs = conn.OpenSchema(adSchemaIndexes, Array(Empty, "scheme_name", Empty, Empty, ...
如何避免编号为10851的错误:- 当数据库在DBMaster 5系列上创建,而参照DBMaster 4系列的DB_USRBB配置设定时,配置文件中的值无效?(DBMR: 2106)
当用户要把数据库从系列4升级到系列5时,应首先创建一个空的数据库5。如果用户把相同的数据库设置从系列4复制到系列5时,可能会面临数据库创建时DB_USRBB的设定值配置错误的问题 – 10851(配置文件中的值无效),因为DB_USRBB的默认值在5系列中被重新定义了。有两种方法可以避免这种错误的发生。
[4.x db]
Db_usrbb=/home/dbmaster/4.3/database/customer.bb 2
[5.x db]
Db_usrbb=/home/dbmaster/5.2/database/customer.bb 3
1)将*.BB大小从2修改到3。
2)直接从dmconfig.ini文件中删除参数。
版本: DBMaster4.x, DBMaster5.x
产品: Normal / Bundle
平台: All ...
如何避免“因为11206错误在重启操作系统后仍无法启动dbmaster服务器”的问题?(DBMR: 2111)
当用户想使用Windows服务器来启动数据库,但是在重新启动操作系统时数据库不能自动启动,并且同时返回‘11206’-不能创建/打开文件的错误。导致该错误的原因是当时文件的许可权被日志文件以外的其它进程所掌握。当数据库服务器试图获得所有数据库的存取权限时,如果任一文件已经被其它类似防毒软件(nod32)的进程所掌握,那么数据库服务器将会报告此错误。我们可以通过检查和调整防毒软件的选项,让数据库服务器重新获得所有数据库文件的存取权限以避免此错误的发生。
版本: DBMaster4 系列/ 5系列
产品: bundle
平台: All windows ...
如何在内部进行页压缩操作? (DBMR: 2081, DBMR: 2132)
在锁的粒度小于页锁的情况下,页压缩将会强制锁定整个页以将锁提升至页锁;但是锁粒度的提升会增加锁超时的机会,或者在更高的并发性上导致死锁。我们可以通过一些有效方法来减少内部的页压缩操作。
在以下两种情况下,将更容易发生数据库的页压缩。一种是包括VARCHA数据类型的表;另一种是表可以包括其它任何数据类型,但没有初始值,并且使用了DEFAULT NULL。
关于VARCHAR,它是varchar的特殊行为。varchar类型适合实际数据大小并始终不分配固定空间。所以在varchar类型下更新数据时,很容易导致原始大小不能满足新数据大小的需求,而需要寻找其它的连续空间。在页可用空间足够大但不连续的情况下,DBMaster服务器会自动通过压缩页来收集片段空间。数据库在进行页压缩的时候会强制性的将整个页锁住 ,然后试图使用该页空闲部分,在这个时候有可能real lock(deadlock 或者lock time-out)就发生了。
DBMaster数据库支持的其它数据类型,一开始它们的初始值就被设定为“DEFAULT NULL”,所以不用在表初始化中预设存储空间。当要把新的数据行添加其中时,DBMaster数据库会检查页中的连续可用空间。如上述情况。
为了减少页压缩,我们可以参考以下方法:
把varchar数据类型替换为char数据类型,并像其它数据类型一样设定数据初始值为NOT NULL。
调整填充因子的值为适当的值。
方法1和2 只是减少了发生页压缩的机会,但并不能彻底避免页压缩。如果方法1和2都不能满足需要,我们会视客户的要求来解决这个问题。
版本: DBMaster4.x, DBMaster5.x
产品: Normal / Bundle
平台: All ...
如何获得DEADLOCK错误信息?(DBMR: 2081)
我们可以在dmconfig.ini配置文件中设置关键字来获得有关DEADLOCK的信息。关于DEADLOCK新日志系统的详细设置,如下所示:
可以在dmconfig.ini文件中设置下面的关键字:
DB_LGDIR=<you log path>
DB_LGLCK=1
DB_LGSVR=3 ;( 1......6)
我们也可以将关键字DB_LGSVR设置为大于3来获得更多信息。最后,当出现设置锁时,您可以直接检查DB_LGDIR所指定的关于死锁的错误信息。
版本: DBMaster4 系列/ 5系列
产品: Normal/ bundle
平台: All ...
如何启动/终止dmserver?如何检查在linux运行下的数据库服务器?
以DBSAMPLE5为例。
在Linux操作系统下启动和终止dmserver的方法如下:
1) 启动dmserver:
/home/DBMaster/5.2/bin/dmserver DBSAMPLE5
2) 终止dmserver(利用客户端工具dmsqlc)
dmsqlc>connect to DBSAMPLE5 SYSADM;
dmsqlc>terminate db;
dmsqlc>quit;
注意:用户也可以使用命令来关闭数据库,但我们不建议使用这种方法。
/home/DBMaster/5.2/bin/dmserver –k DBSAMPLE5
检查数据库服务器在Linux系统下运行的方法如下所示:
用户可以使用ps命令“ps -ef | grep dmserver”来检查数据库服务器(dmserver)进程是否存在。如果有多个数据库在同一个操作系统下运行,您可以使用像“ps –ef | grep ‘dmserver.bin DATABASE_NAME’”这样的ps命令来指定数据库的名称。
例如– “ps –ef | grep dmserver”
[dbmaster@rh4as bin]$ ...
如何在64bit平台上使用32bit应用程序和DBMaster?(DBMR: 2106, 2144)
用户有一个32bit的应用程序并且想要它在64bit Windows操作系统上运行,由于这个应用程序是32bit的并且用户不愿意重新将程序编译成64bit,或者说这个应用程序根本无法转化为64bit,这个时候就需要一个32bit的数据源,可是操作系统是64bit。在这种情况下,如果用户试着通过正式安装版来安装数据库驱动器则会出现错误。此错误的出现属于正常现象,因为DBMaster 32bit正式版安装程序不支持在x64环境上运行。但是DBMaster 32bit bundle版支持x64操作系统,并且可以通过32bit odbc驱动管理器访问数据库服务器,所以我们建议用户使用32bit bundle版来避免此错误。
如果用户的AP可以被编译为64bit并且他们愿意使用64bit AP,此外,他们使用DBMaster5.1及以上版本,那么在64bit操作系统下他们不必使用32bit bundle版,可以直接安装64bit正式版。这是因为DBMaster从5.1版本开始支持64bit操作系统。
下面介绍如何在64bit操作系统上注册32bit bundle驱动器和DSN。具体步骤如下:
(1)注册32bit bundle驱动器
步骤(1) 在[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI\ODBC Drivers]下面的位置创建一个新键:
Name =”Your Driver Name”, for example, you can named” DBMaster 5.1B Driver”
Type=”REG_SZ”
Data=” Installed”
如下:
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI\ODBC ...
如何避免“无法读取代码页文件”的18065错误?
首先,确定客户端驱动程序可以读取代码页(Bundle\shared\codepage\xxxx.map),并且在删除所有.map文件后可复制此错误。
例如:用户意外删除.map文件或无权限访问,亦或出现其它错误而导致此错误的发生。
版本:DBMaster 5.x, DBMaster4.x
产品:Normal / Bundle
平台:All ...
如何利用存储过程COPYTABLE将旧表复制成一个新表?(DBMR: 2136)
用户可以通过调用存储过程“CALL COPYTABLE ()”在现有表的基础上复制一个新表。使用方法如下:
COPYTABLE(VARCHAR(32) source_schema_name INPUT,
VARCHAR(32) source_table_name INPUT,
VARCHAR(32) destination_schema_name INPUT,
VARCHAR(32) destination_table_name INPUT,
VARCHAR(128) tablespace_lock_mode_option_string INPUT,
VARCHAR(2048) where_condition_string INPUT,
INT fg_rename_index INPUT,
INT commit_count INPUT)
复制源表的定义和数据到目的表。
使用此存储过程时请注意以下事项:
(1).必须在自动提交开启的时候,该存储过程才会执行。
(2).依据DCI规则标志,用户可以设置0或1重命名索引。
(3).为commit动作设定一个提交计数功能,每复制n笔数据执行一次提交,用户可设置成0至n。
注意:一旦出现错误,在该错误发生之前的任何操作都将被提交,没有执行的命令将记录在_spusr.log中。用户可以在dmconfig.ini配置文件中设置DB_SPLOG关键词来指定存储log的目录,或者在用户执行应用程序的目录中找到它们。
用户在使用的过程中需要注意第五个参数。第五个参数允许用户设置三个选项:表空间、锁模式和填充因子。此外,关于第五个参数您可以一次设置一个选项,也可以同时设置三个选项。请注意,如果指定了相同的表空间,所有的设置都将和源表相同;如果您指定了其他表空间,记住设置不同的选项——锁模式或填充因子为不同的值,否则在不同的表空间里将使用默认设置。
例:
(1)创建表t1并查看t1的表结构。
dmSQL> def table t1;
create table SYSADM.T1 ( ...
如何避免此错误:用户在评估版的Windows VM上安装并激活了DBMaster,激活Windows VM后,DBMaster不能启动并报告“无效许可”。
用户在评估版的Windows VM上安装了激活版的DBMaster 5.2,当激活Windows VM 后,DBMaster报告无效许可。出现此错误属于正常现象,因为我们产生activation.dat是根据Machine ID生成的,而Machine ID和Windows VM操作系统的产品许可相关,所以激活Windows VM后DBMaster不能启动运行并报告“无效许可”。通过“Upgrade” 重新激活DBMaster就可解决此问题。
版本:DBMaster5.x, 4.x
产品:Normal / Bundle
平台:Windows ...
如何避免使用DBMaster Bundle版本时出现的5388错误?
如果我们有COBOL程序并且想在Linux系统下通过DCI访问DBMaster(bundle version),那么首先需要编译runcbl运行时,而编译运行时则需要链接libdmapic.so文件。DBMaster为其正式版和Bundle版提供不同的链接文件名。一般情况下,如果相应的文件是libdmapic.a文件,那么在编译运行时时必须保证使用正确的文件名。用户在编译runcbl运行时时会使用libdmapic.a,但是DBMaster Linux bundle版本却不包含libdmapic.a文件,所以当连接数据库时就会返回5388错误(字符集转换工具打开失败)。要避免此错误请使用libdmapic.so文件重新编译runcbl运行时,同时请记住在MAKEFILE中更改libdmapic.a为libdmapic.so。此外,请把LD_LIBRARY_PATH环境参数设置为xxx/bundle,例如:export LD_LIBRARY_PATH=/home/bundle。
版本:DBMaster 5.x, 4.x
产品:Bundle
平台:Linux ...
如何避免从DBMaster4.1移植数据库到5.2时出现的WARNING63错误?
用户想从DBMaster4.1移植数据库到5.2,首先从DBMaster4.1通过unload命令将数据库导出,然后通过load命令尝试导入到5.2,此时出现了Warning63错误(数据转换成不同类型时,数据被截断)。出现此错误的原因是末尾“换行符”是不可打印的SJIS符。从表空间导出数据,最好的解决方法是 “set unload chartohex on”,但此功能只从DBMaster4.3版本开始支持。
一般情况下,我们认为删除掉有问题记录的末尾"\t”,该 WARNING (63)就会消失。但事实上,即使末尾的"\t”被删除掉,其他的"\t”仍然不能被正确导入。而且一些SJIS日本汉字也不能正确导入。
例如:"能"
日本汉字"能"字的十六进制是945c,"5c"与换行符-"0D0A"的十六进制是一样的,所以"5c"会被认为是换行符-"\"而导致错误。当导入此SJIS日本汉字时,删掉"945c"的末尾变成"94",则会引起一些不同于之前的错误记录数据。
此外,DBMaster4.1版本并不支持“set unload chartohex on”的解决方法,所以用户不能直接从4.1导出数据库再导入到5.2。正确的方法如下:
(1). 升级DBMaster4.1版本至DBMaster4.34。用户可使用DBMaster4.1的DB文件来启动数据库,并且在此之前请先备份DB。
(2). 使用"set unload chartohex on"方法从DBMaster4.34导出数据。
(3). 导入数据到DBMaster5.2。
这样就可以成功实现从DBMaster4.1版本移植数据库到DBMaster5.2版本。
版本:DBMaster5.x
产品:Normal /Bundle
平台:全部 ...
如何避免使用高频率字符3?
首先,用户应该备份c:\DBMaster\4.3\shared\stopword\ tw.tab 下的文件tw.tab ,然后打开tw.tab 删除以下内容。
0
1
2
3
4
5
6
7
8
9
10
然后,重新命名tw.tab 为stopword.tab.(用户可以自己命名xx.tab)
接下来,在dmconfig.ini中设置DB_STPWD= stopword.tab,重启数据库。
最后,删除原始的文本索引并重新创建它来排除高频率字符3.
版本: DBMaster5.x
产品: Normal
平台: Windows ...
如何使MFCOBOL 兼容Visual COBOL?
Q1. 如何避免此错误:用户在评估版的Windows VM上安装并激活了DBMaster,激活Windows VM后,DBMaster不能启动并报告“无效许可”。 回答1:用户在评估版的Windows VM上安装了激活版的DBMaster 5.2,当激活Windows VM 后,DBMaster报告无效许可。出现此错误属于正常现象,因为我们产生activation.dat是根据Machine ID生成的,而Machine ID和Windows VM操作系统的产品许可相关,所以激活Windows VM后DBMaster不能启动运行并报告“无效许可”。通过“Upgrade” 重新激活DBMaster就可解决此问题。 版本:DBMaster5.x, 4.x 产品:Normal / Bundle 平台:Windows Q2.如何避免使用DBMaster Bundle版本时出现的5388错误? 回答2:如果我们有COBOL程序并且想在Linux系统下通过DCI访问DBMaster(bundle version),那么首先需要编译runcbl运行时,而编译运行时则需要链接libdmapic.so文件。DBMaster为其正式版和Bundle版提供不同的链接文件名。一般情况下,如果相应的文件是libdmapic.a文件,那么在编译运行时时必须保证使用正确的文件名。用户在编译runcbl运行时时会使用libdmapic.a,但是DBMaster Linux ...
如何使文件排序顺序按照日文字母顺序排序?(dbmr2178)
关于排序顺序,DBMaster按照默认的二进制排序顺序进行。
如果用户想使用其他语言作为排序选项,应该创建一个类似于big5_stroke.ord的顺序文件,然后放置在C:\DBMaster\5.2\shared\codeorder下。然后在dmconfig.ini 中设置DB_Order = xxxx_stroke.ord 。
我们将提供一个SJIS的顺序文件sjis_dict.ord 。
版本:DBMaster 5.x, 4.3
产品:Bundle/Normal
平台:ALL ...
如何备份文件对象?在不备份文件对象的情况下,该数据库可否正常恢复? (DBMR2241)
用户可以通过设定关键字DB_BkFom为一个完整备份指定文件对象(FO)备份模式。
DB_BkFoM = 0:不备份文件对象
DB_BkFoM = 1: 只备份系统文件对象
DB_BkFoM = 2: 系统文件对象和用户文件对象都备份
当执行一个完整备份时,在备份目录下创建一个FO目录。如果DB_BkFom 值为1,系统文件对象将拷贝至备份目录下。如果DB_BkFom 值为2,系统文件对象和用户文件对象都会拷贝至FO目录下。当备份文件对象拷贝至FO目录下时,这些文件对象会按顺序重新命名。例如,原始外部文件名为“ZZ000001.bmp,... , ZZ00AB32.txt”,备份服务器将拷贝它们至FO子目录下并重新命名为“fo0000000000.bak,... , fo0000002345.bak”,意思为它们是第一个文件对象和2345个文件对象。源完整文件名和其新名的映射将被记录在文件对象映射列表文件dmFoMap.his中,dmFoMap.his 是一个用于存储文件对象的纯粹的ASCII文本文件。格式如下:
Database Name: DBSAMPLE5
Begin Backup FO Time: 2012/01/29 ...
如何为数据库开启或终止一个NT服务? (DBMR2260)
使用命令 “net start ServiceName” 开启一个NT服务,使用命令“net stop ServiceName” 关闭一个NT服务。
例如,假定一个NT服务被系统为DBSAMPLE5的数据库自动命名为DBMASTER-DBSAMPLE5,以下命令用于开启该服务。
net start DBMASTER-DBSAMPLE5
以下命令用于关闭服务。
net stop DBMASTER-DBSAMPLE5
版本: DBMaster 4.x/5.x
产品: Normal/Bundle
平台: Windows ...
如何使用简单的命令将表及其索引移动至另一个表空间? (DBMR2363)
从DBMaster5.3开始,DBMaster支持命令 “ALTER TABLE table_name MOVE TABLESPACE tablespace_name”,该命令用于将表及其索引移动至另一个表空间。移动对象的进程完成前,用户不能访问该表的数据。
如果表及其索引位于相同的表空间,用户能够使用命令同时将其移动至另一个表空间;此外,通过重建索引,将索引和表移动至不同的表空间。
例如:
在表空间ts1创建表t1及其索引idx1,首先通过使用命令“alter table t1 move tablespace ts2”,将表及其索引移动至表空间ts2 ,接着通过重建索引,将索引idx1移动至表空间ts3 。详情如下所示:
dmSQL> create table t1(c1 int,c2 int) in ts1;
dmSQL> create index idx1 ...
如何从数据库中获取视图定义? (DBMR2327)
DBMaster中有两个用于获取视图定义的SQL语句。一个是 “def view view_name”,另一个是“select cast (view_definition as char(n)) from sysviewdata where view_name='view_name'”。
例如:
dmSQL> def view V2;
Create view SYSADM.V2 as select C1 from SYSADM.T1 ;
dmSQL> select cast(view_definition ...
如何将DBMaster 4.3版本的数据库从Windows 平台移植至Linux平台 ?(DBMR2384)
因为DBMaster在同系列的操作系统版本之间是兼容的,所以用户只需将数据文件复制到Linux下,并修改其相关配置(dmconfig.ini设置、关键字路径等),然后安装DBMaster,使用数据文件直接启动数据库即可。
用户在移植之前,需要注意以下几点:
目标的Linux平台应支持DBMaster。
Linux平台的硬件配置应与Windows平台的硬件配置相匹配或高于Windows平台。另外,Linux平台的CPU类型应与Windows平台的CPU类型相同(例如,两个平台均为x86 32 位或x86 64位),否则用户就不能直接复制数据文件,而需通过导出或导入来将其从Windows平台移植至Linux平台。
最好将数据库从旧版本移植至新版本。例如,将DBMaster4.3.0移植至DBMaster4.3.4,或者将DBMaster4.3.4移植至DBMaster4.3.4,而不能将DBMaster 4.3.4移植至 DBMaster 4.3.0。
修改dmconfig.ini配置。另外,如果用户调整了日志文件的大小,就需要在新日志模式下启动数据库。
版本: DBMaster 4.3.x
产品: Normal
平台: Windows ...
如何处理错误“DB_UMODE设置为0时,无法连接或启动dmserver”?(DBMR2612)
旧版本数据库在某些情况(例如:操作系统在数据库服务器还未成功断开时重启)下会出现如下错误:DB_UMODE的值被更改为0,且在数据库重启后无法自动重置为1。
要解决该问题,用户需将dmconfig.ini中DB_UMODE的值更改为1。该问题在2010年5月20日之后的数据库版本中已被修复,用户无需再手动重置DB_UMODE的值。
Version: DBMaster 4.3.x/5.1.X/5.2.X
Product: Normal/Bundle
Platform: Windows/Linux ...
如何调查创建存储过程时出现ERROR (6590)的原因?(DBMR2613)
1. 检查<procedure_name>.msg,并根据该文件信息调查原因。
2. 如果<procedure_name>.msg是空文件,检查sp32.bat。
首先,检查已安装的Visual Studio版本是否和DBMaster指定版本匹配,如果不匹配,将注册键值更改为正确值。例如:
[HKEY_LOCAL_MACHINE\SOFTWARE\DBMaster\5.3]
"COMPILER"="VC80"
其次,如果Visual Studio是安装在64位操作系统上,用户需选择选项“x64 Compiler and Tools”,否则用户无法成功创建存储过程。
此外,从DBMaster 5.3.1(#23266, 20140807)开始,DBMaster支持Visual Studio 2012。
Version: All
Product: Normal
Platform: Windows ...
如何在同一个数据库中创建表复制?(DBMR2758)
A1:一般来说,表复制应用在不同的数据库之间,但也可以用于同一个数据库。
您可以通过以下两种方法在同一个数据库中创建表复制:
一、使用Create Replication语法。但采用这种方法时,Create Replication语法中不能包含“CLEAR DATA”和“CLEAR AND FLUSH DATA”这两个选项。
例如:
CREATE REPLICATION rp_name
WITH PRIMARY AS SYSADM.FILE1
REPLICATE TO DBSAMPLE5:UTENTE.FILE1;
CREATE REPLICATION rp_name
WITH PRIMARY AS SYSADM.FILE1
REPLICATE TO DBSAMPLE5:UTENTE.FILE1
FLUSH DATA;
注意:如果用户使用JDBA工具创建表复制,则不能勾选 “删除目标表中的数据”。
如果需要删除目标表中的原始数据,则用户需在创建表复制之前手动删除所有记录。
二、使用触发器。请注意该方法仅适用于同步表复制,且它作为一个全局事务将占用一个额外连接。
例如:
CREATE TRIGGER TR_INSERT ...
如何避免WEB应用程序连接ODBC过程中偶尔出现的错误“ERROR [IM002] [Microsoft][ODBC Driver Manager] 未发现数据资源名及指定的既定驱动”?(DBMR2740)
在应用程序中,用户可通过将ODBC连接字符串中的“DSN=XXXX”更改为“Driver=DBMaster 5.x.x Driver”来避免出现此错误。例如:ODBC连接字符串="Driver=DBMaster 5.x.x Driver;DATABASE=XXXXX;SVADR=127.0.0.1;UID=SYSADM;Pwd="
版本: DBMaster 5.1.x
产品: Normal/Bundle
平台: Windows ...
如何在Linux平台查看DBMaster后台进程的运行状态?(DBMR2777)
DBMaster在Linux平台有三个基本进程:BACKUP_SERVER、SERVICE_SERVER和IO_SERVER。用户可使用如下SQL语句确认进程ID(进程ID和表SYSUSER中字段connection_id的值相同)。
dmSQL> select connection_id,user_name from sysuser;
CONNECTION_ID USER_NAME
================== ================
32433 SYSADM
32322 BACKUP_SERVER
32321 SERVICE_SERVER
32320 IO_SERVER
4 rows selected
下次,用户可使用如下命令确认数据库是否处于活动状态。
[dbmaker@RD-Redhat62 bin]$ ps -A|grep dmserver
32319 ? 00:00:00 dmserver.bin
32320 pts/0 00:00:00 dmserver.bin
32321 pts/0 00:00:00 ...
如何避免在Windows平台DBMaster旧版本中使用JServerManager工具创建数据库时报错ERROR (6534)?(DBMR 2490)
该错误是因JAVA7的libxml2.dll和DBMaster的libxml2.dll相冲突而引起的。为避免出现此错误,用户需更改与javaw.exe位于相同文件夹里的libxml2.dll的名称,或使用DBMaster新版本。此外,在2013年11月13日之后的版本中,该问题已修复。
版本: DBMaster 5.2.x/ DBMaker 5.3.x
产品: Bundle
平台: Windows ...
如何避免在isCOBOL 2016R1版本中执行DCI程序时产生崩溃错误?(DBMR 2783)
用户在命令行中执行DCI程序时,产生如下错误。
>java.exe ISMIGRATE
Exception in thread "main" java.lang.UnsatisfiedLinkError: com.iscobol.dci.Dci.dci__getenv(I[B[B)I
at com.iscobol.dci.Dci.dci__getenv(Native Method)
at com.iscobol.lib.DCI_GETENV.call(DCI_GETENV.java:43)
at com.iscobol.lib.DCI_GETENV.call(DCI_GETENV.java:24)
at com.iscobol.rts.Factory.call(Factory.java:3780)
at com.iscobol.rts.Factory.call(Factory.java:3689)
at ISMIGRATE.GET_DCI_CFG(ISMIGRATE.java:4382)
at ISMIGRATE.GUI(ISMIGRATE.java:2250)
at ISMIGRATE.MAIN(ISMIGRATE.java:2129)
at ISMIGRATE.perform(ISMIGRATE.java:1752)
at ISMIGRATE.call(ISMIGRATE.java:1736)
at ISMIGRATE.main(ISMIGRATE.java:43)
该问题是由isCOBOL2016R1和DCI不兼容引起的。为了修复MR 10307- “thin-client的iscobol多线程”问题,iscobol’s iscbol.jar和DBMaster的DCI库均已被修改,这导致DCI的JNI也发生了改变。
也就是说,isCOBOL2016R1必须使用2016版DCI库。在新的DCI压缩文件中,用户可找到dci_2016.dll和libdci_2016.so,并且需要将它们分别命名为dci.dll和libdci.so。
版本: DBMaster 5.4.x
产品: Norma/Bundle
平台: ...
如何在SQL语句中使用sleep方法?
DBMaster 支持一个用户自定义函数sleep () 用来休眠等待。
For example:
dmSQL> create function to_date.sleep(int) returns int;
dmSQL> select sleep(5);//休眠5秒
版本: 5.3.x, 5.4.x
Product: Normal/Bundle
Platform: Windows/Linux
产品: Normal/Bundle ...
如何使用LoadExternalDB在线load DB、表和数据?
用户可以通过DSN直接使用LoadExternalDB 来将外部 DB load到本地 DB中.
假如设置了unload时的外部’连接字符串’, dmSQL将会在s0文件中打印出"set external db 'odbc connection string' "
1. unload db1
Connect to db1 sysadm;
set unload external 'DSN=db1;UID=SYSADM;PWD=;';
unload db to db1;
2. db1.s0
…
set ...
如何只针对部分表数据列进行加密?
可以通过加密用户自定义函数来对部分列进行加密。用法如下:
A. create function LIBCRYPT.AES_ENCRYPT(string,string) returns string;
create function LIBCRYPT.AES_DECRYPT(string,string) returns string;
B. insert into tableXX(columnXX) values(AES_ENCRYPT(‘XXXXXX’, 'user_defined_key'));
Or update tableXX set columnXX=AES_ENCRYPT(columnXX, 'user_defined_key');
C. select AES_DECRYPT(column1, ‘user_defined_key’) from ...
如何在LOG中只打印CONNECTION和DISCONNECTION的信息? (DBMR2835)
设置日志级别DB_LGSVR=4,5,6日志系统不仅可以记录连接和断开连接的信息还可以记录SQL命令,提交,回滚等错误信息与慢语句。
如果你只关系连接和断开连接的信息或者想让日志文件缓慢增长,可以在配置文件中设置DB_ LGSQL=0
DB_LGSRV=4
DB_LGSQL=0
注意: 在旧版中设置 DB_LGSRV=4 和 DB_LGSQL=0 无法忽略SQL提交,回滚这些信息会导致日志很快的增长。
Version: 5.3.3, 5.4.1
平台: Windows/Linux ...
如何在load大DB时加快速度? (DBMR2919)
LOAD DB 支持两种模式, 安全模式和快速模式, 默认情况下是安全模式.
Set LOAD DB [safe | fast]
假如设置 LOAD DB to SAFE,DB在普通模式下运行,假如在load过程中发生错误,load的效用将会回滚到最后一次commit,并且将会在屏幕返回错误信息,并将其写入到log文件.
假如用户想提高load DB的速度, 用户可以设置快速模式.
但是当用户设置了LOAD DB fast, 用户需要注意下面这些问题:.
1. 在load的过程中确认备份模式已关闭.
DB_BMODE = 0;(default value: 0)
注意: DB_BMODE是服务器端参数,变更它的值之后需要重启数据库才能生效.
因为"set ...
如何制作重建所有索引的批次脚本档案? (DBMR2924)
输入以下SQL命令以检查并重建所有索引。 例如,有一个包含五个索引的数据库。
1. 检查原始索引的建立时间“ CREATE_TIME”。
dmSQL> SELECT CREATE_TIME, TRIM(TABLE_OWNER) || '.' || TRIM(TABLE_NAME) as INDEX_NAME from SYSINDEX;
dmSQL> SELECT CREATE_TIME, TRIM(TABLE_OWNER) || '.' || TRIM(TABLE_NAME) as INDEX_NAME ...
如何在单用户模式启动数据库进行维护? (DBMR2947)
您可以使用dmSQL或JDBA工具以单用户模式维护数据库。 请按照以下步骤启动数据库进行维护。 以数据库DBSAMPLE5为例。
1.使用dmSQL工具
a. 终止数据库。b. 运行dmSQL工具。c. 启动数据库DBSAMPLE5。
dmSQL> start db DBSAMPLE5 sysadm;
d. 维护数据库。e. 终止数据库。
dmSQL> terminate db;
2.在Windows中使用JDBA工具 a. 终止数据库。b. 打开dmconfig.ini,注释DB_SVADR和DB_PTNUM,然后将其保存。c. 打开JDBA工具,并连数据库DBSAMPLE5。d. 维护数据库。e. 终止数据库。f. 打开dmconfig.ini,取消注释DB_SVADR和DB_PTNUM,然后保存它。
Version: 5.4.1Product: ...
如何避免AbstractMethodError:dbmaker.sql.JdbcOdbcConnection.isValid(I)Z? (DBMR2960)
此错误表明DBMaker JDBC驱动程序的版本已过时。 请更新驱动程序以支持JDBC中的isValid()方法。 在DBMaker 5.4.1之前,您必须在context.xml中设置validationQuery =“ select 1”。 我们从DBMaker 5.4.1修复了此错误。
Version: 5.4.1Product: Normal/BundlePlatform: Windows/Linux
...
如何在Windows10 x64为搭售(bundle)版注册OLE DB驱动程序? (DBMR2996)
要在Windows x64中安装搭售(bundle)版OLE DB驱动程序,您需要手动注册驱动程序。如果要注册32位驱动程序,请打开cmd并输入以下命令:
C:\> cd C:\dbmaker_bundle
C:\dbmaker_bundle> C:\Windows\SysWOW64\regsvr32.exe dmole52.dll
如果您要注册64位驱动程序,请输入以下命令:
C:\> cd C:\dbmaker_bundle
C:\dbmaker_bundle> C:\Windows\System32\regsvr32.exe dmole52.dll
此外,在普通版和搭售(bundle)版之间注册OLE DB的方法不同。注册搭售(bundle)版版本的方法是 "Provider=DMOLE52B;Data Source=db_name;User Id=SYSADM;Password=;"。
注意。 搭售(bundle)版5.2.3之前的DBMaker版本不包含dmole52.dll,您需要从5.2.3升级DBMaker版本。
Version: 5.2.3 Product: Normal/BundlePlatform: Windows 10
...
如何使从数据库中的未提交记录回滚?
如果主数据库在未提交某些交易之前就终止了数据库,则这些未提交的记录已经存在于从数据库中,并且不会自动回滚。 您必须设置DB_SMODE = 1来启动,数据库就会自动回滚。
...
如何将DBMaker与安卓客户端的应用程序连接? (DBMR2987)
您需要在外部classpath中设置dmjdbct3c.jar,然后在程序上更改驱动程序类别和URL。 加入以下代码让Android应用程序连接DBMaker。
Class.forName("dbmaker.jdbc.ws.client.Driver");
Connection con = DriverManager.getConnection( "jdbc:dbmaker:type3://IP:port/db_name", "UID", "PWD");
Version: DBMaker 5.4.2, Android Studio 3.5 with API-25 Product: Normal/Bundle Platform: Windows
...
如何同时连接到具有不同LCODE的多个数据库? (DBMR3134)
从DBMaker 5.4.3,我们解决了该问题。 您可以同时使用不同的LCODE连接到多个数据库。
这是DBMaker 5.4.3之前的限制。 DBMaker无法同时连接到具有不同LCODE设置的多个数据库。 在关闭第一个连接后,您可以连接另一个数据库。 如果您无法关闭第一个连接,则我们发现一种解决方法如下步骤:
1.在不同目录中安装另一个DBMaker ODBC驱动程序。2.为第二个数据库创建DSN。3.在JAVA代码中使用Sun JDBC驱动程序(1.7或更低版本的JDK)来连接第二个DB。4.从JDK 1.8开始,将不支持Sun JDBC。 因此,从DBMaker 5.4.2开始,我们添加了新的JDBC类型(dbmaker-odbc)来替代Sun JDBC以连接其他数据库以进行异质异步表格复制。
对于此问题,我们也可以使用这种新的JDBC类型。
Class.forName("dbmaker.sql.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:dbmaker:DB_NAME","UID","PWD");
Version: DBMaker 5.4.2Product: Normal/BundlePlatform: Windows/Linux
...
如何透过Microsoft SQL连结服务器连接DBMaker? (DBMR3153)
有两个提供程序可以使用让MS连接服务器来连接DBMaker。 它们是用于ODBC驱动程序的Microsoft OLE DB提供程序和用于DBMaker 5.4.3的OLE DB提供程序。 请按照以下步骤连接DBMaker。
Microsoft OLE DB Provider提供程序给ODBC驱动程序。a. 打开ODBC数据源管理员。将数据库加入到系统数据源名称。b. 打开Microsoft SQL Server Management Studio,打开对象总管,点击服务器对象,右键单击连接的服务器,然后点击新建连接的服务器。c. 输入连接的服务器名称,选择提供程序Microsoft OLE DB Provider 给ODBC Drivers,输入数据库名称作为数据源。d. 从DBMaker启动数据库服务器。e. 点击Ctrl ...
如何将JDBC type3安装为Windows服务? (DBMR3162)
1.将附加的JettyService.zip(3个档案)解压缩到dbmaker \ 5.4 \ jetty中 a. install-service.bat b. JettyService.exe c. bin \ JettyService.exe
2.以管理员身份运行cmd > cd dbmaker \ 5.4 \ jetty ...
如何在SQL预存程序中批注代码? (DBMR3183)
您可以使用这些符号“/ * * /”,“//”,“#”和“--”来批注代码。
使用符号“/ * * /”来批注在符号内的代码。
使用符号“//”,“#”和“--”来批注符号后的行。
...
如何从完全备份还原具有另一个表名的表? (DBMR3188)
要从完全备份中支持还原表格使用其他名称并不容易。 也许我们需要支持更多的载出(unload)语法来支持它。 这里有使用SQL命令而不用完全备份的替代解决方法。
1.预先将表载出到档案中。
dmSQL> unload table from table_name to file_name;
2.从档案载入表。
dmSQL> load table from file_name;
3.如果要重新命名表格,请键入以下命令。
dmSQL> alter table rename table_name to new_table_name;
我们提供了另一个解决方法。 Dmrestoretb是可以以完全备份还原表格的工具。 从5.4.3版开始,我们添加了一项新功能来还原有目标名称的表格。 如果您要了解dmrestoretb的详细用法,请打开cmd或终端机(terminal),然后到dbmaker/5.4/bin目录,然后键入dmrestoretb。
输入以下命令将table_name还原为target_name。
> ...
如何通过查询获取所有索引字段? (DBMR3196)
在DBMaker 5.4.3中,我们添加了一个预存程序命令“showindex”。 输入以下命令,即可获取索引字段。
dmSQL> call showindex(owner_name, table_name);
这是一个例子。 数据库中有一个表t1。 输入预存程序命令“call showindex”,即可获取所有的索引字段。
dmSQL> call showindex(‘sysadm’, ‘t1’);
TABLE_OWNER TABLE_NAME NON_UNIQUE INDEX_NAME TYPE ORDINAL_POSITOIN =========== ========== ========== ========== ==== ================ ...
如何避免在日志已满的情况下缩小数据库? (DBMR3233)
收缩数据库可以回滚,这意味着“收缩”操作需要日志档案,并且所需大小应为压缩数据和BLOB的两倍。 如果日志容量不足,可以通过关闭日志来缩小数据库。 以单用户模式打开dmsqls。 在执行以下命令之前,请备份数据库。
dmSQL> start db db_name sysadm; dmSQL> set journal off;dmSQL> shrink tablespace ts_name compressonly;dmSQL> set journal on;
Version: 5.4.3 Product: Normal/BundlePlatform: Windows/Linux
...