小编Nul*_*ion的帖子

为什么 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 RAC 故障转移无法正常工作

我在具有两个节点的 RAC 环境中设置了 Oracle 11gR2。我设置了 SCAN,例如:我在 DNS 设置上有两个条目,因此我可以 ping SCAN 名称并到达任一节点。我也可以 ping 两个-vip地址。

理论上,新的 SCAN 功能应该提供比透明应用程序故障转移 (TAF) 更好的功能,TAF 需要在每个客户端中进行额外配置。使用 SCAN,我可以连接到 SCAN 地址,我应该能够:

  1. 连接到数据库并检查我连接到哪个实例,例如(在 SQL*Plus 上):

    select instance_name, host_name from v$instance;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 关闭我连接到的实例shutdown abort(在单独的会话中)

  3. 在我执行步骤 1 的同一个会话中,如果我重新运行相同的select语句,它应该会自动跳到幸存的节点。

相反,我得到:

ORA-03113: end-of-file on communication channel
Process ID: XXXXX
Session ID: YYY Serial number: ZZ
Run Code Online (Sandbox Code Playgroud)

这是怎么回事?

注意:在第 2 步之后,我可以退出 SQL*Plus 并重新连接就好了。如果我试图留在同一个会话中,它就行不通。


如果我将客户端中的 tnsnames.ora 修改为:

RAC =
  (DESCRIPTION =
    (LOAD_BALANCE = YES)
    (ADDRESS = (PROTOCOL = TCP)(HOST = cluster-scan)(PORT = …
Run Code Online (Sandbox Code Playgroud)

oracle oracle-11g-r2 rac

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

视图消耗的表空间

我在一堂 SQL 课上,讲师说“DBA 不喜欢用户创建视图,因为他们会破坏表空间”。

显然,我知道任何模式对象都会消耗一些表空间,但是说视图会占用表空间并不是夸大其词,因为您需要存储的只是一个查询(以及权限和一些其他元数据),并且因此,它们不会比普通表中的普通行占用更多的空间?

oracle view tablespaces

3
推荐指数
1
解决办法
796
查看次数

标签 统计

oracle ×3

index ×1

oracle-10g ×1

oracle-11g-r2 ×1

rac ×1

tablespaces ×1

view ×1