代码之家  ›  专栏  ›  技术社区  ›  Aurelio Martin Massoni

在团队中使用Oracle中存储过程的工具?

  •  12
  • Aurelio Martin Massoni  · 技术社区  · 17 年前

    在团队中,您使用哪些工具来开发Oracle存储过程:

    • 自动“锁定”您正在使用的当前过程,以便在您完成之前,团队中没有其他人可以对其进行更改。
    • 要自动将您在存储过程、Oracle数据库中所做的更改发送到Subversion、CVS、。。。存储库

    谢谢!

    9 回复  |  直到 17 年前
        1
  •  9
  •   Dwayne King    17 年前

    我不确定原来的海报是否还在监控这个,但无论如何我会问这个问题。

    自动“锁定”电流 你正在处理的程序,所以 队里没人能做到 更改它直到完成为止。

    也许这里的问题不仅仅是产品无法“锁定”存储过程,而是开发范式的问题。每当我听到“我想把这个锁起来,这样就没人能改变它”时,我立刻感觉到人们在共享一个模式,每个人都在同一个空间发展。

    如果是这样,为什么不让每个人都有自己的模式和数据模型的副本呢?我的意思是说,认真地说,创建另一个模式不会“花费”任何东西。这样,每个开发人员都可以进行更改,直到他们脸色发青,而不会影响其他人。

    我过去(在小团队中)使用过的另一个技巧是,由于数据的大小,让每个开发人员都有自己的数据副本是不可行的,那就是有一个包含所有表和代码的主模式,其中的公共同义词指向所有表和代码。然后,如果开发人员想要处理存储过程,他只需在 他的 架构。这样,Oracle名称解析就可以在主模式中首先找到一个而不是副本,从而允许他们在不影响其他任何人的情况下测试代码。这确实有它的缺点,但这是一个非常具体的案例,我们可以与他们一起生活。显然,我永远不会在生产中实现这样的东西。

    自动发送更改 在存储过程中,在 ... 存储库

    我会惊讶地发现有足够聪明的工具可以做到这一点(也许是一个机会:)。它必须连接到您的数据库,查询数据字典(用户源)并提取相关文本。对于几乎是基于文件的源代码管理系统来说,这是一个很高的要求。

        3
  •  2
  •   Mac    17 年前

    如果你还没有版本控制工具,那么写下你的需求并 pick one up . 很多人似乎用它 Subversion ,关联到 TortoiseSVN 作为Windows上的客户(我有)。

    问题是:按照建议使用你的工具,并相应地调整你的程序。例如,Subversion使用 copy-modify-merge lock-modify-unlock 你喜欢的模特。

    在我的情况下,我喜欢使用陆龟,如上所述。和通常使用这个工具一样:

    • 我手动将更改发送回服务器,因为。。。我认为Subversion没有其他方法(另外,内部过程禁止没有消息的提交,这也是IMHO的一件好事)。

    不管你怎么选择,我建议你读这篇关于 database versioning .

        4
  •  1
  •   cagcowboy    17 年前

    一个相对简单的解决方案可能是使用“锁定”而不是“合并”模式的版本控制系统。。。。Subversion或CVS通常使用“合并”模式(尽管我相信Subversion可以用来“锁定”文件?)

    我能想到的在Oracle中进行操作的唯一方法可能是一些BEFORE CREATE触发器,可能是引用一个表来查找谁可以在其中运行包。听起来有点恶心?

        5
  •  1
  •   David Atkinson    12 年前

    使用 Source Control for Oracle 你得到了很多你想要的东西。

    创建对象的新SQL可以签入SVN或TFS(不幸的是,没有CVS支持)。

    该工具不是免费的,但有28天的免费试用期。

        6
  •  0
  •   ropable    17 年前

    Oracle SQL Developer 1.5 ,您可以轻松创建和管理到CVS或Subversion的连接。要创建CVS连接(例如),请单击 版本控制->CVS->签出模块

    与CVS的集成也在 Toad .

        7
  •  0
  •   Mike Farmer    17 年前

    您可能还想看看Aqua Data Studio。它们还内置了SVN,是一个很棒的存储过程编辑器。

        8
  •  0
  •   asalamon74    17 年前

    在不走运地寻找一个工具来处理Oracle对象的版本控制之后,我们创建了以下(不完美但合适)解决方案:

    1. dbms_metadata
    2. 我们将所有文件从服务器复制到客户端计算机。
    3. 使用Netbeans,我们可以识别更改,并将更改提交到CVS服务器(或检查diff…)。任何CVS处理程序软件都可以在这里工作,但我们已经将Netbeans用于其他目的。Netbeans还允许创建一个ant任务,用于调用步骤1中提到的Oracle进程,复制步骤2中提到的文件。。。

    以下是步骤1最重要的查询:

    SELECT object_type, object_name, 
      dbms_metadata.get_ddl(object_type, object_name) object_ddl FROM user_objects
    WHERE OBJECT_TYPE in ('INDEX', 'TRIGGER', 'TABLE', 'VIEW', 'PACKAGE', 
      'FUNCTION', 'PROCEDURE', 'SYNONYM', 'TYPE')  
    ORDER BY OBJECT_TYPE, OBJECT_NAME
    

    每个对象一个文件的方法有助于识别更改。如果我在表中添加字段 TTTT TABLE_TTTT.SQL 文件将被修改。

    步骤1和步骤3都是缓慢的过程。(几千份文件需要几分钟)

        9
  •  -1
  •   ddelmoli ddelmoli    17 年前

    蟾蜍也不需要CVS/SVN。