1、创建一个用户表空间
create tablespace TBS datafile ‘/opt/dm8/data/DAMENG/TBS01.dbf’ size 128 autoextend on next 4 maxsize 10240,’/opt/dm8/data/DAMENG/TBS02.dbf’ size 128 autoextend on next 4 maxsize 10240;
这个语句创建了一个TBS的表空间,初始化两个文件TBS01.dbf和TBS02.dbf ,初始大小为128M 打开自动扩展,每次扩展4M,最大大小是10G
2、为表空间添加数据文件
数据文件操作
alter tablespace TBS add datafile ‘/opt/dm8/data/DAMENG/TBS03.dbf’ size 500;
alter tablespace TBS add datafile ‘/opt/dm8/data/DAMENG/TBS04.dbf’ size 128 autoextend on next 4 maxsize 10240;
SELECT ts.NAME, df.PATH FROM V
T
A
B
L
E
S
P
A
C
E
A
S
t
s
,
V
TABLESPACE AS ts, V
TABLESPACEASts,VDATAFILE AS df WHERE ts.ID= df.GROUP_ID;
3、删除表空间
删除表空间只能删除没有使用过的表空间。
drop tablespaceTBS;
4、修改表空间名称
alter tablespace TBS rename to TBS_new ;
5、修改表空间状态
a、离线表空间
alter tablespace to TBS_new offline;
b、上线表空间
alter tablespace to TBS_new online;
6、修改表空间数据缓冲区
alter tablespace TBS_new cache=“KEEP”;
alter tablespace TBS_new cache=“NORMAL”;
7、移动数据文件
要移动数据文件,必须让表空间处于脱机状态offline
alter tablespace TBS_new offline;
alter tablespaceTBS_new rename datafile ‘/opt/dm8/data/DAMENG/TBS04.dbf’ to ‘/home/dmdba/TBS06.dbf’;
alter tablespace TBS_new online;
select file_name,TABLESPACE_NAME from dba_data_files;
8、表空间的备份
backup tablespace TBS_new backupset ‘tablespace_TBS_new _bak_01’;
九、表空间恢复
1、创建一张表
create table tb1 tablespace TBS_new as select * from dba_tables ;
select table_name,owner from tb1 limit 5;
2、删除表空间的数据文件
SQL> host rm -rf /opt/dm8/data/DAMENG/TBS01.dbf;
SQL>host rm -rf /opt/dm8/data/DAMENG/TBS02.dbf;
select table_name,owner from tb1 limit 5;
执行成功。
对数据文件有效性进行验证:
sp_file_sys_check();
然后再执行查询会失败。
select table_name,owner from tb1 limit 5;
执行失败
3、通过linux 句柄进行删除文件恢复。
SQL>SP_TABLESPACE_PREPARE_RECOVER(‘TBS_NEW’);
SQL>exit
ps -ef | grep dmserver #找到DMSERVER进程
ll /proc/18459/fd
11 -> /opt/dm8/data/DAMENG/TBS01.dbf (deleted)
12 -> /opt/dm8/data/DAMENG/TBS02.dbf (deleted)
cp /proc/18459 /fd/11 /opt/dm8/data/DAMENG/TBS01.dbf
cp /proc/18459 /fd/12 /opt/dm8/data/DAMENG/TBS02.dbf
SP_TABLESPACE_RECOVER(‘TBS_new’);
cd /opt/dm8/data/DAMENG/
可以看到两个删除的文件已经恢复了。
SQL>sp_tablespace_recover(‘TBS_NEW’)
SQL>SP_FILE_SYS_CHECK();
SQL>select table_name,owner from tb1 limit 5;
可以执行成功。
4、通过consol 进行恢复
(1)、先创建一个表空间的备份
backup tablespace TBS_new backupset ‘tablespace_TBS_new _bak_02’;
(2)停止数据库服务
DmServiceDMSERVER stop
调用console
启动数据库
DmServiceDMSERVER start
验证数据是否恢复:
select table_name,owner from tb1 limit 5;
5、通过DMRMAN进行恢复
(1)停止数据库服务
DmServiceDMSERVER stop
(2)启动DMRMAN进行恢复
RESTORE DATABASE ‘/opt/dm8/data/DAMENG/dm.ini’ tablespace tbs_new FROM BACKUPSET ‘/opt/dm8/data/DAMENG/bak/tablespace_TBS_new _bak_02’ DEVICE TYPE disk;
RECOVER DATABASE ‘/opt/dm8/data/DAMENG/dm.ini’ tablespace tbs_new WITH ARCHIVEDIR ‘/home/dmdba/arc’;
验证:
DmServiceDMSERVER start
验证数据是否恢复:
select table_name,owner from tb1 limit 5;