表空间
表空间的自动扩展三钟方法,,第一种方法是向表空间中添加一个或者多个数据文件,以后表空间中新的数据可以被写人新的数据文件中。第二种方法是手动扩展表空间中的数据文件。第三种方法是设置数据文件的自动扩展
查看各个表空间中的空闲空间
select tablespace_name,sum(bytes)/1024/1024 as MB from
dba_free_space group by tablespace_name;
查询表空间是否是自动扩展
Select tablespace_name,file_name,autoextensible from
dba_data_files;
结果是值为yes的为自动扩张no的不是自动扩展
查看表空间的状态
表空间的自动扩展
Alter tablespace t01 autoextend on;
手工扩展
当表空间创建成功之后,数据文件大小是确定的一旦数据文件被写满,新的数据就不能被写入这个文件了。此时可以通过sql手工扩展
Alter database datafile
‘u01/oradata/oracl/tbs1.dbf’ resize 2048M;
数据文件的自动扩展
Alter database datafile‘u01/oradata/orcl/tbs1.dbf’ autoextend on next 10M
MAXSIZE4096M
修改表空间的参数
Alter database datafile # autoextend on next
1m maxsize;
#可以是数据文件的编号也可以是路径,自动扩展的大小,最大扩展到多大。
表空间文件的重命名和重定位
如果需要改变某个数据文件的名称或者目录,可以使用两种方法来实现,分别适合数据库的两种状态
如果数据库当前运行在open状态,按照下面的步骤执行:
1、 将表空间的状态改为offline
2、 操作系统级移动数据文件或者改名
3、 执行rename命令,执行之前目标数据文件必须存在
Alter tablespace datas rename datafile
‘/u01/oradata/orcl/datas01.dbf’to ‘/u01/
oradata/orcl/datas02.dbf’;
4、 将表空间置为online
5、 备份控制文件
我准备将users表空间中的一个数据文件改名改路径,没有将整个表空间置为offline,而是将需要修改的这个数据文件置为offline,然后通过操作系统拷贝,接着在数据库中重命名。将修改后的数据文件置为online时提示介质恢复。
在此时users这个表空间是不能正常offline和online的,因为别的数据文件已经在线,修改后的这个数据文件又不可用,恢复表空间也会恢复不了的,recover
tablespace users;这时对表空间是无法操作。提示数据文件的介质恢复,我们恢复数据文件recover datafile
'/u01/app/oracle/ora11g/users11.dbf';恢复完成后将表空间状态置为online。如果修改数据文件路径第一步我们开始将表空间置为offline的话,提示介质恢复的话,就使用recover
tablespace users;注意这个方法是在数据库归档模式下,在mount状态下就不存在脱机联机。
如果数据库没有在open状态,按照下面步骤执行:
1、 启动数据库到mount状态
2、 操作系统级移动数据文件
3、 执行rename命令,执行之前目标数据文件必须存在
4、 打开数据库
获取表空间和数据文件信息
管理表空间首先需要了解数据库的表空间和数据文件信息可以在下面的数据字典和动态性能视图中获取表空间和数据文件的信息;
表空间信息:
DBA_TABLESPACES
V$TABLESPACE
数据文件信息
DBA_DATA_FILES
V$DATAFILE
临时数据文件信息:
DBA_TEMP_FILES
V$TEMPFILE
系统表空间管理
1、
空间要够,可以设置自动扩张,可以设置大表空间
2、
单个数据文件即可
3、
系统表空间如何备份,备份的时候必须是归档模式才能在open下完成备份。备份的方式
:热备,rman。非归档模式下只能冷备。只要在系统中没有对数据文件做新的加入和删除,都可以通过这个备份恢复回去。
系统表空间的热备
SQL> alter tablespace system begin
backup;
Tablespace altered.
SQL> ho cp /u01/app/oracle/ora11g/system01.dbf
/u01/app/oracle/backup/
SQL> alter tablespace system end
backup;
Tablespace altered.
Rman备份必须在归档模式下
RMAN> backup tablespace system;
System表空间的恢复
(1)
非归档模式没下备份,不能恢复
(2)
归档模式下有备份,日志完整可以恢复
(3)
归档模式下有备份,日志不完整可以恢复不能保证数据不丢失
如果系统表空间的数据文件丢失怎么恢复,第一种方法通过热备来恢复,第二种通过rman来恢复。还原方式取决你的备份方式。
通过rman来恢复,rman恢复的两个步骤,先还原在恢复
RMAN> restore tablespace system;
RMAN> recover tablespace system;
Sql->alter database open;
(4)
system表空间不能脱机,不能只读,不能改名
sysaux系统辅助表空间的管理
1、不能更改,不能drop ,不能read only
能offline但sysaux工具程序功能不能使用。
2、备份,在归档模式下热备和rman备。
Sql->alter tablespace sysaux begin backup;
Sql-> ho cp /u01/app/oracle/ora11g/sysaux.dbf
/u01/app/oracle/backup/
Sql->alter tablespace sysaux end backup;
Rman 备份
Rman->backup tablespace sysaux;
4、
损坏了怎么办?
有备份,先还原,在恢复
没有备份,将数据库脱机,将内容迁移到新库中去。
那么尝试创建这个文件
Sql->alter database create datafile 3 to
‘/u01/app/oracle/ora11g/sysaux01.dbf’
如果可以创建成功那么数据库还有救,如果不能创建将此文件进行脱机,然后打开数据库,把其他数据赶紧迁移走。
Users表空间的管理
10g以后默认的用户表空间,当你创建用户之后用户的资料放在user表空间。
查看用户默认的表空间
select * from database_properties where property_name like
'�F%';
更改用户默认表空间
Alter database default tablespace users1;
指定单个用户的表空间
create user yankefei identified by oracle default tablespace
users1;
如果你创建用户不指定的话就使用我们的默认表空间
查询每个用户的默认表空间可以查看dba_users视图
select username,default_tablespace from dba_users;
Users表空间的备份和恢复
热备
Sql->alter tablespace users1 begin
backup;
Sql->ho cp
/u01/app/oracle/ora11g/users1.dbf
/u01/app/oracle/backup
Sql->alter tablespace users1 end
backup;
Rman备份
RMAN> backup tablespace users1;
表空间有故障丢失损坏,有热备就用热备的恢复方法,rman备用rman恢复方法
假如我们删除uses1表空间的dbf
Sql->alter tablespace users1 offline
*
ERROR at line 1:
ORA-01116: error in opening database file 6
ORA-01110: data file 6:
'/u01/app/oracle/ora11g/users1.dbf'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Sql->alter database datafile 6
offline;
Database altered.
SQL> select status,enabled from v$datafile where
file#=6;
STATUS ENABLED
------- ----------
RECOVER READ WRITE
SQL> select tablespace_name,status from
dba_data_files;
TABLESPACE_NAME
STATUS
------------------------------ ---------
USERS
AVAILABLE
UNDOTBS1
AVAILABLE
SYSAUX
AVAILABLE
SYSTEM
AVAILABLE
USERS
AVAILABLE
USERS1
AVAILABLE
SQL> ho cp /u01/app/oracle/backup/users1.dbf
/u01/app/oracle/ora11g/
SQL> alter tablespace users1 online;
alter tablespace users1 online
*
ERROR at line 1:
ORA-01113: file 6 needs media recovery
ORA-01110: data file 6:
'/u01/app/oracle/ora11g/users1.dbf'
SQL> recover tablespace users1;
Media recovery complete.
SQL> alter tablespace users1 online;
Tablespace altered.
使用rman恢复
RMAN> restore tablespace users1;
RMAN> recover tablespace users1;
SQL> alter tablespace users1 online;
Tablespace altered.
用户自定义的表空间没有备份,而且日志完整是可以恢复,不建议用时间长了归档不完整就不能保证恢复
Alter database create ‘.....’ as ‘.......’
SQL> alter tablespace users1 offline;
alter tablespace users1 offline
*
ERROR at line 1:
ORA-01116: error in opening database file 6
ORA-01110: data file 6:
'/u01/app/oracle/ora11g/users1.dbf'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
SQL>
alter database datafile 6 offline;
Database altered.
SQL> alter database create datafile 6 as
'/u01/app/oracle/ora11g/users1.dbf';
Database altered.
SQL> recover tablespace users1;
Media recovery complete.
SQL>
alter tablespace users1 online;
Tablespace altered.
没有备份,日志不完整,不能完成恢复的,怎么办?
Alter database datafile# offline;
Alter database open;
临时表空间
Temp有默认的临时表空间、不需要备份、
如何建立临时表空间、表空间组、
如何指定排序的表空间
临时表空间不在了 丢失了损坏了不存在了?1第一个办法建立新的设置为默认的,删除老的.2、第二个办法直接给临时表空间加tempfile就可以了。表空间组,加成员进去