Oracle 复习版(类型包括很全面)

本文主要介绍了Oracle数据库的后台进程,包括DBWR、LGWR、ARCH、CKPT等,以及表空间、分区表、游标、触发器、存储过程的管理操作。适合备考Oracle相关考试或复习数据库管理知识。
摘要由CSDN通过智能技术生成
  • 这个吧,应付山农期末考试,除了选择题需要看好课件。理解外,其余大题简答基本类型都涵盖。期末刚考完,很全面。
  • 其余学校不了解。
  •  
  • 喵喵喵,前人栽树后人乘凉。老学姐爱你们~(我不是学长!)
  •  
  • Oracle的后台进程主要包括:
  • (1)DBWR  数据库写入进程:负责将数据库缓冲区内变动过的数据块写回磁盘内的数据文件,DBWR可有多个。
  • 2)LGWR 日志文件写入进程: 负责将重做日志缓冲区内变动记录循环写回磁盘内的重做日志文件,
  • (3)ARCH  归档进程(archive process): 归档进程ARCH负责在重做日志文件切换后将已经写满的重做日志文件复制到归档日志文件中,
  • (4)CKPT   检查点进程:检查点是一个数据库事件,唤醒DBWR进程,
  • (6)RECO   恢复进程: 在Oracle 11g分布式数据库环境中,RECO处理程序由于网络故障或系统故障挂起的分布式事务。
  • (7) SMON  系统监控进程(system monitor): SMON完成例程的恢复工作 (启动实例,装载数据库,打开数据库)
  • (8) PMON  进程监控进程(process monitor): 当用户进程失败时用于完成进程的恢复。
  • 一个表空间对应两个数据文件,同时对段区管理
  • 1 SQL> create tablespace t4
  • datafile 'c:\t04.dbf'size 5000k,'c:\t05.dbf'size 5000k;
  • extent management local  autoallocate
  • segment space management auto;

ALTER DATABASE ADD LOGFILE MEMBER 'log3a.rdo' TO GROUP 10;

分区表】【list】列表分区

create table part_book1

  2        (  bid number(4),

  3           bookname varchar2(20),

  4           bookpress varchar2(30),

  5            booktime date)

  6     partition by list(bookpress)

  7    (partition part1 values('清华大学出版社') tablespace system,

  8     partition part2 values('教育出版社') tablespace users);

insert into part_book1 values(2,'音乐基础欣赏','教育出版社',to_date('20120102','yyyymmdd'))

range】范围分区

create table part_book

  2        (  bid number(4),

  3           bookname varchar2(20),

  4           bookpress varchar2(30),

  5            booktime date)

  6  partition by range(booktime)

  7 (partition part1 values less than (to_date('20100101','yyyymmdd'))tablespace system,

  8    partition part2 values less than (to_date('20120101','yyyymmdd')) tablespace users,

  9      partition part3 values less than (maxvalue) tablespace users);

 

完整的游标应用实例:

DECLARE    varId  NUMBER;

           varName VARCHAR2(50);   

           CURSOR MyCur(v_xb  xs.xb%type)   IS

           SELECT xh, xm FROM xs

           WHERE xb=v_xb;

BEGIN      OPEN MyCur('男');

           FETCH MyCur INTO varId, varName;

           dbms_output.put_line('学生编号:'|| varId ||'学生名:'||varName ) ;

           CLOSE MyCur;

END;

DECLARE

    v_xm varchar2(8):='张琼';

v_zym varchar2(10):='计算机';

v_zxf number(2):=45;    /*定义变量类型*/

BEGIN

     UPDATE XS  SET zxf=v_zxf

WHERE xm=v_xm;

IF SQL%NOTFOUND THEN

INSERT INTO XS(XH,XM,ZYM,ZXF)          VALUES('001',v_xm,v_zym,v_zxf);

    END IF;

end;

补充:创建一个存储过程,以部门号为该存储过程的in类型参数,查询该部门的平均工资,并输出该部门中比平均工资高的员工号、员工名。(for 循环遍历  游标)

CREATE OR REPLACE PROCEDURE show_emp(

p_deptno emp.deptno%TYPE)

AS

  v_sal emp.sal%TYPE;

BEGIN

SELECT avg(sal) INTO v_sal FROM emp WHERE deptno=p_deptno;

DBMS_OUTPUT.PUT_LINE(p_deptno||' '||'average salary is:'||v_sal);

FOR v_emp IN (SELECT * FROM emp WHERE deptno=p_deptno AND sal>v_sal) LOOP

    DBMS_OUTPUT.PUT_LINE(v_emp.empno||' '||v_emp.ename);

END LOOP;

END show_emp;

例:为emp表创建一个触发器,当插入新员工时显示新员工的员工号、员工名;当更新员工工资时,显示修改前后员工工资;当删除员工时,显示被删除的员工号、员工名。

• CREATE OR REPLACE TRIGGER  t3

• BEFORE INSERT OR UPDATE of sal OR DELETE ON scott.emp

• FOR EACH ROW

• BEGIN

•    IF INSERTING THEN

•          DBMS_OUTPUT.PUT_LINE(:new.empno||' '||:new.ename);

•    ELSIF UPDATING THEN

•          DBMS_OUTPUT.PUT_LINE(:old.sal||' '||:new.sal);

•    ELSE

•          DBMS_OUTPUT.PUT_LINE(:old.empno||' '|| :old.ename);

•    END IF;

• END t3;

• 触发触发器t3

• Set serveroutput on

• declare

• begin

•     update scott.emp set empno=7521 where empno=7522;

•   commit;

• end;

创建概要文件

SQL> create profile p1 limit

    failed_login_attempts 3

    password_lock_time 7;

将概要文件分配给用户

SQL> alter user u1

    profile p1;

例:删除重做日志组log1a.rdo:

ALTER DATABASE DROP LOGFILE MEMBER 'log1a.rdo';

例:删除编号为10的重做日志组:

ALTER DATABASE DROP LOGFILE GROUP 10;

2 ALTER DATABASE  ADD LOGFILE ('log1c.rdo', 'log2c.rdo') SIZE 5000k;

3 ALTER DATABASE  ADD LOGFILE GROUP 10 ('log1a.rdo', 'log2a.rdo') SIZE 5000k

空间,用户表空间

1.创建普通表空间

SQL> create tablespace t2

 2  datafile 'c:\t02.dbf' size 5000k;

创建临时表空间

SQL> create temporary tablespace t3

 2  tempfile 'c:\t03.dbf'size 5000k;

3.创建回滚表空间

SQL> create undo tablespace t4

 2  datafile 'c:\t04.dbf'size 5000k;

4.创建大文件表空间

SQL> create bigfile tablespace bigtbs

 2  datafile 'c:\bigtbs01.dbf' size 5000k

导入表格 SQL> $imp system/test tables=(Student,Course,SC) file=c:\tian.dmp

增加表空间容量

方法一:自动扩充

SQL> create tablespace t2

  2  datafile 'c:\t02.dbf'size 5000k

  3  autoextend on

  4  next 500k

  5  maxsize 20M;

  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值