Oracle 11g系列:数据表对象
Oracle数据库的下一层逻辑结构并非数据表,而是表空间。每个数据表都属于唯一的表空间。
1、Oracle表空间
与数据表相同,Oracle表空间是一个逻辑对象,而非物理对象,是数据库的组成部分。当使用SQL语句对数据库进行操作时,操作的都是逻辑对象,而非直接操作物理文件。一个数据库可以有多个表空间,一个表空间可以有多个数据表。
Oracle表空间的Oracle数据库高性能的保证,对于访问频繁的数据表,可以将其放入单独的表空间中,并存储与高性能磁盘;将其他访问较少的数据表规划于单独的表空间,并存储与性能相对较低的磁盘,以实现合理利用服务器资源,最大限度提供数据库性能。另外一种应用场景为将更新频繁的数据表规划于单独的表空间,而很少更新的数据表规划于其他的表空间,在备份数据库时,可以针对不同表空间指定不同的备份周期,在最大程度减小备份数据库占用的系统资源。
不同的表空间对应着不同的物理文件,当某个表空间物理文件损坏时,不会影响其他表空间的正常使用,提高了数据库的安全性。另外可以将数据库实际数据与日志规划为不同的表空间,并存储与不同的磁盘。即使数据库所在磁盘出现问题,还可以利用另一磁盘的日志文件恢复数据库,从而降低了数据丢失的风险。
1.1、创建Oracle表空间
Oracle表空间是一个逻辑概念,创建时需要指定物理文件,即为实际数据分配磁盘空间。表空间的物理文件为数据文件(datafile),同时指定数据文件初始大小。
1>、创建基本表空间
CREATE TABLESPACE MEMBER DATAFILE 'F:\DATABASE\ORADATA\MEMBER_DATA.DBF' SIZE 20M
数据文件的初始大小是必须参数,其完整鹭江必须包含在单引号中。
2>、指定数据文件的可扩展性
当存储在某个数据文件中的数据量超过了其初始大小时,数据文件可以进行自动扩展,使用autoextend选项。
CREATE TABLESPACE MEMBER DATAFILE 'F:\DATABASE\ORADATA\MEMBER_DATA.DBF' SIZE 20M
AUTOEXTEND ON
autoextend选项值为“on”,表空间的数据文件可以自动扩展。若设置为“off”,则关闭自动扩展功能。
3>、指定数据文件的增长幅度
数据文件自动增长时,每次默认增长64K。当某个表空间数据更新很快,数据量的增长很快时,就会频繁地要求增加数据文件的大小。此时需要为每次的增长幅度设定一个合理的值,避免频繁执行增加数据文件大小的动作,影响数据库性能。
设定自动增长幅度使用next选项。
CREATE TABLESPACE MEMBER DATAFILE 'F:\DATABASE\ORADATA\MEMBER_DATA.DBF' SIZE 20M
AUTOEXTEND ON NEXT 5M
4>、指定数据文件的最大尺寸
数据文件可以自动增长,但是无限制的增长往往带来风险。除非特殊需要,应为每个表空间的数据文件设定最大尺寸。
为数据文件设定最大尺寸使用maxsize选项。
CREATE TABLESPACE MEMBER DATAFILE 'F:\DATABASE\ORADATA\MEMBER_DATA.DBF' SIZE 20M
AUTOEXTEND ON NEXT 5M MAXSIZE 500M
如果不限制数据文件的最大尺寸,使用unlimited来代替实际值。
CREATE TABLESPACE MEMBER DATAFILE 'F:\DATABASE\ORADATA\MEMBER_DATA.DBF' SIZE 20M
AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
5>、查看表空间是否创建成功
表空间成功创建之后,会在数据库系统表中添加相应的记录,并且创建相应的物理文件。可以通过查询视图dba_data_files中的记录和实际数据文件存在性,来判断表空间是否创建成功。
查看表空间信息的SQL语句:
select file_name,tablespace_name from dba_data_files order by file_name
6>、为一个表空间创建多个数据文件
一个表空间可以有多个数据文件,为一个表空间创建多个数据文件需要指定多个数据文件的完整路径和详细的选项参数。各数据文件参数之间使用逗号(“,”)分隔。
CREATE TABLESPACE MEMBER DATAFILE 'F:\DATABASE\ORADATA\MEMBER_DATA_01.DBF' SIZE 20M,'F:\DATABASE\ORADATA\MEMBER_DATA_02.DBF' SIZE 10M
1.2、查看表空间
可以通过查询视图dba_tablespaces和视图dba_data_files来获得数据库的表空间信息。dba_tablespaces可以用来查看所有表空间的基本信息,dba_data_files可以用来查看相关数据文件的信息。
select tablespace_name,status,allocation_type from dba_tablespaces
1.3、修改数据库默认表空间
默认表空间是相对用户来说的,每个用户登录Oracle时,都有一个默认的工作空间。当进行与表空间相关操作时,如果为显示指定表空间,则该操作将作用于用户的默认表空间。
查询每个用户的默认表空间:
select user_id,username,default_tablespace from dba_users
修改数据库默认表空间的SQL语句:
alter database default tablespace MEMBER
1.4、修改表空间名称
修改表空间名称使用rename to命令,不能对数据的系统表空间进行重命名。
ALTER TABLESPACE MEMBER01 RENAME TO MEMBER02
1.5、删除表空间
如果某个表空间没有存在的必要,可以执行删除表空间命令,以释放磁盘空间。删除表空间的命令为drop tablespace。删除表空间有两种方式,一是仅仅删除其在数据库中的记录,另一种是将记录和数据文件一起删除。
1>、仅删除其在数据库中记录的SQL语句
DROP TABLESPACE MEMBER01
2>、删除表空间及其数据文件的SQL语句
including contents and datafiles表明当删除该表空间时,应将数据文件一并删除。
DROP TABLESPACE MEMBER01 INCLUDING CONTENTS AND DATAFILES
2、创建Oracle数据表
利用SQL语句查看数据表所属的表空间:
select table_name,tablespace_name from user_tables
DESCRIBE T_USER
3、修改Oracle数据表结构
1>、使用rename选项修改列名
ALTER TABLE T_USER RENAME COLUMN USER_EMAIL TO EMAIL
2>、使用modify选项修改列的属性
ALTER TALBE T_USER MODIFY (USER_NAME VARCHAR2(15))
一次修改多个属性
ALTER TALBE T_USER MODIFY (USER_NAME VARCHAR2(15), EMAIL VARCHAR2(30))
3>、添加列
ALTER TABLE T_USER ADD (REMARK VARCHAR2(50))
4>、删除列
ALTER TABLE T_USER DROP COLUMN REMARK
5>、修改表名
ALTER TABLE T_USER RENAME TO T_USERS
4、删除数据表
DROP TABLE T_USERS
DROP TABLE T_USERS CASCADE CONSTRAINS
有时某些数据表的列被其他表引用,如外键引用时,直接使用DROP TABLE将无法删除该表,此时需要使用CASCADE CONSTRAINS选项,CASCADE CONSTRAINS表示删除表时,将一起作用于约束。
Oracle 11g系列:数据表对象的更多相关文章
- ORACLE 查询一个数据表后通过遍历再插入另一个表中的两种写法
ORACLE 查询一个数据表后通过遍历再插入另一个表中的两种写法 语法 第一种: 通过使用Oracle语句块 --指定文档所有部门都能查看 declare cursor TABLE_DEPT and ...
- 吴裕雄--天生自然ORACLE数据库学习笔记:数据表对象
create table students( stuno ) not null, --学号 stuname ), --姓名 sex ), --性别 age int, --年龄 departno ) n ...
- oracle 11G 导出空表失败的解决方法
一.问题原因: 11G中有个新特性,当表无数据时,不分配segment,以节省空间 1.insert一行,再rollback就产生segment了. 该方法是在在空表中插入数据,再删除 ...
- Oracle 11g 学习3——表空间操作
一.表空间概述 表空间是Oracle中最大的逻辑存储结构,与操作系统中的数据文件相相应: 基本表空间:一般指用户使用的永久性表空间,用于存储用户的永久性数据 暂时表空间: 主要用于存 ...
- Oracle 11g导出空表、少表的解决办法
ORACLE 11G中有个新特性,当表无数据时,不分配segment,以节省空间. 解决方法: 1)insert一行,再rollback就产生segment了 该方法是在在空表中插入数据,再删除,则产 ...
- Oracle 11g系列:视图
视图是数据库中特有的对象,视图用于存储查询,但不会存储数据(物化视图除外).这是视图和数据表的重要区别.Oracle中有4种视图:关系视图.内嵌视图.对象视图和物化视图. 1.关系视图 1>.创 ...
- ORACLE 11g 导出数据
ORACLE 11g 导出 表的时候 不会导出空表 导出空表操作步骤 :(使用PLSQL) 1.打开SQL window 执行下面的 SQL Select 'alter table '||table_ ...
- 解决oracle 11g 导出空表的方法
ORACLE 11G中有个新特性,当表无数据时,不分配segment,以节省空间. 解决方法: 1)insert一行,再rollback就产生segment了 该方法是在在空表中插入数据,再删除,则产 ...
- oracle 11g dbf数据文件从C盘迁移到D盘
服务器系统为 windows 2008 R2 64位,由于C盘空间将满,要将C盘的oracle的DBF数据文件迁移到D盘下,步骤如下: 1.输入cmd,启动 cmd.exe窗口 2.输入 sqlplu ...
随机推荐
- (转)RHEL/CentOS 6.x使用EPEL6与remi的yum源安装MySQL 5.5.x
PS:如果既想获得 RHEL 的高质量.高性能.高可靠性,又需要方便易用(关键是免费)的软件包更新功能,那么 Fedora Project 推出的 EPEL(Extra Packages for En ...
- ProceedingJoinPoint获取当前方法
aspectJ切面通过ProceedingJoinPoint想要获取当前执行的方法: 错误方法: Signature s = pjp.getSignature(); MethodSignatu ...
- CAS 4.0.0RC编译环境
CAS 4.0.0RC编译环境 Eclipse Java EE IDE for Web Developers. JDK1.7,注意用JDK1.8是会出现编译错误的. Maven 在编译出现test错误 ...
- nginx 配置rewrite 笔记
nginx 配置rewrite笔记: 通过下面的示例来说明一下,1. 先说说location : location 表示匹配传入的url地址,其中配置符有多种,各种情况的意义不一样: location ...
- 【转】windows消息和消息队列详解
转载出处:http://blog.csdn.net/bichenggui/article/details/4677494 windows消息和消息队列 与基于MS - DOS的应用程序不同,Wind ...
- nginx实时记录请求状态信息( ngx_realtime_request_module)
cd /usr/local/src/ wget "http://nginx.org/download/nginx-1.4.2.tar.gz" tar -xzvf nginx.tar ...
- UITextField 的重写
在很多产品设计的时候,产品设计人员设计出来的输入框总会要求,文字的内容距离做边框多少像素,编辑区域的其实点,距离左边多少像素,很多人绝的难以适应!其实这些都不存在很大的技术难度,一下这些方式都可以达到 ...
- MyBatis 查询记录时日期字段没有时分秒
今天发现如果表里面的字段为Date类型时,程序查询出来的数据只有年月日 搜索了下,发现在resultMap里面把这个字段的jdbcType原先为Date,改为Timestamp就行了. 确实可以.
- 解剖SQLSERVER 第十六篇 OrcaMDF RawDatabase --MDF文件的瑞士军刀(译)
解剖SQLSERVER 第十六篇 OrcaMDF RawDatabase --MDF文件的瑞士军刀(译) http://improve.dk/orcamdf-rawdatabase-a-swiss-a ...
- SQL 数据库性能问题排查
一个项目的运行,总伴随着性能问题,系统查询过慢,如何快速查询等 下面将简单讲解一下,如何去排查及解决这些问题. 开发过程中: 1:不要绝对的三范式,适当建立冗余能够提高查询速度,不用多表关联 2:能用 ...