标签: oracle-10g

如何找到对象表中似乎不存在的对象?

我有一个名为cot_ntn_pi_v. 有人告诉我这是同义词。它没有出现在 all_synonyms 表中。它看起来像一个视图或表,但我在所有对象表中找不到它。我可以从中选择,但我不能删除它,因为它“不存在”并且我无法创建一个与“该名称已被另一个对象使用”相同名称的新表。

我是要疯了还是在做一些非常愚蠢的事情?

oracle oracle-10g

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

通过数据库链接查询是否有超时?

编辑/前言: 此问题已从 SO 迁移,因为我对有关数据库链接查询超时的问题特别感兴趣。SO提供的解决方法有点OK,但我对问题本身很感兴趣。

动机:
我有一个使用数据库链接的查询“永远”运行(超过 2 天,直到我终止会话)。问题似乎是远程数据库变得不可用,并且由于某些未知的原因没有ORA-02068提出(这里不讨论)并且查询只是等待和等待。

(该查询由 dbms_scheduler 作业发出,该作业执行 PL/SQL 包中的一个过程。因此,该作业也被卡住了。但这对于这个问题的核心并不是特别感兴趣)

我通过将我的一个测试数据库置于静默模式并通过数据库链接对其进行查询来模拟这种情况。正如预期的那样,查询一直在等待,直到手动取消或远程数据库取消停顿。

问题:
我无法控制远程数据库的行为和正常运行时间,因此我正在寻找某种可能性来为使用数据库链接的查询设置超时。

我已经研究了配置文件(CPU_PER_CALL等),sqlnet.ora参数,将本地命名参数直接添加到连接字符串中(例如添加(connect_timeout=10)到数据库链接定义),使用 运行命令... for update wait 1,但它们适用于繁忙或空闲会话,但不适用于对于等待中的会话。

所以我在数据库链接的“本地”端寻找一些选项,它为数据库链接的查询设置超时。
一些解决方案喜欢alter session set xyzselect ... from a@b "wait 100" --(yes, I know this syntax doesn't exist)将不胜感激,因为我对这些特定的数据库没有 DBA 权限。

我目前在 10gR2 上,但几周后升级到 11gR2,因此对这些版本中的任何一个的想法都会很有用。

oracle oracle-11g-r2 oracle-10g

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

删除一个oracle实例,正确的方法

我想删除一个在AIX 6.0 OS中创建的oracle实例(oracle 10.2.0.4.0)。我知道我可以删除终端中的所有 dbf 和 ctl 文件,但我认为这不是最好的方法。我认为必须是一种更清洁的方式来做到这一点。

提前致谢。

delete instance oracle-10g

10
推荐指数
2
解决办法
8万
查看次数

Oracle 10g 中的 SQL 替换特性

三四年前,我在某处的 Oracle 博客中读到 DBA 曾使用 Oracle 10g 的实时 SQL 替换特性来解决紧急事件。基本上,他以这样的方式配置 Oracle:每次收到某个查询 A 时,它都会执行另一个查询 B。没有应用程序代码更改,没有架构更改,只是一个简单的“执行查询 B 而不是 A”类型的配置。

并不是说我打算使用该功能(我可以想到一些不良后果),但出于好奇,它真的存在吗?如果是,那个功能叫什么?

oracle oracle-10g

9
推荐指数
1
解决办法
524
查看次数

将 1T Oracle DB 从 10g 升级到 11g 需要多长时间?

通常/大致将具有 1T 数据的 Oracle DB 从 10g 升级到 11g 需要多长时间?我需要估计它的停机时间,因为它是一个生产数据库。非常感谢!

oracle-11g oracle-10g upgrade

8
推荐指数
2
解决办法
6798
查看次数

Oracle 排序 varchar2 列最后带有特殊字符

如何在 Oracle 中按我自己自定义的顺序对 Varchar2 或 NVarchar2 列进行排序。或者是否有任何现有的选项可以先放字母,然后是数字,然后是所有特殊字符。

我们的第一种方法是使用一个函数来手动将字符映射到数字。

select id, sorted_column
from some_table
order FN_SPECIAL_SORT_KEY(sorted_column,'asc')
Run Code Online (Sandbox Code Playgroud)

特殊的排序函数将每个字符映射到一个 2 位数字,返回值用于排序。这似乎只是非常昂贵的串联,感觉不对。

        for i in 1..length(sorted_text)
        loop
            v_result:=v_result ||  case substr(sorted_text,i,1)
                WHEN ' '   THEN 82 WHEN  '!'   THEN 81 WHEN '"'    THEN 80 WHEN  '#'   THEN 79 WHEN  '$'
                ..............
                WHEN 'u'   THEN 15 WHEN  'U'   THEN 15 WHEN  'v'   THEN 14 WHEN  'V'   THEN 14 WHEN  'w'   THEN 13 WHEN  'W'   THEN 13 WHEN  'x'
                ....
                else 90 end;
        end loop;
Run Code Online (Sandbox Code Playgroud)

我很难想出另一种方法。我想知道这种方法存在哪些问题。也许我们别无选择。 …

oracle oracle-10g order-by sorting

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

为什么 Oracle 在这里使用索引?

Name     Null     Type      
-------- -------- --------- 
ID       NOT NULL NUMBER(4) 
GROUP_ID          NUMBER(4) 
TEXT              CLOB      
Run Code Online (Sandbox Code Playgroud)

上有一个 btree 索引group_id。以下是每个行group_id有多少行以及相应的百分比:

GROUP_ID               COUNT                  PCT                    
---------------------- ---------------------- ---------------------- 
1                      1                      1                      
2                      2                      1                      
3                      4                      3                      
4                      8                      6                      
5                      16                     12                     
6                      32                     24                     
7                      64                     47                     
8                      9                      7                      
Run Code Online (Sandbox Code Playgroud)

我跑了这个

EXEC DBMS_STATS.GATHER_SCHEMA_STATS(ownname=>'TEST', cascade=>true);
Run Code Online (Sandbox Code Playgroud)

如果我理解正确,这将为优化器收集统计信息。

现在,我记得看到 Oracle 不会使用索引并执行全表扫描,如果它检索所有行的 5% 以上左右。但是,当我运行此查询时,它仅在group_id7时才开始执行 FTS ,占所有行的 47%。

这是应该的方式吗?

index oracle oracle-10g

7
推荐指数
1
解决办法
296
查看次数

Oracle 10g - 如何防止一个用户占用所有资源?

我想知道是否有任何方法可以限制一个用户可以在我的 Oracle 系统上占用多少资源。我想限制一些查询和系统在运行非优化查询时能够占用所有系统资源。

oracle oracle-10g

7
推荐指数
1
解决办法
8281
查看次数

ANALYZE TABLE..VALIDATE STRUCTURE 永远运行

因此,正如我之前提到的,我是一名 SQL Server DBA/顾问,正在帮助客户使用他们的 Oracle 数据库。大多数情况下,我已经能够在文档和谷歌的帮助下弄清楚我需要做什么并解决问题,但我目前正在尝试处理一些似乎难以理解的事情。

其中一个数据库是 Oracle 10g LIMS 数据库,它已经存在(并升级)了至少 10 年(可能是 20 年)。这是一个关键的应用程序,但在过去的几年里,他们遇到了许多可靠性问题。为了尝试了解它的真正问题所在以及我们可能能够对此做些什么,我们让托管/MS 提供商在另一台(相同)服务器上制作了它的物理副本。(我很确定提供商将其解释为“RMAN 备份和还原”)。

我的想法是,我可以进行任何分析、调查、修复尝试,并使用我想要的任何工具,而不会影响生产。到现在为止还挺好。我dbv对所有数据文件运行了 DBVerify ( ),没有问题。

然后我ANALYZE TABLE .. VALIDATE STRUCTURE CASCADE ONLINE;在数据库中的每个表上运行。对于其中两个表,该命令比其他 2500 个表(组合)花费的时间长得多,所以我取消了它们并让其他表完成,他们没有问题也没有报告错误等。

事实证明,这两个表也是最大的应用程序数据表。然后我从最大的表(23GB,36M 行)开始,并决定按部分(没有 CASCADE)分析它,首先是表本身,然后是索引。在30-60分钟内完成表(我不记得确切),但ANALYZE INDEX .. VALIDATE STRUCTURE ONLINE;对于第一指标无法完成。

我决定让它运行一段时间,看看我是否能找到一种方法来监控它的进展。谷歌搜索这个我发现很多(旧)声称可以监控分析表,v$session_longops但查看它从未显示我的命令中的任何内容,我得出的结论是这必须仅适用于统计信息收集功能,而不是验证功能。在尝试了很多事情之后,我最终发现通过查看v$session执行命令的行,我可以使用 P1* 和 P2* 列来跟踪正在读取的文件和块。

这表明它确实在从预期的数据文件中读取数据,并从中读取不同的块。这一点以及命令运行时服务器上的磁盘利用率为 100% 的事实(没有其他任何东西)使我确信它确实在做某事并且没有被阻止/锁定/挂起。所以我只是让它运行。

现在已经超过 3 天(+72 小时),它没有显示完成的迹象,我在这里有点不知所措。

附加信息:

表的 DDL:

-- Unable to render TABLE DDL for object O$LIMS.N__RESULTS with DBMS_METADATA attempting internal generator.
CREATE …
Run Code Online (Sandbox Code Playgroud)

performance oracle oracle-10g corruption

7
推荐指数
1
解决办法
3391
查看次数

impdp 卡在索引导入上

impdp 导入卡在:

处理对象类型 SCHEMA_EXPORT/TABLE/INDEX/FUNCTIONAL_INDEX/INDEX

你怎么能调试这个?

oracle oracle-10g impdp

7
推荐指数
2
解决办法
2万
查看次数