1、create tablespace
9i以后还提供了可以设置多种数据块尺寸(2、4、8、16 或 32k)的buffer cache,以便存放不同数据块尺寸的表空间中的对象。使用初始化参数:db_Nk_cache_size来指定不同数据块尺寸的buffer cache,这里的N就是2、4、8、16 或 32。创建数据库时,使用初始化参数:db_block_size所指定缺省的数据块尺寸用于system表空间。然后可以指定最多4个不同数据块尺寸的表空间,每种数据块尺寸的表空间必须对应一种不同尺寸的buffer cache,否则不能创建不同数据块尺寸的表空间。
例如:
create tablespace aom
datafile 'E:\oracle\product\10.2.0\oradata\orcl\aom.dbf' size 10m blocksize 2048
segment space management auto;
抛出这个错误:RA-29339: 表空间块大小 2048 与配置的块大小不匹配
分析原因:
没有定义db_2k_cache_size的大小,可以通过show parameter db_cache 查看
解决方案:
alter system set db_2k_cache_size=10M
2、offline表空间
以上面aom表空间为例,来说明情况。
1)、select tablespace_name, status from dba_tablespaces (查看表空间的联机情况)。
2)、在该表空间上创建一个demo表,并插入数据
create table demo (id int);
insert into demo values(11);
2)、alter tablespace aom offline;(只有sysdba或sysoper才有权限操作)
再插入一条数据, insert into demo values(12),就会抛出如下错误:
ORA-00376: 此时无法读取文件 6
ORA-01110: 数据文件 6: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\AOM.DBF'
说明表空间offline就不可用。
3、表空间只读
以上面的aom表空间,来说明情况。虽然该表空间联机,但是设置其为只读,不允许该表空间中更改数据库
1)、alter tablespace aom read only;
也只有(sysdba或sysoper权限的用户才具备该操作)
2)、insert into demo values(22);
就会抛出如下错误:
ORA-00372: 此时无法修改文件 6
ORA-01110: 数据文件 6: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\AOM.DBF'
恢复表空间读写:alter tablespace aom read write;
4、增大表空间的容量
1)、通过增大表空间数据文件的大小
alter database datafile 'E:\oracle\product\10.2.0\oradata\orcl\aom.dbf' resize 20m;
2)、向表空间中加入数据库文件
alter tablespace aom add datafile 'E:\oracle\product\10.2.0\oradata\orcl\aom02.dbf' size 10m;
5、用户默认表空间
1)、在数据库级别上修改用户的表空间,管理员新建用户时,默认就是该表空间
alter database default tablespace aom;
2)、创建用户时,指定一个表空间
create user test identified by test default tablespace aom;
3)、修改已有用户的表空间
alter user test default tablespace aom1;
6、用户隶属表空间查询
1)、数据字典:dba_users;
2)、select username, default_tablespace from dba_users where username='TEST';
9i以后还提供了可以设置多种数据块尺寸(2、4、8、16 或 32k)的buffer cache,以便存放不同数据块尺寸的表空间中的对象。使用初始化参数:db_Nk_cache_size来指定不同数据块尺寸的buffer cache,这里的N就是2、4、8、16 或 32。创建数据库时,使用初始化参数:db_block_size所指定缺省的数据块尺寸用于system表空间。然后可以指定最多4个不同数据块尺寸的表空间,每种数据块尺寸的表空间必须对应一种不同尺寸的buffer cache,否则不能创建不同数据块尺寸的表空间。
例如:
create tablespace aom
datafile 'E:\oracle\product\10.2.0\oradata\orcl\aom.dbf' size 10m blocksize 2048
segment space management auto;
抛出这个错误:RA-29339: 表空间块大小 2048 与配置的块大小不匹配
分析原因:
没有定义db_2k_cache_size的大小,可以通过show parameter db_cache 查看
解决方案:
alter system set db_2k_cache_size=10M
2、offline表空间
以上面aom表空间为例,来说明情况。
1)、select tablespace_name, status from dba_tablespaces (查看表空间的联机情况)。
2)、在该表空间上创建一个demo表,并插入数据
create table demo (id int);
insert into demo values(11);
2)、alter tablespace aom offline;(只有sysdba或sysoper才有权限操作)
再插入一条数据, insert into demo values(12),就会抛出如下错误:
ORA-00376: 此时无法读取文件 6
ORA-01110: 数据文件 6: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\AOM.DBF'
说明表空间offline就不可用。
3、表空间只读
以上面的aom表空间,来说明情况。虽然该表空间联机,但是设置其为只读,不允许该表空间中更改数据库
1)、alter tablespace aom read only;
也只有(sysdba或sysoper权限的用户才具备该操作)
2)、insert into demo values(22);
就会抛出如下错误:
ORA-00372: 此时无法修改文件 6
ORA-01110: 数据文件 6: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\AOM.DBF'
恢复表空间读写:alter tablespace aom read write;
4、增大表空间的容量
1)、通过增大表空间数据文件的大小
alter database datafile 'E:\oracle\product\10.2.0\oradata\orcl\aom.dbf' resize 20m;
2)、向表空间中加入数据库文件
alter tablespace aom add datafile 'E:\oracle\product\10.2.0\oradata\orcl\aom02.dbf' size 10m;
5、用户默认表空间
1)、在数据库级别上修改用户的表空间,管理员新建用户时,默认就是该表空间
alter database default tablespace aom;
2)、创建用户时,指定一个表空间
create user test identified by test default tablespace aom;
3)、修改已有用户的表空间
alter user test default tablespace aom1;
6、用户隶属表空间查询
1)、数据字典:dba_users;
2)、select username, default_tablespace from dba_users where username='TEST';