CÓMO
Las instrucciones proporcionadas describen cómo producir el orden de conciliación recomendado mediante SQL en Oracle. El resultado de la consulta es el orden en que las versiones se deben conciliar con el sde. DEFAULT antes de realizar una compresión. Al conciliar las versiones en el orden devuelto por la consulta, permite que el comando de compresión mueva tantas filas como sea necesario de cada tabla delta de clase versionada a las tablas base.
El uso del enfoque SQL es el mismo que si se utiliza la interfaz IVersionedWorkspace2::RecommendedReconcileOrder de ArcObjects para obtener una enumeración de nombres de versión.
Es necesario crear una tabla temporal global y un procedimiento almacenado, así como ejecutar una instrucción SQL para devolver la lista de versiones en el orden de conciliación recomendado.
Note:
The steps should be performed by the sde administrative user in SQL*Plus.
SQL> DROP TABLE version_order;
DROP TABLE version_order
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> CREATE GLOBAL TEMPORARY TABLE version_order (
2 owner VARCHAR2(32),
3 name VARCHAR2(64),
4 state_id NUMBER(38),
5 ca_state_id NUMBER(38))
6 ON COMMIT PRESERVE ROWS;
Table created.
CREATE OR REPLACE PROCEDURE common_ancestor_exe AS
CURSOR ver_list IS
SELECT name, owner, state_id
FROM sde.versions
WHERE name <> 'DEFAULT'
AND name NOT LIKE 'SYNC_%'
AND name NOT LIKE 'REP_CO_SYNC_%'
ORDER BY state_id;
default_id NUMBER;
default_lin NUMBER;
source_lin NUMBER;
common_ancestor_id NUMBER;
BEGIN
SELECT state_id, lineage_name INTO default_id, default_lin FROM sde.states WHERE state_id =
(SELECT state_id FROM sde.versions WHERE name = 'DEFAULT' AND owner = 'SDE');
DELETE FROM version_order;
FOR ver_info IN ver_list LOOP
SELECT lineage_name INTO source_lin FROM sde.states WHERE state_id = ver_info.state_id;
SELECT MAX(lineage_id) INTO common_ancestor_id FROM
(SELECT lineage_id FROM sde.state_lineages WHERE lineage_name = default_lin AND lineage_id <= default_id
INTERSECT
SELECT lineage_id FROM sde.state_lineages WHERE lineage_name = source_lin AND lineage_id <= ver_info.state_id);
IF common_ancestor_id < default_id THEN
INSERT INTO version_order VALUES (ver_info.owner, ver_info.name, ver_info.state_id, common_ancestor_id);
END IF;
END LOOP;
COMMIT;
END;
/
EXEC sde.common_ancestor_exe;
PL/SQL procedure successfully completed.
SQL> SELECT owner, name
2 FROM version_order
3 ORDER BY ca_state_id, state_id;
OWNER NAME
------------ --------------
RANDY REV_6847258
CHRIS REV_7019237
CLARE REV_7069544
LUCY REV_7043793
SUSAN REV_7069206
A continuación, las versiones deben conciliarse con ArcGIS con la versión DEFAULT. Por cada versión conciliada, se moverán más filas de las tablas delta a las tablas base.
Id. de artículo: 000010376
Obtener ayuda de expertos en ArcGIS
Empieza a chatear ahora