动态性能视图
当oracle数据库在启动的时候就会建立动态性能视图,当关闭的时候就会删除动态性能视图。
Oracle数据库的动态视图都是以v_$开始的,并且oracle为每个动态性能视图提供相应的同义词,并且同义词是以v$开始。例如:v_$datafile的同义词为v$datafile;动态视图所有者为 sys 一般情况有dba或者特权用户来查询动态性能视图。用到的不多。
管理表空间和数据文件
表空间是数据库的逻辑组成部分,从物理上讲,数据库数据存放在数据文件中;从逻辑上讲:数据库则是存放在表空间中,表空间由一个或是多个数据文件组成。
数据库的逻辑结构
Oracle中逻辑结构包括表空间、段、区和块。
说明一下数据库由表空间构成,而表空间由段构成,段有事由区构成,区有是由oracle块构成的这样的一种结构。可以提高数据库的效率。
表空间是没有限制的,使用数据文件构成。
表空间用于从逻辑上组织数据库的数据,数据库逻辑上是由一个或者多个表空间组成。通常表空间可以达到作用:
1. 控制数据库占用的磁盘空间。
2. dba可以将不同数据类型部署到不同的位置,这样有利于提高i/o性能,有利于备份和恢复等管理操作。
创建表空间
Create tablespace 命令,需要注意的是,一般情况下,建立表空间的特权用户或者是dba来执行。如果用其他用户来建立,则需要具备 create tablespace的系统权限。
创建数据表空间
建立数据库后为方便管理表,最好建立自己的表空间。
Create tablespace 表空间名 datafile ‘d:\文件夹名\xxx.dbf’(文件名)size 20m (空间大小,不能超500m)uniform size 128k(区大小)
Create tablespace hfc datafile 'd:\hfc\hfc.dbf'size 20m uniform size 128k;
使用表空间
Create table hfc (id number(4),name varchar(10))tablespace hfc;
改变表空间的状态
建立表空间的时候,他是处于联机(online)状态。此时可以访问。并且表空间是可读可写的,查询数据库,表空间执行各种语句,但是在进行系统维护的时候,可能需要改变表空间的状态。有特权用户和 dba来进行操作。
表空间脱机/联机
Alter tablespace 空间名 offline/online;
只读表空间
建立表空间的时候,表空间可以读写,如果只不希望表空间执行。Update,delete, insert操作。就可把表修改为只读。
Alter tablespace 空间名 read only/read write;
知道表空间名,显示该表空间的所有表
Select *from all_tables where tablespace_name=’空间名’;
知道表查询表空间
Select tablespace_name,table_name from user_tables where table_name=’HFC’;
SYSTEM 表空间是不能进行读写的,因为这个是系统表空间,一般情况下,普通表空间是可以读写限制的。
删除表空间
特权用户和dba用户来操作,具备drop tablespace的系统权限。
Drop tablespace ‘表空间名字’including contents(数据库对象) and datafiles(数据库文件也删除);
扩展表空间
表空间是有数据文件组成,空间大些实际是数据库文件相加后的大小,如果空间满了再向里面存放数据就会出现空间不足的错误
例子:
1.创建一个表空间 hfc
2.建立一个表hfc,结构和emp一样。
像表中加数据 insert into hfc select *from emp;
3. 出现无法扩展的问题。
4. 扩展表空间,为其增加存储空间 3种方法:
第一种:增加数据文件
Alter tablespace hfc add datafile ‘d:\hfc.dbf’size 20m;
第二种 手动增加数据文件的大小
Alter database datafile 'd:\hfc.dbf' (把原来的扩充到80)Resize 80m;
第三种 自动增长
Alter tablespace hfc ‘d:\hfc.dbf’autoextend on next 10m maxsize 500m;
alter database datafile 'd:\hfc\hfc.dbf' autoextend on next 50m maxsize 500m;
/*分为四步 */
/*第1步:创建临时表空间 */
create temporary tablespace user_temp
tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
/*第2步:创建数据表空间 */
create tablespace user_data
logging
datafile 'D:\oracle\oradata\Oracle9i\user_data.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
/*第3步:创建用户并指定表空间 */
create user username identified by password
default tablespace user_data
temporary tablespace user_temp;
/*第4步:给用户授予权限 */
grant connect,resource,dba to username;
移动数据文件
数据文件所在的磁盘坏掉,该文件就不能使用,这样就需要将这些文件的副本移动到其他磁盘然后恢复。
1.确定数据文件所在的表空间
Select tablespace_name from dba_data_files where file_name=’d:\hfc.dbf’;
2.使表空间脱机
确保数据文件的一致性,将表空间转换成offline
Alter tablespace hfc offline ;
1. 数据迁移
Host move d:\hfc.dbf c:\hfc.dbf;
2. 物理修改完后执行alter tablespace hfc rename datafile d:\hfc.dbf c:\hfc.dbf; 对数据库文件进行逻辑修改
3. 表空间联机
移动数据后联机数据库
Alter tablespace hfc online ;
显示表空间的信息
查询数据字典视图 dba_tablespace 显示表空间信息
Select tablespace_name from dba_tablespaces;
显示表空间所包含的数据文件
查询数据字典视图 dba_data_files 可显示表空间所包含的数据文件
Select file_name, bytes from dba-data_files where tablespace _name=’hfc’;
总结
1. 数据文件和表空间的作用
2. 常用表空间(索引表空间,undo表空间,临时表空间,非标准块表空间)。
3. 表空间的状态(online ,offline ,read write ,read only)状态方法,以及改变表空间的方法。
4. 移动数据的原因