| |
|
| Q1 |
什么是内存DBMS? |
| Q2 |
请用一句话定义Altibase内存数据库 |
| Q3 |
Altibase支持什么操作系统? |
| Q4 |
Altibase和磁盘DBMS的最大区别是什么? |
| Q5 |
Altibase的稳定性如何? |
| Q6 |
既然整个数据库都在内存中,数据库的稳定性不会出现问题吗? |
| Q7 |
我知道Altibase的优点之一是数据库复制特性,为什么它如此重要? |
| Q8 |
Altibase复制时系统的性能 |
| Q9 |
Altibase复制中数据安全性和完整性 |
| Q10 |
其他内存DBMS提供的用户接口不够好,用户很难开发应用程序。Altibase为用户提供什么样的用户接口? |
| Q11 |
Altibase对用户数是否有限制,多少用户可以并发访问? |
| Q12 |
系统到底需要多少内存? |
| Q13 |
将磁盘上的备份数据库加载到内存中需要多少时间? |
| Q14 |
当数据量大大超出内存时的解决方案 |
| Q15 |
Altibase是否是独立的数据库管理系统,当它与其它磁盘数据库混合连用时是否是作为磁盘DBMS的访问前端? |
| Q16 |
Altibase与磁盘数据库连用时是否需要写应用程序?与磁盘数据库是否存在标准接口? |
| Q17 |
怎样定义冷热数据,如何进行冷热数据转换? |
| Q18 |
如果只用Oracle, 客户端一个SQL语句即可访问数据,如果二者连用,是否客户端要分别建立与Altibase和Oracle之间的联系,并且需要访问两个DB? |
| Q19 |
系统移植时工作量有多大?(数据移植,客户端程序移植,两个数据库之间的联系程序)。 |
| Q20 |
我们看到很多Altibase与Oracle连用的实例,能否介绍一下Altibase独立应用情况。 |
| Q21 |
Altibase可否提供硬件+软件的解决方案,比如可以自带备用电源,保障断电时数据不丢失。 |
| Q22 |
Altibase benchmark测试的环境,测试部门。 |
| Q23 |
如何决定是采用独立模式还是混合模式? |
| Q24 |
假如主机内存只有40多GB,对altibase正常运行是否有影响? |
| Q25 |
isql 客户端连接远程Altibase 主机报错?
[ERR-91015 : Communication failure.] |
| Q26 |
Altibase 参数修改步骤 |
| Q27 |
备机重启动后无法连接AB。
error:
TRANSITION TO PHASE : PROCESS
hostid->844d7498
[FAILURE]
Startup Failed....
[ERR-51039 : Internal Error : Invalid Protocol (err3)]
[ERR-51039 : Internal Error : Invalid Protocol (err3)] |
| Q28 |
现在一台PC机上装了solaris和altibase,能否与sun或IBM服务器装的altibase间replication?
操作出现如下错误:
iSQL> create replication rep1 with '10.200.26.36',20300 from sys.acct to sys.acct;
[ERR-61023 : The replication is disabled] |
| Q29 |
创建一个用户test,在该用户下创建replication时出错:
iSQL> create replication rep1 with '10.200.50.247',20301 from test.ACCT to sys.ACCT;
[ERR-31084 : The user has no permission to execute the SQL statement |
| Q30 |
ALTIBASE有三种运行模式,如何设置这三种模式? |
| Q31 |
ALTIBASE提供active-active和active-standby两种复制模式,如何设置实现? |
| Q32 |
3种模式 :
1. enable only memory space
2. enable only disk space
3. enable memory and disk space
altibase默认安装是第一种模式么?
第一种模式和第三种模式的区别是不是在于写磁盘数据库的同步上(两者都是要在磁盘上写log的)?
第一种模式和第三种模式是怎样配置实现的?效率相比较情况? |
| Q33 |
ODBC是在CLI基础上封装的,对不对?
二者的效率有明显的差别么? |
| Q34 |
有没有ODBC和CLI的函数封装包提供? |
| Q35 |
用iSQL in sysdba mode启动数据库为什么返回如下错误?
bash-3.00$ isql -s 127.0.0.1 -u sys -p manager -sysdba
Error : Cannot Specify Server or PORT when using sysdba mode |
| Q36 |
设置MEM_MAX_DB_SIZE = 1G
为什么使用中数据库会大于1G? |
| Q37 |
关于logfile文件的删除问题,是根据什么删除的,是checkpoint么? |
| Q38 |
当checkpoint 成功完成时,删除已经在数据文件更新的相关数据的相关日志logfile。
在使用过程中2月20号发现1月份的logfile还存在,checkpoint时间间隔为6000s,如果正常应该只存在6000s时间内的logfile,为什么会出现logfile不删除的情况,是checkpoint未成功么?
怎么实现manual checkpoint? |
| Q39 |
PARALLEL_LOAD_FACTOR,MULTIPLEXING_THREAD_COUNT等参数是根据CPU数来设制的,现在海南项目使用的是SUN服务器,为1个CPU8个核,设制参数按1来算还是按8? |
| Q40 |
表创建了sequence,双机同步,sequence值没有同步过去,请问如何解决? |
| Q41 |
请问怎样在isql下取得前几天的日期?
我们有清单表是用日期的,需要定期删除增加
能计算前几天的日期就行,还有后几天 |
| Q42 |
是不是ora2alti.cfg文件的ALTI_TABLE_CREATE = 0
# 1.create 2.truncate 0: nothing有误,帮忙解释一下2和0的区别? |
| Q43 |
dbs下的文件大小和内存表的大小之间的系数关系是? |
| Q44 |
autocommit off 模式下,怎么在数据库端发现并断掉加了表级锁的连接。
[ERR-11075 : The transaction exceeds lock timeout specified by user.] |
| Q45 |
我们需要把 cursor 的结果直接取到一个结构里.
问题是,结构类型定义在 一个统一的头文件中. 存放在专用的include 目录
现在编译出现问题了,找不到头文件rs.h里定义的结构类型.
我在编译时:加了include 选项的
sesc -o /App_ibs/iBOSS/rating/src/rs/obj -t cpp -
include /App_ibs/iBOSS/rating/include /App_ibs/iBOSS/rating/src/rs/loadParaTool.sc
在loadParaTool.sc 文件里也加了
exec sql INCLUDE rs.h; 不行
include "rs.h" 也不行 |
| Q46 |
isql 察看sql语句查询时间时只能到0.01s , 能不能看到毫秒级? |
| Q47 |
应用中,发生 Communication link failure 的情况有几种? |
| Q48 |
Altibase是否支持数据库的快照(snapshot)功能? |
| Q49 |
执行下列sql时出错。
"SELECT TO_CHAR(ADD_MONTHS(period_end,MONTHS_BETWEEN(TO_DATE(:fee_date,'yyyymm'),TO_DATE
(sum_period_date,'yyyymm'))),'yyyymmdd') FROM unitele.BS_BILL_PERIOD_T WHERE city_code = :city_code AND period_id = 1" |
| Q50 |
altibase的add_month和Oracle结果不一样
oracle add_month(2006-09-30,-1)=2006-08-31
altibase add_month(2006-09-30,-1)==2006-08-30 |
| Q51 |
Altibase 不支持哪些sql语句? |
| Q52 |
启动altibase总报[2006/09/24 15:33:48] [Warning] Memory allocation failed. Size: 4198464 Timeout: -1
测试服务器为HP系统。 |
| Q53 |
绑定参数函数与绑定列函数? |
| Q54 |
占位符‘?’在to_date函数中是否可用。 |
| Q55 |
批量插入出错的问题。 |
| Q56 |
NUMERIC数据类型precision与scale的关系。 |
| Q57 |
取出空(null)数据出错的问题 |
| Q58 |
Altibase 是否支持日志分析器? |
| Q59 |
Oracle 也可以把指定表 Keep 到 SGA 的 Buffer 领域,则 MMDBMS 一样,不是吗? |
| Q60 |
Update/Insert/Delete 等 DML操作:
oracle 也是先在buffer上进行操作,再定向到disk上操作,不是吗? |
| Q61 |
当 hardware的memory,altibase 会出现erorr,还是会停止? |
| Q62 |
当 hardware的disk出现 error 时,altibase 会出现erorr,还是会停止? |
| Q63 |
Altibase 启动时间多少? |
| Q64 |
在两套altibase数据库之间建立复制,可以消耗10%左右的性能
现在在两套数据库之间建立两个复制rep1,rep2,是否可以?如果可以对性能的影响如何? |
| Q65 |
怎样通过 jdbc把存储过程打印出来? |
| Q66 |
两个数据库是否可以建立数据连接? |
| Q67 |
数据同步的刷新速度,是否建议使用频繁同步? |
| Q68 |
多事物同时操作内存数据库和ORACLE数据库,数据的一致性和准确性是否可以保证? |
| Q69 |
如果是大查询部分表在内存数据库中,另一部分在oracle数据库中是否可以操作? |
| Q70 |
是否支持BEA TUXEDO中间件的数据库接口? |
| Q71 |
索引的使用方式和数据库其他实体比oracle9i有什么变化? |
| Q72 |
除ODBC数据库引擎外,内存数据库还支持其它哪种数据库引擎? |
| Q73 |
内存数据库的连接库及接口分布情况? |
| Q74 |
实时操作和大批量操作在同台内存数据库中对内存数据库参数影响如何? |
| Q75 |
与session有关的参数有那些,是否制约大批量操作? |
| Q76 |
如果错删数据,并且已经提交,如何可以恢复呢? |
| Q77 |
访问私有内存或共享内存的速度与访问内存数据库的速度,哪一个更快? |
| Q78 |
在使用oracle动态库编译的程序里面有连接内存数据库的部分应用程序可以使用吗 |
| Q79 |
请详细说明模糊检查点与乒乓检查点的原理。 |
| Q80 |
altibase的loganchor文件中具体包括什么信息? |
| Q81 |
altibase中采用了什么最佳的数据结构? |
| Q82 |
altibase中采用了什么最佳内存算法? |
| Q83 |
altibase中的内存索引为什么在ALTIBASE4种支持B TREE,不支持 T TREE?是否支持HASH 索引。 |
| Q84 |
在altibase的sql92标准中提高了支持分等级查询,是否可以介绍一下分等级查询的概念? |
| Q85 |
Altibase中是否支持伪列? |
| Q86 |
altibase是否支持锁的自动升级,比如行级锁升级为表级锁? |
| Q87 |
altibase的wal机制与oracle磁盘数据库的wal机制有什么不同? |
| Q88 |
请详细说明内存数据库的 SCN ,分为几类,详细的作用。 |
| Q89 |
内存数据库有很多线程,它们与主线程是如何通信的?如果其中有一个线程出了问题,或者死了,会对数据库有什么影响? |
| Q90 |
内存数据库中的锁是在程序中如何实现的?如果用MUTEX来实现的,是否可以用其他方法来代替实现? |
| Q91 |
内存数据库中是否有心跳的概念,如果有,请详细说说。 |
| Q92 |
内存数据库中存储最小的单位是页(32K),是否可以更改。如果一行数据记录超过一页,是如何存储的。 |
| Q93 |
内存数据库中是否有行连接与行迁移,如果有,如何看一个表有这些现象,如何解决行连接与行迁移? |
| Q94 |
内存数据库中有MVCC机制,是什么来决定MVCC,也就是说一个数据页能演化多少了版本,由什么来决定? |
| Q95 |
altibase的mvcc机制是如何实现? |
| Q96 |
在内存数据库中有垃圾回收线程,能否说一说垃圾回收线程什么时候起作用?什么时候不起作用?如何判断这页没有用了,进行垃圾回收? |
| Q97 |
在单CPU 与多核CPU(2、4)中,16个CPU,ALTIBASE 能达到最好的性能?这个16个CPU是指单CPU ?还是指多核 ? |
| Q98 |
在内存数据库中是否支持CUBE操作,如果不支持用什么方法来实现它? |
| Q99 |
在ODBC 接口中,是否完全支持 ODBC标准3.0 ? |
| Q100 |
在ODBC 接口中,是否支持SQLDescribe Param,如果不支持,用什么方法来实现它。 |
| Q101 |
内存数据库支持事务的隔离级别有几种? |
| Q102 |
内存数据库是融合的数据库,我只要内存数据库,不用磁盘数据库,是否可以关闭磁盘数据库也就是说,不让磁盘数据库干扰内存数据库。 |
| Q103 |
在内存数据库中,我删除了SYSTEM01.DBF,SYSTEM02.DBF,A.DBF,对内存数据库有何影响? |
| Q104 |
在同一时刻,有两个语句执行,数据库先执行哪一个?
例如:SESSION1:
T1 :UPDATE A SET AB=1;
T2 :COMMIT;
SESSION2:
T1 :UPDATE A SET AB=3;
T2 :COMMIT; |
| Q105 |
在内存数据库中可以提前检测死锁,请说一说如何进行检测的?如果检测到死锁,数据库是如何进行处理的? |
| Q106 |
在DIS工具中,在ORACLE、DB2 、MSSQL是如何实现把数据同步到内存数据库中?
如果采用 CDC 机制,是否可以说一下在上述数据库中的原理,是如何实现的?
如果用CDC 机制,是否对上述数据库有影响?如果有影响有多大? |
| Q107 |
在DIS工具中,有一个表在ORACLE中,一个表在内存数据库中,两个表是一样的。
DIS是如何解决冲突的?
例如:
在ORACLE中执行:insert into A VALUES (1); 有一个字段,并且是主键。
在ALTIBASE中执行:insert into A VALUES (1); 有一个字段,并且是主键。 |
| Q108 |
在内存数据库中是否支持 RBO ?如果不支持RBO,支持CBO ,那么统计是系统自动实现的还是人工实现的,如果是系统自动实现的,是隔多长时间来统计?我们如何知道? |
| Q109 |
insert into tb1 select * from tb2 ;(主机的mem为16G,而tb2的记录量大小4G,为什么执行此语句时速度很慢?) |
| Q110 |
altibase 可不可以将所使用的内存针定(pin)在内存中,避免被交换出去。 |
| Q111 |
使用iloader时,如果目标数据库没有存在表,in 命令能否执行成功呢? |
| |
|
| Q1 |
|
什么是内存DBMS? |
|
|
|
内存DBMS是一种新的在MMDBMS服务器启动后在内存中管理整个数据库的数据库管理系统。内存DBMS是在要求提高事务处理速度的背景下出现的。因为内存DBMS的整个数据库都在内存中,内存DBMS访问磁盘的次数相对于磁盘DBMS要少得多。因为整个数据库常住在内存中,数据处理算法非常简单。因为这些原因,内存DBMS的性能相对于磁盘DBMS要高得多。当然,内存DBMS不只是性能高,同样具有磁盘DBMS的各种功能。 |
|
|
|
|
| Q2 |
|
请用一句话定义Altibase内存数据库 |
|
|
|
Altibase是一个数据库管理系统(DBMS)。它在内存中保存和管理数据,可以不通过硬盘直接访问数据。它提供高效的事务处理解决方案。
|
|
|
|
|
| Q3 |
|
Altibase支持什么操作系统? |
|
|
|
因为Altibase内存DBMS在开发中使用一个操作系统无关的模块,所以通过在makefile文件中设置一些选项,重新编译Altibase的源代码可以很方便的移植到其他操作系统。Altibase支持如下的一些32位和64位的操作系统。
Solaris, DEC TRU64, HP-UX, AIX
Linux, Windows 2003
VxWorks, QNX
|
|
|
|
|
| Q4 |
|
Altibase和磁盘DBMS的最大区别是什么? |
|
|
|
有两个主要区别。一个是数据库所在的位置不同。磁盘DBMS总是将数据库存在磁盘上,将要访问的数据放在内存缓冲中。内存DBMS将磁盘上的备份数据库加载到内存中并在内存中进行管理。第二个区别就是他们的性能有非常大的不同。另外由于运行环境不同二者之间也有一些其它的区别。在性能方面内存DBMS大约比磁盘DBMS高10倍,功能方面内存DBMS和磁盘DBMS基本相同。
|
|
|
|
|
| Q5 |
|
Altibase的稳定性如何? |
|
|
|
Altibase内存DBMS在2000年10月首次发布。因为我们有长时间研究和开发DBMS丰富的经验,所以我们能在如此短的时间内开发出一个商业数据库产品。其间,Altibase的性能,稳定性和易用性也在通信,证券和国防领域被验证。Altibase从未让使用它的用户失望。
系统故障时,如果没有硬盘故障,则可以使用altibase启动时的恢复机制进行完全的恢复。但是如果出现硬盘故障,则只能恢复到最近一次的备份。
系统运行当中可以进行全部备份或表级备份
|
|
|
|
|
| Q6 |
|
既然整个数据库都在内存中,数据库的稳定性不会出现问题吗? |
|
|
|
数据库更新时,Altibase立即在日志文件中记录更新的信息。如果系统发生故障,Altibase分析日志文件内容并正确的恢复数据库。
Altibase还具有强大的复制功能,通过复制使系统具有高可用性和高稳定性。
|
|
|
|
|
| Q7 |
|
我知道Altibase的优点之一是数据库复制特性,为什么它如此重要 |
|
|
|
是的,Altibase的优点之一是数据库复制特性。首先,Altibase复制的性能非常好。虽然根据查询类型和网络环境的不同会有一点区别,但是在复制中只有简单的SQL语句的情况下,Altibase可以保持独立系统(没有复制的情况下)性能的95%以上,而其它公司的同类产品还不到60%,因此,Altibase数据库复制的性能可以认为非常好。Altibase复制可以自动检测网络和媒体故障并进行适当的处理,在从这些故障恢复后执行完美的数据库复制。如果您想了解Altibase复制的更详细的信息,请查阅本页上部的“产品介绍”菜单中的“数据库复制”子菜单中的内容 |
|
|
|
|
| Q8 |
|
Altibase复制时系统的性能 |
|
|
|
Altibase复制时能保持系统90%的性能。Altibase复制时性能的保持可以说是Altibase产品的技术核心,在多种实际应用中得到了验证。 |
|
|
|
|
| Q9 |
|
Altibase复制中数据安全性和完整性 |
|
|
|
Altibase复制是通过日志传递的方式来实现的。日志具有特定格式,所以在数据传送中无需加密即可保障数据的安全。
数据的完整由TCP控制,利用其本身的查错功能。
|
|
|
|
|
| Q10 |
|
其他内存DBMS提供的用户接口不够好,用户很难开发应用程序。Altibase为用户提供什么样的用户接口? |
|
|
|
因为内存DBMS是一个新技术,所以用户还会面对很多的麻烦。内存DBMS的目的是提高性能,如果系统提供给用户方便的接口,DBMS的性能会下降,所以其他产品在CLI层只提供ODBC和JDBC接口。但是相对于其他产品,Altibase的应用程序开发容易的多,因为Altibase是作为一个通用内存DBMS来开发的。除了ODBC和JDBC之外,Altibase还提供支持嵌入式SQL和PSM(类似于存储过程)的SES。Altibase也支持ISAM接口,这样就使您已经用ISAM开发的程序不用修改就可以在Altibase上使用。 |
|
|
|
|
| Q11 |
|
Altibase对用户数是否有限制,多少用户可以并发访问? |
|
|
|
ALTIBASE可以产生1000多个连接。受操作系统限制,一般最多1000多个同时的socket.
由于实际上是使用连结池来提供连结,所以并不存在限制连结的问题。由于Altibase在内存中操作,速度一定会比磁盘数据库快,也就能提供更好的并发性。 |
|
|
|
|
| Q12 |
|
系统到底需要多少内存 |
|
|
|
这是根据用户的数据量而不同的。一般以数据文件大小的150%~200%作为所需内存空间。 |
|
|
|
|
| Q13 |
|
将磁盘上的备份数据库加载到内存中需要多少时间? |
|
|
|
加载4G的数据大概需要5分钟时间 (SUN E250),根据系统的配置这个数据将变化 |
|
|
|
|
| Q14 |
|
当数据量大大超出内存时的解决方案。 |
|
|
|
使用硬盘swapping。系统性能降低。不建议这种应用形式,因为altibase中没有这种转化的机制,而且也不符合内存数据库的思想。
可以只对关键模块使用Altibase, 其余数据保存在磁盘数据库中。
但在大部分情况下,可将所有数据保存在内存中,Altibase独立使用。
|
|
|
|
|
| Q15 |
|
Altibase是否是独立的数据库管理系统,当它与其它磁盘数据库混合连用时是否是作为磁盘DBMS的访问前端? |
|
|
|
Altibase是独立的数据库管理系统,与磁盘数据库一样可以独立使用。它内部具有管理机制和查询算法,并不是作为磁盘DBMS的访问前端使用的。 |
|
|
|
|
| Q16 |
|
Altibase与磁盘数据库连用时是否需要写应用程序?与磁盘数据库是否存在标准接口? |
|
|
|
Altibase与磁盘数据库的连用通过写应用程序来实现。二者之间不存在国际标准的接口。 |
|
|
|
|
| Q17 |
|
怎样定义冷热数据,如何进行冷热数据转换? |
|
|
|
程序员设计时访问量大,影响性能的数据一般被指定为热数据。把这样的数据存储到ALTIBASE中使用,能提高系统的性能。访问量小,对系统性能没有明显影响的数据称为冷数据。
冷热数据转换是通过应用程序实现的。很多时候,Altibase与磁盘数据库的连用是以模块方式实现的,Altibase负责的模块主要存放热数据。
|
|
|
|
|
| Q18 |
|
如果只用Oracle, 客户端一个SQL语句即可访问数据,如果二者连用,是否客户端要分别建立与Altibase和Oracle之间的联系,并且需要访问两个DB? |
|
|
|
是的。这种情况下客户端需要访问两个DB。 |
|
|
|
|
| Q19 |
|
系统移植时工作量有多大?(数据移植,客户端程序移植,两个数据库之间的联系程序)。 |
|
|
|
先要把现有系统的数据以文本形式下载,再使用iLoader上传到ALTIBASE。速度是
10000~20000 tps(transaction per sec)。 客户端程序移植和两个数据库之间的联系程序,由于Altibase支持ODBC,
JDBC, SES如C/C++等多种标准借口,所以这种移植是非常容易实现的。
|
|
|
|
|
| Q20 |
|
我们看到很多Altibase与Oracle连用的实例,能否介绍一下Altibase独立应用情况。 |
|
|
|
在Altibase的实施中,大部分情况都是Altibase独立使用的。Altibase的独立使用的实施与传统磁盘数据库非常相似。
只有当数据量很大情况下,已有的服务都是基于硬盘的数据库,如果把这些都转移到ALTIBASE数据库需要很多的费用
(Altibase价格增长),所以只把那些影响系统性能的服务转移到ALTIBASE。
|
|
|
|
|
| Q21 |
|
Altibase可否提供硬件+软件的解决方案,比如可以自带备用电源,保障断电时数据不丢失。 |
|
|
|
用户可以根据自身需要决定是否使用备用电源或第三方HA设备。应用于磁盘数据库中的HA设备,也可以在Altibase中使用,如VERITAS
Cluster可用于altibase。 但由于Altibase强大的复制功能,很多用户发现没有必要使用上述方法。
|
|
|
|
|
| Q22 |
|
Altibase benchmark测试的环境,测试部门。 |
|
|
|
1. 测试环境 Server : sun E-450 memory : 4GB CPU : 2 * 400Mz
2. 测试部门 韩国altibase公司内部和韩国三星电子 |
|
|
|
|
| Q23 |
|
如何决定是采用独立模式还是混合模式? |
|
|
|
一般根据客户需求和性价比决定。如果对大量数据的访问性能都有很高要求,应该采用独立模式,如果只对小部分数据的访问速度和性能上存在高要求,则可以使用混合模式。 |
|
|
|
|
| Q24 |
|
假如主机内存只有40多GB,对altibase正常运行是否有影响? |
|
|
|
对altibase正常运行是有影响的,内存不够,可能会使用交换空间,性能会受到影响。 |
|
|
|
|
| Q25 |
|
isql 客户端连接远程Altibase 主机报错?
[ERR-91015 : Communication failure.] |
|
|
|
1.建议更换Altibase 客户端版本
2.重新设置 ALTIBASE_HOME , PATH 环境变量 |
|
|
|
|
| Q26 |
|
Altibase 参数修改步骤 |
|
|
|
1、 修改 103 和 39的 altibase.properties,这个文件修改只能是下次重起数据库的时候有效。
PREPARE_LOGFILE_COUNT=2
REPLICATION_PREFETCH_LOGFILE_COUNT=3
REPLICATION_PREFETCHER_RETRY_TIME=1
2、 Replication sync 之前做以下操作
iSQL> alter system set REPLICATION_PREFETCH_LOGFILE_COUNT = 3;
iSQL> altier system set REPLICATION_PREFETCHER_RETRY_TIME = 1;
iSQL> check properties; |
|
|
|
|
| Q27 |
|
备机重启动后无法连接AB。
error:
TRANSITION TO PHASE : PROCESS
hostid->844d7498
[FAILURE]
Startup Failed....
[ERR-51039 : Internal Error : Invalid Protocol (err3)]
[ERR-51039 : Internal Error : Invalid Protocol (err3)] |
|
|
|
由于改变了hostid,出现连接错误。把hostid改回成之前的hostid,问题得以解决。
连接成功。
注意:以后遇到类似问题,都要先确认一下hostid是否有改动或网卡更换。 |
|
|
|
|
| Q28 |
|
现在一台PC机上装了solaris和altibase,能否与sun或IBM服务器装的altibase间replication?
操作出现如下错误:
iSQL> create replication rep1 with '10.200.26.36',20300 from sys.acct to sys.acct;
[ERR-61023 : The replication is disabled] |
|
|
|
问题应该是没有启动Replication模块。
需要修改$ALTIBASE_HOME/conf/altibase.properties 中 REPLICATION_PORT_NO = 20301属性,就是再配一个Replicaion专用的端口号。
再重新启动Altibase 就可以启动Altibase Replication功能了。
create 语句中使用的端口号是对方Altibase的 REPLICATION_PORT_NO 。 |
|
|
|
|
| Q29 |
|
创建一个用户test,在该用户下创建replication时出错:
iSQL> create replication rep1 with '10.200.50.247',20301 from test.ACCT to sys.ACCT;
[ERR-31084 : The user has no permission to execute the SQL statement |
|
|
|
Altibase Replicaion 只能在sys/manager 用户下进行管理。 |
|
|
|
|
| Q30 |
|
ALTIBASE有三种运行模式,如何设置这三种模式? |
|
|
|
我们售前跟您说的Altibase 3种运行模式,不知道是不是说的 Altibase内存数据库、Altibase磁盘数据库、Altibase与其他数据库联用这个概念。
这是一个逻辑上的模式,Altibase 没有具体限制。Altibase 内存数据库 、Altibase 磁盘数据库都是可用的。 |
|
|
|
|
| Q31 |
|
ALTIBASE提供active-active和active-standby两种复制模式,如何设置实现? |
|
|
|
Altibsae Replication 可以通过设置Altibase 配置文件启用。并通过sql 语句建立表级复制关系。双向复制关系则为active - active ,单向复制则为active - standby。 |
|
|
|
|
| Q32 |
|
3种模式 :
1. enable only memory space
2. enable only disk space
3. enable memory and disk space
altibase默认安装是第一种模式么?
第一种模式和第三种模式的区别是不是在于写磁盘数据库的同步上(两者都是要在磁盘上写log的)?
第一种模式和第三种模式是怎样配置实现的?效率相比较情况? |
|
|
|
Altibsae 内存数据库和磁盘数据库是以表空间为区分的。
默认表空间为 SYS_TBS_MEMORY ,即内存表空间,内存表空间只有这一个,而磁盘表空间可以建立多个。//这个可以参考sql 手册。
可以在创建数据库用户时指定默认表空间。也可以在创建表时指定表空间。 这样就可以把热数据和历史数据分开放到内存和磁盘表空间。
另外Altibase 的内存数据库与磁盘数据库是通用一个数据引擎的。他们都会写磁盘log ,以保证数据完整性。不同的是实时数据文件的存放地分别是内存或磁盘。
从效率上将Altibsae 磁盘数据库性能在一定范围内能达到Oracle的性能(我们做了一些tcp 标准测试,性能上与Oracle 互有优劣)。
而内存数据库性能在实时业务处理方面要远强于Oracle,所以第三种模式的效率就要看您怎样去部署。 |
|
|
|
|
| Q33 |
|
ODBC是在CLI基础上封装的,对不对?
二者的效率有明显的差别么? |
|
|
|
Altibase CLI (UNIX App 接口) 和ODBC (Window ODBC 驱动) 其实是一样的APP 接口,现在我们也在统称为ODBC。函数说明您可以参考ODBC 手册。 |
|
|
|
|
| Q34 |
|
有没有ODBC和CLI的函数封装包提供? |
|
|
|
我们只提供编译好的LIB 库文件,安装包里包含这些库文件 |
|
|
|
|
| Q35 |
|
用iSQL in sysdba mode启动数据库为什么返回如下错误?
bash-3.00$ isql -s 127.0.0.1 -u sys -p manager -sysdba
Error : Cannot Specify Server or PORT when using sysdba mode |
|
|
|
sysdba mode 只能本机登陆,去掉-s 参数就可以登陆了。 |
|
|
|
|
| Q36 |
|
设置MEM_MAX_DB_SIZE = 1G
为什么使用中数据库会大于1G? |
|
|
|
MEM_MAX_DB_SIZE 是数据的大小,不包括索引以及临时内存空间的大小。 |
|
|
|
|
| Q37 |
|
关于logfile文件的删除问题,是根据什么删除的,是checkpoint么? |
|
|
|
logfile 会自动删除。具体的逻辑如下:
Altibase 是由数据文件 dbs/mydb-0-1 mydb-1-1 .. 和日志文件 logs/logfile.. 保证数据的完成性。
其中数据文件保持两分,当发生checkpoint 时交替将内存脏页写回到数据文件中。(如果chekpoint时宕库,则由另一份数据文件与已经有的日志文件恢复所有数据)
当checkpoint 成功完成时,删除已经在数据文件更新的相关数据的相关日志logfile。(相关管理数据在logarchor文件中) |
|
|
|
|
| Q38 |
|
当checkpoint 成功完成时,删除已经在数据文件更新的相关数据的相关日志logfile。
在使用过程中2月20号发现1月份的logfile还存在,checkpoint时间间隔为6000s,如果正常应该只存在6000s时间内的logfile,为什么会出现logfile不删除的情况,是checkpoint未成功么?
怎么实现manual checkpoint? |
|
|
|
如果使用了Replication ,并且没有启动日志会积压的。
可以在isql中手动执行checkpoint , isql> alter system checkpoint; |
|
|
|
|
| Q39 |
|
PARALLEL_LOAD_FACTOR,MULTIPLEXING_THREAD_COUNT等参数是根据CPU数来设制的,现在海南项目使用的是SUN服务器,为1个CPU8个核,设制参数按1来算还是按8? |
|
|
|
关于PARALLEL_LOAD_FACTOR,MULTIPLEXING_THREAD_COUNT 参数,可一不用设置,会自动识别的。
//其中PARALLEL_LOAD_FACTOR只在Altibase 启动时有所影响,但是无关紧要。
MULTIPLEXING_THREAD_COUNT 我们在其他多核的系统中也是采用默认值的。一些特殊的情况,我们都是反复测试才能设置最佳的值,建议不用修改。 |
|
|
|
|
| Q40 |
|
表创建了sequence,双机同步,sequence值没有同步过去,请问如何解决? |
|
|
|
这个Altibase 不支持双机的sequence复制 , 建议将双机两边的sequensce 单、双数分开,这样切换的时候就不会重复。
//就是两边建立sequence的时候,增量设为2。 |
|
|
|
|
| Q41 |
|
请问怎样在isql下取得前几天的日期?
我们有清单表是用日期的,需要定期删除增加
能计算前几天的日期就行,还有后几天 |
|
|
|
DATEADD
DATEADD (date, number, date_field_name)
说明
将日期或时间date的 date_field_name加number类型数值 . number为小数是,忽略小数点后面的数字.
date_field_name为 ‘SECOND’时 number必须为 68年以内的值, ‘MICROSECOND’时number必须为30天以内的值.
DATEADD 中可用的date_field_name如下.
CENTURY ,YEAR ,QUARTER ,MONTH ,WEEK,DAY ,HOUR,MINUTE,SECOND,MICROSECOND |
|
|
|
|
| Q42 |
|
是不是ora2alti.cfg文件的ALTI_TABLE_CREATE = 0
# 1.create 2.truncate 0: nothing有误,帮忙解释一下2和0的区别? |
|
|
|
0是 append,当有 pk时,发生冲突肯定不能插入进去。 |
|
|
|
|
| Q43 |
|
dbs下的文件大小和内存表的大小之间的系数关系是? |
|
|
|
mydb-0-0(大小:1G) 和 mydb-1-0 是一对,大小差不多。为了做 ping-pong checkpoint,存在2份。
存两份的原因除了备份以外,还有在 checkpoint 时间内也能处理事务。
这个文件中存放系统信息(table schema等信息)以及实际数据,所以与内存表达小出不多。 |
|
|
|
|
| Q44 |
|
autocommit off 模式下,怎么在数据库端发现并断掉加了表级锁的连接。
[ERR-11075 : The transaction exceeds lock timeout specified by user.] |
|
|
|
1 . 请及时commit,或查找没有断开的连接断掉。
2 . sesssion close的方法如下:
登陆sysdba用户 :$isql -u sys -p manager -sysdba
查找需断开的连接:> select comm_name , DB_USERNAME , id from v$session;
回滚相应的连接、并断开:> alter database mydb --数据库名-- session close 63 --session id--;
如果连接中需要回滚得事务比较多,这种方法会非常慢。
3 . 重新启动数据库。15G 的数据大概需要10~15分种。 |
|
|
|
|
| Q45 |
|
我们需要把 cursor 的结果直接取到一个结构里.
问题是,结构类型定义在 一个统一的头文件中. 存放在专用的include 目录
现在编译出现问题了,找不到头文件rs.h里定义的结构类型.
我在编译时:加了include 选项的
sesc -o /App_ibs/iBOSS/rating/src/rs/obj -t cpp -
include /App_ibs/iBOSS/rating/include /App_ibs/iBOSS/rating/src/rs/loadParaTool.sc
在loadParaTool.sc 文件里也加了
exec sql INCLUDE rs.h; 不行
include "rs.h" 也不行 |
|
|
|
您可以参考 $ALTIBASE_HOME/sample/SESC 的 Makefile.
1.sesc 只是预编译器, 不能那么做。
2.include 的时候,要用 -I。
altibase@[/home/altibase/altibase_home/sample/SESC][196]>gmake -n connect1 sesc -t cpp connect1.sc xlC_r -q64 -
DPDL_NDEBUG -qcheck=nobounds:div:null -qtempinc -qinfo -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -qspill=32000 -
qflag=w:w -O2 -qinline -D__PDL_INLINE__ -DPDL_LACKS_PDL_TOKEN -DPDL_LACKS_PDL_OTHER
-DPDL_AIX_MAJOR_VERS=5 -DPDL_AIX_MINOR_VERS=3 -c -I/home/altibase/altibase_home/include -I. -o connect1.o connect1.cpp
xlC_r -O2 -qinline -q64 -bmaxdata:0xFFFFFFFFFFFFFFFF -L.
-L/home/altibase/altibase_home/lib -o connect1 connect1.o -lsesc -lodbccli -lpthreads -lhm |
|
|
|
|
| Q46 |
|
isql 察看sql语句查询时间时只能到0.01s , 能不能看到毫秒级? |
|
|
|
您可以通过下列的语句在数据库端查询,连接程序的执行sql语句及执行时间(毫秒级)。
SELECT a.client_constr, a.comm_name, b.execute_time, b.query
FROM SYSTEM_.V$SESSION a, v$statement b
Where a.id = b.session_id; |
|
|
|
|
| Q47 |
|
应用中,发生 Communication link failure 的情况有几种? |
|
|
|
1、没有 connection的时候
2、发生 Timeout
- 有 Query Timeout, Fetch Timeout, UTrans Timeout, Idle Timeout
其中,Query Timeout 不会断开连接,其他情况都发生连接中断.
3、网络问题
4、DB Server 结束的时候
5、DB Server 已结束,无法连接的时候 |
|
|
|
|
| Q48 |
|
Altibase是否支持数据库的快照(snapshot)功能? |
|
|
|
不支持 |
|
|
|
|
| Q49 |
|
执行下列sql时出错。
"SELECT TO_CHAR(ADD_MONTHS(period_end,MONTHS_BETWEEN(TO_DATE(:fee_date,'yyyymm'),TO_DATE
(sum_period_date,'yyyymm'))),'yyyymmdd') FROM unitele.BS_BILL_PERIOD_T WHERE city_code = :city_code AND period_id = 1" |
|
|
|
Altibase不支持在select 后的字段名、表明项中使用host变量。但是可以用类似下列的方法解决:
strcpy(query, "...%s...",fee_date);
EXEC SQL EXECUTE IMMEDIATE :query; |
|
|
|
|
| Q50 |
|
altibase的add_month和Oracle结果不一样
oracle add_month(2006-09-30,-1)=2006-08-31
altibase add_month(2006-09-30,-1)==2006-08-30 |
|
|
|
Altibase的add_month函数与oracle是有上面所述的区别。
可以用dateadd函数进行调整。 |
|
|
|
|
| Q51 |
|
Altibase 不支持哪些sql语句? |
|
|
|
alter table BF_BILL_THREAD_T modify (err_info varchar2(500));
即不支持字段的修改。
如果在系统运行时,修改字段很可能引起错误。还是用iloader导出数据并重新倒入比较安全。
但是支持:
alter table add column
delete column |
|
|
|
|
| Q52 |
|
启动altibase总报[2006/09/24 15:33:48] [Warning] Memory allocation failed. Size: 4198464 Timeout: -1
测试服务器为HP系统。 |
|
|
|
从报错可以看出为内存分配的问题,需要察看的为以下几个方面:
1.内存使用情况(glance)
2.altibase.properties 中的属性MEM_MAX_DB_SIZE(确定正确设置后又没有重新启动)
3.系统配置属性sam => kernel configuration => configurable (其中maxdsiz_64bit限制了最大内存使用量)
4.察看硬盘使用情况(df -k)。
经察看为第3个属性引起的问题。重新设置最大内存使用量(install manu中有详细介绍),重新启动系统,重新启动数据库,数据库恢
复正常。 |
|
|
|
|
| Q53 |
|
绑定参数函数与绑定列函数? |
|
|
|
绑定参数函数向数据库提供数据,用于insert、update及where子句等;绑定列函数用于从数据库读取数据 |
|
|
|
|
| Q54 |
|
占位符‘?’在to_date函数中是否可用。 |
|
|
|
可以使用 |
|
|
|
|
| Q55 |
|
批量插入出错的问题。 |
|
|
|
由于使用了函数SQLSetConnectAttr(dbc,SQL_ATTR_BATCH,SQL_BATCH_ON,0),重复设置了批处理开关导致批量插入出错,将这个函数注释掉后,错误消失 |
|
|
|
|
| Q56 |
|
NUMERIC数据类型precision与scale的关系。 |
|
|
|
numeric(precision,scale),是从距离小数点scale个数字位置开始,保留高位precision
个数字有效。经分析,确定Precision-scale可作为numeric整数位数的计算及进行数据类型的转换的依据 |
|
|
|
|
| Q57 |
|
取出空(null)数据出错的问题 |
|
|
|
使用nvl函数避免取出为空的数据时出错的问题 |
|
|
|
|
| Q58 |
|
Altibase 是否支持日志分析器? |
|
|
|
目前Altibase 4.3.9版本还不支持日志分析器。 |
|
|
|
|
| Q59 |
|
Oracle 也可以把指定表 Keep 到 SGA 的 Buffer 领域,则 MMDBMS 一样,不是吗? |
|
|
|
即使是同样的数据在内存里, Altibase 的内存是数据库存储介质本身,但 Oracle 的 Memory(Keep) 是为了弥补磁盘用的 Cache 用。
因此,Select 时 Access 数据的方法(Algorithm)就不一样。 Altibase 是根据索引直接访问数据,所以 Random Access 较强,但 Cache 对顺序 Access 强。
毕竟 Oracle 也强化了此功能,但原理上 Altibase 更优。 如果不走索引,全表扫描的话,两个数据库性能差不多,但如果走索引, Altibase 肯定比 Oracle 快。
最重要的是 Update/Insert/Delete 等 DML操作 Oracle 要写到磁盘。 |
|
|
|
|
Q60 |
|
Update/Insert/Delete 等 DML操作:
oracle 也是先在buffer上进行操作,再定向到disk上操作,不是吗? |
|
|
|
可以定时回写,但写的时候为了以后从磁盘方便快速读取,重新整理后写到磁盘。但 Altibase 除了logging 以外, checkpoint 的时候才发生 Disk I/O ,是 dump 方式,所以简单快速.
更重要的是 Oracle 本身不建议把 U/I/D 操作频繁的表keep 到 Buffer ,这样可能更降低性能。
Oracle 建议把 Reference 表 Keep 到 Buffer。 |
|
|
|
|
Q61 |
|
当 hardware的memory,altibase 会出现erorr,还是会停止? |
|
|
|
Hardware 的 Memory 坏掉了, Altibase 可能直接死掉,可能跟 kill -9 一样,数据库级别什么报错和日志都没有。 这种情况没有遇到过,所以这只是可能。
|
|
|
|
|
Q62 |
|
当 hardware的disk出现 error 时,altibase 会出现erorr,还是会停止? |
|
|
|
Disk 也会跟 Memory 坏掉现象一样。 但 Altibase 运行状态中 dbs 和 logs 目录的 Disk 没有问题,应该没有什么问题。
Memory 和 Disk 坏掉了, Altibase 本身不会有日志,但操作系统本身会给 altibase 进程发送 signal。 |
|
|
|
|
Q63
|
|
Altibase 启动时间多少? |
|
|
|
启动时间受到以下因素影响: 数据量/ 索引量/ 磁盘速度/ CPU 个数/ CPU 主频的影响。
磁盘速度和数据量决定数据加载到内存的时间,索引量和 CPU 个数以及主频影响rebuild index 时间,因为 Altibase 创建索引的时候使用全部的 CPU。
我们一个案例中,数据大概 48G,索引大概18G,磁盘写的速度 50-70M/s,CPU 32 个(dual core),1.9GHz, 11分钟就能启动。
还有可以通过 altibase.properties 的SHM_DB_KEY 设置,可以把数据放到共享内存领域。
这样即使关闭 altibase ,数据在共享内存中,不会释放内存,但可以节省加载数据的时间。
所以数据量大的 Site, 比如 100G 数据量的,我们就放在共享内存领域中。 |
|
|
|
|
Q64 |
|
在两套altibase数据库之间建立复制,可以消耗10%左右的性能
现在在两套数据库之间建立两个复制rep1,rep2,是否可以?如果可以对性能的影响如何? |
|
|
|
可以建立。 altibase 复制是基于 ip 和 replication_port_no 的,
所以只要有两个不同的 ip<不同的网卡> ,两套数据库之间可以建立多个复制。
建立 1个复制有5-10% 性能下降,那么建立2个有10-20% 性能下降。
注意点:
一般两套数据库之间建立多个复制的目的是抛开网络瓶颈,提高复制的速度。
但这两个复制不能保证顺序,所以互相有关系的表务必放在同一个复制关系中。 |
|
|
|
|
Q65 |
|
怎样通过 jdbc把存储过程打印出来? |
|
|
|
关联altibase 的视图和meta table,才能知道存储过程内容,jdbc 也要访问数据库才行。 |
|
|
|
|
Q66 |
|
两个数据库是否可以建立数据连接? |
|
|
|
不支持 DB-Link。 |
|
|
|
|
Q67 |
|
数据同步的刷新速度,是否建议使用频繁同步? |
|
|
|
这里指的数据同步如果是 altibase 内存上的数据页和对应的磁盘上的数据文件的话,不用频繁同步。
altibase 现在是通过 checkpoint 实现这个功能,而且日志是实时同步,所以没有必要数据页频繁同步,也能保证数据库的完整性。 |
|
|
|
|
Q68 |
|
多事物同时操作内存数据库和ORACLE数据库,数据的一致性和准确性是否可以保证? |
|
|
|
altibase 和 oracle 都作为数据库,保证事务本身的特性。
但多事物同时操作内存数据库和ORACLE数据库时,数据库级别不能保证数据的一致性和准确性,需要应用来减少不一致性。
altibase 和 oracle 上不可能完全的同时提交,所以有可能数据不一致,但缩短提交的时间差,尽量减少误差。 |
|
|
|
|
Q69 |
|
如果是大查询部分表在内存数据库中,另一部分在oracle数据库中是否可以操作? |
|
|
|
altibase 和 oracle 是完全独立的数据库,一个表不能同时放在2个数据库上,如 1个表不能同时放在oracle 和 DB2 上一样。 |
|
|
|
|
Q70 |
|
是否支持BEA TUXEDO中间件的数据库接口? |
|
|
|
不支持 tuxedo 中的 xa功能,只是负载均衡用。国内国外案例里通过 tuxedo 再连接 altibase 数据库的非常多。 |
|
|
|
|
Q71 |
|
索引的使用方式和数据库其他实体比oracle9i有什么变化? |
|
|
|
altibase 数据库使用的引擎为 B-Tree,跟 oracle 没有太大的差别。
但oracle 优化数据库的根本在于最小化磁盘 I/O,altibase 优化数据库的根本在于最小化访问次数。 |
|
|
|
|
Q72 |
|
除ODBC数据库引擎外,内存数据库还支持其它哪种数据库引擎? |
|
|
|
altibase 数据库引擎就有一个,同时支持内存表和磁盘表,没有 ODBC 数据库引擎说法。
而且作为独立的数据库,altibase 不支持其他数据库的引擎。 |
|
|
|
|
Q73 |
|
内存数据库的连接库及接口分布情况? |
|
|
|
通过 isql/iloader 等command 或应用接口可以连接数据库。
应用接口有 ODBC/ Embedded SQL/ JDBC/ window ODBC Driver/ Unix ODBC / PHP Interface/ Perl DBD等。 |
|
|
|
|
Q74 |
|
实时操作和大批量操作在同台内存数据库中对内存数据库参数影响如何? |
|
|
|
主要考虑大批量操作变更数据库参数即可,而且现在很多案例都包括实时操作和大批量操作。 |
|
|
|
|
Q75 |
|
与session有关的参数有那些,是否制约大批量操作? |
|
|
|
altibase Starting Manual 的 property 部分的有关 session 参数上有详细说明。
可以调节客户端服务器端通信 Buffer, TIMEOUT 参数,所以不制约大批量操作。
以下为那些参数。
CM_BUF_SIZE
CM_DISCONN_DETECT_TIME
CM_DISCONN_HIGHWATER_MARK
IPC_CHANNEL_COUNT
IPC_CHANNEL_RETRY_COUNT
MAX_LISTEN
NLS_USE
PORT_NO
PSM_FILE_OPEN_LIMIT
FETCH_TIMEOUT
IDLE_TIMEOUT
QUERY_TIMEOUT
UTRANS_TIMEOUT |
|
|
|
|
Q76 |
|
如果错删数据,并且已经提交,如何可以恢复呢? |
|
|
|
根据事务的特性,已经提交的事务不能回滚,即删除数据并提交的数据不能恢复。 |
|
|
|
|
Q77 |
|
访问私有内存或共享内存的速度与访问内存数据库的速度,哪一个更快? |
|
|
|
内存数据库毕竟本身是数据库,所以访问内存以外还要管理事务等。
虽然使用共享内存技术时性能比内存数据库快 2-3倍,但无法变更数据结构,如果变更数据结构,业务开发量非常大。
而且不能用 SQL,不能关联表,维护较难;多并发的环境下不能保证一致性。
如果使用数据库,能保证事务(原子性、一致性、隔离性、持久性),即系统障碍下,多并发下保障安全性。
而且可以使用SQL ,并提供标准的开发接口,所以容易开发和维护。
总的来说,性能上内存数据库不如共享内存技术实现的应用,但综合评价性能、开发和管理、稳定性、功能等,内存数据库更优越。 |
|
|
|
|
Q78 |
|
在使用oracle动态库编译的程序里面有连接内存数据库的部分应用程序可以使用吗 |
|
|
|
完全不同的数据,需要重新开发。
但一个程序里可以同时连接2个数库。 |
|
|
|
|
Q79 |
|
请详细说明模糊检查点与乒乓检查点的原理。 |
|
|
|
初始创建数据库时默认有两个数据文件(mydb_0_0、mydb_1_0),三个log文件(logancher),ping pong检查点就是交替的进行数据文件的写操作,而模糊是将内存的脏页进行罗列后统一进行写。 |
|
|
|
|
Q80 |
|
altibase的loganchor文件中具体包括什么信息? |
|
|
|
log、归档日志、数据文件位置信息 |
|
|
|
|
|