- 浏览: 1020154 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (529)
- 服务器 (8)
- jsp (1)
- java (6)
- AIX (1)
- solaris (3)
- linux学习 (53)
- javaScript (2)
- hibernate (1)
- 数据库 (74)
- sql语句 (8)
- oracle 学习 (75)
- oracle 案例 (42)
- oracle 管理 (42)
- Oracle RAC (27)
- oracle data guard (12)
- oracle 参数讲解 (14)
- Oracle 字符集 (8)
- oracle性能调优 (24)
- oracle备份与恢复 (12)
- oracle Tablespace (9)
- oracle性能诊断艺术 (1)
- oracle 11g学习 (5)
- oracle streams (1)
- oracle upgrade and downgrade (4)
- db2学习 (13)
- db2命令学习 (2)
- mysql (28)
- sql server (30)
- sql server 2008 (0)
- 工具 (10)
- 操作系统 (3)
- c++ (1)
- stock (1)
- 生活 (5)
- HADOOP (2)
最新评论
-
massjcy:
...
如何将ubuntu文件夹中文名改为英文 -
skypiea:
谢谢。。。
终于解决了。。。
Oracle 10.2.0.4(5)EM不能启动的解决方案(Patch 8350262) -
qwe_rt:
引用vi /etc/sysconfig/network 请问 ...
Linux操作系统下配置静态IP上网 -
liuqiang:
sudo killall -9 apache2
ps 和 kill 命令详解 -
dazuiba:
引用*绝杀 kill -9 PID 当使用此命令时,一定要通过 ...
ps 和 kill 命令详解
ORA-01502 state unusable错误成因和解决方法(一) 接到开发人员和业务人员的通知,说一个登陆页面不能用了,报错:
2005-01-31 13:59:02,721 [com.aspire.common.dao.OamUserDAO]- -214:select错误
java.sql.SQLException: ORA-01502 state
这个错误是由于索引失效造成的,重建索引后,问题就解决了。
为了搞清楚索引为什么会失效,以及如何解决,我们做个测试:
首先我们创建一个普通的测试表(非分区表):
SQL> create table t(a number);
Table created.
SQL> select tablespace_name from user_segments where segment_name='T';
TABLESPACE_NAME
------------------------------
DATA_DYNAMIC
SQL>
然后,我们创建一个普通索引
SQL> create index idxt on t(a);
Index created.
SQL> insert into t values(10);
1 row created.
SQL> set linesize 200
SQL> select index_name,index_type,tablespace_name,table_type,status from user_indexes where index_name='IDXT';
INDEX_NAME INDEX_TYPE TABLESPACE_NAME TABLE_TYPE STATUS
------------------------------ --------------------------- ------------------------------ ----------- --------
IDXT NORMAL DATA_DYNAMIC TABLE VALID
SQL>
模拟索引是失效的情况:
SQL> alter table t move tablespace tools
2 /
Table altered.
SQL> select index_name,index_type,tablespace_name,table_type,status from user_indexes where index_name='IDXT';
INDEX_NAME INDEX_TYPE TABLESPACE_NAME TABLE_TYPE STATUS
------------------------------ --------------------------- ------------------------------ ----------- --------
IDXT NORMAL DATA_DYNAMIC TABLE UNUSABLE
SQL>
我们看到,当使用类似 alter table xxxxxx move tablespace xxxxxxx 命令后,索引就会失效。
当然,作为测试,也可以直接使用alter index idxt unusable;命令使索引失效,例如:
SQL> alter index idxt unusable;
Index altered.
SQL>
在这种情况下,我们向表中插入数据看看是什么情况:
SQL> insert into t values(11);
insert into t values(11)
*
ERROR at line 1:
ORA-01502: index 'MISC.IDXT' or partition of such index is in unusable state
SQL>
我们看到,这时就出现了常见的“ORA-01502: index 'XXXXXXXX' or partition of such index is in unusable state”错误。
检查一下索引状态,我们会注意到索引已经是“UNUSABLE”了。
SQL> select index_name,index_type,tablespace_name,table_type,status from user_indexes where index_name='IDXT';
INDEX_NAME INDEX_TYPE TABLESPACE_NAME TABLE_TYPE STATUS
------------------------------ --------------------------- ------------------------------ ----------- --------
IDXT NORMAL DATA_DYNAMIC TABLE UNUSABLE
SQL>
对于普通表中的不同索引(非唯一索引),我们有两种方法解决这个问题。
方法一:设置 skip_unusable_indexes=true;
SQL> alter session set skip_unusable_indexes=true;
Session altered.
SQL> insert into t values(11);
1 row created.
SQL> commit;
Commit complete.
SQL> select * from t;
A
----------
1
2
3
4
5
10
11
7 rows selected.
SQL> select index_name,index_type,tablespace_name,table_type,status from user_indexes where index_name='IDXT';
INDEX_NAME INDEX_TYPE TABLESPACE_NAME TABLE_TYPE STATUS
------------------------------ --------------------------- ------------------------------ ----------- --------
IDXT NORMAL DATA_DYNAMIC TABLE UNUSABLE
SQL>
现在我们看到,这个索引的状态虽然还是“UNUSABLE”但是,通过设置“alter session set skip_unusable_indexes=true;”,
我们已经可以访问这个表了,但是请注意,这种情况下,这个索引是不可用的,也就是说优化器在考虑是否要使用索引时是不考虑这个所以的。
方法2:通过常见所以彻底解决这个问题
首先,先设置 “skip_unusable_indexes=false”,也就是不跳过失效索引
SQL> alter session set skip_unusable_indexes=false;
Session altered.
SQL>
然后重建这个失效的索引
SQL> alter index idxt rebuild;
Index altered.
SQL> select index_name,index_type,tablespace_name,table_type,status from user_indexes where index_name='IDXT';
INDEX_NAME INDEX_TYPE TABLESPACE_NAME TABLE_TYPE STATUS
------------------------------ --------------------------- ------------------------------ ----------- --------
IDXT NORMAL DATA_DYNAMIC TABLE VALID
SQL>
我们看到重建索引后,索引的状态就正常了。
现在插入数据,看看是正常:
SQL> insert into t values(12);
1 row created.
SQL> commit;
Commit complete.
SQL>
看来,重建索引才是解决这类问题的彻底的方法。
发表评论
-
sys.dbms_transaction.local_transaction_id出现的问题
2012-07-20 11:54 3409何時會觸發DBMS_TRANSACTION.LOCAL_TRA ... -
ORACLE 11GR2 OEM配置出错解决
2012-07-14 19:21 5112错误描述如下: 2012-7-14 18:23:11 ... -
ORA11G ORA-00845 错误
2012-06-26 13:39 869Oracle 11g的Linux版本在修改了MEMORY_TA ... -
oracle.net.common.NetGetEnv.getDNSDomain
2012-06-07 01:48 1181今天安装LINUX AS 4和ORACLE 10.2,安装成功 ... -
emctl 提示 ora-28001 口令已经实效 解决办法
2011-10-24 00:41 1874What to do when Enterprise Mana ... -
Oracle 10.2.0.4(5)EM不能启动的解决方案(Patch 8350262)
2011-05-20 17:29 6995报错信息如下: 2011-03-09 11:06:10 Th ... -
Oracle HowTo:如何在Linux上扩展SGA超过1.7G
2011-03-24 01:28 952今天一台Linux服务器扩展了一下内存,达到4G,开发的人自己 ... -
error while loading shared libraries: libclntsh.so.10.1: cannot open shared 问题解决
2011-01-21 16:23 121171.运行csscan命令显示如下错误 [oracle@rac ... -
“Error in invoking target ‘client_sharedlib’ of makefile ‘/home/oracle/oracle/pr
2011-01-13 17:35 12001今天同事在安装oracle的时候总是报这个错误: &qu ... -
如何处理Oracle中的坏块[ZT]
2010-12-19 21:56 1254一. 什么是数据库的坏 ... -
bug 7716219 hash group by显示消耗大量的temp 表空间
2010-12-07 17:47 2197SQL> set autotrace traceonly ... -
ORA-08102: TRYING TO MANIPULATE A JOB IN DBA_JOBS [ID 1036858.6]
2010-12-03 23:52 1293***Checked for relevance on 17- ... -
ORA-14074: partition bound must collate higher than that of the last partition
2010-10-09 16:26 37261. 创建分区表 create table zhanglei ... -
ora-12560问题解决
2010-09-16 11:30 16201.监听服务没有起起来 ... -
ORA-20000故障排除手记
2010-09-02 01:43 24161、发现故障。 在Oracle10.2.0.1的aler ... -
ORA-17502 与 ORA-15173 错误解决
2010-05-21 17:27 4061用rman恢复spfile时,报错误如下: RM ... -
Dropping A Disk From ASM Diskgroup Does Not Remove It From v$ASM_DISK
2010-05-21 10:42 1518Applies to: Oracle Serv ... -
ORA-19599 When backing up an archivelog that is corrupt [ID 461239.1]
2010-05-13 13:56 2705Applies to: Oracle Server - E ... -
ASMCMD fails to start on module libnnz10.so, permission denied
2010-05-13 01:14 2570ASMCMD fails to start on modu ... -
Errors ORA-00600 [kclchkblk_4] and ORA-00600 [2662] After Recovery of Datab
2010-05-12 15:45 1764Applies to: Oracle Server - E ...
相关推荐
ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法ora-00604 错误 解决 方法
这篇文章主要讲述了在Oracle 11g R2客户端尝试连接Oracle 19c服务端时,遇到了两个特定的错误:ORA-28040和ORA-01017,以及如何解决这些问题。 ORA-28040错误是因为客户端和数据库服务器在版本兼容性上存在不匹配。...
Oracle数据库发生ORA-04031错误原因浅析及处理 Oracle数据库是甲骨文公司提供的...本文通过对ORA-04031错误的分析和解决方法的介绍,旨在帮助读者更好地理解Oracle数据库中的ORA-04031错误,并提供了实用的解决方法。
在使用Oracle Data Pump工具IMPDP(Import Data Pump)进行数据导入的过程中,可能会遇到ORA-39002和ORA-39070等错误。本文将针对这些错误的排查方法进行详细介绍,帮助用户理解问题的原因及解决策略。 ### 错误...
### Oracle 10g启动后报ORA-16038错误的解决方法 #### 错误概述 在启动Oracle 10g数据库时遇到ORA-16038错误,该错误通常与归档日志操作有关。具体错误信息为: ``` ORA-16038: log 1 sequence #230 cannot be ...
### ERwin连接Oracle报ORA-01041内部错误,hostdef扩展名不存在...通过上述详细的步骤和建议,可以有效地解决ERwin连接Oracle时报ORA-01041内部错误的问题。在实际操作中,还需要根据具体的环境和情况进行适当的调整。
### 解决Drop Goldengate 用户时报ORA-00604 ORA-20782 ORA-06512问题 #### 一、问题背景与现象 在进行Oracle数据库管理过程中,经常会遇到需要删除用户的场景。当尝试执行`drop user goldengate cascade;`命令时,...
摘要:本文主要解决ORACLE 8I数据库应用EXP工具时ORA-06553报错的问题,分析出现问题的原因,并提供了正确的解决方法和措施。 知识点1:Oracle 8I数据库EXP工具的应用 Oracle 8I数据库EXP工具是Oracle数据库提供...
### Oracle 错误 ORA-00132 和 ORA-00214 解析及处理 #### 一、错误概述 在Oracle数据库管理过程中,遇到ORA-00132和ORA-00214这类错误时,往往意味着数据库配置或启动过程中出现了问题。下面将对这两个错误进行...
### 创建物化视图ORA-12014错误解决方法 #### 背景介绍 在Oracle数据库中,物化视图(Materialized View)是一种用于优化查询性能的重要工具。它预先计算并存储了复杂的查询结果,从而在实际查询时能够快速地返回...
通过以上方法,我们可以有效地解决ORA-29275错误,并提高Oracle数据库的整体稳定性和数据完整性。需要注意的是,在实际操作过程中,应当根据具体情况选择最适合的解决方案。例如,在某些情况下,调整字段长度可能是...
在oracle里面运行一下,解决Exception java.sql.SQLException ORA-00600 内部错误代码
本文将深入探讨ORA-01460错误的成因、影响以及提供一系列有效的解决方案,帮助数据库管理员和开发人员克服这一挑战。 ### ORA-01460错误概述 ORA-01460错误全称为“ORA-01460: unimplemented unreasonable ...
但是,清除事件日志是最简单和有效的解决方法,能够快速解决ora-28056错误。 ora-28056错误的预防方法: 为了预防ora-28056错误,数据库管理员可以定期清除事件日志,确保事件日志不溢出。此外,数据库管理员也...
在创建Oracle数据库连接时遇到的错误ORA-01017和ORA-02063涉及到用户认证问题以及Oracle数据库版本之间的差异处理。ORA-01017错误表示用户名或密码无效,登录被拒绝,而ORA-02063则通常表示在Oracle数据库之间进行...
本文旨在详细介绍ORA-12518错误的成因、常见表现形式以及具体的故障排查方法,以帮助读者在实际工作中能够更高效地解决这一问题。 #### 目的 本文旨在探讨如何接近并解决ORA-12518/TNS-12518错误,并提供详细的...
在Oracle数据库管理过程中,经常会遇到各种各样的错误提示,其中“ORA-12560 TNS: 协议适配器错误”是较为常见的一种。这种错误通常发生在客户端尝试连接到Oracle服务器时,表明网络通信出现了问题。本文将详细介绍...
解决ORA-01145错误的方法如下: 1. **启用介质恢复**:对于需要进行离线操作的数据文件,首先应启用介质恢复。 2. **创建新的数据文件**:可以先创建一个新的数据文件来替换原有的数据文件,然后再执行离线操作。 3....
### ORA-01460 错误原因分析 ...通过以上步骤的检查和调整,通常可以解决大部分由ORA-01460错误引起的数据库操作问题。需要注意的是,在进行任何更改之前,最好先备份相关配置和数据,以免出现意外情况。