altibase 常见问题及解决方式(2)

2020-04-03 09:58

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 \也不行

您可以参考 $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 qflag=w:w

-O2

-qcheck=nobounds:div:null -qinline

-D__PDL_INLINE__

-qtempinc

-qinfo

-D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -qspill=32000 -

-DPDL_LACKS_PDL_TOKEN

-c

-DPDL_LACKS_PDL_OTHER -DPDL_AIX_MAJOR_VERS=5

-DPDL_AIX_MINOR_VERS=3

-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时出错。 \

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, \,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。


altibase 常见问题及解决方式(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:救护技能试题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: