Tablespace Segment 112 K Extent 84 K Database
Tablespace Segment 112 K Extent 84 K Database Blocks 逻 辑 结 构 图 示 Data. File Database
n n n n 1. 命令常用选项 建立表空间的用户需具有CREATE TABLESPACE系统 权限,使用CREATE TABLESPACE命令建立。该命令的 常用格式如下: CREATE TABLESPACE tablespace_name DATAFILE ‘[path]<file_name>’SIZE n[k| M] [,’[path]<file_name>’SIZE n[k|M],. . . ] [ONLINE l OFFLINE] [EXTENT MANAGEMENT DICTIONARY | LOCAL [AUTOALLOCATE |UNIFORM[SIZE n[K l M]]]]
n n n 【例7. 2】建立本地管理表空间edu,其大小为 1. 5 GB。假设使用 2个数据文件edu 01. dbf 与edu 02. dbf,分别位于D、E磁盘的子目录 XXW下,区尺寸由Oracle自动分配。 SQL>CREATE TABLESPACE edu DATAFILE ‘D: xxwedu 01. dbf’ SIZE 1000 M, ’E: xxwedu 02. dbf’ SIZE 500 M EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
n n n 【例7 -3】 建立本地管理表空间index_tbs,用 于存放索引数据。其包含 1个数据文件 index 01. dbf,区尺寸指定为统一大小 128 KB。 SQL>CREATE TABLESPACE index_tbs DATAFILE’index 01. Dbf’ SIZE 100 M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128 K;
n n 【例7. 4】 建立临时表空间tmp_tbs。临时表 空间主要用来提高排序操作。 SQL>CREATE TEMPORARY TABLESPACE tmp_tbs TEMPFILE ‘tmp. dbf’ SIZE 300 M; 使用如下的命令可以改变数据库的默认临时表 空间: SQL>ALTER DATABASE DEFAULT TEMPORARY TABLESPACE tmp_tbs;
n n 【例7. 6】 创建字典管理表空间userdata,仅包含一 个数据文件,大小 100 MB。因为从Oracle 9 i开始,默认 会创建本地管理表空间,因此在创建命令中必须用 EXTENT MANAGEMENT DICTIONARY指明是字典管理 的。 SQL>CREATE TABLESPACE userdata DATAFILE‘E: OracleoradataUSerdata 01. dbf‘SIZE 100 M EXTENT MANAGEMENT DICTIONARY; 注意,创建字典管理表空间命令只能在Oracle 9. 0. 1. 1. 1或更低版本中执行。
3. 查看表空间与数据文件信息. n (1)使用如下命令可以获得所有表空间的 名字列表。 n SQL>SELECT tablespace_name FROM dba_tablespaces; 或 n SQL>SELECT name FROM v$tablespace; n
n n n (2)如果需要查询表空间edu对应的数据文件, 应该使用dba_data__files数据字典。 SQL>SELECT file name FROM dba_data_files WHERE tablespace_name=‘EDU’; dba_data_files返回结果将不包括临时表空间 的数据文件,临时文件信息只能从 dba_tempfiles中查询得到,如下所示: SQL>SELECT file_name FROM dba_temp_files;
n n n (3)查看各表空问的区管理方式是本地管理还是字典管 理。 SQL>SELECT tablespace_name, extent_management· FROM dba_tablespaces; (4)查看本地管理的表空间的区分配类型。SYSTEM表 示由系统管理,UNIFORM表示指定区为统一大小。 SQL>SELECT tablespace_name,allocation_type FROM dba_tablespaces WHERE extent_management=’LOCAL’;
n n 而数据字典dba_free_space可以反映每 个表空间的空闲情况,如下命令所示: SQL>SELECT tablespace_name, sum(bytes)/ 1024 free MB FROM dba_free_space GROUP BY tablespace_name;
n n n n 事实上,DBA更习惯于直接看到每个表空间的空闲百 分比,此时需要结合dba_data_illes与dba_free_space 作连接查询,命令如下: SQL>SELECT b. tablespace_name’’tablespace”, sum(b. bytes)/ 1024 total_MB”, sum(a. bytes)/ 1024 free_MB”, round(sum(a-bytes)/sum(b. bytes)*i 00,1) ”free /total%” FROM dba__free__space a,dba__data__files b WHERE a. file_id=b. file_id GROUP BY b. tablespace name;
显示结果中,autoextensible列的值如果为YES, 表示允许自动扩展,为NO表示禁止自动扩展。 使用ALTER DATABASE DATAFILE命令,可以 随时更改一个文件的自动扩展设置。例如: n SQL>ALTER DATABASE DATAFILE ‘E: Oracleoradatastudentusers 01. dbf’ AUTOEXTEND ON NEXT 10 M MAXSIZE 500 M;
n n n (2)使用操作系统命令以移动或者复制文 件。 SQL>HOST COPY E: Oracleoradatastudentusers 01·dbf F: studentusers 01. dbf;
n n n n (3)执行ALTER TABLESPACE RENAME DATAFILE命令, 通知控制文件。 SQL>ALTER TABLESPACE users RENAME DATAFILE ·E: Oracle radatastudentusers 01. dbf。 TO t. F. studentusers 01. dbf’; (4)使表空间联机。 SQL>ALTER TABLESPACE users ONLINE (5)必要时使用操作系统命令删除原文件。 通过以上步骤,实现了将文件users 01. dbf从磁盘E 到磁盘F的位置移动。
n n n (2)使用操作系统命令移动文件。 SQL>HOST COPY E: Oracleoradatastudentsystem 01·dbf F: studentsystem 01. dbf;
n n n (3)装载(M 0 u. NT)数据库。 SQL>STARTUP MOUNT (4)执行ALTER DATABASE RENAME FILE命令, 通知控制文件。 SQL>ALTER DATABASE RENAME FILE ‘E. racleoradatastudentsystem 01. dbf’ TO ‘F. studentsystem 01. dbf’;
n n (5)打开数据库。 SQL>ALTER DATABASE OPEN;
n n ERROR位于第l行: ORA一01549: 表空间非空,请使用 INCLUDING CONTENTS选项 使用如下命令,不仅能删除表空间tt,同 时也删除了该表空间相关联的操作系统 文件: SQL>DROP TABLESPACE tt INCLUDING CONTENTS AND DATAFILES ;
n n 选择题 1. 查看数据文件的名称与路径信息,可以 查询( )。 A. v$controlfile B. v$datafile C. v$logfile D、v$tablespace
n n n 9.( )视图可以确定一个表空问中的剩 余可用空间。 A.dba—tablespaces B.dba free space ’ C.v$tablespace D.dba extents ‘
- Slides: 54