分类目录Oracle

Oracle–存储过程中之循环语句

一般循环语句有两种:

1)使用for循环实现

declare
  cursor cur is
   select * from tablename;
   aw_row  tablename%rowtype;
begin
   for raw_row in cur
      loop
      dbms_output.put_line(‘test’);
end loop;
end;

注意:for语句直接帮我们做了游标的打开关闭,以及判断工作;所以比较常用。

2)使用while实现:

declare
    cursor cur is
    select * from iss2_foc_response;
    raw_row iss2_foc_response%rowtype;
begin
    open cur;
    FETCH cur
    into raw_row;
    while cur%found
        loop
          dbms_output.put_line(‘test while’);
          FETCH cur
          into raw_row;
      end loop;
   close cur;
end;

注意:这种写法需要打开关闭游标,根据游标的特点,这两种循环的写法是等效的。游标默认打开是只读游标,如果要在用到游标的时候修改游标中的值,需要在游标定义的时候,加上For update语句。

Oracle表自动分区

Oracle分区表是需要一开始建立的,需备份下原表,再建立分区表,如:

create table TEST1
 (
   ID         VARCHAR2(50) default sys_guid() not null,
   COLA       VARCHAR2(10),
   COLB       VARCHAR2(20),
   COLC       VARCHAR2(20),
   COLD       VARCHAR2(20),
   CREATEDATE DATE default sysdate
 ) partition by range(createdate)
   (PARTITION P19910107 VALUES LESS THAN (TO_DATE('1991-01-07', 'YYYY-MM-DD')), 
    PARTITION PN VALUES LESS THAN (MAXVALUE));

Oracle表分区不会自动进行,需要配合job任务和存储过程来完成,如

阅读更多

Oracle调度程序

调度程序体系结构:

使用dbms_scheduler包来管理调度程序

dba_scheduler_jobs查询所有调度程序作业

cjq0后台进程调度作业执行

job_queue_processes限制调度作业的最大数,设置为0将不会运行调度程序

需要角色SCHEDULER_ADMIN     

调度程序可以是存储过程,也可以是shell脚本和操作系统命令

dbms_scheduler.create_job创建作业

dbms_scheduler.create_program创建程序 

dbms_scheduler.create_schedule创建时间表

dbms_scheduler.create_job_class创建作业类

dbms_scheduler.create_window创建窗口

阅读更多

Oracle rman备份

逻辑备份和物理备份:rman是物理 备份

热备份和冷备份:冷备是指关闭数据库时执行的备份,热备是数据库打开状态下执行的备份,热备只能在归档模式下进行

全备份和局部备份:全备份指所有的数据文件,局部备份指部分数据文件

完整备份和增量备份:完整备份所有使用的文件块,增量只包括上次备份以来更改的块

使用rman进行备份和恢复:

RMAN实用程序由两部分组成:可执行文件和recover.bsq文件。recover.bsq文件实质上是库文件,可执行文件从recover.bsq文件中析取代码来创建在目标数据库上执行的PL/SQL调用。recover.bsq文件是整个操作的中枢。这两个文件始终保持链接,并从逻辑上构成RMAN客户端实用程序。需要指出的是,recover.bsq文件和可执行文件的版本必须相同,否则就不能正常工作。RMAN实用程序有一种独特的,有序的,可预测的用法:解释在目标数据库中远程执行的PL/SQL调用中的命令。实质上,RMAN实用程序完成了我们需要做的所有备份,还原,恢复,和处理备份工作。由可执行解释程序负责解释这些程序命令,并且使这些命令与recover.bsq文件中的PL/SQL块匹配。RMAN随后将这些RPC传递给数据库,并基于用户的请求收集信息。如果命令要求I/O操作(可能是备份或还原操作),RMAN会在返回信息时准备另一个过程块,并将这个过程块传递回目标数据块。这些过程块负责执行OS的系统调用以进行指定的读或写操作。rman在备份期间使用快照控制文件(控制文件的副本),就是rman在开始时最新的检查点信息和文件结构信息,在rman中可以设置

阅读更多

Oracle 闪回技术

1.闪回数据库:类似不完全恢复,会丢失闪回点之后的所有操作,并且要使用resetlogs打开数据库,

闪回数据库修复的是逻辑错误,无法修复物理损坏。需要创建闪回日志,运行在归档模式

2.闪回查询:查询过去某个时间的数据库,识别错误操作,受undo保留时间限制

3.闪回事务:执行修复过程,执行sql语句来反转事务中的更改,注意无法回滚提交的更改。

4.闪回表:撤销某一时间点之后的对一张表做的所有操作。

5.闪回表删除:允许将表恢复到删除时的状态,受表空间的可用空间限制。不支持truncate

6.闪回数据归档:能够查看过去任何时间的表的状态。通过fbda进程对dml操作进行捕捉。

启用闪回数据库:

阅读更多