在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;
注意:以上操作需要具有管理員權限方可操作。