存储管理:
图中左边是逻辑存储结构 右边是物理存储结构
Sqlplus / as sysdba
Select name from v$datafile;
Block是io的最小单位 查看块命令是 show parameter db_block_size
Extent扩展,多个块构成一个扩展,是空间分配的最小单位。
Segment段,多个扩展构成一个段,与数据库对象的关系是一对一。分区表是一个表对应多个段。表和索引对应段
Tablespace表空间 多个段构成一个表空间,是数据库内部逻辑上的概念,虚拟的容器。
Database数据库有多个表空间构成
Sysaux 系统辅助表空间,数据会频繁空间,会滚动的更新历史记录。
Undotbs1撤销表空间 放撤销数据,修改之前的旧数据。
Temp临时表空间 不能放用户的业务数据,每次数据库重启,空间都会被清除。
查询预定义表空间:
SQL> select TABLESPACE_NAME,CONTENTS from dba_tablespaces; 查询数据库的字典表
SQL> select FILE_NAME, TABLESPACE_NAME from dba_data_files; 查看表空间
或者,在浏览器中用 服务器--存储---表空间 进行查看。
创建新表空间:
SQL> create tablespace tbs01 datafile ‘/u01/app/oracle/oradata/orcl/tbs01.dbf‘ SIZE 10M AUTOEXTEND ON NEXT 10M MAXSIZE 100M;
在图形界面中:在表空间页面下面,右边 点击 创建 名字是TBS01 区管理是本地管理 类型选永久的 状态是读写 点击添加,文件名为tbs01.dbf 文件大小10M 勾选自动扩展,增量为10M 值为100M 点击继续 在storage中,默认。
SQL> create table t1 tablespace tbs01 as select * from dba_objects where 1=0;
SQL> select bytes, blocks, extents, tablespace_name from dba_segments where segment_name=‘T1‘;
SQL> insert into t1 select * from dba_objects;
SQL> select bytes, blocks, extents, tablespace_name from dba_segments where segment_name=‘T1‘;
SQL> select extent_id, bytes, blocks from dba_extents where segment_name=‘T1‘;
SQL> insert into t1 select * from t1;
SQL> insert into t1 select * from t1;
SQL> insert into t1 select * from t1;
SQL> select bytes, blocks, extents, tablespace_name from dba_segments where segment_name=‘T1‘;
SQL> select extent_id, bytes, blocks from dba_extents where segment_name=‘T1‘;
SQL> insert into t1 select * from t1; 空间不足,报错
SQL> rollback;
SQL> select bytes, blocks, extents, tablespace_name from dba_segments where segment_name=‘T1‘; 空间不释放
SQL> alter table t1 move; 释放空间
只读表空间:
SQL> alter tablespace tbs01 read only;
SQL> delete t1; 禁止dml
SQL> insert into t1 select * from t1; 禁止dml
SQL> create table t2 (x int) tablespace tbs01; 失败
SQL> alter table t1 add (x int); 成功
SQL> update t1 set x=1; 失败
SQL> drop table t1; 成功
dml和ddl的区别
改变表空间大小:
resize,autoextend,add datafile
窗体顶端
ALTER DATABASE DATAFILE ‘/u01/app/oracle/oradata/orcl/tbs01.dbf‘ RESIZE 200M
窗体顶端
ALTER DATABASE DATAFILE ‘/u01/app/oracle/oradata/orcl/tbs01.dbf‘ AUTOEXTEND ON MAXSIZE 1000M
窗体顶端
ALTER TABLESPACE "TBS01" ADD DATAFILE ‘/u01/app/oracle/oradata/orcl/tbs01b.dbf‘ SIZE 200M
窗体底端
删除表空间:
SQL> drop tablespace tbs01 including contents and datafiles;
块的头部放块的属性
只读的效果:增删查改都不能进行 drop可以执行。
数据字典视图:用来描述整个数据库内部数据对象结构。帮助快速管理系统。基于底层的字典表构建出来的视图。用户所做的DDL语句,相当于对字典表做了dml语句。
动态数据视图:外围的工作环境的信息
与字典表的区别:1数据来源不一样。2数据保存方式不一样。3数据更新方式不一样
数据字典/动态性能视图
SQL> conn hr/hr
SQL> desc user_tables
SQL> select TABLE_NAME from user_tables;
SQL> desc user_views
SQL> select VIEW_NAME from user_views;
SQL> desc user_indexes
SQL> select INDEX_NAME, TABLE_NAME from user_indexes;
SQL> conn scott/tiger
SQL> select TABLE_NAME from user_tables;
SQL> select VIEW_NAME from user_views;
SQL> select INDEX_NAME, TABLE_NAME from user_indexes;
SQL> conn hr/hr
SQL> select count(*) from all_tables; 有权限访问的对象
SQL> conn scott/tiger
SQL> select count(*) from all_tables; 有权限访问的对象
SQL> conn hr/hr
SQL> select count(*) from dba_tables; 数据库中所有这一类的对象 (dba开头指包含全数据库)
SQL> conn scott/tiger
SQL> select count(*) from dba_tables;
SQL> desc v$instance
SQL> desc v$database