|
POST
|
So, I truncated all of the classes in the source File Geodatabase and then copied/pasted into SDE. This worked. Then, after putting some data into one of the classes I found problems creating a spatial index on that class. At one step along the way I got an error message pointing to an issue with the Oracle object sde.st_spatial_index. I tried granting EXECUTE on this object to all users, including SDE and tried granting permissions to users per the SDE Admin guide. Still got errors creating a spatial index. It may well be that the spatial index problem was what was preventing me from performing the copy/paste with a populated File Geodatabase in the first place. At any rate I found it best to just start over with the SDE database and so dropped all users and re-created the Enterprise Geodatabase. Which seems to be working OK. Ed
... View more
03-22-2014
07:59 AM
|
0
|
0
|
991
|
|
POST
|
I'm not sure that any of those errors are related to your issue, either. That being said, I don't know enough about the timeline of when these errors occurred and when you attempted the copy/paste where it failed thereafter. If you're using direct connect, the sdedc_Oracle.log file should be somewhere on your machine. Are you using direct connect or the ArcSDE application service to connect to your enterprise geodatabase? It would also be good to get the exact version of your RDBMS and ArcGIS/ArcSDE software before going any further. I don't have SDE installed on this machine. Its ArcGIS Version 10.1 and Oracle 11.2.0 Ed
... View more
03-20-2014
04:03 PM
|
0
|
0
|
991
|
|
POST
|
I just found the Oracle alert log -- file is named alert_orcl.log. Near the bottom is the following fragment that may be associated with the "Underyling DBMS Error" I experienced initially: Thread 1 advanced to log sequence 685 (LGWR switch) Current log# 1 seq# 685 mem# 0: C:\APP\ED\ORADATA\ORCL\REDO01.LOG Thu Mar 20 10:53:07 2014 *********************************************************************** Fatal NI connect error 12638, connecting to: (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) VERSION INFORMATION: TNS for 64-bit Windows: Version 11.2.0.1.0 - Production Oracle Bequeath NT Protocol Adapter for 64-bit Windows: Version 11.2.0.1.0 - Production Time: 20-MAR-2014 10:53:07 Tracing not turned on. Tns error struct: ns main err code: 12638 TNS-12638: Credential retrieval failed ns secondary err code: 0 nt main err code: 0 nt secondary err code: 0 nt OS err code: 0 Thu Mar 20 10:53:13 2014 AUD: OS Error = 1717 encountered while writing audit record Thu Mar 20 10:53:13 2014 AUD: OS Error = 1717 encountered while writing audit record opidcl aborting process unknown ospid (4676) as a result of ORA-28056 Thu Mar 20 10:53:13 2014 AUD: OS Error = 1717 encountered while writing audit record opidcl aborting process unknown ospid (6924) as a result of ORA-28056 Thu Mar 20 10:53:13 2014 AUD: OS Error = 1717 encountered while writing audit record opidcl aborting process unknown ospid (7624) as a result of ORA-28056 opidcl aborting process unknown ospid (8076) as a result of ORA-28056 Thu Mar 20 10:53:16 2014 AUD: OS Error = 1717 encountered while writing audit record Thu Mar 20 10:53:13 2014 AUD: OS Error = 1717 encountered while writing audit record opidcl aborting process unknown ospid (7164) as a result of ORA-28056 Not sure how to interpret this, though. Since some of the messages refer the REDO log is it possible I need to increase size allocated to REDO logs? Ed
... View more
03-20-2014
11:57 AM
|
0
|
0
|
3403
|
|
POST
|
As a test I truncated all the tables in the File Geodatabase to see if I am encountering some size-related problem. This also required that I drop the geometric network present in the FGDB dataset. After dropping the geometric network and truncating all tables in the File Geodatabase I was able to copy/past from the FGDB into the SDE database. I take from this that my problem IS somehow related to the size of the database I'm trying to copy/paste. Ed
... View more
03-20-2014
11:50 AM
|
0
|
0
|
3403
|
|
POST
|
You're using direct connect to establish the connection to your enterprise geodatabase, right? We need to capture the Oracle error code before knowing what the issue might be according to your database. What does the following log file say? C:\Users\<your_user_ID>\AppData\Local\Temp\sdedc_Oracle.log What do your Oracle database Alert log files show? Typically located at C:\oracle\diag\rdbms\<db_name>\<db_name>\alert\log.xml Typically located at C:\oracle\diag\rdbms\<db_name>\<db_name>\trace\alert_<db_name>.log Note: Replace <db_name> with the name of your Oracle database SID. Thanks much for the suggestion! I am using direct-connect to connect to the Geodatabase. However I don't see a file named "sdedc_Oracle.log" under \AppData\Local\Temp". In fact, I searched my whole C:\ drive and can't find a file by that name. Ed
... View more
03-20-2014
11:43 AM
|
0
|
0
|
3403
|
|
POST
|
Copying and pasting a FGDB into SDE seems like a lot to ask. My suggestion is to import your feature classes from the FGDB into SDE with the import multiple feature classes utility. Joe - Thanks for the reply. I've actually done this with success in the past. Don't know why I'm getting the error now -- except that the dataset I'm trying to paste this time is a bit larger than others I've done in the past. And I think I need to since the source FGDB has a geometric network that I'd like to keep - and not have to re-build in the Oracle database. Ed
... View more
03-20-2014
07:58 AM
|
0
|
0
|
3403
|
|
POST
|
Hello - I'm trying to copy/paste a File Geodatabase into an Oracle SDE Instance running in Windows 7. There are 61 classes in the FGDB. When it hits about the 6th class I get the error: Failed to paste <dataset> Underlying DBMS error From there I'm trying to find out what kind of error was encountered. I've looked in the Windows Event Viewer but can't find anything there. Is there another location where I could find more details about the error? Thanks, Ed
... View more
03-20-2014
07:25 AM
|
0
|
13
|
4743
|
|
POST
|
Just to be clear. What made the big difference in performance for me were two things: 1. I reverted my target feature classes to core Esri objects. They had inadvertently been left defined as custom object classes as required by the ArcFM application. 2. Made use of a FeatureBuffer and InsertCursor to create the new features. I flush the buffer after each 2,000 features. With these two changes the process that completes in 4 minutes for 120,000 features in a File Geodatabase completes in (about) 4 minutes in the Oracle database. Thanks again for the responses. Ed
... View more
02-13-2014
04:43 AM
|
0
|
0
|
1643
|
|
POST
|
A file gdb will almost always outperform an entreprise gdb. The model is much, much simpler, you are just writing to a file on your hard drive. As long as on-access scanner isn't killing the performance it will be much faster. For the code side, I would consider not using an edit session or at least not use an edit operation if you can get away with it. The option to turn off the undo/redo doesn't always work (Note that the supression of undo/redo logging is not supported for remote database workspaces.) I would consider using an insert cursor and calling flush every so many records (100? something to experiment with.) CreateFeature for sure will create an objectId for each call when it is called so, right there sql statements are being generated one at the time... I suggest you look at the following link and avoid creating the features one by one. There are more direct ways of doing this. If you need to process the data, you can do that in the fgdb and then load. http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#//0001000003rp000000 From the database side, a lot can be done tweak the performance. The trick is to know what is holding you up. Do you have versioning? How big is the user temp space? What is going on with the roll back log? Do you have replication? These are some of the many things you need to master to get performance out of your database. A good orace DBA can be invaluable in figuring out performance on the Oracle side. You can also consider using spatial SQL to insert the features directly through the SQL geodatabase API http://resources.arcgis.com/en/help/main/10.1/index.html#//006z00000008000000 I have also dabbled in exporting recordsets into XML and importing them as a new featureclass in Oracle, maybe that can work for you. Variable size sample sets, some good metrics and some experimentation, I think you will find an efficient way of doing this. Alexander - Thanks very much for your comments and suggestions. While investigating some of the options you put forth I had a breakthrough. I tried to use the ArcCatalog simple data load and found it to fail. At that point I realized my classes were registered for use with the ArcFM software -- custom GeoObjects. I unregistered the classes and found performance improve dramatically. I'm not quite at the speed of the FGDB -- but pretty close to it. Thanks again - you pointed me in the right direction! Ed
... View more
02-12-2014
12:35 PM
|
0
|
0
|
1643
|
|
POST
|
Using IFeature.Store is the slowest way to save changes to a gdb if you're making large numbers of edits. Instead, use IFeatureclass.Update to get an update cursor and call IFeatureCursor.UpdateFeature where you would normally call Store. For creating new features, use IFeatureClass.Insert to get the cursor and IFeatureCursor.InsertFeature. Also, before you start, place the feature classes you're writing to into LoadOnly mode using IFeatureClassLoad. Take them out of LoadOnly mode when you're done. Neil - Thanks for the reply. As my post says, I'm not using IFeature.Store. I've tried using an insert cursor, as well as WriteFeature and WriteFeatures from the IFeatureClassWrite interface. All are equally slow. My example also shows that I'm using LoadOnly mode. Forgot to mention that I've removed all indexes from the target class -- except that for ObjectID. And I've remove all relationships. The target is also a simple point feature class - no network or topology defined. Ed
... View more
02-12-2014
10:49 AM
|
0
|
0
|
1643
|
|
POST
|
Hello ??? I???ve got a process that???s built in C# using ArcObjects v10.1 that reads data from a feature class in a source File Geodatabase, applies updates to attributes and sometimes the shape, and writes a new feature to a target feature class in another File geodatabase. This works fine. As a typical example in one case it reads and writes about 120,000 features in 4 minutes. Now I need to update the process to write to an Oracle SDE instance. Overall it works, its just much slower. For example, the process that took 4 minutes to process 120,000 records in an FGDB takes 18 minutes in Oracle. This alone would be OK. My issue is that I???ve got some processes that take hours in the FGDB. As part of the updates for Oracle I???ve switched to use of IFeatureClassWrite::Write instead of IFeature::Store that I was using in the FGDB. My understanding is that the FeatureClassWrite doesn't trigger events like Store. However this doesn???t seem to make much difference. Here???s an overview of what the process does. // Get the target workspace IWorkspace targetWorkspace = workspaceFactory.OpenFromFile(connectionString, 0); IWorkpaceEdit workspaceEdit = (IWorkspaceEdit) targetWorkspace; // Start editing workspaceEdit.StartEditing(false); workspaceEdit.StartEditOperation(); // Open the source and target feature classes IFeatureWorkspace sourceFeaWorkspace = (IFeatureWorkspace) sourceWorkspace; IFeatureClass sourceClass = sourceFeaWorkspace.OpenFeatureClass(sourceClassName); IFeatureWorkspace feaWorkspace = (IFeatureWorkspace) targetWorkspace; IFeatureClass targetClass = feaWorkspace.OpenFeatureClass(targetClassName); IFeatureClassWrite fcWrite = (IFeatureClassWrite) targetClass; // Put the target class in load-only mode and apply a schema lock IFeatureClassLoad fcLoad = (IFeatureClassLoad) targetClass; ISchemaLock schemaLock = (ISchemaLock) targetClass; schemaLock.ChangeSchemaLock(esriSchemaLock.esriExclusiveSchemaLock); fcLoad.LoadOnlyMode = true; // Read from the source and write to the target IFeature targetFea = null; IQueryFilter queryFilter = new QueryFilter(); IFeatureCursor feaCur = sourceClass.Search(queryFilter,true); IFeature sourceFea = feaCur.Next(); while (sourceFea != null) { [INDENT]targetFea = targetClass.CreateFeature(); // Update the shape and attributes // Store the target feature fcWrite.WriteFeature(targetFea); sourceFea = feaCur.Next(); [/INDENT] } // Stop editing and release lock workspaceEdit.StopEditing(true); schemaLock.ChangeSchemaLock(esriSchemaLock.esriSharedSchemaLock); fcLoad.LoadOnlyMode = false; I???ve also tried grouping features into an ISet and using IFeatureClassWrite::WriteFeatures. No difference in performance. I???ve also tried using an InsertCursor. No difference in performance. Is it just the case that writing directly to an Oracle SDE instance is 4 to 5 times slower than writing to an FGDB? Any insights or suggestions at all would be much appreciated. Thanks, Ed
... View more
02-11-2014
04:17 AM
|
0
|
5
|
2150
|
|
POST
|
Had the same problem. Editing a file Geodatabase. Arc 10.1 on Windows 7 64 bit. Out of the blue after much previous successful editing. Got to a point where it failed consistently. Had McAfee virus scan and Mozy back-up running in the background. Turned both off (and actually disconnected from the Internet) and could then save successfully. Don't know whether it was McAfee or Mozy or both. Thank you everyone who suggested looking at the background processes. Doesn't seem like the best long-term solution to turn them all off, but at least I can move forward. Ed
... View more
01-31-2014
06:35 AM
|
0
|
0
|
2711
|
|
POST
|
I've got a case where a line feature class is the destination of a one-to-many relationship and has an integer foreign key field named (for simplicity's sake) "ForeignKey". When this is split by an edit operation I want both new lines to retain the same relationship to the original parent, so I created a range domain named "DuplicateForeignKey" with a split policy "Duplicate". Hope was that the value in the "ForeignKey" would remain in both new features after the split. No so. At least not so far in my testing. Only one feature retained the foreign key value -- the longer one. My goal is to use the IFeatureEdit2.SplitWithUpdate method to do the splitting programmatically. The ForeignKey was not duplicated as I'd hoped, so I tried the same operation using the Split tool in ArcMap. Same results. I may be missing something basic here. Any suggestions would be much appreciated. I'm working in ArcMap 10.1, ArcEditor licensing (I guess that's called "Standard" now.) Thanks, Ed
... View more
12-11-2013
05:00 AM
|
0
|
0
|
1200
|
|
POST
|
After some sleep I realized the solution to the problem was to create a new selection layer from the first layer that had the join, and then use SearchDisplayFeatures on the selection layer. Briefly, key parts of this are: // Get a reference to the join table IDisplayTable displayTable = (IDisplayTable)pFLayer; ITable table = displayTable.DisplayTable; IRelQueryTable relQueryTable = (IRelQueryTable)table; ITable destTable = relQueryTable.DestinationTable; IDataset tableDS = (IDataset)destTable; // Create a temporary layer using the selection set from the // current layer IFeatureLayerDefinition pFLayerDef = (IFeatureLayerDefinition) pFLayer; IFeatureLayer pTempLayer = pFLayerDef.CreateSelectionLayer(pFLayer.Name + "_xxTemp", true, tableDS.Name, ""); // Search the new layer.. pCursor has the results IGeoFeatureLayer pGeoFLayer = (IGeoFeatureLayer)pTempLayer; pCursor = pGeoFLayer.SearchDisplayFeatures(pQF, true); // Remove the temporary layer m_pMap.DeleteLayer((ILayer)pTempLayer); (Its probably not the intent of this forum for someone to ask a question and then later answer it themselves -- but it may be that writing the question down helped me solve it. I don't think I get points for this. Anyway, thanks Forums!) Ed
... View more
12-07-2013
06:28 AM
|
0
|
0
|
561
|
|
POST
|
I've got a tool that needs to operate on a selected set of features in a layer. It then needs to process a subset of the selected features based on a query filter. This is straightforward. For example: IFeatureSelection pFSel = (IFeatureSelection)pFLayer; ISelectionSet pSelectionSet = pFSel.SelectionSet; IQueryFilter pQF = new QueryFilter(); pQF.WhereClause = "MATERIAL = 'PL'; IFeatureCursor pCursor; pSelectionSet.Search(pQF, true, out pCursor); And pCursor holds the result. Now, what if the layer in question is a join layer. If I want to select from the join layer using a field in the joined table I can use SearchDisplayFeatures on IGeoFeatureLayer, as in: IGeoFeatureLayer pGeoFLayer = (IGeoFeatureLayer)pFLayer; pCursor = pGeoFLayer.SearchDisplayFeatures(pQF, true); Which works fine. But if I want to subset an existing selection set using a query filter that references a field in the join table... well, I'm stumped. Any suggestions would be much appreciated. Thanks, Ed
... View more
12-06-2013
02:52 PM
|
0
|
1
|
846
|
| Title | Kudos | Posted |
|---|---|---|
| 1 | 2 weeks ago | |
| 1 | 05-14-2026 07:31 AM | |
| 1 | 05-11-2026 02:55 PM | |
| 1 | 01-07-2026 12:34 PM | |
| 1 | 01-04-2026 05:14 PM |
| Online Status |
Offline
|
| Date Last Visited |
Wednesday
|