2012-02-27 82 views
0

我们使用了一个工具,该工具对某个数据库进行操作,当我们对该工具进行一些更改时,它将更新某些值。 这需要很长时间才能完成一些简单的任务。 我只需要找出哪个表,列和该列的值得到更新。在oracle9i中通过数据库搜索其值='xyz'的列名?

为此,我需要找出整个数据库的哪个column_name具有值“XYZ”和相应的表/表。

这些的任何脚本。

+0

[Oracle搜索所有表中所有列的字符串](http:// stackoverflow。com/questions/6389666/oracle-search-all-tables-all-columns-for-string) – 2012-02-27 11:04:18

+0

这可能也有帮助:http://stackoverflow.com/a/5350405/330315 – 2012-02-27 11:06:06

+0

另一种方法是跟踪数据库,而该工具正在运行。 – 2012-02-27 12:55:05

回答

3

仅仅因为可以做到并不意味着应该做

我知道你已经用这种方式设计了你的过程,而且你很可能不想改变它,但是,如果你重新设计这个以避免做一些真的,认真的事情,你的生活会变得更好,不应该这样做。搜索整个数据库中的每个文本字段以搜索一些神奇的字符串是一个坏主意。它实际上只是大坏主意中的一个,它可能并不是最糟糕的主意,但它足够糟糕的主意,你应该认真考虑做更好的事情。

好的,那有什么问题吗?

首先,它表示你没有使用数据库,你正在使用midden。你倾倒东西,然后希望稍后挖掘出来。这是人们数千年前做的事情(当火石是尖端技术时它很受欢迎),虽然它有助于保持考古学家们在这些垃圾堆中进行挖掘,但我们是软件开发人员,而不是考古学家,不想定期做这种事情。

二,这是一个严重的性能杀手。你要么编写一些糟糕的静态代码来费力地检查每个表中的每个字段,要么编写一些中等亮度的代码来动态地创建一些更神奇的查询,这将会费力地检查每个字段在每个表中。这里重点关注的是“辛苦”。如果说到这一点,那就是“非常糟糕”。扫描数据库中每个表中的每一行,并测试所有这些行中的每个字段将变得很慢。非常非常缓慢。这将是死海龟在路上与轮胎标记在它的壳缓慢。这不是一件好事,除非你拥有当地电力公司的股票,并且希望确保每个生成的电子在你的雇主电脑中都有一个幸福的家。

第三,人们看到你的代码时会有强烈的情绪。那些注定要进入管理职业的人会笑,因为他们知道他们将不必维护它或尝试解决性能问题。技术上的挑战会哭,因为他们会知道他们无法解决它。真正的代码战士会惊讶地凝视片刻,然后会咬紧牙关,打倒你,用他们的绿色魔杖打败你,因为只有他们会知道这种邪恶可能被阻止。

所以给一些思考重新设计。再次,仅仅因为可以可以完成并不意味着应该完成。

分享和享受。