orecal数据库-解库、解表、pdm的导入导出

一、数据库锁了,解库方法(zj20160711'为数据库名)sql

(1)查看数据库当前状态:   
    select username,account_status from dba_users   where username=’zj20160711' 
 
(2)给数据库解锁:
    alter user zj20160711 account unlock;
 
二、表锁了,解表方法
Oracle数据库操做中,咱们有时会用到锁表查询以及解锁和kill进程等操做
(1)锁表查询的代码有如下的形式:
select count(*) from v$locked_object;
select * from v$locked_object;
(2)查看哪一个表被锁
select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;
(3)查看是哪一个session引发的
select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;
(4)杀掉对应进程
执行命令:alter system kill session'404,41';
其中404为sid,41为serial#.
 
三、doc窗口操做数据库命令行
(1)导出
exp user/password@orcl file=D:/存放目录
(2)导入
imp user/password@orcl file=D:/存放目录   ignore=y  full=y
(3)删除数据库中的用户
drop user XXX cascade;
XXX用户名,直接在pl/sql中执行
 
四、PLSQL编译存储过程无响应前面带红叉,解决方法
 

解决方法以下:数据库

(1):查V$DB_OBJECT_CACHEsession

SELECT * FROM V$DB_OBJECT_CACHE WHERE name=‘P_RWFP_AUTOAND’ LOCKS!='0';spa

注意:P_RWFP_AUTO为存储过程的名称。命令行

发现locks=2,对象

(2):按对象查出sid的值进程

select /*+ rule*/  SID from V$ACCESS WHERE object=‘P_RWFP_AUTO’;it

注意:P_RWFP_AUTO为存储过程的名称。io

(3):查sid,serial#编译

SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='刚才查到的SID';

(4):alter system kill session 'sid值,serial#值' immediate;

 

整合一下:

select /*+ rule*/  a.sid, a.serial#,        a.paddr, 'alter system kill session ''' || a.sid || ',' || a.serial# || ''';' AS kill_session,b.OBJECT FROM v$session a, v$access b WHERE a.sid = b.sid AND b.OBJECT = UPPER('m_retail_submit');
 
(5):执行完以后,存储过程从新编辑一下
相关文章
相关标签/搜索