在Oracle库上几种特殊情况的SQL语句
在Oracle日常维护中,难免会碰到一些特殊情况,这里分享一些例子。
A:表的数据误删了,怎么办?
--1、查看数据表的数据,然后进行删除
select * from score;
delete from score;
--2、查询一小时以前score表的数据
select * from score as of timestamp sysdate-1/24;
--3、执行oracle闪回功能,恢复数据
insert into score select * from score as of timestamp sysdate-1/24;
B:数据表误删了,怎么办?
--1、drop表情况
drop table score;
--2、数据库误删除表之后恢复:记得删除了哪些表名。
flashback table score to before drop;
C:oracle如何导入多条数据?
--数据库中已有表
insert into scott.emp(empno,ename,hiredate)
(select empno+100,ename,hiredate from scott.emp where empno>=6999);
--数据库中没有表
create table scott.test
as(
select distinct empno,ename,hiredate from scott.emp where empno>=7000
);
D:如何查询当前数据库中锁,以及解锁?
--查锁
SELECT /*+ rule */ s.username,
decode(l.type,'TM','TABLE LOCK',
'TX','ROW LOCK',
NULL) LOCK_LEVEL,
o.owner,o.object_name,o.object_type,
s.sid,s.serial#,s.terminal,s.machine,s.program,s.osuser
FROM v$session s,v$lock l,dba_objects o
WHERE l.sid = s.sid
AND l.id1 = o.object_id(+)
AND s.username is NOT NULL;
--解锁(如果解不了。直接倒os下kill进程kill -9 spid)
alter system kill session 'sid,serial';
E:ORA-28000:账户被锁定,如何解决?
--ORA-28000:账户被锁定 因为密码输入错误多次用户自动被锁定.
--解决办法:
alter user user_name account unlock;
注意:以上操作需要具有管理员权限方可操作。