oracle exp命令为啥不能用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle exp命令为啥不能用相关的知识,希望对你有一定的参考价值。

怎么不能用?
看是否环境变量问题?
去oracle的bin目录下去执行执行看看?
首先,要确认oracle的bin目录下有exp.exe文件或者类似文件名的文件去执行下
参考技术A 其实就2句话
导出
将数据库(test)完全导出,用户名sys
密码manager
导出到D:\daochu.dmp中
exp
sys/manager@test
file=d:\daochu.dmp
full=y
导入
将D:\daochu.dmp
中的数据导入
test数据库中。
imp
sys/manager@test
file=d:\daochu.dmp
不过你可以参考如下
网页

为啥 Oracle SDO 可以投影具有北轴承但不能用东轴承的点?

【中文标题】为啥 Oracle SDO 可以投影具有北轴承但不能用东轴承的点?【英文标题】:Why can Oracle SDO project a point with a north bearing but not an east bearing?为什么 Oracle SDO 可以投影具有北轴承但不能用东轴承的点? 【发布时间】:2015-03-13 11:23:03 【问题描述】:

我正在使用 Oracle Spatial (SDO) 在给定的经度、纬度上沿给定的方位投影给定距离的点。我正在寻找经度,纬度的结果。当我向北投影时,这似乎按预期工作。但不是在正东投影时。

正北投影就像人们想象的那样工作。如果结果正好等于开始的经度,则为经度。

Projecting East 无法按预期工作。如果结果不等于开始的纬度,则为纬度。我不知道为什么会这样。

这是一个例子。

我将从按预期工作的案例开始。我正在处理由我的 Java 代码记录的输出。

googlefiber3log4j:05:18:02.117 userObject.placement.OrthoRectangleSettings$CompleteRectOnServer - [调试] x: -117.499208 y: 43.808064441203=addVertex(num0,rectpolygon:[[x: -117.499208 y: 37.220449]], stmtStmt(SQLSELECT SDO_UTIL.POINT_AT_BEARING(?point?,?radians?,?距离?)点 FROM DUAL) 属性:距离=731519.9982059655,点=x: -117.499208 y: 37.220449, 弧度=6.283185307179586>)

以粗体字的顺序显示计算结果、距离、我们投影的点、投影的角度。

在sqlDev中执行为:

SELECT SDO_UTIL.POINT_AT_BEARING(sdo_geom.sdo_geometry(2001, 8192, sdo_geom.sdo_point_type(-117.499208, 37.220449, NULL), NULL, NULL), 6.283185307179586,731519.9982059655) 点数;

对于 Oracle,零角是北。 6.28…角度基本上为零,基于 2 PI 弧度。

您可以看到生成的经度 -117.499208 在输入和输出上都符合预期。为了让它变得如此干净,我不得不怀疑 Oracle 并没有真正使用 trig 来执行此操作,而是将零弧度视为一种特殊情况。

现在进行下一个我看到问题的计算。这将向东而不是向北投影。投影的点是上述计算的输出。

googlefiber3log4j:05:18:29.474 userObject.placement.OrthoRectangleSettings$CompleteRectOnServer - [调试] x:-101.232232142637 y:42.6357376524045= addVertex(num1,rectpolygon:[[x: -117.499208 y: 37.220449, x: -117.499208 y: 43.808064441203]], stmtStmt(SQLSELECT SDO_UTIL.POINT_AT_BEARING(?point?,?radians?,?distance?) point FROM DUAL) 属性:距离=1325879.999986927,点=x:-117.499208 y: 43.808064441203, 弧度= 1.5707963267948966>)

在sqlDev中执行为:

选择 SDO_UTIL.POINT_AT_BEARING(sdo_geom.sdo_geometry(2001, 8192, sdo_geom.sdo_point_type(-117.499208, 43.808064441203, NULL), NULL, 空值), 1.5707963267948966,1325879.999986927) 点数;

在这种情况下,弧度为 90.0 度/东。所以我希望结果的纬度(42.6357376524045)等于开始的纬度(43.808064441203)。但它实际上离那有点远。

为什么在尝试向正东投影时,纬度会发生变化?

【问题讨论】:

【参考方案1】:

简短(且过期)的答案是“不,当将一个点向东偏移到一个新点时,纬度不应改变。”

但是,我认为您在 Oracle 的 Point_at_Bearing() 实用程序中发现了一个错误/功能。

我使用您的代码变体测试了 Oracle 11.2,我在其中做了两处更改:

    我简化了数字以使偏移更明显 我使用CONVERT_UNIT() 来获得从 90 度开始的精确弧度转换

接下来,我迭代(在输入方位上),直到得到与输入相同的输出纬度。对于俄勒冈州小山谷附近的区域,结果如下所示:

SELECT SDO_UTIL.POINT_AT_BEARING(
    sdo_geom.sdo_geometry(
        2001
        , 8192
        , sdo_geom.sdo_point_type(
            -117.5
            ,44
            , null)
        , NULL
        , NULL)
    , SDO_UTIL.CONVERT_UNIT(
        84.2316805
        , 'degree'
        ,'radian') 
    , 1325000.0) aPoint FROM DUAL;

所以,长答案是:Oracle 很可能使用非等角投影来获取偏移坐标;因此,纬度调整不正确。换句话说,Point_at_Bearing() 函数在您的纬度上的角度失真超过 5.7 度!

【讨论】:

【参考方案2】:

向东行驶意味着沿着恒向线;纬度的平行线是恒向线,因此纬度不会改变。但这不是 SDO_UTIL.POINT_AT_BEARING 所做的,它使用沿测地线或俗称大圆的距离(这是最短距离 - 相当于地球表面上的直线)。测地线仅在指定点向东;当您沿着它行进时,方向会从最近的极点改变 - 示例案例在北半球,因此它向南移动。如果你走过地球的一半圆周,你将到达赤道以南的一点,因为起点是北。

【讨论】:

以上是关于oracle exp命令为啥不能用的主要内容,如果未能解决你的问题,请参考以下文章

imp命令不知道为啥不能用了,提示'imp'不是内部或外部命令,也不是可运行的程序或批处理文件。

EXPDP/IMPDP

oracle exp不能导出空表,怎样才能导出空表的结构呢?imp怎么导入空表结构?

Oracle常用导出导出命令及性能效率对比

为啥 Oracle SDO 可以投影具有北轴承但不能用东轴承的点?

轻松解决oracle11g 空表不能exp导出的问题。