Monthly Archives: April 2012

隐含参数_DISABLE_LOGGING导致数据库的损坏

Oracle不推荐修改隐含参数,尤其是对于你不了解的隐含参数,修改的后果可能很严重。 比如如果设置了_DISABLE_LOGGING参数为TRUE: _disable_logging = TRUE_disable_logging = true 那么启动数据库后进行任何的操作,在关闭数据库后,就会发现数据库出现了损坏: SQL> ALTER system checkpoint; System altered. SQL> shutdown abort ORACLE instance shut down. SQL> startup ORACLE instance started. Total System Global Area 6.2268E+10 bytes Fixed SIZE 2243512 bytes Variable SIZE 4160750664 bytes … Continue reading

Posted in ORACLE | Tagged , , , , , | Leave a comment

调高SCN的方法

有的时候出于恢复或其他目的的需要,需要将现有的SCN提升。 在10g以前,一般使用event的方式: SQL> ALTER SESSION SET events ‘10015 trace name adjust_scn level 1’; SESSION altered.SQL> alter session set events ‘10015 trace name adjust_scn level 1’; Session altered. 在MOUNT状态下运行上面的SQL,可以根据调整SCN的需要设置不同的LEVEL。此外还存在类似的方法: ALTER system SET events ‘immediate trace name adjust_scn level 10;alter system set … Continue reading

Posted in NEWS | Tagged , , , | Leave a comment

opatch命令报错Inventory is corrupted

测试环境中执行opatch报错,简单描述一下解决过程。 错误信息如下: [orat3@hpserver2 OPatch]$ ./opatch lsinventory Invoking OPatch 10.2.0.5.1 Oracle Interim Patch Installer version 10.2.0.5.1 Copyright (c) 2010, Oracle Corporation. ALL rights reserved. Oracle Home : /t3/orat3/product/10.2.0/db_4.10 Central Inventory : /u01/app/oracle/oraInventory FROM : /etc/oraInst.loc OPatch version : 10.2.0.5.1 OUI version … Continue reading

Posted in ORACLE | Tagged , , , , , , , , | Leave a comment

通过数据库链指定AS OF SCN语句

一直不确定闪回查询的AS OF语句是否可以通过数据库链对远端数据库生效,而由于通过数据库链查询会使两个数据库的SCN同步,使得这个问题难以测试。 通过数据库链查询会导致源和目标库SCN同步:https://yangtingkun.net/?p=722 虽然Oracle会在通过数据库链执行查询或DML操作时同步数据库的SCN,但是指定的SCN是本地的还是远端的还是有意义的。 为了说明这种情况,创建一个JOB,定期进行数据的修改,以快速提高一个数据库的SCN: SQL> SELECT dbid, name FROM v$database; DBID NAME ———- ——— 452011237 ORAT2 SQL> SELECT COUNT(*) FROM t; COUNT(*) ———- 731791 SQL> BEGIN 2 FOR i IN 1..100000 loop 3 INSERT INTO t VALUES (i, ‘y’); … Continue reading

Posted in ORACLE | Tagged , | Leave a comment

通过数据库链查询会导致源和目标库SCN同步

在通过数据库链执行跨数据库的查询时,Oracle会自动将两个数据库的SCN进行同步。 以前Eygle提到过这个问题,这次在讨论一个和远端数据库SCN有关的问题时,又碰到了这个问题,于是简单记录一下。 SQL> conn test/test@192.168.0.19:1666/ora102044 Connected. SQL> SELECT current_scn FROM v$database; CURRENT_SCN ———– 2745758 SQL> conn test/test@192.168.0.20:15210/orcl Connected. SQL> SELECT current_scn FROM v$database; CURRENT_SCN ———– 5642527 SQL> CREATE DATABASE link ora102044 2 CONNECT TO test 3 IDENTIFIED BY test 4 … Continue reading

Posted in ORACLE | Tagged , , | 1 Comment

ORA-600(kcratr_scan_lastbwr)错误

客户的测试环境中出现这个错误。 信息如下: 2012-03-22 11:10:24.991000 +08:00 Beginning crash recovery OF 1 threads parallel recovery started WITH 15 processes Started redo scan Hex dump OF (file 2, block 130960) IN trace file /oracle11r2/app/diag/rdbms/orcl/orcl/trace/orcl_ora_8087.trc Reading datafile ‘/oradata/orcl/sysaux01.dbf’ FOR corruption at rdba: 0x0081ff90 (file … Continue reading

Posted in BUG | Tagged , , , , | Leave a comment

RMAN-600(8201)错误的重现

前两天,客户的数据库在执行CATALOG方式的备份时出现了RMAN-600(8201)错误。由于比较了解客户的环境,在加上客户本身对于系统的了解,使得成功的模拟出这个错误。 RMAN-600(8201)错误:https://yangtingkun.net/?p=690 其实重现这个错误并不算太复杂,要求数据库的版本是10.2.0.3以下。 首先搭建一套DATA GUARD环境。然后在备库启用数据库的FLASHBACK功能,创建一个恢复点,然后将备库激活打开。备库打开后就可以关闭,然后重新MOUNT数据库,并利用FLASHBACK将数据库回滚到激活之前的恢复点,然后利用ALTER DATABASE CONVERT命令再次将这个数据库转化为物理备库,DATA GUARD环境恢复后,使备库应用日志一直到和主库保持一致,然后进行一次DATA GUARD的SWITCHOVER的操作,使得备库变成主库,主库变成备库。 这时,对新的主库创建CATALOG,执行REGISTER DATABASE后,执行show all命令,就会重新错误。 [orat1@hpserver2 ~]$ rman target / catalog rcat_user/rcat_password Recovery Manager: Release 10.2.0.3.0 – Production ON Sat Apr 4 20:51:56 2012 Copyright (c) 1982, 2005, Oracle. ALL rights reserved. connected … Continue reading

Posted in BUG | Tagged , , , , , , , , , , , , | Leave a comment

客户数据库出现大量cache buffer chains latch

客户产品数据库上午出现了严重的性能问题,简单记录一下问题的诊断和解决过程。 可以看到,数据库的DB TIME已经涨到了非常高的地步,这说明系统正经受着非常严重的性能问题: Snap Id Snap Time Sessions Cursors/Session Begin Snap: 7170 31-3月 -12 08:00:50 395 10.5 End Snap: 7172 31-3月 -12 09:00:27 689 11.7 Elapsed: 59.61 (mins) DB Time: 17,270.93 (mins)   从TOP 5看,等待事件中最明显的是latch: cache buffers chains,从当前系统的状态也可以看到这一点: SQL> SELECT … Continue reading

Posted in ORACLE | Tagged , , , | Leave a comment

标签安全管理员手册

Oracle的LABEL安全选件从9i就有,不过一直没有研究过。 当时对于这个LABEL SECURITY的最早印象就是,这是9i中为数不多的安装后V$OPTION视图中显示没有启用的选件之一,印象毕竟深的除了RAC就是这个标签安全了。而到了10g中这个标签安全依然是默认没有启用的选件。 记得当时Kamus研究过这个功能,当时凑热闹了解了一下,这种了解都是流于表面,而且这么长时间早就忘光了。 最近对安全方面毕竟关注,因此这些平时不太常用的功能也开始逐渐的挨个往起捡了。 在线文档地址:http://www.oracle.com/pls/db112/to_toc?pathname=network.112%2Fe10745%2Ftoc.htm&remark=portal+%28Books%29

Posted in BOOKS | Leave a comment

将指定SQL的执行计划从共享池删除

如果Oracle的优化器产生了某种错误的执行计划,或者我们希望Oracle对于某个SQL重新进行分析,那么就需要这个SQL的执行计划在共享池中过期,而简单的方法在10.2.0.4以后才出现。 对于以前的版本而言,最显而易见的方法莫过于直接刷新共享池,但是如果是数据库中绝大部分的SQL都存在问题,那么这种方法无可厚非,也可能是见效最快的方法,而如果数据库中仅仅是个别的SQL存在问题,那么这种方法就过于暴力了。 SQL> SELECT COUNT(*) FROM dual; COUNT(*) ———- 1 SQL> SELECT sql_id, address, hash_value, executions, loads, parse_calls, invalidations 2 FROM v$sqlarea 3 WHERE sql_text = ‘select count(*) from dual’; SQL_ID ADDRESS HASH_VALUE EXECUTIONS LOADS PARSE_CALLS INVALIDATIONS ————- —————- ———- … Continue reading

Posted in ORACLE | Tagged , , , , , | 2 Comments