小编rfu*_*sca的帖子

如何确保只有一个过程副本在 Oracle 中运行?

我们需要确保只有一个特定过程的副本在 Oracle 中运行。如果它已经在运行并且用户试图打开另一个,那么它应该会出错。

这样做的最佳方法是什么?

oracle oracle-11g-r2 plsql locking

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

如何查看其他会话的活动 NLS 设置?

我有另一个会话,我怀疑它没有在 Oracle 11gR2 中使用“正确”的 NLS 设置运行。我可以查询什么来显示不同活动会话的 NLS 设置 - 所有 NLS_* 视图都引用了我的当前会话。

oracle oracle-11g-r2

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

基数与现实相去甚远

我有一张表,其中计划的基数似乎太高了——尽管更新了统计数据,甚至尝试了 Oracle 11gR2 的动态采样。

select count(*) 
from table1 
where col1 = 123 
and col2 = '1';
Run Code Online (Sandbox Code Playgroud)

col1 的一个值的估计基数大约为 29k,当它返回的实际行数为 637 时。对于另一个值,当实际行数为 67k 时,它的计划基数为 460k。一般来说,这会导致它选择非常糟糕的计划。

我试过更新统计信息:

exec DBMS_STATS.gather_table_stats (ownname => 'ME', tabname =>'table1');
Run Code Online (Sandbox Code Playgroud)

或者

exec DBMS_STATS.gather_table_stats (ownname => 'ME', tabname =>'table1',estimate_percent =>100);
Run Code Online (Sandbox Code Playgroud)

我已经尝试了 dynamic_samping (1-10) 的各种值,但没有任何改变它显着:

select /*+ dynamic_sampling(t1 10) */ count(*) 
from table1 t1 
where col1 = 123 
and col2 = '1';
Run Code Online (Sandbox Code Playgroud)

dyanmic_sampling 会改变,但它仍然关闭近 50-100 倍。

我怎样才能得到更好的估计?

oracle oracle-11g-r2

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

更改非相关子查询的访问方法

甲骨文 11g R2

不幸的是,我们的应用程序具有每行安全“功能”。我们有一个看起来像这样的查询:

坏,慢:

SELECT someRow, someOtherRow
FROM bigTableA a
WHERE EXISTS (
  SELECT 0 FROM bigTableA_securitymapping b 
  WHERE b.PrimaryKeyTableA = a.PrimaryKeyTableA AND
       b.accesscode in (SELECT accesscode 
                              FROM accesscodeView 
                              WHERE user = :someUserID)
)
Run Code Online (Sandbox Code Playgroud)

上有一个唯一索引bigTableA_securitymapping(PrimaryKeyTableA,accesscode)

accesscodeView有可能返回多个accesscode给定用户,所以它必须是IN()=

问题是此查询忽略了唯一索引bigTableA_securitymapping并选择执行全表扫描。

如果我将 the 更改IN()为 an=那么它会UNIQUE SCAN在唯一索引上执行 abigTableA_securitymapping并且大约快 50 倍。

好,快但不可能:

SELECT someRow, someOtherRow
    FROM bigTableA a
    WHERE EXISTS (
      SELECT 0 FROM bigTableA_securitymapping …
Run Code Online (Sandbox Code Playgroud)

oracle subquery

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

log_file_sync 等待突然增加

我使用的是带有 2 节点 RAC 系统的 Oracle 11gR2。它与 EMC Clariion 共享光纤存储。

上周五事情变得很糟糕......快。多年来正常运行的所有突然过程变得非常非常缓慢。我注意到 log_file_sync 等待突然增加,并且 LGWR 进程被列为多个进程的阻止程序。我们所知道的那个星期五没有任何变化。此外,它似乎只是在一个节点上。

Statspack 报告确认 log_file_sync 等待时间从大约 1 毫秒变为 47 毫秒!另外 statspack 显示了这一点 - 这意味着其中一些正在等待很多:

                           Total ----------------- % of Waits ------------------
Event                      Waits  <1ms  <2ms  <4ms  <8ms <16ms <32ms  <=1s   >1s
-------------------------- ----- ----- ----- ----- ----- ----- ----- ----- -----
log file sync               100K    .0    .3   1.7   9.0  25.4  31.0  32.4    .1
Run Code Online (Sandbox Code Playgroud)

而在此之前:

                           Total ----------------- % of Waits ------------------
Event                      Waits  <1ms  <2ms  <4ms  <8ms <16ms <32ms …
Run Code Online (Sandbox Code Playgroud)

performance oracle oracle-11g-r2

6
推荐指数
1
解决办法
739
查看次数

尝试使用 impdp 复制架构

我正在尝试使用 oracle 的 IMPDP 工具完整地复制 SCHEMA。我已经设置了一个指向自身的数据库链接,并且该链接工作正常。然后我运行这个:

impdp username/password@instancename schemas=TARGET_SCHEMA 
      network_link=LINK_BACK_TO_TARGET 
      directory=HOME_DIR logfile=IMPDP_COPY_BACKUP.log 
      remap_schema=TARGET_SCHEMA:SOURCE_SCHEMA 
      TRANSFORM=STORAGE:n:table;
Run Code Online (Sandbox Code Playgroud)

在我的两个测试系统中一切正常,但在 Oracle 11gR2 生产中,它开始移动表并产生以下结果:

Processing object type SCHEMA_EXPORT/TABLE/TABLE
ORA-39126: Worker unexpected fatal error in 
    KUPW$WORKER.UPDATE_TD_BASE_PO_INFO [UPDATE 
    "ADMIN"."SYS_IMPORT_SCHEMA_04" mtu SET 
    mtu.base_process_order = NVL((SELECT mts1.process_order 
    FROM "ADMIN"."SYS_IMPORT_SCHEMA_04" mts1 WHERE 
    mts1.process_order > 0 AND mts1.duplicate = 0 
    AND mts1.object_schema = mtu.base_object_schema 
    AND mts1.object_name = mtu.base_object_name AND 
    mts1.object_type = mtu.base_object_type AND 
    mts1.processing_state != :1 ), 
    (-1000 - (SELECT MIN(mts2.process_order) FROM 
    "ADMIN"."SYS_IMPORT_SCHEMA_04" mts2 WHERE 
    mts2.process_order > 0 AND mts2.duplicate = 0 …
Run Code Online (Sandbox Code Playgroud)

oracle oracle-11g-r2 impdp

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

将额外的磁盘添加到 ASM 中的 FRA 磁盘组

我们正在运行带有两节点 RAC 的 Oracle 11.2.0.3,而我们的 FRA 磁盘组空间不足。我需要通过 ASM 为其分配更多磁盘。我不知道该怎么做。我可以登录到一个节点并访问 asmcmd 或其他 asm 命令行实用程序。我需要做什么?

编辑:直到菲尔的回答才知道它是相关的:我们正在使用原始磁盘设备。

oracle oracle-11g-r2 oracle-asm

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

修复后的 DBCC CHECKDB 是否必须重新扫描?

我运行了一个DBCC CHECKDB,它发现了分配错误。当我运行它时REPAIR_ALLOW_DATA_LOSS- 它是否需要花费相同的时间来扫描错误,还是会尝试使用CHECKDB我最后一次运行并运行得更快?

(SQL Server 2000。是的,它很古老,不,我无法升级。)

sql-server sql-server-2000 dbcc-checkdb

4
推荐指数
2
解决办法
292
查看次数