2008-09-21 20 views
11

Qué herramientas utiliza para desarrollar procedimientos almacenados de Oracle, en un equipo:Herramientas para trabajar con procedimientos almacenados en Oracle, ¿en equipo?

  • Para automáticamente "bloquear" el procedimiento actual que está trabajando, por lo que nadie más en el equipo puede hacer cambios en él hasta que esté terminado.
  • para enviar automáticamente los cambios realizados en el procedimiento almacenado en una base de datos Oracle, a un Subversion, CVS repositorio ...

Gracias!

Respuesta

2
+1

Como veo, la herramienta de versiones de SQL Developer solo maneja los archivos y no brinda soporte para el segundo requisito anterior. ¿Me estoy perdiendo de algo? – rics

1

A relativamente simple (aunque un poco anticuado) solución podría ser utilizar un "bloqueo" en lugar de "fusionar" sistema de control de versión de modo .... Subversion o CVS generalmente utilizar un modo de "fusionar" (aunque creo que Subversion puede hacerse para "bloquear" los archivos?)

sistemas de control de versión en modo "bloqueo" tienen sus propios inconvenientes, por supuesto .....

El único w Sí puedo pensar en hacer en Oracle podría ser algo así como ANTES DE CREAR EL DISPARADOR, tal vez haciendo referencia a una tabla para buscar en quién puede ejecutar un paquete. Sin embargo, ¿suena un poco desagradable?

0

Usando Oracle SQL Developer 1.5, puede crear y administrar fácilmente conexiones a CVS o Subversion. Para crear una conexión CVS (por ejemplo), haga clic en Versiones -> CVS -> Comprobar Módulo. Ejecutará un asistente para crear la conexión (host, nombre de usuario, etc.) y luego podrá verificar sus procedimientos/funciones de forma normal.

La integración con CVS también se proporciona en Toad.

+0

Como veo, la herramienta de versiones de SQL Developer solo maneja los archivos y no brinda soporte para el segundo requisito anterior. ¿Me estoy perdiendo de algo? – rics

+0

No estoy seguro de ninguna herramienta de control de origen que realice cambios "automáticos" en el código. Casi siempre tienes que verificar las cosas manualmente. Y seguramente archivos == código? – ropable

-1

Toad también lo hace sin necesidad de CVS/SVN.

2

Tratar el código PL/SQL como siempre: almacenarlo en archivos, y administrar estos archivos con su herramienta de control de revisión y sus procedimientos internos.

Si aún no tiene una herramienta de control de revisión, escriba sus requisitos y pick one up. Mucha gente parece usar Subversion, asociado a TortoiseSVN como cliente en Windows (sí).

La cosa es: utilice su herramienta como se recomienda, y adapte sus procedimientos en consecuencia. Por ejemplo, Subversion usa un modelo copy-modify-merge de manera predeterminada, en contraposición a un modelo lock-modify-unlock que parece favorecer.

En mi caso, me gusta utilizar TortoiseSVN, como se indicó anteriormente. Y como es habitual con esta herramienta:

  • Nunca bloqueo ningún archivo. Esto es muy manejable con equipos pequeños, y requiere una planificación anticipada en los más grandes, lo que siempre es algo bueno en mi humilde opinión.
  • Envío mis cambios manualmente al servidor, porque ... No creo que haya otra manera con Subversion (además, los procedimientos internos prohíben una confirmación sin mensaje, que también es una buena cosa en mi humilde opinión).

Y cualquiera que sea su elección, recomiendo leer esta publicación (y las relacionadas) sobre database versioning.

0

Es posible que también desee consultar Aqua Data Studio. También han incorporado SVN y es un gran editor de Prod almacenado.

9

No estoy seguro de si el póster original sigue controlando esto, pero de todos modos haré la pregunta.

El post original solicitada para ser capaz de:

Para automáticamente "bloquear" el procedimiento actual que está trabajando, por lo nadie más en el equipo puede hacer cambios en él hasta que esté terminada .

Quizás el problema aquí sea uno de los paradigmas de desarrollo más que la incapacidad de un producto para "bloquear" el proceso almacenado. Cada vez que escucho "Quiero bloquear esto para que nadie más lo cambie", inmediatamente tengo la sensación de que las personas comparten un esquema y que todos se están desarrollando en el mismo espacio.

Si este es el caso, ¿por qué no simplemente dejar que cada uno tenga su propio esquema con una copia del modelo de datos? En serio, amigos, no "cuesta" nada crear otro esquema. De esta forma, cada desarrollador puede hacer cambios hasta que estén azules en la cara sin afectar a nadie más.

Otro truco que he usado en el pasado (en equipos pequeños) cuando no era factible permitir a cada desarrollador tener su propia copia de los datos debido al tamaño, era tener un esquema maestro con todas las tablas y código en él, con sinónimos públicos apuntando a todo. Entonces, si el desarrollador desea trabajar en un proceso almacenado, simplemente lo crea en su esquema. De esta forma, la resolución de nombres de Oracle encuentra esa primera en lugar de la copia en el esquema maestro, lo que les permite probar su código sin afectar a nadie más. Esto tiene sus inconvenientes, pero este fue un caso muy específico en el que pudimos vivir con ellos. NUNCA NUNCA implementaría algo como esto en producción obviamente.

En cuanto al segundo requisito:

Para enviar automáticamente los cambios que realice en el procedimiento almacenado, en una base de datos Oracle, a un Subversion, CVS ... repositorio

Me sorprendería encontrar herramientas lo suficientemente inteligentes como para hacer esto (tal vez una oportunidad :). Tendría que conectarse a su base de datos, consultar el diccionario de datos (USER_SOURCE) y extraer el texto asociado. Una tarea difícil para los sistemas de control de origen en la que casi todos los archivos se basan.

0

Después de buscar una herramienta para manejar el control de versiones de objetos de Oracle sin suerte creamos la siguiente solución (no es perfecto, pero adecuado):

  1. Usando dbms_metadata paquete creamos el volcado de metadatos de nuestro servidor Oracle. Creamos un archivo por objeto, por lo tanto, el resultado no es un archivo enorme sino un grupo de archivos.Para reconocer el objeto eliminado, eliminamos todos los archivos antes de volver a crear el volcado.
  2. Copiamos todos los archivos del servidor a la computadora del cliente.
  3. Al utilizar Netbeans, reconocemos los cambios y confirmamos los cambios en el servidor CVS (o verificamos los diffs ...). Cualquier software de CVS-handler funcionaría aquí, pero ya estábamos usando Netbeans para otros fines. Y Netbeans también permite crear una tarea de hormiga para llamar el proceso de Oracle se menciona en el paso 1, la copia de los archivos mencionan en el paso 2 ...

Ésta es la consulta más imporante para el paso 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 

Un archivo por enfoque de objeto ayuda a identificar los cambios. Si agrego un campo a la tabla TTTT (no es un nombre de tabla real, por supuesto), solo se modificará el archivo TABLE_TTTT.SQL.

Tanto el paso 1 como el paso 3 son procesos lentos. (varios minutos para algunos miles de archivos)

1

Al usar Source Control for Oracle obtienes mucho de lo que estás buscando.

Los procedimientos almacenados (así como los paquetes, funciones, tablas, etc.) se pueden bloquear manualmente mediante la interfaz, no automáticamente, pero esto evita que otros realicen cambios.

El nuevo SQL para crear el objeto se puede verificar en SVN o TFS (desafortunadamente no hay soporte para CVS).

La herramienta no es gratuita, pero tiene una versión de prueba gratuita de 28 días.

Cuestiones relacionadas