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


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

發佈了2 篇原創文章 · 獲贊 3 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章