在Oracle库上几种特殊情况的SQL语句
2014-02-24 12:13
411 查看
在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;
注意:以上操作需要具有管理员权限方可操作。
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删除重复数据并只保留一条数据
- Oracle数据库创建表空间及用户
- Oracle数据导入、导出命令
- win7下安装oracle11g客户端
- ORACLE的UTL_FILE包
- 转载Oracle EBS中,如何通过Form,Report的执行文件来查找对应的功能名称,或者如何反向查找
- 纯软件公司的先驱 甲骨文公司(一)——硅谷老兵新传
- Oracle查看数据库表的创建时间
- Oracle数据库12c新特性:高性能与高可用性
- Oracle 11g远程连接 全解
- 通过JDBC操作ORACLE数据库实例详解【转】
- Oracle 11g完全卸载(Windows)
- oracle按时间创建分区表
- Linux安装单实例Oracle11g ASM
- 教你Excel数据通过plsql导入到Oracle
- Oracle当前数据库用户访问另一个用户的表
- Oracle imp 不同字符集导入
- 机房搬迁项目中oracle一致性备份步骤(一切为了恢复)
- Oracle数据库创建表空间及用户
- Oracle数据导入、导出命令