[整理记录备忘]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 启动数据库