[整理记录备忘]oracle数据库相关问题与解决

检查死锁方式

  • 用dba用户执行以下语句,可以查看到被死锁的语句。

select sql_text from v$sql where hash_value in
(select sql_hash_value from v$session where sid in
(select session_id from v$locked_object))

1)查找死锁的进程:
  • sqlplus “/as sysdba” (sys/change_on_install)

SELECT s.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#,
l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESS
FROM V$LOCKED_OBJECT l,V$SESSION S WHERE l.SESSION_ID=S.SID;

2)kill掉这个死锁的进程:

alter system kill session ‘sid,serial#’; (其中sid=l.session_id)

  • 如果进程kill不掉的话,则需要用管理员运行cmd,然后重复执行以上步骤即可;
3)如果还不能解决:

select pro.spid from v$session ses,v$process pro where ses.sid=XX and ses.paddr=pro.addr;

  • 其中sid用死锁的sid替换:

ps -ef|grep spid

  • 其中spid是这个进程的进程号,kill掉这个Oracle进程

检查对象失效语句

  • 再建立数据结构的时候,会出现视图、存储过程、包等异常的情况,使用如下语句检测异常:

SELECT owner, object_name, object_type,status FROM dba_objects
WHERE status = ‘INVALID’;

  • 出现异常的对象后,编辑异常的对象,会有提示;根据提示修复即可;

导入/导出数据的语句

导入

imp credittest/credittest@ttfc file=D:\sql.dmp full=y

导出

exp racttfc/racttfc@ttfc file=E:\basedata.dmp full=y

  • 其余参数详见 imp/exp --help

其他异常处理

  • 今天在连接ORACLE做测试的时候,出现错误:ORA-27101: shared memory realm does not exist
  • 错误原因:可能是ORACLE数据库意外被关闭
  • 解决方法:cmd下,执行以下命令,启动数据库

1、sqlplus /nolog 登陆数据库
2、conn 用户名/密码 as sysdba 以管理员权限登陆
3、startup 启动数据库

猜你喜欢

转载自www.cnblogs.com/wgq4812/p/10790217.html
今日推荐