ORACLE中 表空间是数据管理的基本方法 所有用户的对象要存放在表空间中 也就是用户有空间的使用权 才能创建用户
对象.否则是不充许创建对象 因为就是想创建对象 如表 索引等 也没有地方存放 Oracle会提示:没有存储配额.
因此 在创建对象之前 首先要分配存储空间.
分配存储 就要创建表空间
创建表空间示例如下
CREATE TABLESPACE SAMPLE
LOGGING
DATAFILE D:\ORACLE\ORADATA\ORA \LUNTAN ora SIZE M
EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO
上面的语句分以下几部分
第一: CREATE TABLESPACE SAMPLE创建一个名为 SAMPLE 的表空间
对表空间的命名 遵守Oracle 的命名规范就可了
ORACLE可以创建的表空间有三种类型:
( )TEMPORARY: 临时表空间 用于临时数据的存放;
创建临时表空间的语法如下:
CREATE TEMPORARY TABLESPACE SAMPLE
( )UNDO : 还原表空间 用于存入重做日志文件
创建还原表空间的语法如下:
CREATE UNDO TABLESPACE SAMPLE
( )用户表空间: 最重要 也是用于存放用户数据表空间
可以直接写成: CREATE TABLESPACE SAMPLE
TEMPORARY 和 UNDO 表空间是ORACLE 管理的特殊的表空间 只用于存放系统相关数据
第二: LOGGING
有 NOLOGGING 和 LOGGING 两个选项
NOLOGGING: 创建表空间时 不创建重做日志
LOGGING 和NOLOGGING正好相反 就是在创建表空间时生成重做日志
用NOLOGGING时 好处在于创建时不用生成日志 这样表空间的创建较快 但是没能日志 数据丢失后 不能恢复 但是一般我们在
创建表空间时 是没有数据的 按通常的做法 是建完表空间 并导入数据后 是要对数据做备份的 所以通常不需要表空间的创
建日志 因此 在创建表空间时 选择 NOLOGGING 以加快表空间的创建速度
第三: DATAFILE 用于指定数据文件的具 置和大小
如: DATAFILE D:\ORACLE\ORADATA\ORA \LUNTAN ora SIZE M
说明文件的存放位置是 D:\ORACLE\ORADATA\ORA \LUNTAN ora 文件的大小为 M
如果有多个文件 可以用逗号隔开:
DATAFILE D:\ORACLE\ORADATA\ORA \LUNTAN ora SIZE M
D:\ORACLE\ORADATA\ORA \dd ora SIZE M
但是每个文件都需要指明大小 单位以指定的单位为准如 M 或 K
对具体的文件 可以根据不同的需要 存放大不同的介质上 如磁盘阵列 以减少IO竟争
指定文件名时 必须为绝对地址 不能使用相对地址
来源 () Oracle创建表空间_冬日阳光_新浪博客
第四: EXTENT MANAGEMENT LOCAL 存储区管理方法
在Oracle i以前 可以有两种选择 一种是在字典中管理(DICTIONARY) 另一种是本地管理(LOCAL ) 从 I开始 只能是本地管
理方式 因为LOCAL 管理方式有很多优点
在字典中管理(DICTIONARY): 将数据文件中的每一个存储单元做为一条记录 所以在做DM *** 作时 就会产生大量的对这个管理
表的Delete和Update *** 作 做大量数据管理时 将会产生很多的DM *** 作 严得的影响性能 同时 长时间对表数据的 *** 作 会产生
很多的磁盘碎片 这就是为什么要做磁盘整理的原因
本地管理(LOCAL): 用二进制的方式管理磁盘 有很高的效率 同进能最大限度的使用磁盘 同时能够自动跟踪记录临近空闲空
间的情况 避免进行空闲区的合并 *** 作
第五: SEGMENT SPACE MANAGEMENT
磁盘扩展管理方法:
SEGMENT SPACE MANAGEMENT: 使用该选项时区大小由系统自动确定 由于 Oracle 可确定各区的最佳大小 所以区大小是可
变的
UNIFORM SEGMENT SPACE MANAGEMENT:指定区大小 也可使用默认值 ( MB)
第六: 段空间的管理方式:
AUTO: 只能使用在本地管理的表空间中 使用LOCAL管理表空间时 数据块中的空闲空间增加或减少后 其新状态都会在位图
中反映出来 位图使 Oracle 管理空闲空间的行为更加自动化 并为管理空闲空间提供了更好的性 但对含有LOB字段的表不
能自动管理
MANUAL: 目前已不用 主要是为向后兼容
第七: 指定块大小 可以具体指定表空间数据块的大小
创建例子如下:
CREATE TABLESPACE SAMPLE
LOGGING
DATAFILE D:\ORACLE\ORADATA\ORA \SAMPLE ora SIZE M
D:\ORACLE\ORADATA\ORA \dd ora SIZE M
EXTENT MANAGEMENT LOCAL
UNIFORM SEGMENT SPACE MANAGEMENT
AUTO
SQL> /
表空间已创建
要删除表空间进 可以
SQL> DROP TABLESPACE SAMPLE;
lishixinzhi/Article/program/Oracle/201311/17970
在oracle中,表空间是存储概念上的,建立表空间需要有对应的数据文件,数据文件建立好之后直接会把一定的磁盘空间分配给它,这样可以对数据库的存储空间进行有效的管理。然后在建表的时候指定对应的表空间,该表的数据就会都存在表空间对应的数据文件上,和Mysql那种每个表一个文件的方式比起来,存储的可控性更强。
oracle和mysql不同,不存在mysql中那种数据库的概念,而是实例的概念,当然,也可以在实例里建立不同的user来区分,每个user对应的表都是相对独立的,比如两个user下可以分别建同名的表,但又可以通过授权来交互使用。
建数据库是在安装oracle之后执行dbca建立实例。
建表空间语句是 CREATE TABLESPACE TBS_DEFAULT DATAFILE
'/app/oradata/sys_tbs/tbs_defaultdbf' size 500M
LOGGING
EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO
/
这里主要是需要指定对应的datafile。
建表基本都一样,例如
create table (col_1 number(8),col_2 char(2),col_3 date)
tablespace tbs_default
/
数据库就不要删除了,这方面你看下关于user *** 作的语句就可以了。
drop tablespace tbs_name including contents and datafiles;--删除表空间及数据文件
drop table tab_name purge; -- 删除表。
首先不知道你的数据库在什么系统下:
window:
找到数据文件存放的位置,比如D:\存放的是oracle的数据文件,如果表空间采用的是自动管理方式,考虑将一些数据文件移到其他盘符下,比如:e:\等
linux/unix
du -sk 查看oracle数据库相关文件夹下每个文件的空间使用情况,删除垃圾文件
如果没有垃圾文件,尝试整理表空间,可以释放一些空间,只是暂时解决文件
增加裸设备
如果使用asm的方式管理的,考虑将asm里增加pv。
以上,希望能帮助你!
我的测试环境:Hp rp 主机 Hp unix OS Oracle 的数据库 一个有 张表大约 G的测试表空间TBS_TEST 问题的提出 Oracle中在使用drop tablespace including contents;删除数据字典管理的表空间时存在着很大的效率问题 测试开始: 使用drop tablespace including contents;方式直接来删除 SQL>set linesize SQL>set pagezie SQL>set timing onSQL>drop tablespace TBS_TEST including contents /已用时间: : : 经过我耐心的等待 花了三个半小时 测一下同样的表空间 把它转换为Local方式管理的删除效率 a 把TBS_TEST通过恢复回来 b 把TBS_TEST转化为Local管理的方式 SQL>set timing onSQL> exec sys dbms_space_admin tablespace_migrate_to_local( TBS_TEST ) ;已用时间: : : c 删出这个空间 SQL> drop tablespace TBS_TEST including contents /已用时间: : : 可以看到总共才花费了 分多钟 测一下同样的表空间 先删除其中的对象 然后再删这个表空间的效率如何 a 把TBS_TEST通过恢复回来 b 形成删除表的语句SQL>set linesize SQL>set pagezie SQL>set timing offSQL>spool drop_test_tables sqlSQL>SELECT Drop table ||TABLE_name|| ; FROM dba_tables WHERE tablespace_name= TBS_TEST ;SQL>spool offc 删除表SQL>@drop_test_tables sql这一步大约花费 秒d 删出这个空间 SQL>set timing onSQL> drop tablespace TBS_TEST including contents;已用时间: : : 可以看到总共才花费了将近 分钟 总结 我们在做数据字典管理的表空间的删除时 最好先删除表空间中的对象再进行删除该表空间 *** 作 也可以先把它转换为本地(local)管理的空间再进行删除 不过需要补充的是本地管理的空间在 i以后的版本中才是有的 lishixinzhi/Article/program/Oracle/201311/18327
你好
都是现成的SQL 啊
--1、查看表空间的名称及大小
SELECT ttablespace_name, round(SUM(bytes / (1024 1024)), 0) ts_size
FROM dba_tablespaces t, dba_data_files d
WHERE ttablespace_name = dtablespace_name
GROUP BY ttablespace_name;
--2、查看表空间物理文件的名称及大小
SELECT tablespace_name,
file_id,
file_name,
round(bytes / (1024 1024), 0) total_space
FROM dba_data_files
ORDER BY tablespace_name;
--3、查看回滚段名称及大小
SELECT segment_name,
tablespace_name,
rstatus,
(initial_extent / 1024) initialextent,
(next_extent / 1024) nextextent,
max_extents,
vcurext curextent
FROM dba_rollback_segs r, v$rollstat v
WHERE rsegment_id = vusn(+)
ORDER BY segment_name;
--4、查看控制文件
SELECT NAME FROM v$controlfile;
--5、查看日志文件
SELECT MEMBER FROM v$logfile;
--6、查看表空间的使用情况
SELECT SUM(bytes) / (1024 1024) AS free_space, tablespace_name
FROM dba_free_space
GROUP BY tablespace_name;
SELECT atablespace_name,
abytes total,
bbytes used,
cbytes free,
(bbytes 100) / abytes "% USED ",
(cbytes 100) / abytes "% FREE "
FROM syssm$ts_avail a, syssm$ts_used b, syssm$ts_free c
WHERE atablespace_name = btablespace_name
AND atablespace_name = ctablespace_name;
--7、查看数据库库对象
SELECT owner, object_type, status, COUNT() count#
FROM all_objects
GROUP BY owner, object_type, status;
--8、查看数据库的版本
SELECT version
FROM product_component_version
WHERE substr(product, 1, 6) = 'Oracle';
--9、查看数据库的创建日期和归档方式
SELECT created, log_mode, log_mode FROM v$database;
--1G=1024MB
--1M=1024KB
--1K=1024Bytes
--1M=11048576Bytes
--1G=102411048576Bytes=11313741824Bytes
SELECT atablespace_name "表空间名",
total "表空间大小",
free "表空间剩余大小",
(total - free) "表空间使用大小",
total / (1024 1024 1024) "表空间大小(G)",
free / (1024 1024 1024) "表空间剩余大小(G)",
(total - free) / (1024 1024 1024) "表空间使用大小(G)",
round((total - free) / total, 4) 100 "使用率 %"
FROM (SELECT tablespace_name, SUM(bytes) free
FROM dba_free_space
GROUP BY tablespace_name) a,
(SELECT tablespace_name, SUM(bytes) total
FROM dba_data_files
GROUP BY tablespace_name) b
WHERE atablespace_name = btablespace_name
随便用啊~~
1建表空间ORACLE中,表空间是数据管理的基本方法,所有用户的对象要存放在表空间中,也就是用户有空间的使用权,才能创建用户对象.否则是不充许创建对象,因为就是想创建对象,如表,索引等,也没有地方存放,Oracle会提示:没有存储配额.因此,在创建对象之前,首先要分配存储空间.
分配存储,就要创建表空间:
创建表空间示例如下:
CREATE TABLESPACE "SAMPLE"LOGGINGDATAFILE 'D:\ORACLE\ORADATA\ORA92\LUNTANora' SIZE 5M
EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO上面的语句分以下几部分:第一: CREATE TABLESPACE "SAMPLE" 创建一个名为"SAMPLE"的表空间
对表空间的命名,遵守Oracle的命名规范就可了
ORACLE可以创建的表空间有三种类型:
(1)TEMPORARY:临时表空间,用于临时数据的存放;
创建临时表空间的语法如下:
CREATE TEMPORARY TABLESPACE "SAMPLE"
(2)UNDO :还原表空间用于存入重做日志文件
创建还原表空间的语法如下:
CREATE UNDO TABLESPACE "SAMPLE"
(3)用户表空间:最重要,也是用于存放用户数据表空间
可以直接写成: CREATE TABLESPACE "SAMPLE"
TEMPORARY和UNDO表空间是ORACLE管理的特殊的表空间只用于存放系统相关数据
第二: LOGGING
有NOLOGGING和LOGGING两个选项,
NOLOGGING:创建表空间时,不创建重做日志
LOGGING和NOLOGGING正好相反,就是在创建表空间时生成重做日志
用NOLOGGING时,好处在于创建时不用生成日志,这样表空间的创建较快,但是没能日志,数据丢失后,不能恢复,但是一般我们在创建表空间时,是没有数据的,按通常的做法,是建完表空间,并导入数据后,是要对数据做备份的,所以通常不需要表空间的创建日志,因此,在创建表空间时,选择NOLOGGING,以加快表空间的创建速度第三: DATAFILE用于指定数据文件的具体位置和大小
如: DATAFILE 'D:\ORACLE\ORADATA\ORA92\LUNTANora' SIZE 5M
说明文件的存放位置是'D:\ORACLE\ORADATA\ORA92\LUNTANora' ,文件的大小为5M
如果有多个文件,可以用逗号隔开:
DATAFILE 'D:\ORACLE\ORADATA\ORA92\LUNTANora' SIZE 5M,'D:\ORACLE\ORADATA\ORA92\ddora' SIZE 5M但是每个文件都需要指明大小单位以指定的单位为准如5M或500K
对具体的文件,可以根据不同的需要,存放大不同的介质上,如磁盘阵列,以减少IO竟争
指定文件名时,必须为绝对地址,不能使用相对地址第四: EXTENT MANAGEMENT LOCAL存储区管理方法
在Oracle8i以前,可以有两种选择,一种是在字典中管理(DICTIONARY),另一种是本地管理(LOCAL ),从9I开始,只能是本地管理方式因为LOCAL管理方式有很多优点
在字典中管理(DICTIONARY):将数据文件中的每一个存储单元做为一条记录,所以在做DM *** 作时,就会产生大量的对这个管理表的Delete和Update *** 作做大量数据管理时,将会产生很多的DM *** 作,严得的影响性能,同时,长时间对表数据的 *** 作,会产生很多的磁盘碎片,这就是为什么要做磁盘整理的原因
本地管理(LOCAL):用二进制的方式管理磁盘,有很高的效率,同进能最大限度的使用磁盘同时能够自动跟踪记录临近空闲空间的情况,避免进行空闲区的合并 *** 作。第五: SEGMENT SPACE MANAGEMENT
磁盘扩展管理方法:
SEGMENT SPACE MANAGEMENT:使用该选项时区大小由系统自动确定。由于Oracle可确定各区的最佳大小,所以区大小是可变的。
UNIFORM SEGMENT SPACE MANAGEMENT:指定区大小,也可使用默认值(1 MB)。第六:段空间的管理方式:
AUTO:只能使用在本地管理的表空间中使用LOCAL管理表空间时,数据块中的空闲空间增加或减少后,其新状态都会在位图中反映出来。位图使Oracle管理空闲空间的行为更加自动化,并为管理空闲空间提供了更好的性,但对含有LOB字段的表不能自动管理
MANUAL:目前已不用,主要是为向后兼容
第七:指定块大小可以具体指定表空间数据块的大小
创建例子如下:
1 CREATE TABLESPACE "SAMPLE"
2 LOGGING
3 DATAFILE 'D:\ORACLE\ORADATA\ORA92\SAMPLEora' SIZE 5M,
4 'D:\ORACLE\ORADATA\ORA92\ddora' SIZE 5M
5 EXTENT MANAGEMENT LOCAL
6 UNIFORM SEGMENT SPACE MANAGEMENT
7 AUTO
SQL> /
表空间已创建。
要删除表空间进,可以
SQL> DROP TABLESPACE SAMPLE;
表空间已丢弃。 -----------------------------------------------------------2建表我们都知道oracle数据库是以表的方式来管理数据,所有的数据都是存放在表中的,如果我们没有创建表的话,数据是不能直接放在数据库中的,那么,我们该怎么在oracle中创建表呢?
我们可以使用create table语句在oracle中创建表,创建表的具体语法为:create table tablename (columnname datatype);其中tablename为我们要创建的表的名字,columnname为我们要创建的表中的列的名字,datatype表示列的数据类型以及长度,这里要注意的是,我们在创建表的时候必须要指定表的唯一的名字,以及列的唯一名字,否则数据库就不知道是怎么回事的。
以上就是关于Oracle创建表空间全部的内容,包括:Oracle创建表空间、在Oracle中数据库、表空间、表之间的关系、oracle数据库放的硬盘空间满了..怎么才能释放出点垃圾文件,.比如日志什么的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)