在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; 


注意:以上操作需要具有管理员权限方可操作。

在Oracle库上几种特殊情况的SQL语句

上一篇:SQL语言练习1


下一篇:SQL语言练习3