oracle数据库模式对象

合集下载

第四章理论课数据库对象

第四章理论课数据库对象

《Oracle数据库应用》理论课数据库对象⏹本章技能目标◆使用同义词◆使用序列◆创建视图◆创建索引1.数据库对象Oracle 数据库对象又称模式对象。

数据库对象是逻辑结构的集合,最基本的数据库对象是表。

其他数据库对象包括:同义词,序列,视图,索引。

下面我们依次讲解这几个数据库对象的使用。

2.同义词同义词是数据库对象的一个别名,这些对象可以是表,视图,序列,过程,函数,程序包,甚至其它同义词,通过使用同义词,用户可以访问其它模式的数据库对象而无需指定模式前缀,例如用户USER1要访问用户USER2的表EMP,必须使用USER2.EMP,那么USER1就可以使用同义词像访问自己的表一样引用USER2.EMP了。

同义词有以下用途:简化SQL语句隐藏对象的名称和所有者提供对对象的公共访问为分布式数据库德远程对象提供了位置透明性同义词允许应用程序访问数据库对象,不论那个用户或哪个数据库拥有该对象。

但是同义词不能代替权限,在使用同义词之前确保用户已得到访问对象的权限。

可以通过同义词执行SELECT,INSERT,UPDA TE,DELETE,LOCK TABLE ,GRANT和REVOKE 等语句。

同义词只是表的一个别名,因此对它的操作都会影响到表。

同义词共有两种类型:公有同义词。

私有同义词。

2.1私有同义词和公有同义词2私有同义词只能在其模式内访问,且不能与当前模式的对象同名。

要在自身的模式创建私有同义词,用户必须拥有CREATE SYNONYM 系统权限。

要在其它用户模式的创建私有同义词,用户必须CREATE ANY SYNONYM 系统权限.。

创建私有同义词语法如下:OR REPLACE 表示在同义词存在的情况下替换该同义词。

synonym_name 表示要创建的同义词的名称。

object_name 指定要为之创建同义词的对象的名称。

例1:假定两个用户模式:ACCP 和SCOTT ,SCOTT 用户拥有EMP表,ACCP 用户需要频繁引用EMP表,为了简化SQL语句,需要为ACCP 用户创建一个同义词。

Oracle用户模式

Oracle用户模式

Oracle⽤户模式
在 Oracle 数据库中,为了便于管理⽤户所创建的数据库对象(数据表、索引、视图等),引⼊了模式的概念,这样某个⽤户所创建的数据库对象就都属于该⽤户模式。

⼀、模式与模式对象
模式是⼀个数据库对象的集合。

模式为⼀个数据库⽤户所有,并且具有与该⽤户相同的名称,⽐如SYSTEM模式、SCOTT模式等。

在⼀个模式内部不可以直接访问其他模式的数据库对象,即使在具有访问权限的情况下,也需要指定模式名称才可以访问其他模式的数据库对象。

模式对象是由⽤户创建的逻辑结构,⽤以存储或引⽤数据。

⽐如段、数据表、索引,约束、视图、过程以及程序包等。

简单地说,模式与模式对象之间的关系就是拥有与被拥有的关系,即模式拥有模式对象;⽽模式对象被模式所拥有。

注意:⼀个不属于某个⽤户所拥有的数据库对象就不能称之为模式对象,⽐如⾓⾊、表空间及⽬录等数据库对象。

⼆、实例模式 Scott
Oracle 11g ⾥⾯提供了⼀个典型的实例模式——SCOTT模式,因为该模式及其所拥有的模式对象经常被作为实例。

SCOTT模式的给⽤户提供了⼀些视⼒表和数据来展⽰ Oracle 数据库的⼀些特性,该⽤户的连接密码是 tiger ,通过连接到SCOTT ⽤户模式,查询数据字典视图 user_tables 可以获得该模式所包含的数据表。

当然,⽤户可可以在system 模式下查询 Scott 模式所拥有的数据表,但要求使⽤dba_tables 数据表。

Oracle 用户和模式

Oracle  用户和模式

Oracle 用户和模式Oracle数据库的安全保护流程可以总结为三个步骤:首先,用户向数据库提供身份识别信息,即提供一个数据库账号。

接下来用户还需要证明他们所给出的身份识别信息是有效的,这是通过输入密码实现的,用户输入的密码会经过数据库的核对,决定用户提供的密码是否正确。

最后,假设密码是正确的,那么数据库认为身份识别信息是可信赖的。

此时,数据库将会在基于身份识别信息的基础上决定用户所拥有的权限,即用户可以数据库执行什么操作。

因此,为了确保数据库的完全,首要的问题就是对用户进行管理。

这里所说的用户并不是数据库的操作人员,而是定义在数据库中的一个名称,更准确地说它是账户,只是习惯上称其为用户。

它是Oracle数据库的基本访问控制机制,当连接到Oracle数据库时,操作人员必须提供正确的用户名和密码。

连接到数据库的用户所具有权限是不相同。

Oracle提供了一些特权用户(SYSDBA或SYSOPER),这类用户主要用于执行数据库维护操作,如启动数据库、关闭数据库、建立数据库,以及执行备份和恢复等操作。

SYSDBA和SYSOPER的区别在于:SYSDBA不仅可以具备SYSOPER的所有权限,而且还可以建立数据库,执行不完全恢复。

在Oracle 11g中,Oracle提供了默认的特权用户SYS,当以特权用户身份登录数据时,必须带有AS SYSDBA 或AS SYSOPER选项。

例如:SQL> conn /as sysdba已连接。

SQL> grant sysdba to system;授权成功。

SQL> conn system/password as sysdba已连接。

与用户密切关联的另一个根念是模式,模式也称为方案(Schema)。

模式或方案实际上是用户所拥有的数据库对象的集合。

在Oracle数据库中,对象是以用户来组织的,用户与模式是一一对应的关系,并且二者名称相同。

如图13-1所示,SYSTEM用户拥用的所有对象都属于SYSEM模式,而SCOTT用户拥有的所有对象都属于SCOTT模式。

oracle数据库体系架构详解

oracle数据库体系架构详解

oracle数据库体系架构详解在学习oracle中,体系结构是重中之重,⼀开始从宏观上掌握它的物理组成、⽂件组成和各种⽂件组成。

掌握的越深⼊越好。

在实际⼯作遇到疑难问题,其实都可以归结到体系结构中来解释。

体系结构是对⼀个系统的框架描述。

是设计⼀个系统的宏观⼯作。

这好⽐建⼀栋⼤楼。

你⾸先应该以图纸的⽅式把整个⼤楼的体系架构描述出来。

然后⼀点点的往⾥⾯填充东西。

下⾯我们先以⼀个图解的⽅式对oracle体系结构有⼀个基本了解根据⽰图,便于我们记忆,⽰图分三部分组成,左侧User Process、Server Process、PGA可以看做成Clinet端,上⾯的实例(Instance)和下⾯的数据库(Database)及参数⽂件(parameter file)、密码⽂件(password file)和归档⽇志⽂件(archived logfiles)组成Oracle Server,所以整个⽰图可以理解成⼀个C/S架构。

Oracle Server由两个实体组成:实例(instance)与数据库(database)。

这两个实体是独⽴的,不过连接在⼀起。

在数据库创建过程中,实例⾸先被创建,然后才创建数据库。

在典型的单实例环境中,实例与数据库的关系是⼀对⼀的,⼀个实例连接⼀个数据库,实例与数据库也可以是多对⼀的关系,即不同计算机上的多个实例打开共享磁盘系统上的⼀个公⽤数据库。

这种多对⼀关系被称为实际应⽤群集(Real Application Clusters,RAC)RAC极⼤提⾼了数据库的性能、容错与可伸缩性(可能耗费更多的存储空间)并且是oracle⽹格(grid)概念的必备部分。

下⾯我们来详细看⼀下oracle数据库的体系架构Oracle体系架构主要有两⼤部分组成:数据库实例(Instance)和数据库⽂件(database)数据库实例指数据库服务器的内存及相关处理程序,它是Oracle的⼼脏。

与Oracle性能关系最⼤的是SGA(System Global Area,即系统全局区活共享内存区),SGA包含三个部分:1、数据缓冲区,可避免重复读取常⽤的数据;2、⽇志缓冲区,提升了数据增删改的速度,减少磁盘的读写⽽加快速度;3、共享池,使相同的SQL语句不再编译,提升了SQL的执⾏速度。

《Oracle数据库应用与实践》课后习题参考答案

《Oracle数据库应用与实践》课后习题参考答案

第 5 章 Oracle 模式对象
一、填空题
1. 字段级约束 表约束
2. NOT NULL 约束 UNIQUE 约束 PRIMARY KEY 约束

3. CREATE TABLE
CREATE ANY TABLE
4. UNIQUE PRIMARY KEY CHECK
5. 合并索引 重建索引
6. user_updatable_columns
一、 填空题 1. 数据挖掘 隐含的 未知的 2. API-ODM Java API ODM DBMS_DM PL/SQL API
3. Clustering Association Feature Extraction
Oracle 数据库应用与实践
2、某 cc 表数据如下: c1 c2 -------------1西 1安 1的 2天 2气
Oracle 数据库应用与实践
3好 …… 转换为 1 西安的 2 天气 3好 要求:不能改变表结构及数据内容,仅在最后通过 SELECT 显示出这个查询结果
代码为: create or replace function x return varchar2 is type t_array is table of number index by binary_integer; type tarray is table of varchar2(10) index by binary_integer; ta t_array; tar tarray; re varchar2(10); n number; na varchar2(10); begin select id bulk collect into ta from (select id,name from xx order by id) group by id; for i in st loop dbms_output.put(ta(i)||' '); select name bulk collect into tar from xx where id=ta(i); for i in st loop dbms_output.put(tar(i)); end loop; dbms_output.put_line(' '); end loop; return re; end;

oracle nologging用法

oracle nologging用法

oracle nologging用法说明在Oracle数据库中,nologging模式是一种特殊的日志记录模式,其目的是尽量减少日志的记录,以提高数据库的性能。

使用nologging模式可以在某些特定的操作中减少日志的记录量,从而减少磁盘I/O操作和日志文件的空间占用。

但是,使用nologging模式也会带来一定的风险,因为如果没有足够的日志记录,可能会影响数据库的恢复和故障恢复能力。

在使用nologging模式时,需要注意以下几点:1.nologging模式只适用于表空间级别,不能在数据库级别或表级别进行设置。

2.当表空间设置为nologging模式时,该表空间内创建的所有对象(如表、视图等)都不会记录日志。

但是,对于已经存在的对象,不能将其修改为nologging模式。

3.nologging模式只适用于非事务性操作。

对于事务性操作,必须使用logging模式或force logging模式。

4.如果数据库处于归档模式,即使表空间设置为nologging模式,redo日志仍然会被记录。

这是因为redo日志是用于数据库恢复和故障恢复的重要工具。

5.使用nologging模式可能会降低数据库的恢复和故障恢复能力。

如果发生故障或错误,可能无法通过日志进行完全恢复。

因此,在使用nologging模式时,需要权衡性能提升和恢复能力下降的风险。

总之,使用Oracle中的nologging模式可以在特定的操作中减少日志的记录量,从而提高数据库的性能。

但是需要注意,使用nologging模式会降低数据库的恢复和故障恢复能力。

因此,在使用nologging模式时需要谨慎考虑其风险和适用场景。

oracle模式对象的管理

oracle模式对象的管理

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对象管理及使用一、实验目的及要求掌握Oracle的常用对象的操作方法。

会使用常用对象解决一些实际问题。

二、实验主要内容(1) 表结构的建立、修改、查看、删除操作。

(2) 索引的建立、修改、查看、删除操作。

(3) 视图的建立、查询、修改、删除操作。

(4) 同义词的建立、查询、修改、删除操作,比较对同义词的操作与对原数据库对象的操作是否一致。

(5) 掌握序列的建立、查询、修改、删除操作,利用序列向数据库表中插入数据。

三、实验仪器设备在局域网环境下,有一台服务器和若干台客户机。

服务器成功安装Oracle 10g数据库服务器(企业版),客户机成功安装Oracle 10g客户端软件,网络服务配置正确,数据库和客户端正常工作。

四、实验步骤1.创建表结构利用命令行方式将下列各表建立到员工医疗保险系统数据库中。

表结构如附录员工医疗保险系统表1-表7所示。

2.查看表结构(1) 利用数据字典查看员工医疗保险系统所有表的字段信息和约束信息。

从数据字典DBA_TAB _COLUMNS查看员工医疗保险系统所有表的字段信息。

从数据字典DBA_ CONSTRAINTS查看员工医疗保险系统所有表的约束信息。

3.修改表结构(1) 将表“staff_sql”重新命名为“staff_sql0”。

(2) 为“staff_sql0”表添加“age ”字段,利用DESC命令查看“staff_sql0”表的字段信息。

(3) 为“staff_sql0”表添加“salary NUMBER(5,2)”、“salary_add NUMBER(3,1)”两个字段,利用DESC命令查看“staff_sql0”表的字段信息。

(4) 向“staff_sql0”表添加“sname”字段惟一性约束,从数据字典DBA_CONSTRAINTS查看“staff_sql0”表的约束信息。

(5) 删除“staff_sql0”表上“sname”字段惟一性约束,从数据字典DBA_CONSTRAINTS查看“staff_sql0”表的约束信息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

创建分区表

散列分区:在指定数量的分区中均等地分配数据。
CREATE TABLE student_hash (
示例:
sno NUMBER(6) PRIMARY KEY, sname VARCHAR2(10) ) PARTITION BY HASH(sno) (PARTITION p1 TABLESPACE LTBS1, PARTITION p2 TABLESPACE LTBS2); 或 CREATE TABLE student_hash2 ( sno NUMBER(6) PRIMARY KEY, sname VARCHAR2(10) ) PARTITION BY HASH(sno) PARTITIONS 2 STORE IN(ORCLTBS1,ORCLTBS2);
第10章 模式对象
第10章 模式对象
10.1 模式概念
10.2 10.3 10.4 10.5 10.6
表管理 索引管理 索引化表管理 分区表与分区索引的管理 其他模式对象
10.1 模式

模式概念

是指一系列逻辑数据结构或对象的集合。
模式与用户相对应,一个模式只能被一个数据库用户所 拥有,并且模式的名称与这个用户的名称相同。 通常情况下,用户所创建数据库对象都保存在与自己同 名的模式中。
示例
10.4.4 利用OEM管理索引化表
10.5 分区表与分区索引

分区概述

所谓的分区是指将一个巨型表或巨型索引分成若干独 立的组成部分进行存储和管理,每一个相对小的、可 以独立管理的部分,称为原来表或索引的分区。 每个分区都具有相同的逻辑属性,但物理属性可以不 同。如具有相同列、数据类型、约束等,但可以具有 不同的存储参数、位于不同的表空间等。 分区后,表中每个记录或索引条目根据分区条件分散 存储到不同分区中 。
删除索引

语法

DROP INDEX index_name;
该索引不再使用。 通过一段时间监视,发现几乎没有查询或只 有极少数查询会使用该索引。 由于索引中包含损坏的数据块或包含过多的 存储碎片等,需要删除该索引,然后重建索 引。 由于移动了表数据而导致索引失效

在下面几种情况下,可以考虑删除索引
10.4.1创建索引化表

说明


在CREATE TABLE语句中指定ORGANIZATION INDEX 关键字 必须建立一个PRIMARY KEY 约束

示例
CREATE TABLE new_student( sno NUMBER PRIMARY KEY , sname CHAR(10), sage NUMBER, sex CHAR(2)) ORGANIZATION INDEX TABLESPACE USERS ;
利用OEM管理表

创建表 删除表 修改表 查询表
10.3 索引

索引概念及作用




索引是为了加速对表中元组的检索而创建 的一种分散存储结构; 是对表而建立的,由除存放表的数据页面 以外的索引页面组成,独立于被索引的表; 通过使用索引加速行的检索,但减慢更新 的速度; 快速定位数据,减少磁盘 I/O; Oracle自动使用、维护索引

参数(parameter_list)

在定义表时,可以通过参数设置表存储在哪一个表 空间中,和存储空间分配等。
创建表举例
在SCOTT模式下,创建如下student表。 CREATE TABLE STUDENT( SNO CHAR(10) PRIMARY KEY, SNAME CHAR(10), 请解释这些参 SEX CHAR(2) ) 数设置的对像 和意义 TABLESPACE USERS PCTFREE 10 PCTUSED 40;
10.3 索引

索引分类

惟一性索引与非惟一性索引

唯一索引是索引值不重复的索引,非唯一性索引是索引值可 以重复的索引

平衡树索引(B树索引)与位图索引 B+树索引 (即平衡树 索引)举例
索引分类

平衡树索引与位图索引

位图索引是一张二维表,列数由索引值的基数决定, 行数由表中记录个数决定,位元为1表示对应记录的 值是该索引值,位元到ROWID的映射通过映射函数 来实现。

Байду номын сангаас模式与用户的关系




同一模式中数据库对象的名称必须惟一,而在不同模式 中的数据库对象可以同名。 默认情况下,用户引用的对象是与自己同名模式中的对 象,如果要引用其他模式中的对象,需要在该对象名之 前指明对象所属模式。
10.2 表

直接创建表 CREATE TABLE table_name
(column_name datatype [column_level_constraint] [,column_name datatype [column_level_constraint]…] [,table_level_constraint]) [parameter_list] ;
创建分区表

复合分区:先对表进行范围分区,然后再对每个分区进行 散列分区,即在一个范围分区中创建多个散列分区。
CREATE TABLE student_composition( sno NUMBER(6) PRIMARY KEY, sname VARCHAR2(10), sage NUMBER(4), birthday DATE ) PARTITION BY RANGE(birthday) SUBPARTITION BY HASH(sage) (PARTITION p1 VALUES LESS THAN(TO_DATE('1980-1-1','YYYY-MMDD')) (SUBPARTITION p1_sub1 TABLESPACE LTBS1, SUBPARTITION p1_sub2 TABLESPACE LTBS2), PARTITION p2 VALUES LESS THAN(TO_DATE('1990-1-1','YYYY-MMDD')) (SUBPARTITION p2_sub1 TABLESPACE LTBS3, SUBPARTITION p2_sub2 TABLESPACE LTBS4), PARTITION p3 VALUES LESS THAN(MAXVALUE) TABLESPACE ORCLTBS5
创建分区表

列表分区:按照分区列值进行枚举分区。如 按性别列分为两个区。
示例:
CREATE TABLE student_list( sno NUMBER(6) PRIMARY KEY, sname VARCHAR2(10), sex CHAR(2) CHECK(sex in ('M','F')) ) PARTITION BY LIST(sex) (PARTITION student_male VALUES('M') TABLESPACE TBS1, PARTITION student_female VALUES('F') TABLESPACE TBS2) STORAGE (INITIAL 10M NEXT 10M MAXEXTENTS 5 );
分区索引

在分区表上可以创建3种类型的索引:

本地分区索引

本地分区索引是指为分区表中的各个分区单独建 立索引分区,各个索引分区之间是相互独立的。 全局分区索引是指先对整个分区表建立索引,然 后再对索引进行分区。 全局非分区索引是指对整个分区表创建标准的未 分区的索引。
列的顺序主要取决于创建表时的列的定义顺序,但是Oracle会 自动将主键列移动到非主键列的前面,保证主键列保存在索引条 目中; PCTTHRESHOLD子句所指定的比例必须包含索引化表中所有 主键列。




用INCLUDING设置溢出存储
CREATE TABLE iot_pct_include( ID NUMBER PRIMARY KEY, col1 VARCHAR2(20), col2 VARCHAR2(10), col3 NUMBER) ORGANIZATION INDEX TABLESPACE USERS PCTTHRESHOLD 30 INCLUDING col3 OVERFLOW TABLESPACE ORCLTBS1;
记录
位图索引
索引分类

单列索引与复合索引

创建在一列上的索引为单列索引,创建在多列上的索 引为复合索引 基于包含列的函数或表达式创建的索引,索引值为计 算后的值

函数索引


聚簇索引
创建索引

语法
CREATE [UNIQUE]|[BITMAP] INDEX index_name ON table_name([column_name[ASC|DESC],…]| [expression]) [REVERSE][parameter_list];

说明


UNIQUE表示建立惟一性索引; BITMAP表示建立位图索引; ASC/DESC用于指定索引值的排列顺序,ASC表示按 升序排序,DESC表示按降序排序,缺省值为ASC; REVERSE表示建立反键索引; parameter_list用于指定索引的存放位置、存储空间 分配和数据块参数设置。


需要分区的情况

表的大小超过2GB


要对一个表进行并行DML操作
为了平衡硬盘的I/O操作,将一个表分散存储在 不同的表空间中 如果需要将表一部分设置为只读,另一部分为 可更新的

创建分区表
相关文档
最新文档