Category Archives: ORACLE

所有Oracle技术文章

ORACLE_HOME迁移后需要设置LD_LIBRARY_PATH环境变量

在10g以后,一般情况下环境变量中没有必要设置LD_LIBRARY_PATH,但是一旦将ORACLE_HOME迁移到其他目录,则环境变量中还需要添加这个变量。 Linux和Unix支持TAR方式迁移ORACLE_HOME,如果有需要将ORACLE_HOME放到其他路径下,那么一般都会使用tar的方式将整个路径拷贝到目标目录。 但是迁移后,如果直接尝试sqlplus启动,可能报错: [orat3@hpserver2 ~]$ sqlplus / AS sysdba sqlplus: error while loading shared libraries: libsqlplus.so: cannot OPEN shared object file: No such file OR directory[orat3@hpserver2 ~]$ sqlplus / as sysdba sqlplus: error while loading shared libraries: libsqlplus.so: cannot open … Continue reading

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

ORA-600(19004)错误

客户数据库出现ORA-600(19004)错误。 错误信息如下: ORA-00600: internal error code, arguments: [19004], [], [], [], [], [], [], []ORA-00600: internal error code, arguments: [19004], [], [], [], [], [], [], [] 对应的详细TRACE为: *** 2012-03-15 13:10:31.283 ksedmp: internal OR fatal error ORA-00600: internal error code, … Continue reading

Posted in BUG | Tagged , , | Leave a comment

ORA-600(kzdugt)错误

创建用户时产生ORA-600(kzdugt)错误。 错误信息为: Mon Mar 12 12:06:58 CST 2012 Errors IN file /u01/app/oracle/admin/orcl10g/udump/orcl10g_ora_22193.trc: ORA-00600: internal error code, arguments: [kzdugt], [], [], [], [], [], [], []Mon Mar 12 12:06:58 CST 2012 Errors in file /u01/app/oracle/admin/orcl10g/udump/orcl10g_ora_22193.trc: ORA-00600: internal error code, arguments: [kzdugt], … Continue reading

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

分配LOB空间失败导致ORA-600(kddummy_blkchk)错误

测试环境发现一个ORA-600错误,简单重现了一下。 错误信息如下: Fri Mar 2 23:28:49 2012 Corrupt Block Found TSN = 4, TSNAME = USERS RFN = 4, BLK = 395, RDBA = 16777611 OBJN = 0, OBJD = 53647, OBJECT = /6ee738c_AccessorUtilities, SUBOBJECT = SEGMENT OWNER = PUBLIC, … Continue reading

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

删除表空间报错ORA-600(ktssdrp1)错误

测试环境的新建表空间在删除时报错。 数据库创建一个新的表空间后执行删除,出现了ORA-600的错误信息: SQL> SELECT tablespace_name FROM dba_tablespaces; TABLESPACE_NAME —————————— SYSTEM UNDOTBS SYSAUX TEMP TBS_1 GGX USERS PERFSTAT STATSPACK ALA_TEST 10 ROWS selected. SQL> DROP tablespace ala_test including contents AND datafiles; DROP tablespace ala_test including contents AND datafiles * ERROR at … Continue reading

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

数据泵造成的数据损失

客户尝试导入一个分区表的个别几个分区,结果却损失了整个分区表的数据。 下面通过一个例子来在线这个问题: SQL> CREATE TABLE T_PART PARTITION BY RANGE (CREATED) 2 (PARTITION P1 VALUES LESS THAN (TO_DATE(‘2012-1-1’, ‘YYYY-MM-DD’)), 3 PARTITION P2 VALUES LESS THAN (TO_DATE(‘2012-2-1’, ‘YYYY-MM-DD’)), 4 PARTITION P3 VALUES LESS THAN (TO_DATE(‘2012-3-1’, ‘YYYY-MM-DD’)), 5 PARTITION P4 VALUES LESS THAN … Continue reading

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

利用SCHEDULER调用shell脚本

10g的SCHEDULER的一个重要的功能是可以调用操作系统命令或SHELL脚本。而在10g以前,这个功能只能通过外部存储过程来实现。 下面是一个简单的例子,首先编辑一个test.sh脚本: #!/usr/bin/ksh echo abc >> /home/xxx/a.txt#!/usr/bin/ksh echo abc >> /home/xxx/a.txt 注意,#!/usr/bin/ksh是必须的,否则JOB运行会出现ORA-27369错误。 给这个shell设置执行权限: $ chmod 744 test.sh$ chmod 744 test.sh 下面就可以在数据库中建立PROGRAM: SQL> BEGIN 2 DBMS_SCHEDULER.CREATE_JOB( 3 JOB_NAME => ‘J_TEST’, 4 JOB_TYPE => ‘EXECUTABLE’, 5 JOB_ACTION => ‘/home/xxx/test.sh’, 6 ENABLED => … Continue reading

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

分区表相关视图没有过滤删除表

一直认为,表被删除后,普通的视图中是查询不到表信息的,只有从RECYCLBIN相关视图才能看到被删除的表,没想到最近发现分区表的相关视图中仍然保留被删除表的信息。 看一个简单的例子: SQL> CREATE TABLE T_PART (ID NUMBER, NAME VARCHAR2(30)) 2 PARTITION BY HASH (ID) 3 PARTITIONS 4; 表已创建。 SQL> SELECT TABLE_NAME, PARTITIONING_TYPE, PARTITION_COUNT, STATUS 2 FROM USER_PART_TABLES; TABLE_NAME PARTITION PARTITION_COUNT STATUS —————————— ——— ————— ——– T_PART HASH 4 VALID … Continue reading

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

调用者存储过程访问权限问题

一直认为调用者权限过程所参考的对象是调用者用户下的对象,所依赖的权限也是调用者拥有的权限,但是现在发现事实并非完全如此。 事实上这个观点对于表、视图是正确的,调用者权限存储过程访问的表和视图是调用者当前用户下的,且权限都来自调用者本身。 但是对于存储过程,却是个例外,调用者权限存储过程中调用的OWNER用户下的存储过程,对于调用者而言,即使没有权限也是可以访问的。 描述有点抽象,看一个简单的例子: SQL> CONN SYSTEM/MANAGER 已连接。 SQL> CREATE USER U1 IDENTIFIED BY U1 DEFAULT TABLESPACE USERS; 用户已创建。 SQL> GRANT CREATE SESSION TO U1; 授权成功。 SQL> CONN TEST/TEST 已连接。 SQL> CREATE OR REPLACE PROCEDURE P_1 AUTHID CURRENT_USER AS 2 … Continue reading

Posted in ORACLE | Tagged , , | Leave a comment

中止进程导致系统HANG住

以前在11g上碰到过一次类似的情况,由于ALTER SYSTEM KILL SESSION导致资源被完全占用,在一段时间内数据库处于HANG住状态。这次又碰到类似的问题。 简单描述一下问题产生的环境,用户在进行测试,在很短的时间内连续启动了多个应用服务器,导致大量的并发进程同时连接到数据库中,致使数据库服务器CPU利用率一下冲到100%。 由于数据库的这种状态,用户决定中止一些进程来释放服务器上的资源。但是通过kill -9和alter system kill session杀掉大量的会话后,数据库服务器反而处于HANG死状态,这时连sqlplus / as sysdba都无非正常登录。 于是用户继续通过kill -9清除所有非本地连接,到最后所有连接到数据库的非本地连接已经完全被杀掉,而服务器上的CPU资源已经下降,只有Oracle的PMON进程占用了单CPU的50%左右,其他CPU完全空闲。可是此时数据库仍然无非正常登录。 此时只能通过sqlplus –prelim “/ as sysdba”方式登录,然后利用oradebug执行systemstate的dump,查看导致数据库HANG死的原因。 检查SYSTEMSTATE的DUMP文件,发现PMON进程和大量的DEAD进程都在经历library cache: mutex X等待事件。而整个DUMP文件中library cache: mutex X等待事件出现了3000多次。这个等待事件是不正常的。 查询MOS发现果然是bug:Bug 9312879 “library cache: mutex x” waits after killing sessions / PMON slow … Continue reading

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