orecal数据库-解库、解表、pdm的导入导出
1、数据库锁了,解库方法(zj20160711'为数据库名)
(1)查看数据库当前状态:
select username,account_status from dba_users where username=’zj20160711'
(2)给数据库解锁:
alter user zj20160711 account unlock;
2、表锁了,解表方法
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#.
3、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中执行
4、PLSQL编译存储过程无响应前面带红叉,解决方法
解决方法如下:
(1):查V$DB_OBJECT_CACHE
SELECT * FROM V$DB_OBJECT_CACHE WHERE name=‘P_RWFP_AUTOAND’ LOCKS!='0';
注意:P_RWFP_AUTO为存储过程的名称。
发现locks=2,
(2):按对象查出sid的值
select /*+ rule*/ SID from V$ACCESS WHERE object=‘P_RWFP_AUTO’;
注意:P_RWFP_AUTO为存储过程的名称。
(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):执行完之后,存储过程重新编辑一下

浙公网安备 33010602011771号