Tag Archives: union all

四人过桥问题的SQL解法

看了开发版的帖子,又没有忍住,简单写了一个SQL语句。关于问题的详细描述可以参考http://www.itpub.net/thread-1595264-1-1.html 传说中的微软面试题: 有一群人A,B,C,D (人数>=2)要在夜里走过独木桥过河,他们只有一把手电筒。四个人的速度不同,过河分别需要1,2,5,10分钟,桥上最多走两个人,两个人一起走时按速度慢的计算。过河一定要用手电筒。请问最快的方法是如何安排,需要几分钟? 例子输出: A B,A,A C,A,A D 19 直接给出最终结果: SQL> WITH C AS 2 (SELECT NAME, TIME, POWER(2, ROWNUM – 1) POS FROM BRIDGE_CROSSING), 3 A AS 4 (SELECT 0 RN, A.NAME || ‘ ‘ || B.NAME NAME, … Continue reading

Posted in ORACLE | Tagged , , | Leave a comment

限制访问表的FOR UPDATE操作

几年以前有朋友问过类似的问题,当时考虑了一下,没有想到好的解决方法,前些天有客户询问同样的问题,没有办法周末仔细琢磨了一下,总算是找到一个解决的方法。 其实现在Oracle有专门的工具可以解决这个问题,就是Oracle的FireWall,通过直连的配置方式可以阻塞预配置好的FOR UPDATE操作,不过那需要单独的软件。这里主要方案是要通过数据库现有的功能实现这个目标。 限制FOR UPDATE是有实际意义的,有时候只希望给用户分配查询权限,但是一旦分配了SELECT权限后,用户就自动拥有了FOR UPDATE能力,虽然用户并没有真正UPDATE的权限,但是仍然可以将表的记录锁定,而这有时候并不是所期望的。 SQL> conn test/test Connected. SQL> CREATE TABLE t_update (id NUMBER, name varchar2(30)); TABLE created. SQL> INSERT INTO t_update VALUES (1, ‘a’); 1 ROW created. SQL> commit; Commit complete. SQL> CREATE USER u1 IDENTIFIED BY … Continue reading

Posted in ORACLE | Tagged , , | Leave a comment

ORA-600(15160)错误

客户数据库中发现了这个错误。 在告警日志中错误如下: Wed Nov 2 11:13:17 2011 Errors IN file /oracleapp/oracle10g/admin/ora10/udump/ora10_ora_9007.trc: ORA-00600: internal error code, arguments: [15160], [], [], [], [], [], [], [] Wed Nov 2 11:13:36 2011 Errors IN file /oracleapp/oracle10g/admin/ora10/udump/ora10_ora_9007.trc: ORA-00600: internal error code, arguments: [15160], [], … Continue reading

Posted in BUG | Tagged , , | Leave a comment