您的位置:首页 > 数据库

PL/SQL基础编程之(十一)[表空间概述、说明、创建][本地管理和字典管理、切换管理方式]

2012-02-01 10:38 447 查看
1、概念:
表空间是最大的逻辑载体、它是存储关联数据库的逻辑的,它是存储数据库文件的。
 
2、SQLPLUS创建表空间
create tablespace tabs     --创建表空间
datafile 'F:\oracle\product\10.2.0\oradata\orcl\tabs.dbf' size 10M;
--设置关联文件和表空间大小
alter user zhanglei default tablespace tabs;  --更改默认表空间
connect zhanglei/zhanglei    --连接到zhanglei用户
--创建表
create table tre(t char(8),tr number);  
--创建表,这时候是以默认表空间为准的。也就是tabs,在创建用户的时候指定
--提示没有权限对tabs表空间的应用:
create table tre(t char(8),tr number)
*
第 1 行出现错误:
ORA-01950: 对表空间 'TABS' 无权限
 
grant unlimited tablespace,dba to zhanglei;      
--切换到dba用户进行授权,授权为无限制表空间和DBA最高权限
create table ty(t varchar2(10),y number) tablespace tt;   --创建表,并且指定表空间
 
3、OEM创建表空间
说明:OEM创建表空间在此就不在表述。相信OEM的界面足够大家操作和理解。
 
4、本地管理和字典管理的区别:
字典管理表空间每当表或其他对象需要扩大的时候都检查其数据字典以确保有可用的空间分配给对象,然后给对象分配一个新区段并更新其可用空间信息。
  本地管理表空间保存数据文件本身的空间管理信息,而且表空间自动跟踪每个数据文件块的可用或已用状态。
  在事务比较多的数据库中显然字典管理每次插入数据时都会检查数据字典,这就使得数据库性能有所损耗。
 
5、转换本地管理和字段管理方法和说明:
 
第一种方法---命令方式转移。
  首先你要新建一个oracle表空间,在oracle 10g以后默认都是采用本地管理表空间的。
  对于表空间的转移使用命令
  ALTER TABLE temp MOVE TABLESPACE new_temp;
  对于索引你需要重建
  ALTER TABLE index REBUILD TABLESPACE new_index;
  或许你可以采用oracle提供的PL/SQL数据包中的DBMS_SPACE_ADMIN。
  显然上面的方法并不适用于对system表进行转换,因为你不能建立2个同名的system表。
  在转换system表前,你必须把所有的其他表空间转换为本地管理。
  EXECUTEdbms_space_admin.tablespace_migrate_to_local("tablespace"); ---转行表空间
  然后同样的方法将system表空间也进行转换.
  EXECUTEdbms_space_admin.tablespace_migrate_to_local("system");
  使用这种方法很好,但是它建立的表空间没有automatic segment spacemanagerment选项,所有字典管理表空间都是用默认手动段空间管理,而且在转换为本地管理的表空间是不能进行修改.
  还有一个缺点,就是表空间如果存在空间碎片的话,此方法也不能解决碎片问题.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: