Quantcast
Channel: Forums - Geodatabase & ArcSDE
Viewing all 1584 articles
Browse latest View live

Best practices recommendations for replicating from web map db to enterprise db

$
0
0
We're in the process of trying to determine how to QC and replicate data between our editable databases and our enterprise database. We essentially have three databases:
  • an enterprise database (mostly state plane) that is the organization's master db for all enterprise users
  • a read-only db (web mercator) largely for use by web mapping applications
  • a read/write db (web mercator) for use by editing web mapping applications (this one isn't set up yet -- it's why we're looking for best practices)

We are not using versioning, networks, topologies, or m/any of the more advanced geodb features. We are essentially using non-versioned feature classes in various projections. All in are SQL Server geodbs, some in 9.3 and some in 10.0. Our goal is to upgrade all to v10.1.

Currently there is a fair amount of processing built into the enterprise database in the form of triggers, stored procedures, etc. Our experience has been that with offline mobile editing, when the edited features are loaded back into the db then all triggered processes work as expected. Feature classes are published from the enterprise db to the read-only web mapping db on a regular basis using python scripts and Windows scheduling.

The next nut we have to crack is to enable editing via mobile and Web applications, while allowing for QC of the data before loading it into the enterprise db. This is the reason for the 3rd read/write db.

We're trying to nail down a workflow or workflows that:
  • minimize potential for errors
  • are entirely automated
  • allow for QC of edited data when necessary
  • allow for timely -- in some cases immediate -- viewing of edited data in the read-only and enterprise databases
  • avoids/minimizes editing conflicts

A logical worklfow would be to QC the read/write Web mapping db after edits are made there, replicate to the enterprise db after QCed, and then propagate the QC'ed data to the read-only instances (Web mapping or otherwise). Our concern with automating this is integration with the processing in the enterprise geodb (triggers, etc.), and maintaining three (at least) copies of the data. We would not necessarily be replicating all feature classes in the editing db, and in fact would more typically copy only a subset of feature classes at any given time (real-time where QC is not necessary).

We have not worked with database replication, but if it lends itself to a workable, reliable solution then we are definitely open to it.

Have others had similiar issues to overcome and set up their geodb replication accordingly? Any best practices to recommend? Anything that made it easy to accomplish these requirements?

Any info would be greatly appreciated. Thanks in advance.

Refresh SDE Table or FeatureClass

$
0
0
I have a timer which queries a Table (Table1) in SDE every 30 seconds. I have another component which makes entries into Table1 every 15 seconds. The problem is, once the first query on Table1 is made, it seems to "lock it" and does not detect new rows inserted by the second component. So before the first entry is made, my row count is 5. After a row is inserted, my count is still 5. After another row is inserted, my count remains at 5. If I restart the program, my row count is now 7 and the same process is repeated.

Inspecting the data through Catalog I am able to see the new entries being made every 15 seconds but only after I right click on the database and do a Refresh. I suspect I need to do something similar in C# but am unsure how (yet).

I am using IFeatureWorkspace to both make entries into the table and query it.

Do I need to release the IFeatureWorkspace in the same fashion as a Cursor so the next time it connects it establishes a brand new connection?

Any suggestions would be appreciated.

Thanks,

File Geodatabase too large for what it contains

$
0
0
Hi everyone,

I have a file GDB containing 3 datasets, some toolboxes and a bunch of tables. According to the size of features in the datasets and the size of the tables the whole GDB should not be much bigger than ~ 2.2 GB. However, the actual size is around 7.4 GB and I cannot see the reason for that (it is not supposed to be anywhere close to this size!). I already tried to compact, but that ended up in errors (FDOerror 2147024894). Anyway, I do not think that this is a problem that could be solved by compacting, as the actual size is way too large for what it should be.

I've been looking in related posts already (e.g. http://forums.arcgis.com/threads/126...base-too-large), but did not find any solutions. I have a copy sitting on a local drive (that's where I tried to compact), the original sits on a network drive. Running ArcGIS 9.3, build 1770).

Thanks for any suggestions!

[OT] locked out of SDE account

$
0
0
Quote:

Originally Posted by vangelo View Post
...this would be a good time to make
sure that:
1) The SDE user password is very closely held,
2) The SDE user doesn't own any spatial tables,
3) No user data is located in the SDE tablespace,
4) The data ownership account isn't used for browse access,
5) All accesses to tables are performed through GRANTs to roles.

Ideally, each user would connect to the database as themselves (no shared login),
and common MXDs would have the connection properties set so that the password
isn't retained.
- V

Just starting a friendly discussion on this topic. Assuming ArcSDE 10.0 in SQL Server.

If I create a an mxd with a layer added via a shared database login, and that login happens to be the data owner account, only the layer in the map document is open to a security risk such as edit access, unless, the data layer in question is registered as versioned and the data owner does not have edit access to the versioned layer.

Should data owners have edit access to their owned layers? Who owns data in your SDE - multiple users or a single user?

Also, if we add users to roles and grant access to roles, and then some user says "please publish my map", would you want to make sure that all the layers in their mxd are connecting with a read only permission to the SDE layers? But you know that said user also has edit access to some of these layers. Who updates the mxd so that it has read only access to all referenced layers?

In some situations, are headless database accounts ok? (not headless windows accounts)

Using a different DB logon

$
0
0
Hello,

I have done a fresh install of ArcSDE 10.1 connecting to an Oracle database - using the Oracle 11gR2 client. The tnsping command is successful, and I can connect to the geodatabase via ArcCatalog. When I try to run the sdemon -o start command, I get an error "invalid username/password" I am using the -p option for sdemon, but I am not sure where to change the username. The DBAs, when they created the geodatabase account for me, didn't use sde - they used sde10. I have tried passing sdemon a -u option, putting "set SDEUSER=sde10" in dbinit.sde and exporting the SDEUSER variable at the command line - nothing has worked yet.

Can this be done? And if it can, how?

Thanks,

Brian

“Select by attributes” for Arabic fonts in SDE/file geodatabases,

$
0
0
“Select by attributes” for Arabic fonts in SDE/file geodatabases,

I have the name of communities in English and Arabic language. Of course, there is no any problem when searching these names in English language whether from the SDE of file goedatabase


I got the same feature class in SDE and file geodatabase

1. Searching the Arabic names in file geodatabase works very well and has no problem

Attachment 22050

2. Searching the Arabic names from the SDE geodatabase has a problem. It doesn’t recognize Arabic languages and thus ends up with finding nothing.

Attachment 22051

What might be the issue here?

I installed the “collation designator” to be Arbaic, nevertheless, Arbaic words are not recognized in the SDE geodatabase and are not searched correctly.

Attachment 22052, Attachment 22053


What other features need to be set?


Thank you

Best

Jamal
Attached Thumbnails
Click image for larger version

Name:	Clip_40.jpg‎
Views:	N/A
Size:	167.0 KB
ID:	22050   Click image for larger version

Name:	Clip_41.jpg‎
Views:	N/A
Size:	153.3 KB
ID:	22051   Click image for larger version

Name:	Clip_42.jpg‎
Views:	N/A
Size:	77.3 KB
ID:	22052   Click image for larger version

Name:	Clip_43.jpg‎
Views:	N/A
Size:	73.1 KB
ID:	22053  

Error Generating shape

$
0
0
I'm using the sde.st_intersects function in an Oracle update statement in an Oracle package. I run the code successfully, updates ~ ~17,000. Data is committed. Run it again same data works fine. Run it a third time and get the following error:
ORA-20011: Error generating shape. (SHAPE2)
ORA-06512: at "SDE.ST_GEOMETRY_SHAPELIB_PKG", line 170
ORA-06512: at "SDE.ST_RELATION_OPERATORS", line 326 at ORA-06512: at "SDE.ST_GEOMETRY_SHAPELIB_PKG", line 170

I then disconnect from the database and reconnect and I'm able to successful run the code twice again and it errors out on the third time.

Something must be filling up that stops the function from generating shape on the third run, and is released when you disconnect.

Any help on this matter would be appreciated.
Thanks.

Cannot lad xml recordset to non simple feature class or table in ArcCatalog.

$
0
0
I am attempting to load data into a feature class schema that resides in SDE. After right clicking on the empty feature class. I select Load>Load XML recordset document and it displays an error "Cannot lad xml recordset to non simple feature class or table in ArcCatalog." How do I interpret this error message? What is a "non simple feature class? Are there other methods that I'm not aware of to accomplish loading data into a schema only feature class?

Replica Question

$
0
0
I have a One-Way Replica (Parent to Child):

Parent is an SDE (SQL Server Express 2008 R2) Geodatabase.

Child is a File Geodatabase


Two questions:
1) If I create a new Feature Class in the Parent; how do I add this to the Child Replica?

2) How do I add an existing Feature Class already in the Parent to the Child Replica? (NOTE: the Replica already is created with existing Feature Classes from the Parent); this effort involves adding additional already existing Feature Class(es) in the Parent that were not added to the Child when it was first created.

Updating st_geometry in an Oracle 11g trigger - index maintenance raises ORA-29470

$
0
0
As described in http://www.davidlitchfield.com/blog/...s/00000023.htm
"For Oracle 11g, Oracle has introduced some security changes to the DBMS_SQL package
...
A third change to DBMS_SQL is checking the user ID executing the query and the user ID of the person that parsed the query. If the two don't match an error is generated:

ORA-29470: Effective userid or roles are not the same as when cursor was parsed".


It seems that mainenance of a spatial index on a st_geometry column uses dbms_sql, and that updating of a st_geometry column in a trigger raises this error.

One workaround is to set security back to 10g levels by setting the initialization parameter _dbms_sql_security_level = 0 but this is not acceptable.

Apart from getting ESRI to revisit index maintenance, has anyone another workaround?

My application allows entry of an applications for one or more services - in the simple test I have tried to devise they are rubbish bin services as in my part of Sydney - red (general rubbish), yellow (recyclable materials), green (green garden waste). The system creates an application record for each requested service, but the point geometries are arranged around the centroid of the relevant land parcel so that in a map viewer they are not exactly coincident. An operator can drag a point onto another land parcel in a map editor if the original application was found to be wrong and my trigger tries to move the points for any related applications to again be arranged around the centroid of the new land parcel.

My test code is:


-- create a test table to hold rubbish bin applications; requests for different bin types from
-- the one applicant will be arranged around the centroid of the applicant's land parcel (parcel and
-- other details are omitted here for simplicity) so that in a map viewer they are not exactly coincident
drop table applications;
create table applications
(objectid number(5,0) not null,
point_shape sde.st_geometry,
application_number nvarchar2(20),
application_type nvarchar2(20));

-- insert applications for three different bin types from one applicant
insert into applications values (1,sde.st_point(100,100,0),'A1','GREEN');
insert into applications values (2,sde.st_point(105,100,0),'A1','RED');
insert into applications values (3,sde.st_point(100,105,0),'A1','YELLOW');
commit;

-- add indexes and constraints
alter table applications add constraint app_pk primary key (objectid) using index;
alter table applications add constraint app_uk unique (application_number,application_type) using index;
create index app_idx0 on applications(point_shape) indextype is sde.st_spatial_index
parameters('st_grids=10, 0, 0 st_srid=0');

-- now in the map viewer/editor, an application found to be linked to the wrong land parcel can be moved
-- by dragging one of the bin points to the correct land parcel; we need a trigger to move related
-- bin points as well
create or replace trigger app_u
for update
of point_shape
on applications
compound trigger

type num_tabtype is table of number index by pls_integer;
type nvc20_tabtype is table of nvarchar2(30) index by pls_integer;
type shape_tabtype is table of sde.st_geometry index by pls_integer;

objectids num_tabtype;
application_numbers nvc20_tabtype;
point_shapes shape_tabtype;

client_info varchar2(64);
j pls_integer;

-- cursor to find related applications whose positions will also need to be updated
cursor related_applications (p_application_number in nvarchar2, p_objectid in number) is
select
objectid
from applications
where application_number = p_application_number
and objectid <> p_objectid;
rarec related_applications%rowtype;

---------------------------------------------------------
before each row is
begin
-- check whether this update is the result of an application_point being dragged by a user,
-- or the result of the statement part of this trigger
dbms_application_info.read_client_info(client_info);
if nvl(client_info,'null') <> 'after app_u trigger after upd stmt part' then
-- record details of the application being updated and the new application point
objectids(nvl(objectids.last,0) + 1):= :old.objectid;
application_numbers(nvl(application_numbers.last,0) + 1):= :old.application_number;
point_shapes(nvl(point_shapes.last,0) + 1):= :new.point_shape;
end if;
end before each row;

---------------------------------------------------------
after statement is
begin
-- check whether this update is the result of an application_point being dragged by a user,
-- or the result of the statement part of this trigger
dbms_application_info.read_client_info(client_info);
if nvl(client_info,'null') <> 'after app_u trigger after upd stmt part' then
-- this update is caused by a user moving an application point; process it

-- set some client info which can be tested to determine whether the update
-- is triggered by a user or by the 'after statement' part
dbms_application_info.set_client_info('after app_u trigger after upd stmt part');

-- loop through all updated applications
for i in application_numbers.first..application_numbers.last loop

-- check for related applications
j:= 0;
for rarec in related_applications (application_numbers(i), objectids(i)) loop
-- reposition the points near the moved point
j:= j + 1;
update applications set point_shape =
sde.st_point(sde.st_x(point_shapes(i))+mod(j,2)*5,
sde.st_y(point_shapes(i))+mod(j-1,2)*5,
sde.st_srid(point_shapes(i)))
where objectid = rarec.objectid;
end loop;
end loop;

-- clear the global application context
dbms_application_info.set_client_info(null);
end if;
end after statement;
end app_u;
/

-- check the data before update
column objectid heading "OBJECT|ID" format 9999
column application_number heading "APP|NUMBER" format a6
column application_type heading "APP|TYPE" format a6
column point heading "APP|POINT" format a50
select objectid, application_number, application_type, sde.st_astext(point_shape) point
from applications
order by 2,3;

/* output is:
OBJECT APP APP APP
ID NUMBER TYPE POINT
------ ------ ------ --------------------------------------------------
1 A1 GREEN POINT ( 100.00000000 100.00000000)
2 A1 RED POINT ( 105.00000000 100.00000000)
3 A1 YELLOW POINT ( 100.00000000 105.00000000)
*/

-- try an update with the spatial index in place
begin dbms_application_info.set_client_info(null); end;
/

update applications set point_shape = sde.st_point(200,200,sde.st_srid(point_shape))
where objectid = 1;

/* output is:
update applications set point_shape = sde.st_point(200,200,sde.st_srid(point_sha
pe))
*
ERROR at line 1:
ORA-29877: failed in the execution of the ODCIINDEXUPDATE routine
ORA-29470: Effective userid or roles are not the same as when cursor was parsed

ORA-06512: at "SYS.DBMS_SQL", line 1350
ORA-06512: at "SDE.SPX_UTIL", line 1906
ORA-06512: at "SDE.ST_DOMAIN_METHODS", line 2112
ORA-06512: at "SDE.ST_DOMAIN_METHODS", line 2239
ORA-06512: at "WEBDATA.APP_U", line 59
ORA-04088: error during execution of trigger 'WEBDATA.APP_U'
*/

-- try an update without the spatial index
drop index app_idx0;

begin dbms_application_info.set_client_info(null); end;
/

update applications set point_shape = sde.st_point(200,200,sde.st_srid(point_shape))
where objectid = 1;

/* output is:
1 row updated.
*/

-- check the data after the update
select objectid, application_number, application_type, sde.st_astext(point_shape) point
from applications
order by 2,3;

/* output is:
OBJECT APP APP APP
ID NUMBER TYPE POINT
------ ------ ------ --------------------------------------------------
1 A1 GREEN POINT ( 200.00000000 200.00000000)
2 A1 RED POINT ( 205.00000000 200.00000000)
3 A1 YELLOW POINT ( 200.00000000 205.00000000)
*/

-- clean up
drop table applications;

The selected Object Failed to draw: Network I/O Error

$
0
0
Hi,

we are receving a feature class through replication from another department within our organization, this feature class is within a feature dataset. all of the other feature classes are working fine execpt this one.

whenever you try to display it from "geography" dispaly the following error is being displayed:

The selected Object Failed to draw: FEATURE CLASS NAME : Network I/O Error

our environemnt:
ArcSDE 10.0 Service Pack 5
Server:IBM AIX 6.1
Database: Oracle 11g R2 (PSU 11.2.0.3.4)

The ArcGIS Desktop used to view the feature class ( we used both ArcGIS 10.0 & ArcGIS 10.1 Desktop) with the same error.

Initialization Parameter for ArcSDE 10.1 Logs

$
0
0
Good Day,

I was wondering about the entry of Initialization Parameters for Log Files.
I want to proceed with Shared LogFile Configuration.

Thus setting
MAXSTANDALONELOGS = 0
ALLOWSESSIONLOGFILE = FALSE
LOGFILEPOOLSIZE = 0

So my question is, whether i need to leave
HOLDLOGPOOLTABLES as TRUE
or shall i change it to FALSE as it is needed by Session-Based method ?


Thanks
-AS

Suggest Optimal Values for Initialization Parameters ArcSDE 10.1

$
0
0
Hi there,

Please help me to decide values for some more initialization parameters on server, i want to select optimal values not the defaults

Server Details:
RHEL 6.2
ArcSDE 10.1
Oracle 11gR2

1. LARGEIDBLOCK
2. SMALLIDBLOCK
3. MAXGRIDSPERFEAT
4. MAXARRAYBYTES and more

Suggestions are highly appreciated.


Thanks in advance
-AS

Arcsde Service "hangs" intermittently

$
0
0
Dear All,

Arcsde Service "hangs" intermittently

Below are contents of giomgr.log

Sun Feb 24 14:03:07 2013 - Error (-9):Couldn't Start Server Task.
Sun Feb 24 14:03:07 2013 - Process 6529, no shared information block established
Sun Feb 24 14:03:07 2013 - SDE Server 6529 exit'd with status 3
Sun Feb 24 14:03:17 2013 - SDE Server Pid 6552 Registered, User: abu Schema: sde.
Sun Feb 24 14:03:23 2013 - Error (-51):Couldn't Start Server Task.
Sun Feb 24 14:03:23 2013 - Process 6557, no shared information block established
Sun Feb 24 14:03:23 2013 - SDE Server 6557 exit'd with status 3
Sun Feb 24 14:03:23 2013 - Error (-51):Couldn't Start Server Task.


Managed by killing the service and restarting it.

Please Share your experience

Thanks

Configuration String Suggestion Please

$
0
0
Hey Guys,

Please let me know does the configuration string(PCTFREE, INITRANS etc) in DBTUNE need changes for OPTIMIZATION ?

A_INDEX_ROWID " PCTFREE 10 INITRANS 4 TABLESPACE INDEX STORAGE (FREELISTS 4 MINEXTENTS 1 PCTINCREASE 0) NOLOGGING"
END

Thanks
-AS

Error when exporting data - characters, field names, errors etc.

$
0
0
Hi all. I have a layer in a GDB, which contains fields including some that are Character, which are numbers with leading zeros. Other fields are long, e.g. dx2010_address_type.

I'm struggling to export the data and
a) preserve Character variables as character. Export to text file from the table view does not do this, it stores values as 06001234 etc. in the file, but with no quotes around them, they end up being processed as numbers and losing the leading 0.
b) preserve long field names. Export to DBF does not do this, it cuts them short. It does seem to keep the leading 0s in the character variables, which is nice.

I also tried exporting to a personal geodatabase (test.mdb), but I get this error:

"Error exporting data.
The table was not found.
The table was not found. [GDB_ObjectClasses]
The Microsoft Jet database engine cannot find the input table or query
'GDB_ObjectClasses'. Make sure it exists and that its name is spelled correctly."


I also tried to use a Toolbox tool, Data Interoperability Tools>Quick Export, which appears as a hammer. When I double click to start it, a red X appears over the hammer (?) and it never starts.

So is there a preferred way to accomplish this in one step, and maintain my character variables and long field names? Thank you.

Using a spatial query within a view - very slow

$
0
0
Using the following:
Oracle 11g, SDE 10.0

I've been able to create both a view and an sde view that contains a spatial query (sde.st_intersects). Querying this view is very slow and it only contains 8000 records. The points table contains 8000 records and the regions table contains 20 records. It takes about 4 minutes to generate the view (either one) and about the same amount of time to get results from any query.

Any suggestions? Is there a better way to do this, perhaps?

Here's the code from the view

CREATE OR REPLACE FORCE VIEW schema.VW_REGIONS_TEST
(
REGION,
AREA,
POINT_ID
)
AS
SELECT regions.REGION AS region,
regions.AREANAME AS area,
points.globalid AS point_id
FROM schema.ADMIN_BNDY regions, schema.POINTS points
WHERE sde.st_intersects (regions.shape, points.shape) = 1;




Here's the code from the sdetable create:

sdetable -o create_view
-T VW_SDE_POINTS_REGIONS
-t "schema.POINTS, schema.ADMIN_BNDY”
-c "POINTS.OBJECTID, POINTS.GLOBALID, ADMIN_BNDY.REGION,ADMIN_BNDY.AREANAME"
-w "sde.st_intersects(ADMIN_BNDY.shape,POINTS.shape)=1"
-i sde:oracle11g:LRSSDE01:NPC_FOR
-u ************
-p ******


Thank you very much,
Sonia

sde command

$
0
0
dear all,

this is an easy question...

After I installed Arcsde command for arcgis server 10.1, i can't find some commands such as sdelayer, sdetable etc. Where all of these commands go ?

From http://support.esri.com/en/knowledge...s/detail/39857, i read that there are only 7 commands available after arcsde command installation. Only 7 commands ?

thanks

SDE layer (Oracle) join issue with SQL sever view

$
0
0
Hi All,

I am having a layer file which I am trying to join with SQL server view. The idea is to get the customer more atribute information.

The layer file is ArcSDE 9.3 / Oracle
SQL server 2005
Desktop 10.1

When I validate join I am getting the following error from ArcMAp

"Field names containing invalid characters can cause the join to fail, the following fields containing invalid characters:
- [start Date from<dbo.tableForLayerFiles> Contains invalid character ' '
- [start Date / Duration ]from<dbo.tableForLayerFiles> Contains invalid character ' /'
- [start Date / Duration ]from<dbo.tableForLayerFiles> Contains invalid character ' '


What date format 10.1 desktop is expecting here? Can anyone adcvice me on this?

The same layer file join with SQL server view worksfine in 9.3 and in defenition query I have given io_P_area.OBJECTTID > 0 and "Start Date" > date '30-01-2012', This works in desktop 9.3 environment

Please help

Cheers
Antony

esri_sde service is not running

$
0
0
I am getting the following error when starting esri_sde service on local machine. And my system configuration are...

1) Windows Server R2 X 32-bit
2) ArcSDE 10
3) Oracle 11g 32-bit and Client also same.

Initially it was working fine, but suddenly i don't know what happened to the esri_sde service it is not starting with OS. So when i tried to start manually first time i have received "1053: The service did not respond to the start or control request in a timely fashion". so i just re-install oracle client. Then it starts showing the following error.

"The ArcSDE service (ESRI_SDE) service on local computer started and then stopped. Some Services stop automateically if they are not in use by other services or programs"

Some help is needed

Thanks
Srinivas
Viewing all 1584 articles
Browse latest View live