Oracle:Tablespace & Datafile
Oracle:Tablespace & Datafile
-- 创建本地管理表空间(LMT) CREATE TABLESPACE TEST DATAFILE 'F:/temp/test1.dbf' SIZE 5M AUTOEXTEND ON NEXT 1M MAXSIZE 10M,'F:/temp/test2.dbf' SIZE 5M; -- 创建字典管理的表空间(DMT) CREATE TABLESPACE TEST DATAFILE 'D:\APP\ORADATA\test01.DBF' SIZE 5M MINIMUM EXTENT 50K EXTENT MANAGEMENT DICTIONARY DEFAULT STORAGE (INITIAL 50K NEXT 50K MAXEXTENTS 100 PCTINCREASE 0); CREATE TABLESPACE TEST DATAFILE 'D:\APP\ORADATA\test01.DBF' SIZE 5M AUTOEXTEND ON NEXT 1M MAXSIZE 20M, 'D:\APP\ORADATA\test02.DBF' SIZE 5M AUTOEXTEND OFF EXTENT MANAGEMENT LOCAL LOGGING ONLINE UNIFORM SIZE 1M; -- 创建索引表空间 CREATE TABLESPACE test_index DATAFILE 'D:\APP\ORADATA\test_index01.DBF' SIZE 5M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M; -- 创建UNDO表空间 CREATE UNDO TABLESPACE test_undo DATAFILE 'D:\APP\ORADATA\test_undo01.DBF' SIZE 5M; -- 删除表空间 DROP TABLESPACE TEST INCLUDING CONTENTS AND DATAFILES; -- 查询数据库默认表空间 SELECT * FROM database_properties WHERE property_name IN ('DEFAULT_TEMP_TABLESPACE','DEFAULT_PERMANENT_TABLESPACE'); -- 修改数据库默认表空间 ALTER DATABASE DEFAULT TABLESPACE USERS; ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEST_temp; -- 说明 create tablespace 默认是LOGGING ,LOCAL MANAGEMENT system如果为local管理则不允许再建dictionary管理表空间 数据字典: -- 表空间 SELECT a.ts# ,b.* FROM v$tablespace a ,dba_tablespaces b WHERE a.name = b.tablespace_name; -- 表空间包含的数据文件 SELECT * FROM dba_data_files; SELECT * FROM v$datafile; -- 数据文件改变大小,可以使用文件名或file_ID ALTER DATABASE DATAFILE 'D:\APP\ORADATA\TEST02.DBF' RESIZE 6M; ALTER DATABASE DATAFILE 8 RESIZE 8M; -- 表空间增加数据文件 ALTER TABLESPACE TEST ADD DATAFILE 'D:\APP\ORADATA\TEST03.DBF' SIZE 5M AUTOEXTEND OFF; -- 创建临时表空间,临时表空间只能用标准块,总是nologging CREATE TEMPORARY TABLESPACE test_temp TEMPFILE 'D:\APP\ORADATA\test_temp01.DBF' SIZE 5M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M; SELECT * FROM dba_temp_files; SELECT * FROM v$tempfile; -- 表空间脱机/联机 ALTER TABLESPACE TEST_undo OFFLINE; -- UNDO表空间存在回滚段则不能脱机 ALTER TABLESPACE TEST OFFLINE; ALTER TABLESPACE TEST ONLINE; -- 表空间只读/可读写 ALTER TABLESPACE TEST READ ONLY; ALTER TABLESPACE TEST READ WRITE; /** 表空间移动的两种方法 **/ ---- 1.表空间脱机 ALTER TABLESPACE TEST OFFLINE; ---- 2.移动文件 host copy D:\APP\ORADATA\TEST03.DBF D:\APP\ORADATA\TEST13.DBF ---- 3.更新表空间的数据文件 ALTER TABLESPACE TEST RENAME DATAFILE 'D:\APP\ORADATA\TEST03.DBF' TO 'D:\APP\ORADATA\TEST13.DBF'; ---- 4.表空间联机 ALTER TABLESPACE TEST ONLINE; ---- 5.删除原数据文件 host del D:\APP\ORADATA\TEST03.DBF ---- 1.数据库置为mount状态 starup FORCE MOUNT; ---- 2.移动文件 host copy D:\APP\ORADATA\TEST13.DBF D:\APP\ORADATA\TEST03.DBF ---- 3.更新表空间的数据文件,数据库名(v$database.name) ALTER DATABASE demo RENAME FILE 'D:\APP\ORADATA\TEST13.DBF' TO 'D:\APP\ORADATA\TEST03.DBF'; ---- 4.启动数据库 ALTER DATABASE OPEN; ---- 5.删除原数据文件 host del D:\APP\ORADATA\TEST13.DBF -- 表空间、数据文件的介质恢复 RECOVER TABLESPACE TEST; RECOVER DATAFILE 'D:\APP\ORADATA\TEST03.DBF'; -- 字典管理 --> 本地管理 EXEC dbms_space_admin.tablespace_migrate_to_local('TEST'); -- 本地管理 --> 字典管理 EXEC dmbs_space_admin.tablespace_migrate_from_local('TEST'); -- OMF管理 ALTER SYSTEM SET db_create_file_dest = 'D:\app\OraData\OMF'; CREATE TABLESPACE testomf; ALTER TABLESPACE testomf ADD DATAFILE 'D:\app\OraData\OMF\DEMO\DATAFILE\testomf01.dbf' SIZE 5M;