SQL> conn sys/xin as sysdba 已连接。 SQL> set wrap off SQL> set linesize 100 1. 一些基本的操作 (1) 查看表空间: SQL> select * from v$tablespace; (2) 查看数据文件: SQL> select * from v$datafile; (3) 查看tablespace 和data files之间的对应关系(通过表空间的号连接在一起): SQL> select t1.name,t2.name 2 from v$tablespace t1, v$datafile t2 3 where t1.ts#=t2.ts# 4 ; (4) 更改表空间 SQL> alter tablespace users 2 add datafile 'E:\ORACLE\ORADATA\XINER\USERS02.DBF' size 10m; 表空间已更改。 2. 管理表空间 在oracle 里将表空间分为系统表空间和非系统表空间。 (1) 系统表空间包括系统表,数据字典,以及系统回滚段等信息。 查看系统回滚段: SQL> select * from dba_rollback_segs; (2) 非系统表空间用来分离段(分开临时数据和永久性数据,索引和表放在不同的表空间等等)可以给系统的性能带来 好处,同时可以控制分配给用户的空间限额。 控制用户对空间的使用: SQL> alter user HR 2 quota 10m on users; 用户已更改。 (3) 如何创建表空间:([]均表示可选) create tablespace xxx [datafile 'xxx']---OMF时可以不指定 [size xxx--kb,mb] [extent management local/dictionary] [default storage(xxx)] dictionary-managed tablespaces在oracle 9i 里已经不建议使用。 SQL> create tablespace ice 2 datafile 'e:\oracle\oradata\xiner\ice.dbf' size 5m 3 extent management dictionary 4 default storage( 5 initial 100k 6 next 100k 7 pctincrease 10) 8 offline; 表空间已创建。 如果表空间管理指定为Local型,则不能使用default storage。此时不会和数据字典表打交道,不会和系统表产生 资源争用,也不会产生回滚数据(因为不涉及修改系统表),其次也不会有递归的资源争用。 SQL> create tablespace ice1 2 datafile 'e:\oracle\oradata\xiner\ice1.dbf' size 5m 3 extent management local 4 uniform size 1m; 表空间已创建。 SQL> create tablespace ice2 2 datafile 'e:\oracle\oradata\xiner\ice2.dbf' size 5m 3 extent management local autoallocate; 表空间已创建。 (4) Undo 表空间用来存储undo段,不能包括其他的数据对象,使用locally管理。 undo 段主要用来保存数据改变的旧值,可以回滚transcation(rollback)。 SQL> show parameter undo SQL> create undo tablespace ice3 2 datafile 'e:\oracle\oradata\xiner\ice3.ora' size 5m 3 extent management local 4 uniform size 1m; //此时不能定义uniform size uniform size 1m * ERROR 位于第 4 行: ORA-30024: CREATE UNDO TABLESPACE 的说明无效 SQL> del 4 SQL> run 1 create undo tablespace ice3 2 datafile 'e:\oracle\oradata\xiner\ice3.ora' size 5m 3* extent management local 表空间已创建。 不能在回滚表空间建立表对象(不能放其他的数据对象): SQL> create table tt1 2 (id int) 3 tablespace ice3; create table tt1 * ERROR 位于第 1 行: ORA-30022: 无法在撤消表空间中创建段 (5) 临时表空间用来支持排序,不能包括永久的数据对象,建议使用locally管理。 SQL> create temporary tablespace ice4 2 tempfile 'e:\oracle\oradata\xiner\ice4.ora' size 5m 3 extent management local; 表空间已创建。 SQL> create table tt1 2 (id int) 3 tablespace ice4; create table tt1 * ERROR 位于第 1 行: ORA-02195: 尝试创建的PERMANENT对象在TEMPORARY表空间中 (6) 缺省的临时表空间: SQL> alter database default temporary tablespace ice4 数据库已更改。 临时表空间不可以被置为offline,也不能指定为read only,不可以被删除,除非用另外一个表空间代替它。 SQL> alter talbespace ice4 offline alter talbespace ice4 offline * ERROR 位于第 1 行: ORA-00940: 无效的 ALTER 命令 SQL> alter tablespace ice4 2 read only; alter tablespace ice4 * ERROR 位于第 1 行: ORA-03217: 变更 TEMPORARY TABLESPACE 无效的选项 (7) offline状态:对数据文件改名or搬动数据文件的位置or对数据库进行部分的修复 (7) offline状态:对数据文件改名or搬动数据文件的位置or对数据库进行部分的修复 SQL> alter tablespace users offline; 表空间已更改。 SQL> alter tablespace users online; 表空间已更改。 不可以置为offline状态的表空间包括:system表空间(如果要对系统表空间的文件进行改变则要关闭数据库); 包括active undo 段的表空间;缺省的临时表空间 (8) read only 表空间:对表空间只能进行读操作;数据对象可以从表空间删除 SQL> alter tablespace users read only; 表空间已更改。 (9) 删除表空间: SQL> create table tt1 2 (id int) 3 tablespace ice; 表已创建。 SQL> drop tablespace ice1; 表空间已丢弃。 SQL> drop tablespace ice2 2 including contents and datafiles; 表空间已丢弃。 (10) resize表空间:自动扩张(autoextend on)、手动(resize) 3. 管理数据文件 (1) 移动data files: 表空间必须是offline(使用alter tablespace xxx rename datafile 'xx' to 'xx'); 目标数据文件必须已经存在; 如果是不能处于offline状态的表空间则要关闭数据库,将其启动到mount状态,同时目标数据文件必须已经存在。 (使用alter database rename file 'xx' to 'xx') (2) 配置OMF文件来创建表空间的时候DB_CREATE_FILE_DEST会将数据文件存放在缺省的位置。如果想要更改位置则用 alter system set db_create_file_dest='xx'; 用OMF创建表空间:create tablespace xxx; 删除:drop tablespace xxx;