ITPub博客

首页 > 数据库 > Oracle > 遇见的一些问题

遇见的一些问题

原创 Oracle 作者:大大猫爱小小鱼 时间:2015-05-26 15:01:43 0 删除 编辑
一、ORA-01502:index 'SZSL.PK_CARD' or partition of such index is in unusable state。
提示索引 'SZSL.PK_CARD' 或这类索引的分区处于不可用状态 。
解决方法:
1,登录szsl用户,检查该索引状态:
select index_name,index_type,tablespace_name,table_type,status from user_indexes where index_name='PK_CARD';
发现该索引状态为UNUSABLE,不可用状态。
2,设置 “skip_unusable_indexes=false”,也就是不跳过失效索引

alter session set skip_unusable_indexes=false;

3,重建失效索引

alter index PK_CARD rebuild;

4,重新检查索引状态:

select index_name,index_type,tablespace_name,table_type,status from user_indexes where index_name='PK_CARD';

发现该索引状态变为VALID。

二、Active Session History (ASH) performed an emergency flush. This may mean that ASH is undersized. If emergency flushes are a recurring issue, you may consider increasing ASH size by setting the value of _ASH_SIZE to a sufficiently large value. Currently, ASH size is 25165824 bytes. Both ASH size and the total number of emergency flushes since instance startup can be monitored by running the following query:

 select total_size,awr_flush_emergency_count from v$ash_info;

解决方法:

1,SQL> select total_size,awr_flush_emergency_count from v$ash_info;

TOTAL_SIZE AWR_FLUSH_EMERGENCY_COUNT

---------- -------------------------

  25165824 4

2,SQL> select x.ksppinm name,y.ksppstvl value,y.ksppstdf isdefault,decode(bitand(y.ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE') ismod,decode(bitand(y.ksppstvf,2),2,'TRUE','FALSE') isadj from sys.x$ksppi x,sys.x$ksppcv y where x.inst_id = userenv('Instance') and y.inst_id = userenv('Instance') and x.indx = y.indx and x.ksppinm ='_ash_size' order by translate(x.ksppinm, ' _', ' ');

NAME

--------------------------------------------------------------------------------

VALUE

--------------------------------------------------------------------------------

ISDEFAULT ISMOD ISADJ

--------- ---------- -----

_ash_size

1048618

TRUE FALSE FALSE

3,增大_ash_size值

alter system set "_ash_size"=67108864;

三、FFatal NI connect error 12170.

  VERSION INFORMATION:

        TNS for Linux: Version 11.2.0.4.0 - Production

        Oracle Bequeath NT Protocol Adapter for Linux: Version 11.2.0.4.0 - Production

        TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.4.0 - Production

  Time: 20-6月 -2014 11:50:34

  Tracing not turned on.

  Tns error struct:

    ns main err code: 12535     

TNS-12535: TNS: 操作超时

    ns secondary err code: 12560

    nt main err code: 505     

TNS-00505: 操作超时

    nt secondary err code: 110

    nt OS err code: 0

  Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.4.202)(PORT=56142))

为什么会出现这样的情况呢?网上搜索后得知,在Oracle11G中,

 有这样两个参数SQLNET.INBOUND_CONNECT_TIMEOUT 和INBOUND_CONNECT_TIMEOUT_listenername;他们的默认值为60s,

 这两个参数负责登陆用户与服务器验证的超时时间,在10GR2以前的版本默认是0s,为了防止Denial of Service (DOS)攻击,

 在以后的版本中才设置为60s。如果在登录过程中,服务器没有给出及时的响应,那么将会在60后给出错误提示,

 这个超时时间显然有点过长,导致用户重复登陆的频率加大,频繁的登录引起数据库负载过大。

解决方法:

LSNRCTL> show inbound_connect_timeout

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

LISTENER 参数 "inbound_connect_timeout" 设为 60

命令执行成功

LSNRCTL> set inbound_connect_timeout 0

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

LISTENER 参数 "inbound_connect_timeout" 设为 0

命令执行成功

LSNRCTL> show inbound_connect_timeout

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

LISTENER 参数 "inbound_connect_timeout" 设为 0

命令执行成功

LSNRCTL> set save_config_on_stop on   #指定在一个lsnrctl会话期内所发生的修改在退出时是否应该被保存起来,下次监听启动也是生效的  on 保存 off 不保存

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

LISTENER 参数 "save_config_on_stop" 设为 ON

命令执行成功

LSNRCTL> exit

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28912313/viewspace-1672351/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-07-19

  • 博文量
    16
  • 访问量
    67538