AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-154

Leigh Riffel's questions

Martin Hope
Leigh Riffel
Asked: 2017-02-22 13:30:06 +0800 CST

发送不带数据文件的备用日志

  • 4

在构建新的备用数据库时,是否可以让它在备用数据库上没有数据文件的情况下开始从主数据库传送归档日志?

oracle oracle-11g-r2
  • 1 个回答
  • 319 Views
Martin Hope
Leigh Riffel
Asked: 2016-05-13 07:52:32 +0800 CST

SQLPLUS 默认列宽

  • 2

对于我几乎所有的数据库,当我运行一条SELECT语句时,显示的列的长度会调整为被查询数据的宽度。但是,我有两个数据库(同一应用程序的开发和生产)似乎将所有列大小默认为 32 个字符宽。如果数据宽于 32 个字符或使用了列别名,则默认该列为 128 个字符宽。

以下是来自众多优秀系统之一的一些示例:

>select '1234567890' XX_Identifier from dual;

XX_IDENTIF
----------
1234567890

>select '12345678901234567890' XX_Identifier from dual;

XX_IDENTIFIER
--------------------
12345678901234567890

以下是其中一个不良系统的一些示例:

>select '1234567890' XX_Identifier from dual;

XX_IDENTIFIER
--------------------------------
1234567890

>select '12345678901234567890' XX_Identifier from dual;

XX_IDENTIFIER
--------------------------------
12345678901234567890

我检查了 sqlplus 设置,它们都是一样的。我没有看到任何看起来不寻常的数据库参数,它们都具有相同的 NLS 参数。两个数据库使用相同的字符集。

我意识到我可以为要查询的每一列定义一种格式,但这不是必需的,因为它不在任何其他数据库上。

有这个问题的数据库是11.2.0.1,而我们其他的都是11.2.0.4,所以可能有一个我找不到的错误。在这两种情况下,我使用的 sqlplus 客户端都是 12.1.0.1。

更新:症状不完全匹配,但 Doc ID 330717.1 谈到了 sqlplus 中的列宽,基本上说如果不设置格式就不能保证任何事情。我可以接受,但由于行为是一致的,似乎可以确定原因。

oracle oracle-11g-r2
  • 1 个回答
  • 1673 Views
Martin Hope
Leigh Riffel
Asked: 2015-07-30 11:59:31 +0800 CST

删除全局临时表

  • 3

在 Oracle 中,当您尝试删除正在使用的全局临时表时,会出现以下异常:

ORA-14452: 尝试在已使用的临时表上创建、更改或删除索引

这是由在当前事务中使用 GTT 的会话引起的。有没有办法查询数据字典以确定哪些会话阻止了丢弃?我知道我可以通过这样的方式获得正在进行的交易的会话,但我想进一步缩小范围。

select * from v$session where session_id in (select session_id from dba_locks where lock_type='Transaction');

oracle oracle-11g-r2
  • 2 个回答
  • 17966 Views
Martin Hope
Leigh Riffel
Asked: 2014-11-05 12:28:20 +0800 CST

实例空闲时 glogin.sql 抑制错误

  • 0

我的 glogin.sql 文件中有一个 pl/sql 块,用于在连接到数据库服务器时显示来自 v$instance 的信息。有没有办法抑制我们在实例空闲时自然会得到的 ORA-01034?空闲实例在您连接时报告它处于空闲状态,因此不需要任何额外的东西并且可能会造成混淆。

oracle sqlplus
  • 2 个回答
  • 340 Views
Martin Hope
Leigh Riffel
Asked: 2014-03-13 05:17:35 +0800 CST

RMAN 复制“非当前时间点”是什么意思?

  • 0

当RMAN DUPLICATE从备份连接到目标时,如果没有until time设置,复制使数据库的当前状态如何?

我在文档中能找到的最接近的内容是以下声明:

还原和复制重复的数据文件,并使用增量备份和归档重做日志文件将它们恢复到非当前时间点。

这个非当前时间点有多当前?它是否适用于它在副本开始时可用的所有存档日志,或者它们是否可能仅在它到达副本的恢复部分时才可用?

oracle oracle-11g-r2
  • 1 个回答
  • 100 Views
Martin Hope
Leigh Riffel
Asked: 2013-04-03 12:24:00 +0800 CST

必须采取什么措施来根据模式验证 XMLTYPE?

  • 5

我有一个生成 XMLTYPE 的过程,我想根据模式验证它。问题是运行 createSchemaBasedXML 似乎存在权限问题,因为当我以 AUTHID DEFINER 身份运行该过程时,它给出了错误“ORA-31050:访问被拒绝”,但是当我以 AUTHID CURRENT_USER 身份运行它时,它实际上返回了一个特定于验证的错误(我会单独处理)。CURRENT_USER 不是可接受的解决方案。

我的假设是 CURRENT_USER 起作用是因为用户具有 XMLADMIN 角色。授予角色包含的权限并不能解决问题,因此一定是角色能够绕过 ACL。

问题是,在 RESOURCE_VIEW 中查询保护资源的 ACL 表明它受/sys/acls/all_owner_acl.xml. DBMS_XDB.getPrivileges显示 xsd 具有以下所有权限:

  <read-properties/>
  <read-contents/>
  <write-config/>
  <link/>
  <unlink/>
  <read-acl/>
  <write-acl-ref/>
  <update-acl/>
  <resolve/>
  <link-to/>
  <unlink-from/>
  <dav:lock/>
  <dav:unlock/>
  <dav:write-properties/>
  <dav:write-content/>
  <dav:execute/>
  <dav:take-ownership/>
  <dav:read-current-user-privilege-set/>

UsingDBMS_XDB.getAclDocument表明主体dav:owner拥有所有权限,因此这不足以让架构所有者创建基于架构的 XML。考虑到这个想法,我创建了一个块来运行DBMS_XDB.createResource创建一个新的 ACL。我可以成功创建 ACL,并且从 SQLDeveloper 我可以看到它存在于我创建它的位置。

在此过程中有很多地方我可能会出错,所以我要寻找的核心是:

必须采取什么措施来根据模式验证 XMLTYPE?

=== 更新 4/3/2013 ===
我可以将我的 xsd 文件的 acl 设置/sys/acls/all_all_acl.xml为/sys/acls/all_owner_acl.xml. 和以前一样,这些都不能解决权限问题。我还尝试使用从 all_owner_acl.xl 复制的 acl 定义并使用与 /sys/acls/ 的那些文件相同的路径来创建资源。这至少成功地设置了 ACL。我已经为我的所有 XSD 运行它并查询 RESOURCE_VIEW 以确认它们已设置为新的 ACL。尽管如此,createSchemaBasedXML 仍然给出拒绝访问错误。我的 ACL 是否正确或可能存在其他问题?

<acl xmlns="http://xmlns.oracle.com/xdb/acl.xsd" 
   xmlns:dav="DAV:" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
   xsi:schemaLocation="http://xmlns.oracle.com/xdb/acl.xsd 
      http://xmlns.oracle.com/xdb/acl.xsd" shared="true">
       <ace>
         <grant>true</grant>
         <principal>MY_ORACLE_USER</principal>
         <privilege>
           <all/>
         </privilege>
       </ace>
     </acl>

=== 2013 年 4 月 9 日更新 ===
我有一个匿名块,可以根据模式成功验证 XML。这再次指向一个权限问题,该问题允许它在启用角色时起作用,但在角色不可用时不起作用。

== 2013 年 4 月 12 日更新 ===
我得到的每一点证据似乎都表明我的 ACL 有问题,或者更有可能是我设置 ACL 的方式有问题。将 XDBADMIN 角色从用户那里拿走会导致匿名块失败并出现访问被拒绝错误,即使我已经授予该角色根据 dba_tab_privs 提供的所有权限。我的 setACL 遵循这种形式:

DBMS_XDB.setACL('/sys/schemas/MY_ORACLE_USER/account.xsd', '/sys/acls/acl_acc.xml');

可以在Oracle Communities上找到完整的测试用例。

oracle oracle-11g-r2
  • 1 个回答
  • 1250 Views
Martin Hope
Leigh Riffel
Asked: 2013-03-13 12:58:19 +0800 CST

在策略管理的 RAC 中为 DBMS_Scheduler 作业指定服务器

  • 4

单元测试需要 dbms_scheduler 作业在运行单元测试的同一 RAC 节点上运行。我知道,对于管理员管理的数据库,这可以通过创建一个限制可用实例的服务,然后在作业使用的作业类中使用该服务来完成。我的问题是,如何在 11.2 中通过策略管理来做到这一点?

可以创建只有一个服务器的池,并且可以将数据库分配给多个池,但据我了解,一台服务器只能分配给一个池。因此,无法创建使用单个服务器的服务,并且仍然有其他服务使用由多个服务器(包括该服务器)定义的池。

我也知道可以将服务创建为 SINGLETON 或 UNIFORM,但由于 SIGNLETON 不提供允许的服务器,甚至不提供首选服务器,我不确定这将有何帮助。

当然,我错过了使这一切成为可能的东西。

oracle oracle-11g-r2
  • 1 个回答
  • 4670 Views
Martin Hope
Leigh Riffel
Asked: 2013-02-20 06:44:50 +0800 CST

使用 Oracle XML 模式生成 XML

  • 8

我有一些使用 DBMS_XMLSCHEMA 注册的 XML 模式定义。我已经使用生成的 XMLTypes 创建了表。我可以使用 XMLQuery 创建 XML,如果我理解正确,如果定义正确,可以将查询结果插入到表中。

最终需要将 XML 写入文件,但我不确定的部分是从头开始编写 XMLQueries 是否是生成 XML 的最佳方式。有没有办法让 XML 模式为指南生成 XML 存根或生成模板 XMLQuery?数据目前都在常规 Oracle 表中,但排列方式完全不同,因此任何有关基于一组特定注册模式轻松导出到 XML 的信息都会很有用。

oracle oracle-11g-r2
  • 1 个回答
  • 3336 Views
Martin Hope
Leigh Riffel
Asked: 2013-01-23 11:22:52 +0800 CST

在 raise_application_error 上未重新初始化包状态

  • 6

当一个包有状态并且头部改变时,第一次调用会得到一个错误堆栈,如下所示:

ORA-04068: existing state of packages has been discarded
ORA-04061: existing state of package "LRIFFEL.PKG1" has been invalidated
ORA-04065: not executed, altered or dropped package "LRIFFEL.PKG1"
ORA-06508: PL/SQL: could not find program unit being called: "LRIFFEL.PKG1"
ORA-06512: at "LRIFFEL.PKG2", line 7
ORA-06512: at line 1

来自同一会话的后续调用会重新初始化包状态并因此成功运行。有趣的是,当调用者捕获异常并执行 raise_application_error 时,这种行为似乎发生了变化。正如预期的那样,raise_application_error 包含在堆栈中,但与预期相反,ORA-04068 没有。这是一个示例错误堆栈:

ERROR at line 1:
ORA-20001: Failed
ORA-06512: at "LRIFFEL.PKG2", line 7
ORA-04061: existing state of package "LRIFFEL.PKG1" has been invalidated
ORA-04065: not executed, altered or dropped package "LRIFFEL.PKG1"
ORA-06508: PL/SQL: could not find program unit being called: "LRIFFEL.PKG1"
ORA-06512: at line 1

这似乎不仅仅是一个显示问题,因为重复调用该过程继续得到相同的错误。只有当将 raise_application_error 转换回简单的 raise(或完全消除异常块)时,下一次执行才会包含 ORA-04068,并且下一次执行成功。

任何人都可以确认和/或解释这种行为吗?这是重现该行为的方法:

--Session 1 - Create Objects
create or replace package pkg1 as
   vInteger Integer := 7;
   procedure procA;
end;
/

create or replace 
package body pkg1 as
   procedure procA is
   begin
      DBMS_Output.Put_Line('ProcA');
   end;
end;
/

create or replace 
package pkg2 as
   procedure procB;
end;
/

create or replace 
package body pkg2 as
   procedure procB is
   begin
      pkg1.procA;
   exception
      when others then
         raise;
   end;
end;
/

--Session 2 - Test execution.
execute pkg2.procB;


--Session 1 - Change package header and thus invalidate package state.
create or replace package pkg1 as
   vInteger Integer := 8;
   procedure procA;
end;
/


--Session 2 - Observe failure due to changed package state.
execute pkg2.procB;

--Session 2 - Observe success due to re-initialized package state.
execute pkg2.procB;


--Session 1 - Change Raise to Raise_Application_Error.
create or replace 
package body pkg2 as
   procedure procB is
   begin
      pkg1.procA;
   exception
      when others then
         raise_application_error(-20001,'Failed',True);
   end;
end;
/

--Session 1 - Change package header and thus invalidate package state.
create or replace package pkg1 as
   vInteger Integer := 9;
   procedure procA;
end;
/

--Session 2 - Observe failure due to changed package state.
execute pkg2.procB;


--Session 2 - Observe unexpected continued failures.
execute pkg2.procB;
execute pkg2.procB;
execute pkg2.procB;
execute pkg2.procB;
execute pkg2.procB;
execute pkg2.procB;
execute pkg2.procB;

--Session 1 - Change back to raise.
create or replace 
package body pkg2 as
   procedure procB is
   begin
      pkg1.procA;
   exception
      when others then
         raise;
   end;
end;
/

--Session 2 - Observe failure on the first execution.
execute pkg2.procB;

--Session 2 - Observe success.
execute pkg2.procB;

除了涉及触发器之外,错误 229349 看起来很相似。

oracle oracle-11g-r2
  • 1 个回答
  • 1442 Views
Martin Hope
Leigh Riffel
Asked: 2012-06-28 12:12:19 +0800 CST

v$bh 中的对象但不是 dba_objects

  • 3

Oracle 文档在 11.2 Performance Tuning Guide 中有一节,标题为Determining which Segments have many Buffers in the Pool。该部分列出了以下查询:

SELECT o.OBJECT_NAME, COUNT(*) NUMBER_OF_BLOCKS
FROM DBA_OBJECTS o, V$BH bh
WHERE o.DATA_OBJECT_ID = bh.OBJD AND o.OWNER != 'SYS'
GROUP BY o.OBJECT_NAME
ORDER BY COUNT(*);

如果我们将其更改为右连接,我们会从 v$bh 中获取行,而不管 dba_objects 中是否存在匹配的 object_id。

SELECT o.OBJECT_NAME, COUNT(*) NUMBER_OF_BLOCKS
FROM DBA_OBJECTS o, V$BH bh
WHERE o.DATA_OBJECT_ID(+) = bh.OBJD AND o.DATA_OBJECT_ID IS NULL
GROUP BY o.OBJECT_NAME
ORDER BY COUNT(*);

我的问题是这些行代表什么?它们有 file#、block# 和 objd 列,但 dba_objects 中不存在 objd 值。我转储了其中一个块,它似乎包含一个索引,但我无法说出任何关于它的信息。v$bh 中有很多行匹配 dba_objects 中的索引,因此不匹配的 v$bh 行不能因为它们是索引块而不匹配。一定有别的事情发生。

我的一个系统上有更多不匹配的对象,但它们都有不匹配的对象,包括 11.2.0.2.6 系统。

更新:

对于不匹配对象最多的系统,在将 bh.objd 与 obj$ 中的 dataobj# 字段进行比较时,可以匹配大部分。我不确定为什么这些对象没有反映在 dba_objects 中,但也许对视图的检查(或单独的问题)会回答这个问题。

对于剩余的 391 个未识别条目,这里是一些其他感兴趣的信息。

SELECT class#, count(class#) FROM v$bh bh
WHERE NOT EXISTS (SELECT 1 FROM obj$ o2 WHERE o2.dataobj# = bh.objd)
GROUP BY class#
  4  HAVING count(class#) > 1;

    CLASS# COUNT(CLASS#)
---------- -------------
        12            59
        13            36
        18            15
        20            20
        22            25
        30            12
        32             6
        36            28
        38             3
        42            16
        44           125

    CLASS# COUNT(CLASS#)
---------- -------------
        52             4

12 rows selected.

我只用一个条目消除了类值。其中有33个。

SELECT status, count(status) FROM v$bh bh
WHERE NOT EXISTS (SELECT 1 FROM obj$ o2 WHERE o2.dataobj# = bh.objd)
GROUP BY status;

STATUS  COUNT(STATUS)
------- -------------
xcur              361

1 row selected.
oracle oracle-11g-r2
  • 1 个回答
  • 2050 Views
Martin Hope
Leigh Riffel
Asked: 2012-06-06 12:58:20 +0800 CST

更改 VALIDATE RECOVERY FILES 工作区的位置

  • 4

有没有办法告诉VALIDATE RECOVERY FILES命令使用具有更多可用磁盘空间的不同位置?

当我在 RMAN 中运行该命令时,它失败并出现以下错误堆栈:

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of validate command on ORA_DISK_1 channel at 06/05/2012 12:02:42
ORA-19502: write error on file "/opt/app/oracle/product/11.2.0/dbhome_1/dbs/...
ORA-27072: File I/O error
Additional information: 4
Additional information: 1071488
Additional information: 286720
ORA-19502: write error on file "/opt/app/oracle/product/11.2.0/dbhome_1/dbs/...

这似乎是由于验证正在使用数据库主页作为其工作区,而那里没有足够的磁盘空间。在命令失败并返回空间之前,我实际上可以看到那里的 8GB 可用空间降为零。

在为设备分配通道时,该位置不受格式中设置位置的影响。

DB_RECOVERY_FILE_DEST 设置为“+FRA”,但目前大多数备份位于 /u01/back 而不是 ASM。'+FRA' 确实有一些控制文件备份。

更新:

我还没有找到一种方法来做到这一点,但我也没有找到任何明确的说法,说这是不可能的。有一个Oracle 社区主题对此进行了讨论,但没有解决方案。有趣的是RESTORE ARCHIVELOG ALL VALIDATE并RESTORE VALIDATE DATABASE CHECK LOGICAL没有表现出这种行为,这可能就是为什么更多人没有遇到过它的原因。

更新 2:

我在 Oracle 支持下打开了一个 SR,看看他们是否可以阐明这个问题。

更新 3:

Oracle 支持能够在内部重现此问题,他们将其视为错误。

oracle backup
  • 2 个回答
  • 978 Views
Martin Hope
Leigh Riffel
Asked: 2012-06-01 10:18:20 +0800 CST

EXPDB 参数文件中的注释

  • 8

有没有办法在数据泵导出参数文件中添加注释?

oracle oracle-11g-r2
  • 1 个回答
  • 8837 Views
Martin Hope
Leigh Riffel
Asked: 2012-03-31 12:04:17 +0800 CST

Oracle 关闭方法

  • 9

在进行升级或修补之前关闭数据库可以通过多种方式完成。

shutdown immediate;

或者

shutdown abort;
startup restrict;
shutdown immediate;

或者

shutdown abort;
startup restrict;
shutdown;

或者

alter system checkpoint;
shutdown abort;
startup restrict;
shutdown immediate;

当然还有其他选择。哪个应该是首选,为什么?

oracle oracle-11g-r2
  • 2 个回答
  • 4078 Views
Martin Hope
Leigh Riffel
Asked: 2012-03-30 11:42:06 +0800 CST

使用包含空格、分号和正斜杠的 SQLPlus 执行脚本

  • 16

有时我会得到一个脚本,它可以在 SQL Developer 或 Toad 中正常运行,但需要修改才能从 SQL*Plus 成功运行。这是一个包含多个语句的最坏情况示例,每个语句都带有空行、分号和正斜杠:

INSERT INTO t1 VALUES ('a

;
/
');

INSERT INTO t1 VALUES ('b

;
/
');

DELETE FROM t1 WHERE c1 = 'c

;
/
';

由于各种原因,这些语句需要从 SQL*Plus 运行。空白行很容易用一个简单的...

set sqlblanklines on

我知道sqlterminator可以更改和/或关闭,但两者都需要修改代码,前者移动了问题而不解决它,也没有解决嵌入式斜杠问题。

最好的答案是通过以某种方式更改环境(如 sqlblanklines 所做的那样),允许这些语句在不修改的情况下运行。如果那是不可能的,那么也许有一种方法可以以编程方式修改脚本。我试图避免手动更改。

oracle oracle-11g-r2
  • 4 个回答
  • 67476 Views
Martin Hope
Leigh Riffel
Asked: 2012-03-15 10:41:57 +0800 CST

n 行的乘积

  • 6

根据此数据(假设行数事先未知):

with q1 as (select mod(ora_hash(level),5) c1 from dual connect by level <=4)
select * from q1;
/*
C1
--
 2 
 1 
 4 
 1
*/

我想要所有行中 c1 列的乘积。类似于 SUM(c1) 的结果,我只希望每个值乘以其他值而不是相加。在这种情况下,这将是 2 * 1 * 4 * 1 = 8。

/*
X1
--
 8
*/

数据可以包含负数和零,可以使用以下方法模拟:

with q1 as (select mod(ora_hash(level),5)-1 c1 from dual connect by level <=4)
select * from q1;

或者

with q1 as (select mod(ora_hash(level),5)-3 c1 from dual connect by level <=4)
select * from q1;

我知道这可以通过自定义聚合函数来完成,但我对本机方法很感兴趣。

oracle oracle-11g-r2
  • 2 个回答
  • 315 Views
Martin Hope
Leigh Riffel
Asked: 2012-03-07 13:37:39 +0800 CST

是否应在 SQL 语句中指定日期格式?

  • 8

我看到开发人员使用隐式日期转换的代码。我想要一个明确的答案,说明他们为什么不应该这样做。

SELECT * from dba_objects WHERE Created >= '06-MAR-2012';
oracle sql-injection
  • 2 个回答
  • 2225 Views
Martin Hope
Leigh Riffel
Asked: 2012-02-28 12:44:44 +0800 CST

DBMS_Profiler 的开销

  • 2

如果我使用DBMS_Profiler来分析一个长时间运行(5 小时)的 PL/SQL 脚本,我应该期望脚本运行多长时间进行分析?我意识到这将取决于脚本在做什么,但一般来说我是在看秒、分钟还是更多?

oracle oracle-11g-r2
  • 2 个回答
  • 305 Views
Martin Hope
Leigh Riffel
Asked: 2012-02-23 14:24:55 +0800 CST

表统计影响仅索引查询?

  • 1

我们有一个性能不佳的查询。可以使用仅访问一个索引以从八行中检索一列(索引列)的简单查询来重现问题的根源。

该表没有统计信息,但索引有。在索引上收集新的统计数据并没有改变计划,但在表上收集统计数据却改变了。我的理解是,仅使用索引就可以满足的查询不必访问表,因此我的心智模型是表统计信息在这种情况下无关紧要,但经验似乎表明并非如此。

解释计划和自动跟踪计划都只显示索引访问,但是当表统计信息不存在时,成本和基数会显着增加。自动跟踪显示更高的 CPU、数据库时间和一致获取。我还没有尝试跟踪它,但我可以通过在表中创建/删除统计信息来重现它,如下所示。谁能解释这种行为?

set serveroutput on

DECLARE
 numr NUMBER;
 numb NUMBER;
 avgr NUMBER;
 nrow NUMBER;
 nblk NUMBER;
 numd NUMBER;
 avgl NUMBER;
 avgd NUMBER;
 cfac NUMBER;
 ilvl NUMBER;
 gues NUMBER; 
BEGIN
  --Gather Stats.
  dbms_stats.Gather_table_Stats(USER,'RESULTS');

  --Gather Index Stats.
  dbms_stats.Gather_index_Stats(USER,'I1');

  --Show Index Stats.
  dbms_stats.get_index_stats(USER, 'I1', NULL, NULL, NULL, nrow, nblk
     , numd, avgl, avgd, cfac, ilvl, NULL, gues);
  dbms_output.put_line('Number of rows: ' || TO_CHAR(nrow));
  dbms_output.put_line('Number of blocks: ' || TO_CHAR(nblk));
  dbms_output.put_line('Distinct keys: ' || TO_CHAR(numd));
  dbms_output.put_line('Avg leaf blocks/key: ' || TO_CHAR(avgl));
  dbms_output.put_line('Avg data blocks/key: ' || TO_CHAR(avgd));
  dbms_output.put_line('Clustering factor: ' || TO_CHAR(cfac));
  dbms_output.put_line('Index level: ' || TO_CHAR(ilvl));
  dbms_output.put_line('IOT guess quality: ' || TO_CHAR(gues));

  delete from plan_table;
END;
/

EXPLAIN PLAN FOR SELECT rsample_id FROM results 
   WHERE rsample_id = '0555103360';
SELECT cost, substr(lpad(' ', level-1) || operation || ' (' || options 
   || ')',1,50 ) "Operation", object_name "Object"
FROM plan_table START WITH ID = 0 CONNECT BY PRIOR id=parent_id;



DECLARE
 nrow NUMBER;
 nblk NUMBER;
 numd NUMBER;
 avgl NUMBER;
 avgd NUMBER;
 cfac NUMBER;
 ilvl NUMBER;
 gues NUMBER; 
BEGIN
  --Delete Stats.
  dbms_stats.delete_table_stats(USER,'RESULTS');

  --Gather Index Stats.
  dbms_stats.Gather_index_Stats('LRIFFEL','I1');

  --Show Index Stats.
  dbms_stats.get_index_stats(USER, 'I1', NULL, NULL, NULL, nrow, nblk
     , numd, avgl, avgd, cfac, ilvl, NULL, gues);
  dbms_output.put_line('Number of rows: ' || TO_CHAR(nrow));
  dbms_output.put_line('Number of blocks: ' || TO_CHAR(nblk));
  dbms_output.put_line('Distinct keys: ' || TO_CHAR(numd));
  dbms_output.put_line('Avg leaf blocks/key: ' || TO_CHAR(avgl));
  dbms_output.put_line('Avg data blocks/key: ' || TO_CHAR(avgd));
  dbms_output.put_line('Clustering factor: ' || TO_CHAR(cfac));
  dbms_output.put_line('Index level: ' || TO_CHAR(ilvl));
  dbms_output.put_line('IOT guess quality: ' || TO_CHAR(gues));
  delete from plan_table;
END;
/

EXPLAIN PLAN FOR SELECT rsample_id FROM results 
   WHERE rsample_id = '0555103360';
SELECT cost, substr(lpad(' ', level-1) || operation || ' (' || options 
   || ')',1,50 ) "Operation", object_name "Object"
FROM plan_table START WITH ID = 0 CONNECT BY PRIOR id=parent_id;

这有以下输出(修改以适合):

anonymous block completed
Number of rows: 125226611
Number of blocks: 381090
Distinct keys: 5778886
Avg leaf blocks/key: 1
Avg data blocks/key: 3
Clustering factor: 19792294
Index level: 3
IOT guess quality: 

plan FOR succeeded.
COST  Operation             Object                       
----- --------------------- ------
    4 SELECT STATEMENT()   
    4 INDEX (RANGE SCAN)    I1

anonymous block completed
Number of rows: 119034073
Number of blocks: 362402
Distinct keys: 5353024
Avg leaf blocks/key: 1
Avg data blocks/key: 3
Clustering factor: 18852918
Index level: 3
IOT guess quality: 

plan FOR succeeded.
COST  Operation             Object                       
----- --------------------- ------
    9 SELECT STATEMENT()   
    9 INDEX (RANGE SCAN)    I1

创建这个之后,我注意到每次运行的索引统计信息都是不同的,即使表中没有任何更改并且索引统计信息在每次运行时重新收集。我现在的理论是,在使用级联选项收集表统计信息时,即使重新收集索引统计信息,也会保留索引统计信息中的某些内容。

Granularity 设置为 AUTO,Cascade 设置为 AUTO_CASCADE。

oracle oracle-11g-r2
  • 1 个回答
  • 504 Views
Martin Hope
Leigh Riffel
Asked: 2012-01-26 11:48:55 +0800 CST

Oracle Enterprise Manager 作业初始化失败

  • 3

我们 RAC 系统上的企业管理器作业最近开始间歇性地初始化失败并出现以下错误:

评估参数源/安全检查/锁定时出错 ORA-06508: PL/SQL: 找不到被调用的程序单元

我们尝试过反弹 DBConsole,从库中重新提交作业,甚至重新编译被引用的包。这发生在多个作业中,每十个计划成功执行一次。关于可以尝试或检查什么的任何想法?

更新:我已经用 Oracle 开了一个 SR。

oracle oracle-rac
  • 1 个回答
  • 1538 Views
Martin Hope
Leigh Riffel
Asked: 2011-12-08 08:46:42 +0800 CST

Oracle Configuration Manager 是否符合 HIPAA 标准?

  • 6

根据 Oracle 的说法, Oracle 的Configuration Manager提供了“40% 更快的问题解决”,是否违反HIPAA或需要特定配置才能遵守?

这个问题涉及包含受保护医疗保健信息 (PHI) 的数据库。问题范围仅涵盖 OCM 而不是更广泛的 Oracle 支持访问数据库的范围。

以下来自 Oracle的内容描述了 OCM 收集的内容:

Oracle Configuration Manager 可以自动收集 Oracle 产品安装的配置信息,并将这些信息上传到 Oracle 的支持系统。Oracle Configuration Manager 收集的配置信息包括:
• 安装的补丁
• 部署平台、日期、版本和类型
• 部署的组件和应用程序
• 配置文件的内容
• 关于网络配置的信息

请注意,Oracle Configuration Manager 收集的信息仅限于配置信息。该实用程序不收集敏感数据,例如实际客户数据(即配置信息以外的任何数据,包括实际应用程序或数据库事务)、密码哈希值、登录事件等。My Oracle Support 说明728985.1提供了所有的列表Oracle Configuration Manager 收集的数据。

根据hss.gov,以下信息受 HIPAA 保护:

隐私规则保护涵盖实体或其业务伙伴以任何形式或媒体(无论是电子的、纸质的还是口头的)持有或传输的所有“可识别个人身份的健康信息”。隐私规则称此信息为“受保护的健康信息 (PHI)”。 12

“可识别个人身份的健康信息”是指与以下相关的信息,包括人口统计数据:

• 个人过去、现在或未来的身体或心理健康或状况,
• 向个人提供的医疗保健,或
• 过去、现在或将来为向个人提供医疗保健而支付的费用,

并且可以识别个人身份或有合理依据相信它可以用来识别个人身份的信息。13 可识别个人身份的健康信息包括许多常见的标识符(例如,姓名、地址、出生日期、社会安全号码)。

oracle vendor-support
  • 1 个回答
  • 244 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve