oralce常见报错及处理方法

Oracle数据库无法登陆报错
ERROR:
ORA-00257: archiver error. Connect internal only, until freed.
原因是归档日志存放到了数据闪回区,导致数据闪回区满了
使用sqlplus登陆数据库,执行select * from v$FLASH_RECOVERY_AREA_USAGE;语句查看归档日志所在目录磁盘空间使用情况。
在这里插入图片描述
解决方法一:使用rman删除过期归档日志
RMAN> crosscheck archivelog all;
RMAN> delete archivelog until time ‘sysdate-1’ ;删除昨天之前的所有归档日志
解决方法二:增加闪回区大小
查看当前闪回区设置的大小
SQL> show parameter db_recovery_file_dest;
SQL> alter system set DB_RECOVERY_FILE_DEST_SIZE=10g

Oracle报ora_00054 资源正忙错误
手动杀死死锁进程
1.查看被锁对象的session_id
SQL> select session_id from v$locked_object;

SESSION_ID

   774
   774
   774
   774
   774
   774
   774

7 rows selected.
2.根据session_id找到进程的sid和serial#
SQL> select sid,serial#,username,osuser from v$session where sid=774;

   SID    SERIAL#

USERNAME

OSUSER

   774       5389

TEST
oracle
3.杀死产生死锁的session
SQL> alter system kill session ‘774,5389’;

System altered.

使用impdp导入数据时候报错
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
KUP-11007: conversion error loading table “TEST”.“TEST”
ORA-12899: value too large for column TEST(actual: 22, maximum: 20)
KUP-11009: data for row: TEST : 0X’BBF9B4A1BFEE2DBADAC9ABC4DACACE’
原因是目标库与源库的字符集不同,源库是zhsgbk16 目标库是AMERICAN_AMERICA.AL32UTF8
解决方法是将导入后的表数据清空,将有问题的字段值调大点,然后导入的时候只导入数据不导入表结构,需要加上指定content=data_only参数

CONTENT为ALL 时,将导出对象定义及其所有数据.为DATA_ONLY时,只导出对象数据,为METADATA_ONLY时,只导出对象定义

oracle重建表空间
1.startup --启动数据库

2.create temporary tablespace TEMP2 TEMPFILE ‘/home2/oracle/oradata/sysmon/temp02.dbf’ SIZE 512M REUSE AUTOEXTEND ON NEXT; --创建中转临时表空间

3.alter database default temporary tablespace temp2; --改变缺省临时表空间 为刚刚创建的新临时表空间temp2

4.drop tablespace temp including contents and datafiles;–删除原来临时表空间 需重启数据库后操作

5.create temporary tablespace TEMP TEMPFILE ‘/home2/oracle/oradata/sysmon/temp01.dbf’ SIZE 512M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED; --重新创建临时表空间

6.alter database default temporary tablespace temp; --重置缺省临时表空间为新建的temp表空间

7.drop tablespace temp2 including contents and datafiles;–删除中转用临时表空间 需重启数据库后操作

8.alter user roll temporary tablespace temp; --重新指定用户表空间为重建的临时表空间

杀掉死锁
1.检查是否有死锁
select sess.sid,
sess.serial#,
lo.oracle_username,
lo.os_user_name,
ao.object_name,
lo.locked_mode
from v l o c k e d o b j e c t l o , d b a o b j e c t s a o , v locked_object lo, dba_objects ao, v lockedobjectlo,dbaobjectsao,vsession sess
where ao.object_id = lo.object_id and lo.session_id = sess.sid;
2.查看sid,serial#
select * from v s e s s i o n t 1 , v session t1, v sessiont1,vlocked_object t2 where t1.sid = t2.SESSION_ID;
3.杀掉进程sid,serial#
alter system kill session ‘557,7879’;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值