第5章 Oracle模式对象
- 格式:ppt
- 大小:780.15 KB
- 文档页数:84
计算机初级《信息系统运行管理员初级》要点考点手册(中)第5章信息系统数据资源维护【要点1】信息系统数据资源维护体系【要点2】信息系统数据资源例行管理【要点3】信息系统数据资源备份【要点4】云环境下的数据资源存储及维护【要点5】信息系统数据资源的开发与利用【要点6】数据库的相关知识本章要点本章主要介绍有关信息系统数据资源的运维体系、例行管理、备份与恢复、开发与利用,要点如下:(1)数据资源运维管理的对象、类型和内容。
(2)数据资源例行管理计划、数据资源载体的管理及数据库例行维护的概念和内容。
(3)数据资源备份的类型、备份相关技术,数据灾难恢复的管理。
(4)在云环境下数据资源存储及维护技术。
(5)数据资源开发与利用。
思考题(1)数据资源运维管理工作的主要内容是什么?(2)数据资源运维管理对象包括哪些?(3)常见的数据备份策略有哪些?(4)云环境下数据资源运维的特点有哪些?【要点1】信息系统数据资源维护体系1、体系概述数据资源运维体系2、数据资源维护的管理对象(1)数据文件;(2)数据管理系统;(3)存储介质。
3、数据资源维护的管理类型(1)运行监控①实时监控;②预防性检查;③常规作业;(2)故障响应①事件驱动响应;②服务请求响应③应急响应;(3)数据备份①数据备份;②数据恢复;③数据转换;④数据分发;⑥数据清洗;(4)归档检索;(5)数据优化。
4、数据资源维护的管理内容(1)维护方案;(2)例行管理;(3)应急响应;①制定应急故障处理预案,设立应急故障处理小组,确定详细的故障处理步骤和方法;②制定灾难恢复计划,进行灾难演练,以防备系统崩溃和数据丢失;③灾难发生后,应急故障处理小组能及时采取措施实现数据保护及系统的快速还原与恢复。
(4)数据资源的开发与利用。
【要点2】信息系统数据资源例行管理1、数据资源例行管理计划2、数据资源载体的管理(1)存储介质借用管理存储介质借用流程(2)存储介质转储管理存储介质转储流程(3)存储介质销毁管理存储介质销毁流程3、数据库例行维护(1)健康检查①数据库日志检查;②数据库一致性检查;(2)数据库监测管理①数据库基本信息监测;②数据库表空间监测;③数据库文件O监测;(3)数据库备份与恢复①数据库备份;②数据库故障及回复a.事务故障;b.系统故障;c.介质故障;(4)数据库性能优化:①空间释放其步骤是:在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式。
Oracle对象类型详解抽象数据类型1、创建类型--地址类型CREATE OR REPLACE TYPE AddressType AS OBJECT(Country varchar2(15),City varchar2(20),Street varchar2(30));2、类型嵌套--创建基于前⼀个类型的新的抽象数据类型:巨星类型CREATE OR REPLACE TYPE SuperStarType AS OBJECT(StarName varchar2(30),Address AddressType);3、基于抽象类型创建关系表CREATE TABLE SuperStar(StarID varchar(10),Star SuperStarType);4、基于抽象类型创建对象表CREATE TABLE SuperStarObj of SuperStarType;5、使⽤构造⽅法在表中插⼊记录INSERT INTO SuperStar VALUES(''001'',SuperStarType(''Zidane'',AddressType(''France'',''Paris'',''People Street NO.1'')));6、查询表中记录(1)SQL> SELECT * FROM SuperStar;STARID----------STAR(STARNAME, ADDRESS(COUNTRY, CITY, STREET))--------------------------------------------------------------------------------001SUPERSTARTYPE(''Zidane'', ADDRESSTYPE(''France'', ''Paris'', ''People Street NO.1''))(2)SELECT s.StarID,s.Star.StarName,s.Star.Address.Country,s.Star.Address.City,s.Star.Address.Street FROM SuperStar s STARID STAR.STARNAME STAR.ADDRESS.CO STAR.ADDRESS.CITY STAR.ADDRESS.STREET---------- ------------------------------ --------------- -------------------- ---------------------001 Zidane France Paris People Street NO.17、抽象数据类型的继承(1)创建⼀个类型CREATE OR REPLACE TYPE PersonType AS OBJECT(PersonName varchar(10),PersonSex varchar(2),PersonBirth date) not final;(2)派⽣⼀个类型CREATE OR REPLACE TYPE StudentType UNDER PersonType(StudentNO int,StudentScore int);(3)查看数据字典SQL> DESC StudentTypeStudentType extends SYS.PERSONTYPEName------------------------------------------------------------------------------PERSONNAMEPERSONSEXPERSONBIRTHSTUDENTNOSTUDENTSCORE(4)创建对象表CREATE TABLE student OF StudentType;(5)向对象表中插⼊数据INSERT INTO student VALUES(''Rose'',''nv'',to_date(''1983-05-02'',''yyyy-mm-dd''),1001,98);(6) 查询数据SQL> SELECT * FROM student;PERSONNAME PE PERSONBIR STUDENTNO STUDENTSCORE---------- -- --------- ---------- ------------Rose nv 02-MAY-83 1001 98⼆、可变数组1、创建带有可变数组的表(1)创建可变数组的基类型CREATE OR REPLACE TYPE MingXiType AS OBJECT(GoodID varchar2(20),InCount int,ProviderID varchar(20));(2)创建嵌套项类型的可变数组CREATE OR REPLACE TYPE arrMingXiType AS VARRAY(100) OF MingXiType;(3)创建⼀个主表CREATE TABLE InStockOrder(OrderID varchar(15) Not Null Primary Key,InDate date,OperatorID varchar(15),MingXi arrMingXiType);2、操作可变数组(1)插⼊数据INSERT INTO InStockOrderVALUES(''200710110001'',TO_DATE(''2007-10-11'',''YYYY-MM-DD''),''007'', arrMingXiType(MingXiType(''G001'',100,''1001''),MingXiType(''G002'',888,''1002'')));(2)查询数据SQL> SELECT * FROM InStockOrder;ORDERID INDATE OPERATORID--------------- --------- ---------------MINGXI(GOODID, INCOUNT, PROVIDERID)----------------------------------------------------------------------200710110001 11-OCT-07 007ARRMINGXITYPE(MINGXITYPE(''G001'', 100, ''1001''), MINGXITYPE(''G002'', 888, ''1002'') (3)使⽤Table()函数SQL> SELECT * FROM Table(SELECT t.MingXi FROM InStockOrder tWHERE t.OrderID=''200710110001'');GOODID INCOUNT PROVIDERID-------------------- ---------- --------------------G001 100 1001G002 888 1002(4)修改数据UPDATE InStockOrderSET MingXi=arrMingXiType(MingXiType(''G001'',200,''1001''),MingXiType(''G002'',8888,''1002''))WHERE OrderID=''200710110001''注意:不能更新VARRAY中的单个元素,必须更新整个VARRAY三、嵌套表1、创建嵌套表(1)创建嵌套表的基类型CREATE OR REPLACE TYPE MingXiType AS OBJECT(GoodID varchar2(20),InCount int,ProviderID varchar(20)) not final;(2)创建嵌套表类型CREATE OR REPLACE TYPE nestMingXiType AS TABLE OF MingXiType;(3)创建主表,其中⼀列是嵌套表类型CREATE TABLE InStockTable(OrderID varchar(15) Not Null Primary Key,InDate date,OperatorID varchar(15),MingXi nestMingXiType) Nested Table MingXi STORE AS MingXiTable;2、操作嵌套表(1)向嵌套表中插⼊记录INSERT INTO InStockTableVALUES(''20071012001'',TO_DATE(''2007-10-12'',''YYYY-MM-DD''),''007'',nestMingXiType(MingXiType(''G003'',666,''1001''),MingXiType(''G004'',888,''1002''),MingXiType(''G005'',8888,''1003'')));(2)查询数据SQL> SELECT * FROM InStockTable;ORDERID INDATE OPERATORID--------------- --------- ---------------MINGXI(GOODID, INCOUNT, PROVIDERID)----------------------------------------------------------------------------------------------------20071012001 12-OCT-07 007NESTMINGXITYPE(MINGXITYPE(''G003'', 666, ''1001''), MINGXITYPE(''G004'', 888, ''1002''), MINGXITYPE(''G005'', 8888, ''1003'') (3)使⽤Table()函数SQL> SELECT * FROM Table(SELECT T.MingXi FROM InStockTable tWHERE OrderID=''20071012001'')GOODID INCOUNT PROVIDERID-------------------- ---------- --------------------G003 666 1001G004 888 1002G005 8888 1003(4)更新嵌套表中的数据UPDATE Table(SELECT t.MingXi FROM InStockTable t WHERE OrderID=''20071012001'') ttSET tt.InCount=1666 WHERE tt.GoodID=''G003'';(5)删除表中数据DELETE Table(SELECT t.MingXi FROM InStockTable t WHERE OrderID=''20071012001'') ttWHERE tt.GoodID=''G003''四、对象表1、创建对象表CREATE TABLE ObjectTable OF MingXiType;2、向表中插⼊数据INSERT INTO ObjectTable VALUES(''G001'',500,''P005'');INSERT INTO ObjectTable VALUES(''G002'',1000,''P008'');3、查询对象表中的记录A 直接查询SQL> SELECT * FROM ObjectTable;GOODID INCOUNT PROVIDERID-------------------- ---------- ---------------G001 500 P005G002 1000 P008B ⽤VALUE()函数查询SQL> SELECT VALUE(O) FROM ObjectTable O;VALUE(O)(GOODID, INCOUNT, PROVIDERID)------------------------------------------MINGXITYPE(''G001'', 500, ''P005'')MINGXITYPE(''G002'', 1000, ''P008'')4、查看对象标志符(OID)A REF操作符引⽤⾏对象SQL> SELECT REF(t) FROM ObjectTable t;REF(T)--------------------------------------------------------------------------------0000280209771F103ED34842478A9C439CDAEFEF6324B0ACF849F14BD7A8B52F4B0297D1C90040A9 5A00000000280209A2D3359E0F0C44B3AF652B944F8823F524B0ACF849F14BD7A8B52F4B0297D1C90040A9 5A0001B 将OID⽤于创建外键CREATE TABLE Customer( CustomerID varchar(10) PRIMARY KEY,CustomerName varchar(20),CustomerGoods REF MingXiType SCOPE IS ObjectTable,--引⽤MingXiType外键,关联的是OID的值CustomerAddress varchar(20));C 向Customer表中插⼊数据,此表将从上⾯创建的对象表中引⽤数据INSERT INTO Customer SELECT ''007'',''Yuanhy'',REF(O),''France''FROM ObjectTable OWHERE GoodID=''G001'';D 查询Customer表SQL> SELECT * FROM Customer;CUSTOMERID CUSTOMERNAME---------- --------------------CUSTOMERGOODS-----------------------------------------------------------------------------CUSTOMERADDRESS--------------------007 Yuanhy0000220208771F103ED34842478A9C439CDAEFEF6324B0ACF849F14BD7A8B52F4B0297D1C9 FranceE ⽤DEREF操作符返回对象的值SQL> SELECT CustomerID,CustomerName,DEREF(t.CustomerGoods),CustomerAddress2 FROM Customer t;CUSTOMERID CUSTOMERNAME---------- --------------------DEREF(T.CUSTOMERGOODS)(GOODID, INCOUNT, PROVIDERID)----------------------------------------------------------------------------CUSTOMERADDRESS--------------------007 YuanhyMINGXITYPE(''G001'', 500, ''P005'')France五、对象视图将关系表化装成对象表1、创建对象视图A 创建基于关系表⽗表的对象类型CREATE OR REPLACE TYPE depttype AS OBJECT(deptid number(10),deptname varchar(30),loc number(10));B 创建基于关系表的对象视图CREATE VIEW deptview OF depttype WITH OBJECT OID(deptid) ASSELECT department_id,department_name,location_id FROM dept;C 查询视图SQL> SELECT * FROM deptview;DEPTID DEPTNAME LOC---------- ------------------------------ ----------10 Administration 170020 Marketing 180030 Purchasing 170040 Human Resources 240050 Shipping 150060 IT 140070 Public Relations 2700SQL> select ref(t) from deptview t;REF(T)----------------------------------------------------------------------------------------------------00004A038A004667BAC3685B444520A60ED30027E8F25F0000001426010001000100290000000000090604002A00078401FE 00004A038A004667BAC3685B444520A60ED30027E8F25F0000001426010001000100290000000000090604002A00078401FE 00004A038A004667BAC3685B444520A60ED30027E8F25F0000001426010001000100290000000000090604002A00078401FE 00004A038A004667BAC3685B444520A60ED30027E8F25F0000001426010001000100290000000000090604002A00078401FE 00004A038A004667BAC3685B444520A60ED30027E8F25F0000001426010001000100290000000000090604002A00078401FE 00004A038A004667BAC3685B444520A60ED30027E8F25F0000001426010001000100290000000000090604002A00078401FE 00004A038A004667BAC3685B444520A60ED30027E8F25F0000001426010001000100290000000000090604002A00078401FE 2、创建引⽤视图(类似于关系表创建⼀个从表)CREATE VIEW empview AS SELECT MAKE_REF(deptview,department_id) deptOID,employee_id,first_name,last_name FROM emp;查询对象视图empviewSQL> SELECT * FROM empview;DEPTOID----------------------------------------------------------------------------------------------------EMPLOYEE_ID FIRST_NAME LAST_NAME----------- -------------------- -------------------------00004A038A004667BAC3685B444520A60ED30027E8F25F0000001426010001000100290000000000090604002A00078401FE 100 Steven King00004A038A004667BAC3685B444520A60ED30027E8F25F0000001426010001000100290000000000090604002A00078401FE 101 Neena Kochhar00004A038A004667BAC3685B444520A60ED30027E8F25F0000001426010001000100290000000000090604002A00078401FE 102 Lex De Haan00004A038A004667BAC3685B444520A60ED30027E8F25F0000001426010001000100290000000000090604002A00078401FE 103 Alexander HunoldOracle对象类型也有属性和⽅法.创建对象类型与创建表很相似,只是实际上不为存储的数据分配空间:不带⽅法的简单对象类型:CREATE TYPE type_name as OBJECT (column_1 type1,column_2 type2,...);注意:AS OBJECT创建好对象类型之后,就可以在创建表的时候,使⽤该类型了,如:CREATE TYPE HUMAN AS OBJECT(NAME VARCHAR2(20),SEX VARCHAR2(1),-- F : FEMALE M:MALEBIRTHDAY DATE,NOTE VARCHAR2(300))稍后,可以⽤下⾯的语句查看:SELECT * FROM USER_OBJECTS WHERE OBJECT_TYPE = ''TYPE''CREATE TABLE STUDENTS(GUID NUMBER NOT NULL,STUDENTS HUMAN)此下省去两个Trigger.插⼊数据的时候,可以如下:INSERT INTO STUDENTS (STUDENT) VALUES (HUMAN(''xling'',''M'',TO_DATE(''20060101'',''YYYYMMDD''),''测试''))注意:HUMAN(''xling'',''M'',TO_DATE(''20060101'',''YYYYMMDD''),''测试''),这是个默认的构造函数.如果想选出性别为⼥(F)的记录,可以如下:SELECT * FROM STUDENTS S WHERE S.STUDENT.SEX = ''F''注意:不能写成:SELECT * FROM STUDENTS WHERE STUDENT.SEX = ''F'' 这样会报如下错误:ORA-00904: "STUDENT"."SEX": 标识符⽆效对象类型表:每条记录都是对象的表,称为对象类型表.它有两个使⽤⽅法:1,⽤作只有⼀个对象类型字段的表.2,⽤作具有对象类型字段的标准关系表.语法如下:CREATE TABLE table_name OF object_type;例如:CREATE TABLE TMP_STUDENTS OF HUMAN;⽤DESC TMP_STUDENTS,可以看到它的字段结构和HUMAN的结构⼀样.对象类型表有两个优点:1,从某种程度上简化了对象的使⽤,因为对象表的字段类型与对象类型是⼀致的,所以,不需要⽤对象名来修饰对象属性,可以把数据插⼊对象类型表,就像插⼊普通的关系表中⼀样:INSERT INTO TMP_STUDENTS VALUES (''xling'',''M'',TO_DATE(''20060601'',''YYYYMMDD''),''对象类型表'');当然也可⽤如下⽅法插⼊:INSERT INTO TMP_STUDENTS VALUES (HUMAN(''snow'',''F'',TO_DATE(''20060102'',''YYYYMMDD''),''⽤类型的构造函数''));第⼆个特点是:对象表是使⽤对象类型作为模板来创建表的⼀种便捷⽅式,它可以确保多个表具有相同的结构.对象类型表在:USER_TABLES表⾥是查不到的,⽽在USER_OBJECTS表⾥可以查到,⽽且OBJECT_TYPE = ''TABLE''类型在定义的时候,会⾃动包含⼀个⽅法,即默认的构造器.构造器的名称与对象的名称相同,它带有变量与对象类型的每个属性相对应.对象类型的⽅法:CREATE TYPE type_name AS OBJECT (column1 column_type1,column2 column_type2,... ,MEMBER FUNCTION method_name(args_list) RETURN return_type,...)注意:是MEMBER FUNCTION,(当然,也可是MEMBER PROCEDURE,没有返回值)和包(PACKAGE)⼀样,如果对象类型有⽅法的话,还要声明⼀个BODY:CREATE TYPE BODY type_name ASMEMBER FUNCTION method_name RETURN return_type {AS | IS}variable declareations..BEGINCODE..RETURN return_value;END;//END MEMBER FUNCTION...END;//END TYPE BODY如下所⽰:CREATE TYPE HUMAN AS OBJECT(NAME VARCHAR2(20),SEX VARCHAR2(1),-- F : FEMALE M:MALEBIRTHDAY DATE,NOTE VARCHAR2(300),MEMBER FUNCTION GET_AGE RETURN NUMBER)--BODYCREATE TYPE BODY HUMAN ASMEMBER FUNCTION GET_AGE RETURN NUMBER ASV_MONTHS NUMBER;BEGINSELECT FLOOR(MONTHS_BETWEEN(SYSDATE,BIRTHDAY)/12) INTO V_MONTHS FROM DUAL;RETURN V_MONTHS;END;END;注意:BODY的格式,不是AS OBJECT,也不是⽤⼩括号括起来的.MEMBER FUNCTION 后的AS或IS不能省略.还以STUDENTS表为例(注:如果类型以被某个表使⽤,是不能修改的,必须把相关的表删除,然后把类型删除,在⼀个⼀个新建,这⾥就省略了,参见前⽂所述)SELECT S.STUDENT.GET_AGE() FROM STUDENTS S在提起注意:表名⼀定要有别名.GET_AGE()的括号不能省略,否则会提⽰错误.下⾯演⽰在⼀个匿名过程中的使⽤情况:SET SERVEROUTPUT ONDECLAREAA HUMAN;AGE NUMBER;BEGINAA := HUMAN(''xingFairy'',''M'',TO_DATE(''19830714'',''YYYYMMDD''),''过程'');AGE := AA.GET_AGE();DBMS_OUTPUT.PUT_LINE(AGE);END;映射⽅法:映射⽅法是⼀种不带参数,并返回标准的标量Oracle SQL数据类型的⽅法,如NUMBER,VARCHAR2,Oracle将间接地使⽤这些⽅法执⾏⽐较运算.映射⽅法最重要的⼀个特点是:当在WHERE或ORDER BY等⽐较关系⼦句中使⽤对象时,会间接地使⽤映射⽅法.映射⽅法的声明只过是在普通⽅法声明的前⾯加⼀个 MAP⽽以,注意:映射⽅法是⼀种不带参数的⽅法.MAP MEMBER FUNCTION function_name RETURN return_type修改前⽂提到的HUMAN类型:--映射⽅法 MAPCREATE TYPE HUMAN AS OBJECT(NAME VARCHAR2(20),SEX VARCHAR2(1),-- F : FEMALE M:MALEBIRTHDAY DATE,--注册⽇期 REGISTERDAY DATE,NOTE VARCHAR2(300),MEMBER FUNCTION GET_AGE RETURN NUMBER,MAP MEMBER FUNCTION GET_GRADE RETURN NUMBER)CREATE TYPE BODY HUMAN AS-----------------------MEMBER FUNCTION GET_AGE RETURN NUMBER ASV_MONTHS NUMBER;BEGINSELECT FLOOR(MONTHS_BETWEEN(SYSDATE,BIRTHDAY)/12) INTO V_MONTHS FROM DUAL;RETURN V_MONTHS;END;------------------------MAP MEMBER FUNCTION GET_GRADE RETURN NUMBER ASBEGINRETURN MONTHS_BETWEEN(SYSDATE,BIRTHDAY);END;END;插⼊数据:INSERT INTO STUDENTS (STUDENT) VALUES(HUMAN(''xling'',''M'',TO_DATE(''19830714'',''YYYYMMDD''),TO_DATE(''20020915'',''YYYYMMDD''),''测试MAP⽅法''));INSERT INTO STUDENTS (STUDENT) VALUES(HUMAN(''fairy'',''M'',TO_DATE(''19830714'',''YYYYMMDD''),TO_DATE(''20010915'',''YYYYMMDD''),''测试MAP⽅法''));INSERT INTO STUDENTS (STUDENT) VALUES(HUMAN(''snow'',''M'',TO_DATE(''19830714'',''YYYYMMDD''),TO_DATE(''20020915'',''YYYYMMDD''),''测试MAP⽅法''));在执⾏上⾯的操作后,⽤下⾯这个SELECT语句可以看出映射⽅法的效果:SELECT ,S.STUDENT.GET_GRADE() FROM STUDENTS S ORDER BY STUDENT它是按MAP⽅法GET_GRADE()的值进⾏排序的.注意是ORDER BY STUDENT,在提起⼀次需要注意,⼀定要⽤表的别名,⽅法后的括号不能省略,即使没有参数.如果想以MAP⽅法的结果为条件,可以如下:SELECT ,S.STUDENT.GET_GRADE() FROM STUDENTS S WHERE S.STUDENT.GET_GRADE() > 50 SELECT ,S.STUDENT.GET_GRADE() FROM STUDENTS S WHERE STUDENT >HUMAN(NULL,NULL,NULL,TO_DATE(''20020101'',''YYYYMMDD''),NULL);排序⽅法:先说⼀下SELF,Oracle⾥对象的SELF和JAVA⾥的this是同⼀个意思.对象的排序⽅法具有⼀个与对象类型相同的参数,暂称为ARG1,⽤于和SELF对象进⾏⽐较.如果调⽤⽅法的SELF对象⽐ARG1⼩,返回负值,如果相等,返回0,如果SELF⼤于ARG1,则返回值⼤于0.--映射⽅法 MAPCREATE TYPE HUMAN AS OBJECT(NAME VARCHAR2(20),SEX VARCHAR2(1),-- F : FEMALE M:MALEBIRTHDAY DATE,REGISTERDAY DATE,NOTE VARCHAR2(300),MEMBER FUNCTION GET_AGE RETURN NUMBER,ORDER MEMBER FUNCTION MATCH(I_STUDENT IN HUMAN) RETURN NUMBER)CREATE TYPE BODY HUMAN AS-----------------------MEMBER FUNCTION GET_AGE RETURN NUMBER ASV_MONTHS NUMBER;BEGINSELECT FLOOR(MONTHS_BETWEEN(SYSDATE,BIRTHDAY)/12) INTO V_MONTHS FROM DUAL;RETURN V_MONTHS;END;------------------------ORDER MEMBER FUNCTION MATCH(I_STUDENT IN HUMAN) RETURN NUMBER ASBEGINRETURN REGISTERDAY - I_STUDENT.REGISTERDAY;END;END;注意:在声明的时候,ORDER⽅法的参数类型要和SELF的类型⼀致.SET SERVEROUTPUT ONDECLARES1 HUMAN;S2 HUMAN;BEGINS1 := HUMAN(''xling'',NULL,NULL,TO_DATE(''20020915'',''YYYYMMDD''),NULL);S2 := HUMAN(''snow'',NULL,NULL,TO_DATE(''20010915'',''YYYYMMDD''),NULL);IF S1 > S2 THENDBMS_OUTPUT.PUT_LINE();ELSIF S1 < S2 THENDBMS_OUTPUT.PUT_LINE();ELSEDBMS_OUTPUT.PUT_LINE(''EQUAL'');END IF;END;注意S1 和 S2是怎么⽐较的.映射⽅法具有效率⽅⾯的优势,因为它把每个对象与单个标量值联系在⼀起;排序⽅法有灵活⽅⾯的优势,它可以在两个对象之间进⾏任意复杂的⽐较.排序⽅法⽐映射⽅法的速度慢.。
目录第一章 Oracle 11g 介绍......................................... 错误!未定义书签。
第二章 ORACLE 11g 的体系结构................................... 错误!未定义书签。
第三章 ORACLE 11g 的数据库管理................................. 错误!未定义书签。
第四章 ORACLE 11g 的表空间管理................................. 错误!未定义书签。
第五章 ORACLE 11g 的表管理..................................... 错误!未定义书签。
第六章 ORACLE 11g 的数据查询................................... 错误!未定义书签。
第七章 ORACLE 数据的基本操作................................... 错误!未定义书签。
第八章索引 ................................................... 错误!未定义书签。
第九章视图 ................................................... 错误!未定义书签。
第十章 PL/SQL基础............................................. 错误!未定义书签。
第十一章存储过程与函数........................................ 错误!未定义书签。
第十二章触发器 ............................................... 错误!未定义书签。
第十三章游标 ................................................. 错误!未定义书签。
oracle模式对象的管理【开发语言及实现平台或实验环境】Oracle10g【实验目的】(1)学习基本数据库表的创建,表结构的修改与删除等命令;(2)学习索引的管理命令;(3)学习索引化表的管理命令(4)学习分区表的管理命令(5)学习簇、视图、序列、同义词等的管理命令【实验原理】1.基本表的管理(1)表的创建:Create命令:CREATETABLEtable_name(column_nametype(ize),column_nametype(i ze),…);或CREATETABLEtable_name[(column_name,…)]ASSELECTtatement;表名命名规则所用的表名必须满足下面的条件:a)名字必须以A-Z或a-z的字母开始;b)名字可以包括字母、数字和特殊字母(_)。
字符$和#也是合法的,但是这种用法不提倡;c)名字大小写是一样的;例如EMP、emp和eMp是表示同一个表;d)名字最长不超过30个字符;e)表名不能和其它的对象重名;f)表名不能是SQL保留字。
字段类型:完整性约束:Oracle允许用户为表和列定义完整性约束来增强一定的规则。
可分为:表约束和字段约束约束类型如下:1)NOTNULL约束NOTNULL约束保证字段值不能为NULL。
没有NOTNULL约束的字段,值可以为NULL。
2)UNIQUE约束指定一个字段或者字段的集合为唯一键。
在表中没有两行具有相同的值。
如果唯一键是基于单条记录的,NULL是允许的。
表约束命令格式:,[CONSTRAINTcontraint_name]UN IQUE(Column,Column,…)字段约束命令格式:[CONSTRAINTcontraint_name]UNIQUE例如:CREATETABLEDEPT(DEPTNONUMBER,DNAMEVARCHAR2(9),LOCVARCHAR2(10),CONSTRAINTUNQ_DEPT_LOCUNIQUE(DNAME,LOC));UNQ_DEPT_LOC是一个表约束。
oracle名词解释和简答题名词解释1.对象:对象实际是对一组数据和操作的封装,对象的抽象就是类。
2.并行服务器(OPS):可以允许一个数据库装载到多个数据库实例上并同时被这多个数据库实例打开。
3.DUAL表:该表只包含一个字段和一条记录。
使用它容易解决与表无关的一些查询问题。
4.DML级封锁:用于控制并发事务中的数据操纵,保证数据的一致性和完整性,其封锁对象可以是表或行。
5.触发器:存放在数据库中,它是一种当特定的事件发生时自动执行的存储过程。
6.网格计算:通过利用大量异构计算机的未用资源,将其作为嵌入在分布式电信基础设施中的一个虚拟的计算机集群,为解决大规模的计算问题提供了一个模型。
7.模式:一系列逻辑数据结构或对象的集合,模式与用户相对应,一个模式只能被一个数据库用户所拥有,并且模式的名称与这个用户的名称相同。
8.索引:一种可选的与表相关的数据库对象,用于提高数据查询效率。
9.视图:视图是一个逻辑表,是查看表的一种方式。
视图是对根据预定义的选择标准、由一个或者多个行的集合建立起来的动态表的静态定义。
简答题1. 简述Oracle系统的体系结构答:Oracle系统体系结构是整个Oracle服务器系统的框架,是管理和应用Ora 数据服务器的基础和核心。
(1) 数据库实例:系统全局区和后台进程(2) 物理存储结构:参数文件、控制文件、数据文件、重做日志文件等;(3) 逻辑存储结构:表空间、段、盘区、数据块等(4) 内存结构:系统全局区域、程序全局区、用户全局区2. 解释冷备份和热备份的不同点以及各自的优点。
答:热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。
而冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库。
冷备份的优点在于它的备份和恢复操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。