标签: oracle-10g

Oracle 10g 转储文件推送到 Oracle 11g 数据库

当前imp使用以下参数执行命令时: file=my.dmp log=my.log fromuser=myuser touser=myuser

出现以下错误:

IMP-00058: ORACLE error 12560 encountered
ORA-12560: TNS:protocol adapter error
IMP-00000: Import terminated unsuccessfully
Run Code Online (Sandbox Code Playgroud)

但是,tnsping在我的 tnsnames.ora 文件中成功查找了值。我的问题是在 10g 中创建的转储文件是否会导致导入 11g 时出现问题,或者这个错误是我无法诊断的其他错误。

oracle oracle-11g oracle-10g

5
推荐指数
2
解决办法
9149
查看次数

学习oracle,安装10g还是11g有关系吗?

我正在上数据库课程,他们在课堂上使用 Oracle 10g,但是我在 Windows 8 中安装数据库时遇到了一些问题(身份验证问题),所以我想我会尝试 11g。

11g 是否向后兼容?

就像在学习中一样,我是否可以不使用添加的 11g 功能?

oracle oracle-11g oracle-10g feature-comparison installation

5
推荐指数
1
解决办法
654
查看次数

Oracle 视图忽略外部 WHERE 子句

再会,

这个难倒我了。我有一个相当讨厌的开发人员查询,我想将其存储在非物化的 Oracle 视图中。视图本身的文本在这里列出有点长,但它编译得很好并生成正确的结果集。视图查询本身使用 CTE 以及两个手动逆透视(UNPIVOT 运算符在 Oracle 10 中不可用)和相当多的 UNION。这个想法是重复使用每个 CTE '中间' 查询来提取各种聚合,否则这些聚合在单个查询中是不可能的(糟糕的数据库设计,不幸的是我无法控制)。需要许多聚合,这是我在速度、可维护性和可读性/自文档化代码方面可以提出的最佳解决方案。

现在,当我做一个简单的

SELECT *
  FROM myView;
Run Code Online (Sandbox Code Playgroud)

但是,每当我尝试过滤结果时,WHERE 子句似乎都被忽略了。类似的东西

SELECT *
  FROM myView
 WHERE DATA_TYPE = 3;  --  <== There is no DATA_TYPE = 3 in the result set
Run Code Online (Sandbox Code Playgroud)

仍然返回所有行,而它应该什么都不返回。涉及任何其他列的其他谓词似乎也被忽略。知道什么可能导致这种情况吗?上面的 SELECT 执行得很好,没有给出错误。

作为参考,DBMS 是 Oracle 10g。

提前感谢您的任何帮助。

编辑:

仍然展示相同行为的视图查询的精简版本如下(在 CTE 的内部和外部部分有更多的查询,为了紧凑,我只包含了两个内部和一个外部):

CREATE OR REPLACE VIEW FSA.FSA_V_DB_TOTALS
(
    DATA_CATEGORY, DATA_TYPE, HUMAN_STRING, ELEMENT_NAME, ELEMENT_VAL,
    CLASS_CD, REGION, CNTY, DIST, TRA, FRAN, PROP
)
AS
WITH
--Queries to generate intermediate result sets …
Run Code Online (Sandbox Code Playgroud)

oracle oracle-10g cte view

5
推荐指数
1
解决办法
3505
查看次数

帮助使用 Oracle Pipelined 函数

我有一个支点,其中我与坦克编号签订了合同,以 ; 分隔。我已经得到了这个例子来将它们向下旋转成行(有效):

SELECT oks_c.contract_number, 
       oks_l.line_id,
       oks_l.tank_numbers, column_value AS TANK_NUMBER 
  FROM oks_contract_header oks_c
 INNER JOIN oks_contract_lines oks_l 
    ON oks_l.contract_number = oks_c.contract_number AND 
       oks_l.item_name LIKE '%.55201'
    , table(str2tbl(oks_l.tank_numbers,';')) acbb
ORDER BY oks_c.contract_number, 
         oks_l.line_id, 
         TANK_NUMBER
Run Code Online (Sandbox Code Playgroud)

这是流水线函数:

CREATE OR REPLACE function DBRAJAH.str2tbl( p_str in varchar2, p_delim in varchar2 default ',' ) return 
str2tblType
PIPELINED
as
    l_str      long default p_str || p_delim;
    l_n        number;
begin
    loop
        l_n := instr( l_str, p_delim );
        exit when (nvl(l_n,0) = 0);
        pipe row( ltrim(rtrim(substr(l_str,1,l_n-1))) );
        l_str := substr( …
Run Code Online (Sandbox Code Playgroud)

oracle oracle-10g pivot

5
推荐指数
1
解决办法
520
查看次数

谓词中带有“或”的慢速连接行为

我面临着一种我无法理解和克服的情况。

简而言之,我们有左连接查询,如:

select from a 
left join b on a.key1=b.key1 or a.key1=b.key2
Run Code Online (Sandbox Code Playgroud)

这工作非常缓慢,同时两者分开:

select from a 
left join b on a.key1=b.key1

select from a 
left join b on a.key1=b.key2
Run Code Online (Sandbox Code Playgroud)

工作非常快。

b.key1 有正常索引

b.key2 有正常索引

我无法理解这种行为的原因?我的连接策略或索引使用中是否缺少一些非常基本的东西?

在这里,我们有详细的计划:

无或(TOP_USTR_ADMIN_IP - ustrip 列的索引名称):

SQL> explain plan for
SELECT * FROM top.macs_constraint mc 
LEFT JOIN top.top_ustr tu ON  tu.ustrip = mc.IP;

Explained.

SQL> SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY());

   Plan hash value: 349751289

--------------------------------------------------------------------------------------------
| Id  | Operation              | Name              | Rows  | Bytes | Cost …
Run Code Online (Sandbox Code Playgroud)

oracle join oracle-10g plsql

5
推荐指数
1
解决办法
4700
查看次数

在 FOR 循环中引用 PL/SQL 变量

我编写了一个 PL/SQL 脚本来查找表中长列的大小。只是为了使脚本通用,我将表名和列名作为变量传递,但我收到一条错误消息,说表或视图不存在。详细信息是:

ORA-06550: line 8, column 34:
PL/SQL: ORA-00942: table or view does not exist
ORA-06550: line 8, column 11:
PL/SQL: SQL Statement ignored
ORA-06550: line 9, column 42:
PLS-00364: loop index variable 'J' use is invalid
ORA-06550: line 9, column 3:
PL/SQL: Statement ignored
Run Code Online (Sandbox Code Playgroud)

脚本是:

declare
a number := 0;
x number := 0;
i number := 0;
tablename varchar2(100):= 'FILES';
columnname varchar2(100):= 'FILESIZE';
begin
for  j in (select columnname from tablename) loop
  a:=UTL_RAW.LENGTH (UTL_RAW.CAST_TO_RAW(j.columnname));
    i := i+1; …
Run Code Online (Sandbox Code Playgroud)

oracle-10g plsql

4
推荐指数
1
解决办法
9708
查看次数

如何调试“IO 错误:TNS 数据通道结束”错误?

我看到有关应用程序因来自 Oracle (10g) 服务器的“TNS 数据通道结束”错误而导致某些查询失败的零星报告。是否有任何我可以运行的查询(例如,使用 SQL*Plus 或其他工具)来询问 Oracle 服务器此类故障的原因是什么?我应该寻找什么日志?

oracle oracle-10g

4
推荐指数
1
解决办法
1万
查看次数

Oracle 子查询列别名语法?

我有类似的东西:

SELECT a, b
INTO v_a, v_b
FROM (
    SELECT x, y
    FROM whatever
    UNION
    SELECT z, w
    FROM something
) AS subquery (a, b)
Run Code Online (Sandbox Code Playgroud)

这当然在 Oracle 中不起作用(该语法 - 除了 INTO 和可选的 AS)在 SQL Server 中会很好http://sqlfiddle.com/#!6/b7dcf/1

是否有替代方法(这需要我将别名放在里面),其中列别名在外面:

SELECT a, b
INTO v_a, v_b
FROM (
    SELECT x AS a, y AS b
    FROM whatever
    UNION
    SELECT z, w
    FROM something
) subquery;
Run Code Online (Sandbox Code Playgroud)

http://sqlfiddle.com/#!6/c12e1/1 - 当然适用于 SQL Server 和 Oracle

我反对内部锯齿的原因是它不利于维护,显然,如果在该部分上方添加新部分,则锯齿会受到打击。

oracle oracle-10g

4
推荐指数
1
解决办法
2618
查看次数

使用 Inteval 数据类型存储计算结果

我想创建一个表,它具有hiredate 以及hiredate 和sysdate 的间隔。如何创建一个自动存储计算的列。

oracle-11g-r2 oracle-10g

4
推荐指数
1
解决办法
121
查看次数

这些空值如何存储在 NOT NULL 列中?

我们正在使用 SAP SLT 将 HANA 上的 SAP ECC 6.0 中的表复制到 Oracle 10g 仓库中。自开始以来,我们注意到NOT NULLHANA 中的列定义保留在表的 Oracle 副本中,但 HANA 将许多值存储为空字符串。Oracle 将空(varchar)字符串存储为NULLs 并且不知何故这与NOT NULL列定义不冲突(即我们NULL在列中定义为NOT NULL)。

查询这些表会产生奇怪的结果:

SELECT COUNT(*) FROM warehouse.table WHERE col IS NULL;
0
SELECT COUNT(*) FROM warehouse.table WHERE col = '';
0
SELECT COUNT(*) FROM warehouse.table GROUP BY NVL(col,'N');
X 503206
N 2377222
Run Code Online (Sandbox Code Playgroud)

所以我们可以通过使用或函数 NULL判断这些列中有值,但是查询它们会返回奇怪的结果。NVLDECODE

一旦我们改变了列,我们就会得到正确的结果:

ALTER TABLE warehouse.table MODIFY (col NULL);
Table altered.
SELECT COUNT(*) …
Run Code Online (Sandbox Code Playgroud)

oracle oracle-10g sap-hana

4
推荐指数
1
解决办法
1049
查看次数