如何确定使用 Oracle Spatial 的内容?
Posted
技术标签:
【中文标题】如何确定使用 Oracle Spatial 的内容?【英文标题】:How do I determine what's using Oracle Spatial? 【发布时间】:2012-04-11 15:34:28 【问题描述】:我们有一个 Oracle Enterprise Edition 10 安装,正如我们的 DBA 向我解释的那样,Oracle Enterprise 安装包括所有扩展,您只需按您使用的方式获得许可。
我们发现我们正在使用 Oracle Spatial,但我们不想这样做。我可以自己确认它与此 SQL 一起使用:
select * from dba_feature_usage_statistics;
不幸的是,我只能找到这些。我们有大量使用 Spatial 元素的应用程序,但在询问了我们所有的供应商后,他们向我们保证他们的应用程序使用的是 Oracle Locator(它是 Spatial 的免费子集)。
所以我的问题很简单 - 我如何准确地发现哪个应用程序正在使用 Oracle Spatial 扩展? 或者(由 ik_zelf 的回答揭示),我如何证明我只使用 Spatial 的定位器子集。
【问题讨论】:
【参考方案1】:检查 sdo 元数据:
select * from mdsys.sdo_geom_metadata_table where sdo_owner not in ('MDSYS', 'OE')
当您更深入地研究 dba_feature_usage_statistics 时,您会发现此查询是确定正在使用什么和不使用什么的一部分。架构的 MDSYS 和 OE 不计算在内,即使它们有 sdo 对象。
【讨论】:
我有一个 DBA 运行它,它给出了很多结果。SDO_TABLE_NAME
SDO_COLUMN_NAME
等有列,但不清楚这些是什么(我猜是某事访问 SDO 的记录)。没有说明连接来自何处或哪个应用程序进行了查询。
我现在对此进行了进一步研究,看起来该表只是其中包含 SDO 几何图形的所有表的列表。我不认为这是对 Spatial 的有效测试,因为 Locator 也使用 SDO_Geometry - docs.oracle.com/cd/B19306_01/appdev.102/b14255/sdo_locator.htm
此查询是检查的一部分。如果你能证明使用只来自Locator,而且Locator可以免费使用SDO,那应该没问题。检查您的 Oracle 销售代表。是现在最好的选择。
啊,但这正是这个问题的重点 - 我如何证明我仅使用定位器(包括“免费”)而不是空间(昂贵的额外)?
该查询在确定是否使用特定于空间的函数时完全没有用。它所做的只是列出所有包含矢量几何图形(SDO_GEOMETRY 对象)的表,这些表可以被 Locator 或 Spatial 平等使用。【参考方案2】:
Oracle 网站上有一个 Oracle Spatial 与 Oracle Locator 的功能列表:http://docs.oracle.com/cd/B19306_01/appdev.102/b14255/sdo_locator.htm#SPATL340 - 请特别注意列出仅在 Oracle Spatial 中可用的功能的部分。
简短的故事是(基本上)以下内容不适合 Locator:
拓扑 网络数据模型 地理栅格 地理编码 内置数据挖掘功能 线性参考 一些空间聚合功能 sdo_geom 包的某些部分存储、索引、分区、sdo_util 包、坐标转换等都完全在 Locator 中。我会简单地检查dba_source
视图中是否存在使用任何禁止函数的存储过程。
对于数据库之外的代码,我想你必须相信别人的话,但根据我的经验,外部应用程序倾向于使用它们自己的方法而不是 Oracle 的内置特性。
【讨论】:
谢谢。我已经知道这个文档,这就是为什么我很确定我们不是故意使用定位器的原因。不幸的是,我们的问题是试图从 Oracle 数据库中获取细节来告诉我们发生了什么。以上是关于如何确定使用 Oracle Spatial 的内容?的主要内容,如果未能解决你的问题,请参考以下文章
地理围栏:如何识别对象(特征),使用 Oracle Spatial 重叠地理围栏边界?
java如何读取oracle spatial geometry中sdo_Ordinates的坐标值?!求问!!!
sql oracle spatial表供geoserver使用
使用C#操作Oracle Spatial的SDO_GEOMETRY对像(读取和写入)
如何把已有的ArcGIS的Shape File空间数据文件,转入到Oracle Spatial中,举例说明详细的工作步骤。