• 为什么安了防毒软件之后,dmserver无法运行? (From DBMR1737 & 1754)
    这可能是防毒软件的原因。一些防毒软件比如NOD32,会阻止DBMaster运行db文件,然后引起dmserver运行失败。 对于NOD32,可以将DB安装路径和数据库文件路径添加到NOD32的AMON 白名单,白名单是一个文件和文件夹列表,列表中的文件和文件夹是可以排除扫描之外的。或者在NOD32里禁用文件扫描功能来解决此问题。 ...
  • 为什么会发生错误8349?虽然索引包括了一个Varchar(2000)类型的字段,但数据的长度并没有超过1024字节,怎样解决这个问题呢?(From DBMR1811)
    (1). 首先,当创建一个包含varchar类型字段的索引时,DBMaster不会检查出索引的长度。 例如: dmSQL> create table dbmr1811(id  SERIAL(1),application_name  VARCHAR(2000) default null ); dmSQL> create index idx_dbmr1811 on dbmr1811 (application_name); 以上的idx_dbmr1811包含了一个长度超过1024的varchar(2000)字段,但是能够成功创建索引,原因是DBMaster直到使用这个索引时,才检验它的长度。 (2). 当使用以上的索引时,DBMaster将根据不同的执行计划检验部分索引的长度。当一个执行计划使用嵌套连接时,它不知道这个数据的长度,所以它将会使用varchar类型的定义长度(在此处为2000字节)作为数据长度来分配缓存。当检验长度时,如果发现索引长度1024字节时,就会返回错误8394。 例如: dmSQL> create table c1(a1  VARCHAR(2000) default null ); dmSQL> create  ...
  • 为什么在DBMaster客户端JTools无法启动?(来自于DBMR1842; 版本: DBMaster 4.1.2)
    有两种可能,最可能的原因是权限控制。 或许防毒软件阻止了访问。请检查所有的防毒软件。 当前用户没有ACCESS权限:检查所有相关路径和文件的权限,如检查DBMaster安装路径以及它的子路径,确认当前用户是否有‘读写’权限。如果当前用户没有这些权限,错误将会发生。 对于DBMaster4.1.2,JRE文件夹下的大部分文件和子文件夹都没有为everyone设置‘读写’权限。赋予everyone‘读写’权限后,问题将会解决。 这个问题只存在于DBMaster4.1.2。之后的版本不会出现该问题。 4.1.2版与之后的版本使用的是不同的安装工具(install shield 和 inno setup),不同安装工具的不同动作导致了问题的发生。要解决问题,用户需要先对文件夹和文件授权;或者安装更高版本的DBMaster客户端(高于4.1.2)。 ...
  • 为什么DBMaster不使用NAS?
     DBMaster不使用NA的原因有: 1. 简单的说,我们不能授权支持这种方式。 2. 网络使性能降低。 3. 网络故障会引起数据不一致。 4. 它不能保证日志缓存成功flush。 5. 当日志文件在本地时,用户如果在网络上存储数据和blob,DBMaster运行正常,但是我们不能保证当发生故障时数据能被成功恢复。所以,为了安全起见我们不建议这么做。 ...
  • 为什么数日后一些查询会变慢?更新统计也不提速?要使这些查询像以前的速度一样唯一的方法是卸载表,删除表然后再重新上载表,为什么会发生这样的问题?(From 1851, 版本: DBMaster4.3)
    这可能是关于优化器的一个特殊情况,DBMaster优化器会设想数据在表中的分配状态是均衡的。如果客户端的数据分配是skew的话优化器不能找出到QEP的合并连接(最好的执行计划),它将采用嵌套连接来执行。 因为数据是skew,所以在客户执行更新统计table_name simple=100而获取真正的统计值之后,DBMaster优化器还会使用嵌套连接来执行。 甚至可以创建另一个索引,优化器将把主键作为执行索引。 但是当卸载和上载之后,默认的优化器将使用默认统计值来指定执行计划,它会设想这个数据分配是均衡的,所以它将会采用最好的执行计划。 这不是一个bug;DBMaster已经改良了优化器规则来支持所有种类分配的数据并实施最好的执行计划。 ...
  • 为什么DBMaster没有进行增量备份而却复制了日志文件?(DBMR 1875)
    这是一个正常操作,可以避免日志满的问题。尽管没有增量备份,当日志文件满后,备份服务器(设置DB_BkSvr = 1)将继续执行增量备份。 ...
  • 为什么在Vista的客户端连接在Windows XP sp2上的服务器端失败呢?(DBMR 1885; 版本: DBMaster 5.0)
    因为所测试的DB服务器和客户端使用了不同的LCode。所以测试返回的错误信息包括LCode不一致和驱动器的SQLSetConnectAttr失败。在DB服务器端和DB客户端的dmconfig.in里都添加DB_LCode,并保证这两个值是相同的,才能连接成功。 ...
  • 为什么在某些64位平台上无法安装64位DBMaster?(DBMR2629)
    此问题的引起原因是Microsoft Visual C++ 2005 Redistributable Package和DBMaster不兼容。用户可卸载原Microsoft Visual C++ 2005 Redistributable Package’,或下载安装新的Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package (Ver-61000)。该问题在2014年10月14日之后的数据库版本中已被修复。   Version: DBMaster 5.2.x /5.3.x Product: Normal Platform: Windows ...
  • 为什么从5.0.x升级到5.2.x后DBMaster的性能会降低?
    如果从5.0.x到5.2.x的升级不是通过载入/载出的方法实现的,那么使用高版本DBMaster启动相同的数据库文件时,由于5.0.x和5.2.x的系统目录有差异,DBMaster性能降低,此时用户需执行“update statistics”以升级整个系统目录。   Version: DBMaster 5.0.x/5.2.x Product: Normal Platform: Windows/Linux ...
  • 为什么用户在Linux平台上启动数据库时会报错“dmserver.bin: /lib64/libc.so.6: version ´GLIBC_2.7' not found (required by /home/dbmaker/5.4/lib/so/libxml2.so.2)”?(DBMR 2769)
    在32位Linux平台上,DBMaster使用的libxml2.so版本是libxml2.so.2.6.27,因此GLIBC的版本需求仍是2.3。 在64位Linux平台上,DBMaster 5.2使用的libxml2.so版本也是libxml2.so.2.6.27,相应地GLIBC版本需求也是2.3。然而,DBMaster 5.3和DBMaster 5.4使用的libxml2.so版本是libxml2.so.2.9.1。因此,从DBMaster 5.3开始,GLIBC的版本需求相应地从2.3更改为2.7。 用户可通过在Linux系统上设置“自动更新”或手动更新GLIBC版本来避免出现此类错误。 手动更新GLIBC版本请参考如下步骤: 一、从http://ftp.gnu.org/pub/gnu/glibc/glibc-2.7.tar.gz下载GLIBC源码。 二、mkdir /usr/local/glibc> cd /usr/local/glibc> tar zxvf glibc-2.7.tar.gz -C /usr/local/src/> /usr/local/src/glibc-2.7/configure --prefix=/usr/> make> make install三、使用“ldd –version”检查GLIBC版本。   版本: DBMaster 5.3.x/DBMaster 5.4.x 产品: Norma/Bundle 平台: Linux ...
  • 为什么会出现日志满的问题,如何避免和处理?
    (1) 日志文件太小 日志文件的默认大小是4M,如果这个问题是日志文件太小导致的,又可以通过下述步骤来增大日志文件。 A. 关闭数据库.B. 增大DB_JNLSZ 或者增加日志文件 DB_JnFil, 然后在dmconfig.ini中设置   DB_SMODE=2以新日志模式启动。 C. 重启数据库。 (2) 存在长事务 将长事务分割成几个短事务。 如果设置autocommit off关闭自动提交,要及时执行提交操作 "commit"。 (3) 备份模式开启 当备份服务开启的时候,直到备份操作结束日志才能被释放,所以要及时的执行备份。 (4)处于表复制环境   A. 我们测试发现在master端发生日志满是因为load数据库的时候创建触发器,解决方案是在load数据库的时候使用选项"column number" (默认1000) :    dmSQL> load db from xxxxx 100;   B. 如果日志满发生在slave端,导致的原应该是创建复制的时候使用了选项 ...
  • 为什么有时Update Statistics后SYSTABLE中UPD_STS_TIME的值不变?
    有几个原因会导致“update statistics”不会被执行或者执行之后UPD_STS_TIME的值不变,比如:在将DB从5.1移植到5.3之后,然后执行了update statistics 和 rebuild index,假如你再次执行update statistics,索引的统计信息将不会改变.   下面是我们列出会影响"update statistics"的行为: ----------------- 1. 新表并且从来没有执行过"update statistics". 2. 表的记录少于20个页. 3. 新增的记录多余两个页. 4. 上次执行"update statistics"超过了10天. 5. 假如对一个表执行"update statistics"是碰到以上1/2/3/4,这个表的索引的统计信息将会被改变. 我们支持了一个新的SQL语法来强行执行"update statistics",方法如下. >update statistics all; //[sample=100 by default] >update statistics all sample=60; 版本: ...
  • 为何需要重建主键,以及如何重建主键?
    当遇到如下问题时,用户就应该同时考虑重建索引. 例如: 索引膨胀导致性能下降(IO and CUP 花销) 数据库崩溃倒是索引和PK损坏. 用户可以用如下的语法重建主键: Rebuild index PRIMARYKEY for t1; //in default DEFTABLESPACE Rebuild index PRIMARYKEY for t1 in ts1; //support change tablespace only from 5.4 versions 版本: All 产品: ...
  • 为什么在查询系统表的时候偶尔会出现锁超时的错误? (DBMR2870)
    当在并发环境中执行SQL语句的时候,例如:删除一张半的所有记录或者在DCI中通过"OUTPUT"删除后者创建表的时候,就会加系统X锁,这种情况下其他的连接就无法访问这张表了。这是正常的行为。 但是当你通过JDBA工具去查询某些系统表或者检查某些内容的时候,锁超时还是会发生,这是因为系统表不允许脏读。 如果你想在加了系统X锁的情况下通过JDBA工具去查询系统表或检查某些内容,你可以使用 “for browse” 选项像下面示例一样。 >select * from SYSTABLE for browse; Or set DB_DBIND=1 in dmconfig.ini (需要重启数据库) DB_DBIND=1 //系统表脏读的绑定 Or runtime set with >call SETSYSTEMOPTION('DBIND', '1'); 版本: All 产品: Normal/Bundle 平台: Windows/Linux ...
  • 为什么在执行 call getsystemoption('xxxxx',?)时不返回OPTION_VALUE值,而是要求输入值?
    当用新版客户端去连旧版服务器执行 call getsystemoption(‘xxxxx’,?) 得到怪异的结果。应传回 OPTION_VALUE,但却得到要求输入值。这是因为客户端和服务器端新旧版本不一致而导致问题。请试着把客户端和服务器端版本更新到一致。 怪异的结果如下: dmSQL> call getsystemoption('bksvr',?); dmsql/Val>   正确结果应像下例: dmSQL> call getsystemoption('bksvr',?); OPTION_VALUE                    : 0 Version: DBMaker 5.4.1 服务器端 + DBMaker 5.4.3 客户端Product: Normal/BundlePlatform: Windows ...
  • 为什么在从属数据库(slave DB)中以“ check db”容易发现错误? (DBMR2922)
    如果您在从属端执行了“ check db”命令,则从属数据库将读取脏数据。 它导致主数据库和从属数据库之间的数据不一致。 我们建议您不要在从属端执行命令。 最好在主服务器端检查db。 Version: 5.2.2 Product: Normal/BundlePlatform: Windows/Linux ...
  • 为什么在powerpc上加载外部DB返回内存区段错误?
    用于powerpc的unixODBC安装套件不包含libodbc.so。 您需要手动建立符号链接。 输入以下命令: $ cd /usr/lib/powerpc64le-linux-gnu $ ln -s libodbc.so.1.0.0 libodbc.so     Version: 5.4.1 Product: Normal/Bundle Platform: Linux ppc64 3.19.0-28.31 ...