Oracle:Tablespace & Datafile

来源:互联网 发布:九乐软件下载 编辑:程序博客网 时间:2024/05/15 23:53

-- 创建本地管理表空间(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;