• 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:CWDATACWBASEF003_DAT.DBF' resize 7000M; /*路径为绝对路径*/

     

     

     

  • 相关阅读:
    重写保存按钮save事件
    隐藏列获取不到值,表格选中行提示未选中
    前后台获取上下文context
    editGrid分录表格
    通用查询-高级查询
    js保留位和取整
    在Visual Studio中使用C++创建和使用DLL
    Lua中的一些库(1)
    Lua中的面向对象编程
    Lua中的模块与包
  • 原文地址:https://www.cnblogs.com/SunBlog/p/4434181.html
Copyright © 2020-2023  润新知