- 浏览: 159152 次
- 性别:
- 来自: 杭州
文章分类
最新评论
1. 创建数据字典管理的表空间
1)创建一个名为jinlian的表空间。为了平衡I/O,决定该表空间将基于两个数据文件,它们分别是J:\DISK2\MOON\JINLIAN01.DBF和J:\DISK2\MOON\JINLIAN02.DBF,其大小都为50MB(实际中可能几百兆)。为了更有效地控制磁盘的存储分配,决定使用数据字典管理的表空间。为了防止用户在创建对象时使用的EXTENT过小而产生过多的碎片,决定最小的EXTENT为50KB(MINIMUN EXTENT 50KB)。当需要磁盘空间的自动分配时第一次分配为50KB(INITIAL 50KB),第二次也为50K(NEXT 50KB),所分配的最大磁盘空间为100个EXTENTS(MAXEXTENTS 100)。从第三次分配开始按如下的公式进行分配:NEXT*(1+PCTINCREASE/100)^(n-2),其中n为分配的次数。
SQL>CREATE TABLESPACE jinlian
DATAFILE ‘J:\DISK2\MOON\JINLIAN01.DBF’ SIZE 50 M,
‘J:\DISK2\MOON\JINLIAN02.DBF’ SIZE 50 M
MINIMUM EXTENT 50K EXTENT MANAGEMENT DICTIONARY
DEFAULT STORAGE (INITIAL 50K NEXT 50K MAXEXTENTS 100 PCTINCREASE 0);
提示:从Oracle9.2开始,如果SYSTEM表空间为本地管理的,Oracle系统就不允许再创建数据字典管理的表空间。此时可将EXTENT MANAGEMENT DICTIONARY去掉。
3) 验证所创建的表空间是否为数据字典管理
SQL>SELECT tablespace_name,block_size,extent_management,segment_space_management FROM dba_tablespaces;
4) 验证其他的磁盘存储参数
SQL>select tablespace_name,initial_extent,next_extent,max_extents,pct_increase,min_extlen from dba_tablespaces;
5) 验证与文件有关的信息
SQL>select file_id,file_name,tablespace_name from dba_data_files order by file_id;
2.创建本地管理的表空间
1) 创建一个名为jinlian_index的索引表空间。该表空间基于一个数据文件,其文件名是J:\DISK6\MOON\JINLIAN_INDEX.DBF,其大小为50MB(在实际中可能为几百兆)。为了方便磁盘存储的管理,决定使用本地管理的表空间(EXTENT MANAGEMENT LOCAL)。决定每个EXTENT的大小为1MB(UNIFORM SIZE 1MB)。
SQL>CREATE TABLESPACE jinlian_index
DATAFILE ‘J:\DISK6\MOON\jinlian_index.dbf’
SIZE 50 M
EXTENT MANAGEMENT LOCAL
UNIFORM SIZE 1M;
2) 验证所创建的表空间是否为本地管理的
SQL>SELECT tablespace_name,block_size,extent_management,segment_space_management FROM dba_tablespaces WHERE tablespace_name LIKE ‘JIN%’;
3) 验证其它的磁盘存储参数
SQL>select tablespace_name,initial_extent,next_extent,max_extents,pct_increase,min_extlen from dba_tablespaces WHERE tablespace_name LIKE ‘JIN%’;
4) 验证与文件有关的信息
SQL>select file_id,file_name,tablespace_name,autoextensible from dba_data_files WHERE file_id>5 order by file_id;
3. 还原表空间
1) 还原表空间是9i引入的,它是用来自动地管理还原(回滚)数据的。还原表空间是用来存储还原段的,在还原表空间中不能包含任何其他的对象。还原表空间中的区段(extent)是由本地管理的,而且在创建还原表空间的SQL语句中只能使用DATAFILE和EXTENT MANAGEMENT子句。
2) 创建一个还原表空间jinlian_undo,它所基于的操作系统文件名为J:\DISK7\MOON\jinlian_undo.DBF,其大小为20MB。
SQL>CREATE UNDO TABLESPACE jinlian_undo DATAFILE ‘J:\DISK7\MOON\jinlian_undo.DBF’ SIZE 20 M;
3) 查看所创建的还原表空间是数据字典管理还是本地管理
SQL>SELECT tablespace_name,block_size,extent_management,segment_space_management FROM dba_tablespaces WHERE tablespace_name LIKE ‘JIN%’;
4) 查看是不是还原表空间
SQL>SELECT tablespace_name,status,contents FROM dba_tablespaces WHERE tablespace_name LIKE ‘JIN%’;
4. 临时表空间
1) 临时表空间是作为排序操作使用的。当用户的SQL语句中使用了诸如ORDER BY,GROUP BY 子句时Oracle服务器就需要对所选取的数据进行排序,这时如果排序的数据量过大,内存的排序区(在PGA中)就可能装不下,因此Oracle服务器就要把一些中间的排序结果写到磁盘上,即临时表空间中。
2) 如果在创建临时表空间之前,想查看在数据库中究竟有多少个表空间及它们的状态,使用如下命令。
SQL>select tablespace_name,status,contents from dba_tablespaces;
3) 得到临时表空间和对应的数据文件,可以使用数据字典v$tablespace和v$tempfile.
SQL>SELECT f.file#,t.ts#,f.name “File”,t.name “Tablespace” FROM v$tempfile f,v$tablespace t WHERE f.ts#=t.ts#;
4) 创建一个临时表空间jinlian_temp,文件名J:\DISK8\MOON\jinlian_temp.DBF,其大小为10MB。
SQL>CREATE TEMPORARY TABLESPACE jinlian_temp TEMPFILE ‘J:\DISK8\MOON\jinlian_temp.dbf’ SIZE 10 M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 2 M;
5) 验证表空间是否已经建立
SQL>select tablespace_name,status,contents from dba_tablespaces where tablespace_name LIKE ‘JIN%’;
6) 验证是否为临时表空间以及它所对应的数据文件是否也被创建
SQL>SELECT f.file#,t.ts#,f.name “File”,t.name “Tablespace” FROM v$tempfile f,v$tablespace t WHERE f.ts#=t.ts#;
7) 验证表空间的其它参数
SQL>SELECT tablespace_name,block_size,extent_management,segment_space_management,min_extents FROM dba_tablespaces WHERE tablespace_name LIKE ‘JIN%’;
另外,为了优化某一临时表空间中排序的效率,还应将UNIFORM SIZE设为SORT_AREA_SIZE(PGA中排序区的大小)参数的整数倍。
5. 默认临时表空间
1) 获得当前的默认临时表空间
SQL>SELECT * FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME LIKE ‘DEFAULT%’;
2) 以上一般会显示temp临时表空间为默认临时表空间,如果项目的数据处理变得越来越频繁,为了提高该项目的处理速度,决定将jinlian_temp临时表空间设为默认临时表空间。
SQL>ALTER DATABASE DEFAULT TEMPORARY TABLESPACE jinlian_temp;
3) 验证当前的默认临时表空间
SQL>SELECT * FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME LIKE ‘DEFAULT%’;
4) 当不再处理jinlian项目数据时,需注意应将默认临时表空间再改回为temp表空间
SQL>ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;
5) 验证当前的默认临时表空间
SQL>SELECT * FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME LIKE ‘DEFAULT%’;
注意:首先默认临时表空间不能被删除,除非有一个新的可以使用的默认临时表空间,另外,使用旧的临时表空间的用户被自动地赋予新的默认临时表空间。
6. 设置表空间为脱机
以下表不能被设置为脱机状态
a. 系统表空间
b. 上面有活动的还原/回滚段的表空间
c. 默认临时表空间
假设jinlian数据表空间出了些问题,需要对它进行维护
1) 获取该表空间状态
SQL>select tablespace_name,status,contents from dba_tablespaces where tablespace_name LIKE ‘JIN%’;
2) 获取该表空间对应的数据文件现在的状态
SQL>SELECT file#,name,status FROM v$datafile WHERE file#>=8;
3) 以上情况如果是联机状态,用以下命令将表空间jinlian置为脱机状态
SQL>ALTER TABLESPACE jinlian OFFLINE;
4) 验证该表空间的状态
SQL>select tablespace_name,status,contents from dba_tablespaces where tablespace_name LIKE ‘JIN%’;
SQL>SELECT file#,name,status FROM v$datafile WHERE file#>=8;
5) 当维护结束后,应尽快地使用如下命令将表空间jinlian置回为联机状态
SQL>ALTER TABLESPACE jinlian ONLINE;
6) 验证该表空间的状态
SQL>select tablespace_name,status,contents from dba_tablespaces where tablespace_name LIKE ‘JIN%’;
SQL>SELECT file#,name,status FROM v$datafile WHERE file#>=8;
7. 只读(read-only)表空间
1) 将jinlian表空间的状态改为只读
SQL>ALTER TABLESPACE jinlian READ ONLY;
2) 验证该表空间的状态
SQL>select tablespace_name,status,contents from dba_tablespaces where tablespace_name LIKE ‘JIN%’;
3) 当需要重新向jinlian表空间输入数据时,用如下命令将表空间的状态改回可读可写状态
SQL>ALTER TABLESPACE jinlian READ WRITE;
4) 验证该表空间的状态
SQL>select tablespace_name,status,contents from dba_tablespaces where tablespace_name LIKE ‘JIN%’;
8. 改变表空间的存储设置
1) 如果项目的数据量增大,为了提高该项目的数据处理速度,可将jinlian表空间的存储参数做如下的修改:MINIMUM EXTENT 为100KB,INITIAL和NEXT也都为100KB,而MAXEXTENTS为200KB。
SQL>ALTER TABLESPACE jinlian MINIMUM EXTENT 100 K;
SQL>ALTER TABLESPACE jinlian DEFAULT STORAGE (INITIAL 100 K NEXT 100 K MAXEXTENTS 200);
2) 验证磁盘存储参数
SQL>select tablespace_name,initial_extent,next_extent,max_extents,pct_increase,min_extents from dba_tablespaces WHERE tablespace_name LIKE ‘JIN%’;
9. 重置表空间的大小
1) 查询那些表空间或数据文件可以自动扩展
SQL>SELECT file_id,tablespace_name,file_name,autoextensible FROM dba_data_files WHERE file_id>=8 ORDER BY file_id;
2) 以上可见jinlian开头的表空间不能自动扩展,现在设置使jinlian_index空间的大小在达到最大值时可以自动扩展。
SQL>ALTER DATABASE DATAFILE ‘J:\DISK6\MOON\JINLIAN_INDEX.DBF’ AUTOEXTEND ON NEXT 1 M;
3) 验证jinlian_index表空间和所对应的数据文件是否自动扩展
SQL>SELECT file_id,tablespace_name,file_name,autoextensible FROM dba_data_files WHERE file_id>=8 ORDER BY file_id;
10. 手工重置数据文件的大小
1) 假如表空间中的磁盘空间已经接近用完,此时想手工地将表空间所对应的一个数据文件增加到100MB。
确定表空间所对应的数据文件的尺寸
SQL>SELECT file_id,file_name,tablespace_name,bytes/(1024*1024) MB FROM dba_data_files WHERE tablesapce_name LIKE ‘JIN%’ ORDER BY tablespace_name;
将数据文件尺寸加大到100MB
SQL>ALTER DATABASE DATAFILE ‘J:\DISK2\MOON\JINLIAN01.DBF’ RESIZE 100 M;
2) 确定表空间所对应的数据文件的尺寸
SQL>SELECT file_id,file_name,tablespace_name,bytes/(1024*1024) MB FROM dba_data_files WHERE tablesapce_name LIKE ‘JIN%’ ORDER BY tablespace_name;
3) 也可以使用如下命令向表空间中添加一个新的数据文件的方式来增加该表空间的尺寸
SQL>ALTER TABLESPACE jinlian ADD DATAFILE ‘J:\DISK6\MOON\JINLIAN03.DBF’ SIZE 80 M;
4) 确定表空间所对应的数据文件的尺寸
SQL>SELECT file_id,file_name,tablespace_name,bytes/(1024*1024) MB FROM dba_data_files WHERE tablesapce_name LIKE ‘JIN%’ ORDER BY tablespace_name;
11. 移动数据文件的方法
有时某个磁盘的I/O可能过于繁忙,这可能影响到Oracle数据库系统的整体效率,此时就应该将一个或几个数据文件移动到其他的磁盘上以平衡I/O。有时某个磁盘可能已经毁损,此时为了能使数据库系统继续运行,也可能要将一个或几个数据文件移动到其他的磁盘上。Oracle提供了两条移动数据文件的语句
1) 该语句只适用于上面没有活动的还原数据或临时段的非系统表空间中的数据文件
ALTER TABLESPACE 表空间名
RENAME DATAFILE ‘文件名’ [,’文件名’]…
TO ‘文件名’ [,’文件名’]…
2) 该语句适用于系统表空间和不能置为脱机的表空间中的数据文件
ALTER DATABASE [数据库名]
RENAME FILE ‘文件名’ [,’文件名’]…
TO ‘文件名’ [,’文件名’]…
12. 移动数据文件的应用实例
1) 查看数据文件的分布情况,查看它们是否存在I/O竞争
SQL>select file_id,file_name,tablespace_name from dba_data_files where file_name LIKE ‘%ORADATA%’ order by file_id;
2) 假如发现所有数据文件都放在一张盘上,决定先将输入/输出量较大的两个非系统表表间users和indx所对应的数据文件移动到其他磁盘上
查询表空间的当前状态
SQL>SELECT tablespace_name,status,contents FROM dba_tablespaces WHERE tablespace_name NOT LIKE ‘%JIN%’;
3) 以上发现所有表空间都是联机状态,用以下命令将users表空间和indx表空间的状态改为脱机
SQL>ALTER TABLESPACE USERS OFFLINE;
SQL>ALTER TABLESPACE INDX OFFLINE;
4) 验证表空间当前状态
SQL>SELECT tablespace_name,status,contents FROM dba_tablespaces WHERE tablespace_name NOT LIKE ‘%JIN%’;
5) 以上可见表空间users和indx都已经处在脱机状态,现在使用操作系统命令将表空间移动指定位置
SQL>HOST COPY D:\ORACLE\ORADATA\ORACLE9I\USERS01.DBF D:\DISK2\ORADATA
SQL>HOST COPY D:\ORACLE\ORADATA\ORACLE9I\INDX01.DBF D:\DISK4\ORADATA
6) 确定所有物理文件都已经复制到指定的地方后,使用如下命令重新命名表空间users和indx所对应的数据文件名(在控制文件中修改了指向这些文件的地址或指针)
SQL>ALTER TABLESPACE users RENAME DATAFILE ‘D:\ORACLE\ORADATA\ORACLE9I\USERS01.DBF’ TO ‘D:\DISK2\ORADATA\USERS01.DBF’;
SQL>ALTER TABLESPACE indx RENAME DATAFILE ‘D:\ORACLE\ORADATA\ORACLE9I\INDX01.DBF’ TO ‘D:\DISK4\ORADATA\ INDX01.DBF’;
7) 将表空间的状态改回联机
SQL>ALTER TABLESPACE USERS ONLINE;
SQL>ALTER TABLESPACE INDX ONLINE;
8) 验证表空间当前状态
SQL>SELECT tablespace_name,status,contents FROM dba_tablespaces WHERE tablespace_name NOT LIKE ‘%JIN%’;
9) 验证表空间所对应的操作系统数据文件是否已经指向了新的文件
SQL>select file_id,file_name,tablespace_name from dba_data_files where file_name LIKE ‘%ORADATA%’ order by file_id;
10) 找到旧的应废弃的物理文件,在操作系统中删除这些垃圾文件。
11) 接下来就是移动系统表空间,切换到SYSDBA用户(否则无法关闭数据库)
SQL>CONNECT SYS/MOON AS SYSDBA
关闭数据库
SQL>SHUTDOWN IMMEDIATE
立即使用如上命令启动实例并将数据库置为加载状态(数据库处在加载状态时数据文件是关闭的,与数据库处在关闭状态时效果完全一样)
SQL>STARTUP MOUNT
12) 使用操作系统命令将真正的物理数据文件复制到指定位置
SQL>HOST COPY D:\ORACLE\ORADATA\ORACLE9I\SYSTEM01.DBF D:\DISK1\ORADATA
13) 重新命名表空间system所对应的数据文件名(在控制文件中修改了指向该文件的地址或指针)
SQL>ALTER DATABASE RENAME FILE ‘D:\ORACLE\ORADATA\ORACLE9I\SYSTEM01.DBF’ TO ‘D:\DISK1\ORADATA\SYSTEM01.DBF’;
14) 马上将数据库的状态置为打开
SQL>ALTER DATABASE OPEN;
15) 验证操作是否成功
SQL>select file_id,file_name,tablespace_name from dba_data_files where file_name LIKE ‘%ORADATA%’ order by file_id;
16) 删除操作系统中废弃的垃圾文件
13. 迁移数据字典和本地管理的表空间
在Oracle8i之前的版本中,所有的数据库表空间都是数据字典管理的,Oracle提供了一种转换的方法,下面通过例子演示这一迁移过程
1) 以SYSDBA角色登录数据库
SQL>CONNECT SYS/MOON AS SYSDBA
如果想查看是以哪个用户名登录的,可以用以下命令
SQL>SHOW USER
2) 查询哪些表空间是数据字典管理的
SQL>SELECT tablespace_name,block_size,extent_management,segment_space_management,min_extents FROM dba_tablespaces WHERE dba_tablespace_name LIKE ‘JIN%’;
3) 假如表空间jinlian是数据字典管理的,可以使用以下命令迁移为本地管理的表空间
SQL>EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL(‘JINLIAN’);
注:EXECUTE为执行PL/SQL语句命令,DBMS_SPACE_ADMIN为Oracle提供的PL/SQL软件包的名称,TABLESPACE_MIGRATE_TO_LOCAL为该软件包中的一个过程名。
4) 验证是否转移成功
SQL>SELECT tablespace_name,block_size,extent_management,segment_space_management,min_extents FROM dba_tablespaces WHERE dba_tablespace_name LIKE ‘JIN%’;
5) 将本管理的jinlian表空间重新迁移为数据字典管理的表空间
SQL>EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_FROM_LOCAL(‘JINLIAN’);
6) 验证迁移是否成功
SQL>SELECT tablespace_name,block_size,extent_management,segment_space_management,min_extents FROM dba_tablespaces WHERE dba_tablespace_name LIKE ‘JIN%’;
注:建议尽量使用本地管理的表空间,这样做的好处是:数据库的管理和维护更加容易,而且可以提高数据库系统的整体效率。
14. 删除表空间
1) 有几种表空间不参删除
第一种是系统表空间,第二种是上面有活动段的表空间。
删除表空间的格式:
DROP TABLESPACE 表空间名
[INCLUDING CONTENTS [AND DATAFILES] [CASCADE CONSTRAINTS]]
其中:
INCLUDING CONTENTS 子句用来删除段。
AND DATAFILES 子句用来删除数据文件
CASCADE CONSTRAINTS 子句用来删除所有的引用完整约束
2) 删除创建的表空间,首先用以下SQL查询要删除的表空间和它们所对应的数据文件
SQL>SELECT file_id,file_name,tablespace_name FROM dba_data_files WHERE file_id>5 ORDER BY file_id;
3) 根据查询结果,找到要删除的表空间,如:
SQL>DROP TABLESPACE jinlian;
验证:
SQL>SELECT file_id,file_name,tablespace_name FROM dba_data_files WHERE file_id>5 ORDER BY file_id;
发现jinlian表空间删除,但删除的只是控制文件中指向数据文件的指针,还要利用操作系统工具删除废弃的物理文件。
4) 以上操作有些麻烦,可以用如下命令删除表空间的同时删除真正的数据文件
SQL>DROP TABLESPACE JINLIAN_INDEX INCLUDING CONTENTS AND DATAFILES;
删除临时表空间,先查询
SQL>SELECT f.file#,t.ts#,f.name “File”,t.name “Tablespace” FROM v$tempfile f,v$tablespace t WHERE f.ts#=t.ts#;
如删除如下临时表空间
SQL>DROP TABLESPACE JINLIAN_TEMP INCLUDING CONTENTS AND DATAFILES;
用查询语句验证会发现表空间删除,查看物理位置数据文件也删除。
注:INCLUDING CONTENTS AND DATAFILES是9i引入的,另外,删除表空间是一个极其危险的命令,建议在删除表空间之前要做好备份。
15. 利用OMF来管理表空间
1) 利用OMF管理表空间之前,必须使用以下方式之一来定义DB_CREATE_FILE_DEST参数
第一种在初始化参数文件中设置该参数。
第二种利用ALTER SYSTEM命令动态地设置该参数。
之后在表空间创建时,数据文件将被自动地建立并存放在DB_CREATE_FILE_DEST参数所定义的目录中,其文件的默认大小为100MB,并且AUTOEXTEND参数被设为UNLIMITED。
2) 例子
以system或sys用户登录,用以下命令设定数据文件存放的目录
SQL>ALTER SYSTEM SET db_create_file_dest=’D:\DISK5\ORADATA’;
之后,就可以使用不带文件名子句的创建表空间语句来创建一个新的表空间guifei
SQL>CREATE TABLESPACE guifei;
此时的数据文件和大小自动生成,存放在D:\DISK5\ORADATA下。
可以用如下命令为表空间guifei添加一个新文件,其大小为50MB
SQL>ALTER TABLESPACE guifei ADD DATAFILE SIZE 50 M;
用如下命令验证
SQL>SELECT file_id,file_name,tablespace_name,bytes/(1024*1024) MB FROM dba_data_files WHERE tablespace_name LIKE ‘GUI%’;
会发现创建成功,并在D:\DISK5\ORADATA下生成数据文件
将guifei表空间从数据库中删除
SQL>DROP TABLESPACE guifei;
此时用命令查询表空间已删除,且数据文件也删除。
16. 创建表空间的应用实例
前提:为工程创建4个相应的表空间,它们是数据表空间pioneer_data,索引表空间pioneer_index,还原表这间pioneer_undo和临时表空间pioneer_temp,与这些表空间对应的系统文件分别是:
J:\DISK2\MOON\pioneer_data.dbf 大小:100MB
J:\DISK4\MOON\pioneer_index.dbf 大小:100MB
J:\DISK6\MOON\pioneer_undo.dbf 大小:50MB
J:\DISK8\MOON\pioneer_temp.dbf 大小:50MB
都为本地管理的表空间。
1) 以system用户登录,查询当前数据库中所有表空间和它们所对应的操作系统文件以及它们的大小等
SQL>SELECT file_id,file_name,tablespace_name,bytes/(1024*1024) MB FROM dba_data_files;
2) 获得当前数据库中每个表空间是数据字典管理还是本地管理以及它们的数据块大小等信息
SQL>SELECT tablespace_name,block_size,extent_management,segment_space_management,min_extents FROM dba_tablespaces;
3) 获得当前数据库中每个临时表空间和与之对应的临时数据文件的信息
SQL>SELECT f.file#,t.ts#,f.name “File”,t.name “Tablespace” FROM v$tempfile f,v$tablespace t WHERE f.ts#=t.ts#;
4) 获得所需要的全部信息后,用如下SQL创建所需的表空间
SQL>CREATE TABLESPACE pioneer_data DATAFILE ‘J:\DISK2\MOON\pioneer_data.dbf’ SIZE 100 M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
SQL>CREATE TABLESPACE pioneer_index DATAFILE ‘J:\DISK4\MOON\pioneer_index.dbf’ SIZE 100 M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
SQL>CREATE TABLESPACE pioneer_undo DATAFILE ‘J:\DISK6\MOON\pioneer_undo.dbf’ SIZE 50 M EXTENT MANAGEMENT LOCAL;
SQL>CREATE TABLESPACE pioneer_temp TEMPFILE ‘J:\DISK8\MOON\pioneer_temp.dbf’ SIZE 50 M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 2 M;
5) 查询刚创建的表空间和它们所对应的操作系统文件,以及它们的大小等信息
SQL>SELECT file_id,file_name,tablespace_name,bytes/(1024*1024) MB FROM dba_data_files WHERE tablespace_name LIKE ‘PION%’;
6) 查询刚创建的4个表空间是数据字典管理的还是本地管理的,以及它们的数据块大小等信息
SQL>SELECT tablespace_name,block_size,extent_management,segment_space_management,min_extents FROM dba_tablespaces WHERE tablespace_name LIKE ‘P%’;
7) 获得刚创建的临时表空间和与之对应的临时数据文件的信息
SQL>SELECT f.file#,t.ts#,f.name “File”,t.name “Tablespace” FROM v$tempfile f,v$tablespace t WHERE f.ts#=t.ts# AND t.name LIKE ‘P%’;
8) 利用操作系统确认刚创建的表空间所对应的操作系统文件
1)创建一个名为jinlian的表空间。为了平衡I/O,决定该表空间将基于两个数据文件,它们分别是J:\DISK2\MOON\JINLIAN01.DBF和J:\DISK2\MOON\JINLIAN02.DBF,其大小都为50MB(实际中可能几百兆)。为了更有效地控制磁盘的存储分配,决定使用数据字典管理的表空间。为了防止用户在创建对象时使用的EXTENT过小而产生过多的碎片,决定最小的EXTENT为50KB(MINIMUN EXTENT 50KB)。当需要磁盘空间的自动分配时第一次分配为50KB(INITIAL 50KB),第二次也为50K(NEXT 50KB),所分配的最大磁盘空间为100个EXTENTS(MAXEXTENTS 100)。从第三次分配开始按如下的公式进行分配:NEXT*(1+PCTINCREASE/100)^(n-2),其中n为分配的次数。
SQL>CREATE TABLESPACE jinlian
DATAFILE ‘J:\DISK2\MOON\JINLIAN01.DBF’ SIZE 50 M,
‘J:\DISK2\MOON\JINLIAN02.DBF’ SIZE 50 M
MINIMUM EXTENT 50K EXTENT MANAGEMENT DICTIONARY
DEFAULT STORAGE (INITIAL 50K NEXT 50K MAXEXTENTS 100 PCTINCREASE 0);
提示:从Oracle9.2开始,如果SYSTEM表空间为本地管理的,Oracle系统就不允许再创建数据字典管理的表空间。此时可将EXTENT MANAGEMENT DICTIONARY去掉。
3) 验证所创建的表空间是否为数据字典管理
SQL>SELECT tablespace_name,block_size,extent_management,segment_space_management FROM dba_tablespaces;
4) 验证其他的磁盘存储参数
SQL>select tablespace_name,initial_extent,next_extent,max_extents,pct_increase,min_extlen from dba_tablespaces;
5) 验证与文件有关的信息
SQL>select file_id,file_name,tablespace_name from dba_data_files order by file_id;
2.创建本地管理的表空间
1) 创建一个名为jinlian_index的索引表空间。该表空间基于一个数据文件,其文件名是J:\DISK6\MOON\JINLIAN_INDEX.DBF,其大小为50MB(在实际中可能为几百兆)。为了方便磁盘存储的管理,决定使用本地管理的表空间(EXTENT MANAGEMENT LOCAL)。决定每个EXTENT的大小为1MB(UNIFORM SIZE 1MB)。
SQL>CREATE TABLESPACE jinlian_index
DATAFILE ‘J:\DISK6\MOON\jinlian_index.dbf’
SIZE 50 M
EXTENT MANAGEMENT LOCAL
UNIFORM SIZE 1M;
2) 验证所创建的表空间是否为本地管理的
SQL>SELECT tablespace_name,block_size,extent_management,segment_space_management FROM dba_tablespaces WHERE tablespace_name LIKE ‘JIN%’;
3) 验证其它的磁盘存储参数
SQL>select tablespace_name,initial_extent,next_extent,max_extents,pct_increase,min_extlen from dba_tablespaces WHERE tablespace_name LIKE ‘JIN%’;
4) 验证与文件有关的信息
SQL>select file_id,file_name,tablespace_name,autoextensible from dba_data_files WHERE file_id>5 order by file_id;
3. 还原表空间
1) 还原表空间是9i引入的,它是用来自动地管理还原(回滚)数据的。还原表空间是用来存储还原段的,在还原表空间中不能包含任何其他的对象。还原表空间中的区段(extent)是由本地管理的,而且在创建还原表空间的SQL语句中只能使用DATAFILE和EXTENT MANAGEMENT子句。
2) 创建一个还原表空间jinlian_undo,它所基于的操作系统文件名为J:\DISK7\MOON\jinlian_undo.DBF,其大小为20MB。
SQL>CREATE UNDO TABLESPACE jinlian_undo DATAFILE ‘J:\DISK7\MOON\jinlian_undo.DBF’ SIZE 20 M;
3) 查看所创建的还原表空间是数据字典管理还是本地管理
SQL>SELECT tablespace_name,block_size,extent_management,segment_space_management FROM dba_tablespaces WHERE tablespace_name LIKE ‘JIN%’;
4) 查看是不是还原表空间
SQL>SELECT tablespace_name,status,contents FROM dba_tablespaces WHERE tablespace_name LIKE ‘JIN%’;
4. 临时表空间
1) 临时表空间是作为排序操作使用的。当用户的SQL语句中使用了诸如ORDER BY,GROUP BY 子句时Oracle服务器就需要对所选取的数据进行排序,这时如果排序的数据量过大,内存的排序区(在PGA中)就可能装不下,因此Oracle服务器就要把一些中间的排序结果写到磁盘上,即临时表空间中。
2) 如果在创建临时表空间之前,想查看在数据库中究竟有多少个表空间及它们的状态,使用如下命令。
SQL>select tablespace_name,status,contents from dba_tablespaces;
3) 得到临时表空间和对应的数据文件,可以使用数据字典v$tablespace和v$tempfile.
SQL>SELECT f.file#,t.ts#,f.name “File”,t.name “Tablespace” FROM v$tempfile f,v$tablespace t WHERE f.ts#=t.ts#;
4) 创建一个临时表空间jinlian_temp,文件名J:\DISK8\MOON\jinlian_temp.DBF,其大小为10MB。
SQL>CREATE TEMPORARY TABLESPACE jinlian_temp TEMPFILE ‘J:\DISK8\MOON\jinlian_temp.dbf’ SIZE 10 M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 2 M;
5) 验证表空间是否已经建立
SQL>select tablespace_name,status,contents from dba_tablespaces where tablespace_name LIKE ‘JIN%’;
6) 验证是否为临时表空间以及它所对应的数据文件是否也被创建
SQL>SELECT f.file#,t.ts#,f.name “File”,t.name “Tablespace” FROM v$tempfile f,v$tablespace t WHERE f.ts#=t.ts#;
7) 验证表空间的其它参数
SQL>SELECT tablespace_name,block_size,extent_management,segment_space_management,min_extents FROM dba_tablespaces WHERE tablespace_name LIKE ‘JIN%’;
另外,为了优化某一临时表空间中排序的效率,还应将UNIFORM SIZE设为SORT_AREA_SIZE(PGA中排序区的大小)参数的整数倍。
5. 默认临时表空间
1) 获得当前的默认临时表空间
SQL>SELECT * FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME LIKE ‘DEFAULT%’;
2) 以上一般会显示temp临时表空间为默认临时表空间,如果项目的数据处理变得越来越频繁,为了提高该项目的处理速度,决定将jinlian_temp临时表空间设为默认临时表空间。
SQL>ALTER DATABASE DEFAULT TEMPORARY TABLESPACE jinlian_temp;
3) 验证当前的默认临时表空间
SQL>SELECT * FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME LIKE ‘DEFAULT%’;
4) 当不再处理jinlian项目数据时,需注意应将默认临时表空间再改回为temp表空间
SQL>ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;
5) 验证当前的默认临时表空间
SQL>SELECT * FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME LIKE ‘DEFAULT%’;
注意:首先默认临时表空间不能被删除,除非有一个新的可以使用的默认临时表空间,另外,使用旧的临时表空间的用户被自动地赋予新的默认临时表空间。
6. 设置表空间为脱机
以下表不能被设置为脱机状态
a. 系统表空间
b. 上面有活动的还原/回滚段的表空间
c. 默认临时表空间
假设jinlian数据表空间出了些问题,需要对它进行维护
1) 获取该表空间状态
SQL>select tablespace_name,status,contents from dba_tablespaces where tablespace_name LIKE ‘JIN%’;
2) 获取该表空间对应的数据文件现在的状态
SQL>SELECT file#,name,status FROM v$datafile WHERE file#>=8;
3) 以上情况如果是联机状态,用以下命令将表空间jinlian置为脱机状态
SQL>ALTER TABLESPACE jinlian OFFLINE;
4) 验证该表空间的状态
SQL>select tablespace_name,status,contents from dba_tablespaces where tablespace_name LIKE ‘JIN%’;
SQL>SELECT file#,name,status FROM v$datafile WHERE file#>=8;
5) 当维护结束后,应尽快地使用如下命令将表空间jinlian置回为联机状态
SQL>ALTER TABLESPACE jinlian ONLINE;
6) 验证该表空间的状态
SQL>select tablespace_name,status,contents from dba_tablespaces where tablespace_name LIKE ‘JIN%’;
SQL>SELECT file#,name,status FROM v$datafile WHERE file#>=8;
7. 只读(read-only)表空间
1) 将jinlian表空间的状态改为只读
SQL>ALTER TABLESPACE jinlian READ ONLY;
2) 验证该表空间的状态
SQL>select tablespace_name,status,contents from dba_tablespaces where tablespace_name LIKE ‘JIN%’;
3) 当需要重新向jinlian表空间输入数据时,用如下命令将表空间的状态改回可读可写状态
SQL>ALTER TABLESPACE jinlian READ WRITE;
4) 验证该表空间的状态
SQL>select tablespace_name,status,contents from dba_tablespaces where tablespace_name LIKE ‘JIN%’;
8. 改变表空间的存储设置
1) 如果项目的数据量增大,为了提高该项目的数据处理速度,可将jinlian表空间的存储参数做如下的修改:MINIMUM EXTENT 为100KB,INITIAL和NEXT也都为100KB,而MAXEXTENTS为200KB。
SQL>ALTER TABLESPACE jinlian MINIMUM EXTENT 100 K;
SQL>ALTER TABLESPACE jinlian DEFAULT STORAGE (INITIAL 100 K NEXT 100 K MAXEXTENTS 200);
2) 验证磁盘存储参数
SQL>select tablespace_name,initial_extent,next_extent,max_extents,pct_increase,min_extents from dba_tablespaces WHERE tablespace_name LIKE ‘JIN%’;
9. 重置表空间的大小
1) 查询那些表空间或数据文件可以自动扩展
SQL>SELECT file_id,tablespace_name,file_name,autoextensible FROM dba_data_files WHERE file_id>=8 ORDER BY file_id;
2) 以上可见jinlian开头的表空间不能自动扩展,现在设置使jinlian_index空间的大小在达到最大值时可以自动扩展。
SQL>ALTER DATABASE DATAFILE ‘J:\DISK6\MOON\JINLIAN_INDEX.DBF’ AUTOEXTEND ON NEXT 1 M;
3) 验证jinlian_index表空间和所对应的数据文件是否自动扩展
SQL>SELECT file_id,tablespace_name,file_name,autoextensible FROM dba_data_files WHERE file_id>=8 ORDER BY file_id;
10. 手工重置数据文件的大小
1) 假如表空间中的磁盘空间已经接近用完,此时想手工地将表空间所对应的一个数据文件增加到100MB。
确定表空间所对应的数据文件的尺寸
SQL>SELECT file_id,file_name,tablespace_name,bytes/(1024*1024) MB FROM dba_data_files WHERE tablesapce_name LIKE ‘JIN%’ ORDER BY tablespace_name;
将数据文件尺寸加大到100MB
SQL>ALTER DATABASE DATAFILE ‘J:\DISK2\MOON\JINLIAN01.DBF’ RESIZE 100 M;
2) 确定表空间所对应的数据文件的尺寸
SQL>SELECT file_id,file_name,tablespace_name,bytes/(1024*1024) MB FROM dba_data_files WHERE tablesapce_name LIKE ‘JIN%’ ORDER BY tablespace_name;
3) 也可以使用如下命令向表空间中添加一个新的数据文件的方式来增加该表空间的尺寸
SQL>ALTER TABLESPACE jinlian ADD DATAFILE ‘J:\DISK6\MOON\JINLIAN03.DBF’ SIZE 80 M;
4) 确定表空间所对应的数据文件的尺寸
SQL>SELECT file_id,file_name,tablespace_name,bytes/(1024*1024) MB FROM dba_data_files WHERE tablesapce_name LIKE ‘JIN%’ ORDER BY tablespace_name;
11. 移动数据文件的方法
有时某个磁盘的I/O可能过于繁忙,这可能影响到Oracle数据库系统的整体效率,此时就应该将一个或几个数据文件移动到其他的磁盘上以平衡I/O。有时某个磁盘可能已经毁损,此时为了能使数据库系统继续运行,也可能要将一个或几个数据文件移动到其他的磁盘上。Oracle提供了两条移动数据文件的语句
1) 该语句只适用于上面没有活动的还原数据或临时段的非系统表空间中的数据文件
ALTER TABLESPACE 表空间名
RENAME DATAFILE ‘文件名’ [,’文件名’]…
TO ‘文件名’ [,’文件名’]…
2) 该语句适用于系统表空间和不能置为脱机的表空间中的数据文件
ALTER DATABASE [数据库名]
RENAME FILE ‘文件名’ [,’文件名’]…
TO ‘文件名’ [,’文件名’]…
12. 移动数据文件的应用实例
1) 查看数据文件的分布情况,查看它们是否存在I/O竞争
SQL>select file_id,file_name,tablespace_name from dba_data_files where file_name LIKE ‘%ORADATA%’ order by file_id;
2) 假如发现所有数据文件都放在一张盘上,决定先将输入/输出量较大的两个非系统表表间users和indx所对应的数据文件移动到其他磁盘上
查询表空间的当前状态
SQL>SELECT tablespace_name,status,contents FROM dba_tablespaces WHERE tablespace_name NOT LIKE ‘%JIN%’;
3) 以上发现所有表空间都是联机状态,用以下命令将users表空间和indx表空间的状态改为脱机
SQL>ALTER TABLESPACE USERS OFFLINE;
SQL>ALTER TABLESPACE INDX OFFLINE;
4) 验证表空间当前状态
SQL>SELECT tablespace_name,status,contents FROM dba_tablespaces WHERE tablespace_name NOT LIKE ‘%JIN%’;
5) 以上可见表空间users和indx都已经处在脱机状态,现在使用操作系统命令将表空间移动指定位置
SQL>HOST COPY D:\ORACLE\ORADATA\ORACLE9I\USERS01.DBF D:\DISK2\ORADATA
SQL>HOST COPY D:\ORACLE\ORADATA\ORACLE9I\INDX01.DBF D:\DISK4\ORADATA
6) 确定所有物理文件都已经复制到指定的地方后,使用如下命令重新命名表空间users和indx所对应的数据文件名(在控制文件中修改了指向这些文件的地址或指针)
SQL>ALTER TABLESPACE users RENAME DATAFILE ‘D:\ORACLE\ORADATA\ORACLE9I\USERS01.DBF’ TO ‘D:\DISK2\ORADATA\USERS01.DBF’;
SQL>ALTER TABLESPACE indx RENAME DATAFILE ‘D:\ORACLE\ORADATA\ORACLE9I\INDX01.DBF’ TO ‘D:\DISK4\ORADATA\ INDX01.DBF’;
7) 将表空间的状态改回联机
SQL>ALTER TABLESPACE USERS ONLINE;
SQL>ALTER TABLESPACE INDX ONLINE;
8) 验证表空间当前状态
SQL>SELECT tablespace_name,status,contents FROM dba_tablespaces WHERE tablespace_name NOT LIKE ‘%JIN%’;
9) 验证表空间所对应的操作系统数据文件是否已经指向了新的文件
SQL>select file_id,file_name,tablespace_name from dba_data_files where file_name LIKE ‘%ORADATA%’ order by file_id;
10) 找到旧的应废弃的物理文件,在操作系统中删除这些垃圾文件。
11) 接下来就是移动系统表空间,切换到SYSDBA用户(否则无法关闭数据库)
SQL>CONNECT SYS/MOON AS SYSDBA
关闭数据库
SQL>SHUTDOWN IMMEDIATE
立即使用如上命令启动实例并将数据库置为加载状态(数据库处在加载状态时数据文件是关闭的,与数据库处在关闭状态时效果完全一样)
SQL>STARTUP MOUNT
12) 使用操作系统命令将真正的物理数据文件复制到指定位置
SQL>HOST COPY D:\ORACLE\ORADATA\ORACLE9I\SYSTEM01.DBF D:\DISK1\ORADATA
13) 重新命名表空间system所对应的数据文件名(在控制文件中修改了指向该文件的地址或指针)
SQL>ALTER DATABASE RENAME FILE ‘D:\ORACLE\ORADATA\ORACLE9I\SYSTEM01.DBF’ TO ‘D:\DISK1\ORADATA\SYSTEM01.DBF’;
14) 马上将数据库的状态置为打开
SQL>ALTER DATABASE OPEN;
15) 验证操作是否成功
SQL>select file_id,file_name,tablespace_name from dba_data_files where file_name LIKE ‘%ORADATA%’ order by file_id;
16) 删除操作系统中废弃的垃圾文件
13. 迁移数据字典和本地管理的表空间
在Oracle8i之前的版本中,所有的数据库表空间都是数据字典管理的,Oracle提供了一种转换的方法,下面通过例子演示这一迁移过程
1) 以SYSDBA角色登录数据库
SQL>CONNECT SYS/MOON AS SYSDBA
如果想查看是以哪个用户名登录的,可以用以下命令
SQL>SHOW USER
2) 查询哪些表空间是数据字典管理的
SQL>SELECT tablespace_name,block_size,extent_management,segment_space_management,min_extents FROM dba_tablespaces WHERE dba_tablespace_name LIKE ‘JIN%’;
3) 假如表空间jinlian是数据字典管理的,可以使用以下命令迁移为本地管理的表空间
SQL>EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL(‘JINLIAN’);
注:EXECUTE为执行PL/SQL语句命令,DBMS_SPACE_ADMIN为Oracle提供的PL/SQL软件包的名称,TABLESPACE_MIGRATE_TO_LOCAL为该软件包中的一个过程名。
4) 验证是否转移成功
SQL>SELECT tablespace_name,block_size,extent_management,segment_space_management,min_extents FROM dba_tablespaces WHERE dba_tablespace_name LIKE ‘JIN%’;
5) 将本管理的jinlian表空间重新迁移为数据字典管理的表空间
SQL>EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_FROM_LOCAL(‘JINLIAN’);
6) 验证迁移是否成功
SQL>SELECT tablespace_name,block_size,extent_management,segment_space_management,min_extents FROM dba_tablespaces WHERE dba_tablespace_name LIKE ‘JIN%’;
注:建议尽量使用本地管理的表空间,这样做的好处是:数据库的管理和维护更加容易,而且可以提高数据库系统的整体效率。
14. 删除表空间
1) 有几种表空间不参删除
第一种是系统表空间,第二种是上面有活动段的表空间。
删除表空间的格式:
DROP TABLESPACE 表空间名
[INCLUDING CONTENTS [AND DATAFILES] [CASCADE CONSTRAINTS]]
其中:
INCLUDING CONTENTS 子句用来删除段。
AND DATAFILES 子句用来删除数据文件
CASCADE CONSTRAINTS 子句用来删除所有的引用完整约束
2) 删除创建的表空间,首先用以下SQL查询要删除的表空间和它们所对应的数据文件
SQL>SELECT file_id,file_name,tablespace_name FROM dba_data_files WHERE file_id>5 ORDER BY file_id;
3) 根据查询结果,找到要删除的表空间,如:
SQL>DROP TABLESPACE jinlian;
验证:
SQL>SELECT file_id,file_name,tablespace_name FROM dba_data_files WHERE file_id>5 ORDER BY file_id;
发现jinlian表空间删除,但删除的只是控制文件中指向数据文件的指针,还要利用操作系统工具删除废弃的物理文件。
4) 以上操作有些麻烦,可以用如下命令删除表空间的同时删除真正的数据文件
SQL>DROP TABLESPACE JINLIAN_INDEX INCLUDING CONTENTS AND DATAFILES;
删除临时表空间,先查询
SQL>SELECT f.file#,t.ts#,f.name “File”,t.name “Tablespace” FROM v$tempfile f,v$tablespace t WHERE f.ts#=t.ts#;
如删除如下临时表空间
SQL>DROP TABLESPACE JINLIAN_TEMP INCLUDING CONTENTS AND DATAFILES;
用查询语句验证会发现表空间删除,查看物理位置数据文件也删除。
注:INCLUDING CONTENTS AND DATAFILES是9i引入的,另外,删除表空间是一个极其危险的命令,建议在删除表空间之前要做好备份。
15. 利用OMF来管理表空间
1) 利用OMF管理表空间之前,必须使用以下方式之一来定义DB_CREATE_FILE_DEST参数
第一种在初始化参数文件中设置该参数。
第二种利用ALTER SYSTEM命令动态地设置该参数。
之后在表空间创建时,数据文件将被自动地建立并存放在DB_CREATE_FILE_DEST参数所定义的目录中,其文件的默认大小为100MB,并且AUTOEXTEND参数被设为UNLIMITED。
2) 例子
以system或sys用户登录,用以下命令设定数据文件存放的目录
SQL>ALTER SYSTEM SET db_create_file_dest=’D:\DISK5\ORADATA’;
之后,就可以使用不带文件名子句的创建表空间语句来创建一个新的表空间guifei
SQL>CREATE TABLESPACE guifei;
此时的数据文件和大小自动生成,存放在D:\DISK5\ORADATA下。
可以用如下命令为表空间guifei添加一个新文件,其大小为50MB
SQL>ALTER TABLESPACE guifei ADD DATAFILE SIZE 50 M;
用如下命令验证
SQL>SELECT file_id,file_name,tablespace_name,bytes/(1024*1024) MB FROM dba_data_files WHERE tablespace_name LIKE ‘GUI%’;
会发现创建成功,并在D:\DISK5\ORADATA下生成数据文件
将guifei表空间从数据库中删除
SQL>DROP TABLESPACE guifei;
此时用命令查询表空间已删除,且数据文件也删除。
16. 创建表空间的应用实例
前提:为工程创建4个相应的表空间,它们是数据表空间pioneer_data,索引表空间pioneer_index,还原表这间pioneer_undo和临时表空间pioneer_temp,与这些表空间对应的系统文件分别是:
J:\DISK2\MOON\pioneer_data.dbf 大小:100MB
J:\DISK4\MOON\pioneer_index.dbf 大小:100MB
J:\DISK6\MOON\pioneer_undo.dbf 大小:50MB
J:\DISK8\MOON\pioneer_temp.dbf 大小:50MB
都为本地管理的表空间。
1) 以system用户登录,查询当前数据库中所有表空间和它们所对应的操作系统文件以及它们的大小等
SQL>SELECT file_id,file_name,tablespace_name,bytes/(1024*1024) MB FROM dba_data_files;
2) 获得当前数据库中每个表空间是数据字典管理还是本地管理以及它们的数据块大小等信息
SQL>SELECT tablespace_name,block_size,extent_management,segment_space_management,min_extents FROM dba_tablespaces;
3) 获得当前数据库中每个临时表空间和与之对应的临时数据文件的信息
SQL>SELECT f.file#,t.ts#,f.name “File”,t.name “Tablespace” FROM v$tempfile f,v$tablespace t WHERE f.ts#=t.ts#;
4) 获得所需要的全部信息后,用如下SQL创建所需的表空间
SQL>CREATE TABLESPACE pioneer_data DATAFILE ‘J:\DISK2\MOON\pioneer_data.dbf’ SIZE 100 M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
SQL>CREATE TABLESPACE pioneer_index DATAFILE ‘J:\DISK4\MOON\pioneer_index.dbf’ SIZE 100 M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
SQL>CREATE TABLESPACE pioneer_undo DATAFILE ‘J:\DISK6\MOON\pioneer_undo.dbf’ SIZE 50 M EXTENT MANAGEMENT LOCAL;
SQL>CREATE TABLESPACE pioneer_temp TEMPFILE ‘J:\DISK8\MOON\pioneer_temp.dbf’ SIZE 50 M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 2 M;
5) 查询刚创建的表空间和它们所对应的操作系统文件,以及它们的大小等信息
SQL>SELECT file_id,file_name,tablespace_name,bytes/(1024*1024) MB FROM dba_data_files WHERE tablespace_name LIKE ‘PION%’;
6) 查询刚创建的4个表空间是数据字典管理的还是本地管理的,以及它们的数据块大小等信息
SQL>SELECT tablespace_name,block_size,extent_management,segment_space_management,min_extents FROM dba_tablespaces WHERE tablespace_name LIKE ‘P%’;
7) 获得刚创建的临时表空间和与之对应的临时数据文件的信息
SQL>SELECT f.file#,t.ts#,f.name “File”,t.name “Tablespace” FROM v$tempfile f,v$tablespace t WHERE f.ts#=t.ts# AND t.name LIKE ‘P%’;
8) 利用操作系统确认刚创建的表空间所对应的操作系统文件
发表评论
-
管理还原数据
2011-01-16 15:38 8631.还原数据的管理方法 在9i或以后的版本中提供了两种方法来管 ... -
创建数据库
2011-01-16 15:37 7121.创建数据库的方法 1) 使用Oracle安装程序(Orac ... -
存储结构和它们之间的关系
2011-01-16 15:35 7341. 各种类型的段 段是在 ... -
重做日志文件
2011-01-16 15:33 9141.日志切换和检查点 数据库管理员可以根据管理和维护的需要,在 ... -
数据字典和控制文件
2011-01-16 15:32 9581.数据字典简介 数据字典分为两大类:一种为基表,另一种为数据 ... -
Oracle实例的管理
2011-01-16 15:31 7131.初始化参数文件 在Oracle9i或之后共有两种不同类型 ... -
数据库管理工具
2011-01-16 15:30 7851. 解锁普通用户 在Oracle10g或以上的版本中,出于安 ...
相关推荐
Oracle 表空间和数据文件管理 Oracle 数据库的存储结构可以分为物理存储...本章内容包括 Oracle 的存储结构、创建表空间、临时表空间、回滚表空间、表空间的状态、表空间信息查询、删除表空间和数据文件管理等内容。
"Oracle表空间和数据文件管理" Oracle数据库存储结构可以分为物理存储结构和逻辑存储结构。物理存储结构是指数据库文件在磁盘中的物理存放方式,包括数据文件、日志文件、参数文件、控制文件等。逻辑存储结构是指...
在Oracle数据库管理中,删除表空间数据文件是一项关键操作,涉及到数据的安全性和系统的稳定性。本文将详细介绍如何正确地删除Oracle表空间数据文件,探讨OFFLINE和OFFLINE DROP的区别,以及在操作系统层面删除数据...
本教程主要关注如何管理表空间和数据文件,这是Oracle数据库存储管理的基础。 首先,表空间(Tablespace)是Oracle数据库逻辑存储的单位,它将磁盘上的物理存储空间组织成逻辑单元。表空间可以分为两类:系统表空间...
在Oracle数据库管理系统中,表空间(Tablespaces)和数据文件(Data Files)是存储数据库对象如表、索引等的核心组件。本章主要探讨了如何管理和维护这些元素,特别是创建、监控和调整它们的特性。 7.1 表空间和...
本篇文章将详细讲解如何管理和操作Oracle中的表空间和数据文件。 首先,表空间的创建是数据库初始化的重要步骤。创建表空间的语法包括定义表空间名称、数据文件的位置和大小,以及可选的存储参数。例如,创建名为...
通过创建、扩展和调整表空间,以及合理分配数据文件,可以有效地管理和优化Oracle数据库的存储,满足不同应用的需求。同时,掌握如何查询和监控DBA_DATA_FILES这样的数据字典视图,可以帮助管理员实时了解数据库的...
Oracle数据库是一种广泛使用的大型关系型数据库管理系统,其中表空间(Tablespace)和数据文件(Data File)是管理和组织数据的核心概念。表空间是Oracle数据库中最大的逻辑存储结构,它为数据库对象提供了一个有序...
在Oracle数据库管理中,了解和监控表空间及数据文件的状态对于数据库管理员至关重要。表空间是数据库逻辑结构的一部分,它将数据库对象与物理存储关联起来。本文将详细介绍如何查询Oracle数据库中的表空间和数据文件...
### Oracle表空间和数据文件的管理 #### 6.1 Oracle引入逻辑结构的目的 Oracle数据库管理系统采用了一种独特的设计思路,即通过引入一系列逻辑结构来处理数据存储问题,而不是直接操作底层的数据文件。这种设计的...
### Oracle数据库、表空间及数据文件之间的关系 在Oracle数据库管理系统的架构中,数据库、表空间与数据文件之间存在着紧密的联系。理解这些组件之间的相互作用对于有效地管理和维护Oracle数据库至关重要。 #### ...
### Oracle表空间与数据文件详解 #### 一、Oracle表空间与数据文件的概念 在Oracle数据库中,**表空间**是存储数据的基本单位之一,它是一个或多个数据文件的逻辑集合。表空间提供了数据存储的逻辑视图,而数据...
对与oracle中的表空间和数据文件有了较为详细的描述,是一份不可多的学习oracle的资料
1. **Oracle 表空间(Tablespaces)**:表空间是Oracle数据库中存储数据的基本单位,它由一个或多个数据文件组成。每个表、索引和其他对象都会被分配到特定的表空间中。理解表空间的工作原理对于管理数据库空间至关...
表空间的管理还需要了解数据文件的管理,包括数据文件的创建、修改和删除等。 Oracle 表空间的应用包括数据库设计、数据库优化和数据库维护等。表空间的应用需要了解表空间的逻辑结构和物理结构,了解表空间的分类...