关于跨库查询的副作用问题
前段时间为了解决某一问题运用了informix的跨库查询。 同一个informix服务下有A,B两个库 A库的所有者是 Aowner B库的所有者是 Bowner,为了实现跨库查询给Bowner授予了 A库的dba权限.这样代码中就可以使Bowner 在连接了 B库(用 exec sql database B ;)的同时 通过执行形如"select * from A:tabname"语句而查询A库中的表。按理说执行完以上语句 Bowner应该从A库断开了才是。但现在我再备份A库时提示我有其他用户在访问该库不能备份。(我在应用中不能把数据库服务停了,因为B库还要一直运行下去,只是想备份A库),想请教大家怎样把 Bowner跨库对A库的连接断开而顺利的进行对A库的备份.用onstat -g ses 等命令查看到的信息显示 当前所连接的库是 B库(因为代码中运用了 exec sql database B ;),而体现不出有 Bowner 对A的跨库访问. 谢谢大家!! 没听说过数据库在访问就不能备份的~{:3_194:}{:3_194:} 本帖最后由 gulpgg 于 2010-11-09 21:01 编辑回复 2# liaosnet
谢谢您的回答,我再执行 dbexportA 的时候,报有其它用户再访问。
-425 - Database is currently opened by another user.
-107 - ISAM error:record is locked. 回复liaosnet
谢谢您的回答,我再执行 dbexportA 的时候,报有其它用户再访问。
gulpgg 发表于 2010-11-09 20:52 http://bbs3.chinaunix.net/images/common/back.gif
这个需要独占权限~ 这个也不叫备份,这种方法一般用于导库、迁移。。:sleepy:
备份一般用ontape / onbar 回复 3# gulpgg
你可以考虑使用onmode -z 杀掉连接到数据库的进程,然后再执行dbexport 回复 4# liaosnet
谢谢,学习了, 那是我平时的叫法不对,请问我怎么把Bower对A的跨库连接真正的断开而使对A的这个导库操作能够做下去呢? 回复 5# liaosnet
我用onstat -e ses 看到的ID 是我 用 语句 exec sql database B 所建立的会话。 如果把这个会话杀掉的话,那对B库的所有连接都断开了.我不想断开B的连接只是想断开 Bowner在访问B的同时而跨库访问A的连接。想断开的是这个跨库的对A的连接。再次感谢您。 你要在那个库上做dbexport,就需要在那个库上onmode -z.
如果你不想onmode -z,那么,请你在程序中显式的退出操作。 回复 8# liaosnet
请问有没有一个命令完成断开对A库的所有连接,而不影响对B库的连接呢? 回复liaosnet
请问有没有一个命令完成断开对A库的所有连接,而不影响对B库的连接呢?
gulpgg 发表于 2010-11-09 21:35 http://bbs3.chinaunix.net/images/common/back.gif
onmode -sy/ onmode -jy
页:
[1]