Oracle(三)表空间和数据库对象

本文详细介绍了Oracle数据库中的表空间、同义词、序列、视图和索引,特别是对索引的种类、优缺点进行了深入探讨。此外,还讨论了表分区的概念、作用、优缺点以及不同类型的分区方法,如范围分区、列表分区、散列分区和组合分区,并展示了相关操作示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  数据库对象是数据库的组成部分,常常用CREATE命令进行创建,可以使用ALTER命令修改,用DROP执行删除操作。前面已经接触过的数据库对象有表、用户等

1. 表空间

  Oracle可以存放海量数据,所有数据都在数据文件中存储。而数据文件大小受操作系统限制,并且过大的数据文件对数据的存取性能影响非常大。同时Oracle是跨平台的数据库,Oracle数据可以轻松的在不同平台上移植,那么如何才能提供统一存取格式的大容量呢?Oracle采用表空间来解决。
  表空间只是一个逻辑概念,若干操作系统文件(文件可以不是很大)可以组成一个表空间。表空间统一管理空间中的数据文件,一个数据文件只能属于一个表空间。一个数据库空间由若干个表空间组成。如图所示:

数据空间、表空间和数据文件

Oracle中所有的数据(包括系统数据),全部保存在表空间中,常见的表空间有:

  1. 系统表空间:存放系统数据,系统表空间在数据库创建时创建。表空间名称为SYSTEM。存放数据字典和视图以及数据库结构等重要系统数据信息,在运行时如果SYSTEM空间不足,对数据库影响会比较大,虽然在系统运行过程中可以通过命令扩充空间,但还是会影响数据库的性能,因此有必要在创建数据库时适当的把数据文件设置大一些。
  2. TEMP表空间:临时表空间,安装数据库时创建,可以在运行时通过命令增大临时表空间。临时表空间的重要作用是数据排序。比如当用户执行了诸如Order by等命令后,服务器需要对所选取数据进行排序,如果数据很大,内存的排序区可能装不下太大数据,就需要把一些中间的排序结果写在硬盘的临时表空间中。
  3. 用户表自定义空间:用户可以通过CREATE TABLESPACE命令创建表空间。语法格式如下:
CREATE TABLESPACE <表空间名>
    DATAFILE '<文件路径>/<文件名>' [SIZE <文件大小> [K|M] [REUSE]
         [AUTOEXTEND [OFF|ON [NEXT <磁盘空间大小> [K|M]]
         [MAXSIZE [UNLIMITED|<最大磁盘空间大小> [K|M]]]
         [MINMUM EXTENT <数字值> [K|M]]
         [DEFAULT <存储参数>]
         [ONLINE|OFFLINE]
         [LOGGING|NOLOGGING]
         [PERMANENT|TEMPORARY]
         [EXTENT MANAGEMENT [DICTIONARY|LOCAL [AUTOALLOCATE|UNIFORM [SIZE <数字值> [K|M]]]]]
--创建大小为50MB的表空间TEST,禁止自动扩展数据文件。
create tablespace test datafile 'D:\Development\Oracle\TestFile\data01.dnf' size 50m reuse autoextend off; 

--创建表空间DATA,允许自动扩展数据文件
create tablespace date datafile 'D:\Development\Oracle\TestFile\data02.dnf' size 50m reuse autoextend on next 10m maxsize 200m extent management local;

--通过ALTER TABLESPACE命令把一个新的数据文件添加到DATA表空间,并指定AUTOEXTEND ON和MAXSIZE为300M。
alter tablespace date add datafile 'D:\Development\Oracle\TestFile\data03.dnf' size 50m reuse autoextend on next 50m maxsize 300m;

--删除表空间DATA及其对应的数据文件。
drop tablespace date including contents and detafiles;

2. 同义词

  同义词(Synonym)是数据库对象的一个别名,Oracle可以为表、视图、序列、过程、函数、程序包等指定一个别名。为了给不同的用户提供一个简单、能唯一标识数据库对象的名称,可以为数据库对象创建同义词。同义词有两种类型:

  1. 私有同义词:拥有 CREATE SYNONYM 权限的用户(包括非管理员用户)即可创建私有同义词,创建的私有同义词只能由当前用户使用。
  2. 公用同义词:系统管理员可以创建公有同义词,公有同义词可以被所有用户访问。
语法结构:创建同义词
CREATE [OR REPLACE] [PUBLIC] SYNONYM [用户方案名.]<同义词名>
    FOR [用户方案名.]对象名 [@<远程数据库同义词>]

语法结构:删除同义词
DROP [PUBLIC] SYNONYM [用户名.]<同义词名>
--为sys数据库的EMP表创建同义词EMP_TEMP。
create public synonym emp_temp for sys.emp;

--其他用户查询sys数据库的emp表。
select * from sys.emp;
select * from emp_temp;4qq

--删除公用同义词emp_temp。
drop public synonym emp_temp;

3. 序列

  序列(Sequence)是用来生成连续的整数数据的对象。序列常常用来作为主键中增长列,序列中的可以升序生成,也可以降序生成。创建序列的语法是:

语法结构:创建序列
CREATE SEQUENCE sequence_name
[START WITH num] 
[INCREMENT BY increment]
[MAXVALUE num|NOMAXVALUE] 
[MINVALUE num|NOMINVALUE] 
[CYCLE|NOCYCLE]  
[CACHE num|NOCACHE]

语法解析:
1. START WITH:从某一个整数开始,升序默认值是1,降序默认值是-1。
2. INCREMENT BY:增长数。如果是正数则升序生成,如果是负数则降序生成。升序默认值是1,降序默认值是-1。
3. MAXVALUE:指最大值。
4. NOMAXVALUE:这是最大值的默认选项,升序的最大值是:1027,降序默认值是-1。
5. MINVALUE:指最小值。
6. NOMINVALUE:这是默认值选项,升序默认值是1,降序默认值是-1026。
7. CYCLE:表示如果升序达到最大值后,从最小值重新开始;如果是降序序列,达到最小值后,从最大值重新开始。
8. NOCYCLE:表示不重新开始,序列升序达到最大值、降序达到最小值后就报错。默认NOCYCLE。
9. CACHE:使用CACHE选项时,该序列会根据序列规则预生成一组序列号。保留在内存中,当使用下一个序列号时,可以更快的响应。当内存中的序列号用完时,系统再生成一组新的序列号,并保存在缓存中,这样可以提高生成序列号的效率。Oracle默认会生产20个序列号。
10. NOCACHE:不预先在内存中生成序列号
--创建一个从1开始,默认最大值,每次增长1的序列,要求NOCYCLE,缓存中有30个预先分配好的序列号。
CREATE SEQUENCE MYSEQ
MINVALUE 1
START WITH 1
NOMAXVALUE
INCREMENT BY 1
NOCYCLE
CACHE 30

--序列创建之后,可以通过序列对象的CURRVAL和NEXTVAL两个“伪列”分别访问该序列的当前值和下一个值
--访问下一个值
SELECT MYSEQ.NEXTVAL FROM DUAL; 
--访问当前值
SELECT MYSEQ.CURRVAL FROM DUAL; 

使用ALTER SEQUENCE可以修改序列,在修改序列时有如下限制:

  1. 不能修改序列的初始值。
  2. 最小值不能大于当前值。
  3. 最大值不能小于当前值。

使用DROP SEQUENCE命令可以删除一个序列对象。

--序列修改
ALTER SEQUENCE MYSEQ
MAXVALUE 10000
MINVALUE -300

--删除序列
DROP SEQUENCE MYSEQ; 

4. 视图

  视图(View)实际上是一张或者多张表上的预定义查询,这些表称为基表。从视图中查询信息与从表中查询信息的方法完全相同。只需要简单的 SELECT … FROM 即可。视图具有以下优点:

  1. 可以限制用户只能通过视图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值