`
xiang37
  • 浏览: 414259 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Oracle数据库小知识

 
阅读更多

在oralce中,我们有时误删了某些数据或者删除了某些表;这时我们需要恢复这些数据。

 

第一,delete数据后恢复

 

delete某些数据后,可以使用下面语句找到,这个主要是使用Oracle的快照功能。查询到当前时间的前100minute的数据。

 

 

select *
  from skiller AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '100' MINUTE)

 这个时间由不同情况来定义。

 

也可以定义为秒、时等等

 

可以使用下面语句来查看哪些数据是在这个时间段内的区别。

 

select *
  from skiller AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '100' MINUTE)
 where skill_id not in (select skill_id from skiller)

 删选出了这些数据,我们就可以将这些数据插入到我们现有表中,示例见下面SQL

 

 

insert into skiller select *
  from skiller AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '100' MINUTE)
 where skill_id not in (select skill_id from skiller)

 

第二,Drop数据后恢复

 

当我们drop一个表后,我们可以在我们的用户回收站内看到这些数据。比如:

 

select * from user_recyclebin;

 在这个结果集中我们可以看到我们删除对象的结果集。

这个只是查看,你可以从中找到你drop的表名以及其他信息。

 

找到你要恢复的对象名,比如表名。

 

使用下面语句就可以恢复你的对象了。

 

 

flashback table table_name to before drop; 

 

第三,查询表字段信息

 

 

select * from user_tab_columns where table_name = 'WZ_CGCL'

利用上面的SQL,输入你的表名,就可以看到你表字段的相关信息,注意表名一定要大写。

 

 

select * from tab t where t.tabtype = 'TABLE';

利用上面的SQL,你可以查询表或者视图等相关信息。

  

  

 

第四,使用dbms_aq包,需要对AQ USER,AQ ADMIN用户进行授权

 

 

grant execute on dbms_alert to necer;
grant execute on DBMS_AQ to my_username; 
GRANT RESOURCE TO <UserName>; 
GRANT CONNECT TO <UserName>; 
GRANT EXECUTE ANY PROCEDURE TO <UserName>; 
GRANT aq_administrator_role TO <UserName>; 
GRANT aq_user_role TO <UserName>; 
GRANT EXECUTE ON dbms_aqadm TO <UserName>; 
GRANT EXECUTE ON dbms_aq TO <UserName>; 
GRANT EXECUTE ON dbms_aqin TO <UserName>;

利用上面的SQL,可以使用具有使用dbms_alert下面的函数。

 

第五,条件语句中in参数的个数限制

 

 

select * from table_1 t where t.a in (a1,a2,a3....a1000)

 在9i中个数不能超过256个,在10i中个数不能超过1000个。这个可以使用or语句来解决。

如下所示:

 

select * from table_1 t where t.a in (a1,a2,a3,....a500) or t.a in (a501,a502,....a1000)

 这样就避开了个数限制。

 

第六,函数Lpad与Rpad的格式以及用法

lpad(string,n,[pad_string])  向左填充函数

string为输入字符;

n表示填充的位数;

pad_string表示填充的字符---为可选参数,不填,默认填充空格。

如,lpad('xiva',8,'t')则返回ttttxiva.

 

 

select lpad('xiva',5,'0') into temp_mrn  from dual;

 

Rpad同理,区别在于此为向右填充函数。

 

第七,查看Oracle错误代码的含义


http://ora-01407.ora-code.com/code-1.html

 

第八,数据库导入导出

 

exp system/manager@TEST file=d:daochu.dmp owner=(system,sys)

 导出某些用户的数据。

 

 第九,创建DBLINK

 

create shared public  database link paradise_db_link
        connect to scpdb36 identified by scpdb36 authenticated by scpdb36 identified by scpdb36
         using '(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP) (HOST = 192.168.42.111) (PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))'

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics