oracle 常用

一、常用

1、任务计划(job)

  • 语法
DBMS_JOB.SUBMIT( jobno,       //job号 
                     'procedure_name;',   //要执行的过程 
                     sysdate,                   //下次执行时间 
                     'trunc(sysdate)+1/24+1'   //每次间隔时间 
                   ); 
每分钟执行:    TRUNC(sysdate,'mi') + 1 / (24*60) 
每天的凌晨2点执行 :TRUNC(sysdate) + 1 +2 / (24) 
每周一凌晨2点执行: TRUNC(next_day(sysdate,2))+2/24
  •  

declare
  jobno number;
begin
  sys.dbms_job.submit(jobno,'PKG_ZJBI_SJTB.PROC_ZJBI_SJTB;',
  sysdate + 1 / (24 * 60),
  'sysdate + 1 / (24 * 60)',false);
  commit;
end;

2、 DBLINK:用于从本地数据库访问另外一个数据库表中的数据。

  • 例:

create database link DLInk  /*Dlink为名称*/
  connect to LC0019999 identified by aaaaaa
  using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = xx.xx.xx.xx)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl )
)
)';

注:xx.xx.xx.xx 为IP地址;orcl 为服务名

使用:select 1 from dual@Dlink

错误: ORACLE "ORA--22992:无法使用远程表选择的LOB定位器,database link"

     解决办法: 先创建一个临时表,然后把远程的含CLOB字段的表导入到本地的临时表中,再倒入本表。

create global temporary table ZJZHDJB_temp as select * from ZJZHDJB where 1=2;    /*创建空的临时表*/
insert into ZJZHDJB_temp select * from ZJZHDJB@Dlink ;
insert into ZJZHDJB select * from ZJZHDJB_temp;
commit;
select * from ZJZHDJB_temp

二、恢复数据:

1、恢复表中误删的数据:

  • 1)、查看误删的数据

select * from ZJZHDJB as of timestamp to_timestamp('2015-04-17 22:00:00','yyyy-mm-dd hh24:mi:ss')

注释:ZJZHDJB:误删数据所在的表; 2015-04-17 22:00:00:查看该时间点表中的所有数据。如果此刻表中不包含相关数据,继续缩小时间,直至包含误删的数据

  • 2)、恢复数据

flashback table ZJZHDJB to timestamp to_timestamp('2015-04-17 22:00:00','yyyy-mm-dd hh24:mi:ss');

注释:将表恢复至2015-04-17 22:00:00 时间点所包含的数据

  • 3)、恢复数据失败执行

当报如下错误时,

执行:alter table ZJZHDJB enable row movement;

    这个命令的作用是,允许Oracle 修改分配给行的rowid。在Oracle 中,插入一行时就会为它分配一个rowid,而且这一行永远拥有这个rowid。闪回表处理会对EMP 完成DELETE,并且重新插入行,这样就会为这些行分配一个新的rowid。要支持闪回就必须允许Oracle 执行这个操作。

2、表的恢复
     对误删的表,只要没有使用PURGE永久删除选项,那么从flash back区恢复回来希望是挺大的。一般步骤有:
1)、查询被删除的表

select * from user_recyclebin WHERE ORIGINAL_NAME='ZJZHDJB'   /*误删的表名*/

2)、执行表的恢复
flashback table  ZJZHDJB  to before drop,

三、表空间 

  • 1、查看表空间的大小

select b.file_name 物理文件名,b.tablespace_name 表空间,b.bytes/1024/1024 大小M,(b.bytes-sum(nvl(a.bytes,0)))/1024/1024 已使用M,
     substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*100,1,5) 利用率
from dba_free_space a,dba_data_files b
where a.file_id=b.file_id
group by b.tablespace_name,b.file_name,b.bytes
order by b.tablespace_name

  •  2、修改大小:

  alter database datafile 'F:\CWDATA\CWBASEF003_DAT.DBF' resize 7000M; /*路径为绝对路径*/

 

 

 

posted @ 2015-04-17 10:34  志在天涯  阅读(171)  评论(0编辑  收藏  举报