第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. 解释冷备份和热备份的不同点以及各自的优点。
答:热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。
而冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库。
冷备份的优点在于它的备份和恢复操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。
Oracle⽤户和模式,表空间oracle ⽤户与表空间关系oracle⽤户与表空间关系⽤户=商家表=商品表空间=仓库1. 1个商家能有很多商品,1个商品只能属于⼀个商家2. 1个商品可以放到仓库A,也可以放到仓库B,但不能同时放⼊A和B3. 仓库不属于任何商家4. 商家都有⼀个默认的仓库,如果不指定具体仓库,商品则放到默认的仓库中oracle中⽤户的所有数据都是存放在表空间中的,很多个⽤户可以共⽤⼀个表空间,也可以指定⼀个⽤户只⽤某⼀个表空间。
表空间:创建表空间会在物理磁盘上建⽴⼀个数据⽂件,作为数据库对象(⽤户、表、存储过程等等)的物理存储空间;⽤户:创建⽤户必须为其指定表空间,如果没有显性指定默认表空间,则指定为users表空间;创建⽤户后,可以在⽤户上,创建表、存储过程等等其他数据库对象;表:是数据记录的集合;创建过程:表空间--->⽤户--->表;所属关系:表空间包含⽤户包含表;所以在oracle下建⽴建表空间,建⽤户,设置⽤户的默认表空间,在⽤户下建表;--创建数据表空间create tablespace CICIloggingdatafile 'D:\oraclexe\app\oracle\oradata\CICI\CICI.DBF'size 32mautoextend onnext 32m maxsize 2048mextent management local;--创建⽤户并指定表空间CREATE USER cici IDENTIFIED BY ciciPROFILE DEFAULTDEFAULT TABLESPACE CICIACCOUNT UNLOCK;-- 为⽤户赋予权限GRANT connect, resource TO cici;grant create session to cici;查询数据库当前进程的连接数:select count(*) from v process; 查看数据库当前会话的连接数: select count(*) from v session;查看数据库的并发连接数:select count(*) from v session where status='ACTIVE'; 查看当前数据库建⽴的会话情况: selectsid,serial#,username,program,machine,status from v session;查询数据库允许的最⼤连接数:select value from v$parameter where name = 'processes';Oracle⽤户和模式的区别以下来⾃另⼀⽂:A⽤户是表table1的属主,B⽤户要查询table1中的数据1、⽤户A给⽤户B授权查询权限(⽤户B登录数据后可以查询,select * from A.table1,必须显⽰写上属主才能查询)2、⽤户A给table1建同义词,查询table1时,可以直接select * from table1,隐藏掉table1的属主create orreplace synonym lsfapcopr.tsysparameter for lsfapdata.tsysparameter;1、属主(owner)⽤简单的话来说就是数据库的⽤户。
Oracle数据库应用——模式对象论文080311119 邵博伦模式对象介绍模式(schema)是数据的逻辑结构或者说模式对象的汇总。
一个模式对应一个数据库用户,并且名字和数据库用户名相同。
每个用户都有一个单独的模式。
模式对象可以通过SQL 创建(DDL)和操作(DML)。
模式对象是数据的逻辑存储结构。
数据对象和磁盘上保存其信息的物理文件并不一一对应。
Oracle在数据库的一个表空间上保存模式对象。
每个对象的数据物理的保存在表空间的一个或者多个数据文件上。
对某些对象如表、索引、聚集来说,你可以指定在表空间的数据文件上Oracle可以分配多大的磁盘空间来存储这个对象。
模式和表空间没有什么联系:一个表空间可以包换来自不同模式的对象,模式对象可以包含在不同的表空间上。
表概述表是Oracle数据库内数据存储的基本单位。
数据是按照行和列来存储。
你用一个表名(比如employees)、一系列列来定义表。
你为每列指定一个列名(比如employee_id,last_name和job_id等),一个数据类型(比如VARCHAR2,DATE,NUMBER)和一个宽度。
宽度可以是数据类型(比如日期)预先定义好的。
如果列是NUMBER类型,定义范围和精度就可以了。
行是关联到一个记录的列信息的集合。
你可以指定表中每个列的规则。
这些规则叫做完整性约束条件。
NOT NULL就是一个完整性约束的例子。
这个约束条件要求这列的每一行都要包含一个值。
你还可以指定表列在保存在数据文件之前将数据加密。
加密阻止了越过数据库访问控制来直接使用操作系统工具查看数据文件的现象。
在你创建表之后,使用SQL语句插入行数据。
表的数据就可以使用SQL查询、删除和更新。
表的建立:SQL>CREATE TABLE jxzy.switch(>OFFICE_NUM NUMBER(3,0) NOT NULL,>SWITCH_CODE NUMBER(8,0) NOT NULL,>SWITCH_NAME VARCHAR2(20) NOT NULL);表的修改:SQL>ALTER TABLE jxzy.switch>ADD (DESC VARCHAR2(30));表的删除:SQL>DROP TABLE jxzy.switch>CASCADE CONSTRAINTS表的压缩:Oracle的表压缩特性通过减少数据块中重复值来压缩数据。
Oracle数据库模式对象的应用与管理高玲【摘要】现今Oracle数据库在包括我国的全球各个国家都取得了广泛的应用。
本文结合笔者的实际经验,对Oracle数据库模式对象的相关概念进行了介绍,并较为详细的研究和分析了实现过程,对于提高Oracle数据库模式对象的管理及应用水平能够起到十分重要的意义和作用。
【期刊名称】《电子技术与软件工程》【年(卷),期】2013(000)011【总页数】2页(P87-88)【关键词】管理及应用;模式对象;Oracle数据库【作者】高玲【作者单位】新疆吐鲁番电业局,新疆吐鲁番市838000;【正文语种】中文【中图分类】TP311.13现阶段,在全球应用极为广泛的Oracle数据库(Oracle Database),也称作Oracle RDBMS,是美国著名数据库软件公司甲骨文推出的基于对象—关系数据库管理系统,能够提供丰富和完整的数据管理功能,还能以分布式数据库的形式完成分布式处理功能。
1 模式对象的相关概念所谓模式,指的是一系列逻辑数据对象或结构的集合。
模式和用户之间的关系可以总结为以下几个方面:(1)模式和用户相对应,换言之,一个模式只能被一个数据库用户所拥有,并且用户的名称和模式的名称完全相同。
(2)用户所创建的数据库对象都必须保存在与自己同名的模式中。
(3)相同模式内,一定要确保数据库对象名称的唯一性。
对于不同模式的数据库,对象可以同名。
(4)通常情况下,用户引用的对象是与自己同名模式中的对象,如果是要引用其他模式中的对象,需要在该对象名之前指明对象所处模式。
2 Oracle数据库模式对象Oracle数据库模式对象的分类及作用详见下表。
表1 Oracle数据库模式对象对象名称作用TABLE 表用于储存数据的基本结构VIEW 视图以不同的侧面反映表的数据,是逻辑上的表INDEX 索引加快表的查询速度CLUSTER 聚簇将不同表的字段并用的特殊结构的表集合SEQUENCE 序列生成数字序列,用于插入时自动填充表的字段SYNONYM 同义词为简便及便于记忆,给对象起的别名DATABASE LINK 数据库链接为访问远程对象创造的通道STORED PROCEDURE、FUNCTION 储存过程和函数储存于数据库中可调用的程序及函数PACKAGE、PACKAGE BODY 包和包体将储存过程、函数、变量按功能和类别捆绑TRIGGER 触发器由DML操作或数据库事件触发的事件处理程序3 Oracle数据库模式对象的应用和管理3.1 表空间作为逻辑空间之一的表空间涵盖了众多的模式对象,因而务必重视表空间的维护。