首页 > 代码库 > 8月7

8月7

技术分享

存储管理:

 

图中左边是逻辑存储结构     右边是物理存储结构

Sqlplus / as sysdba

Select name from v$datafile;

Blockio的最小单位  查看块命令是 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; 成功

dmlddl的区别

改变表空间大小:

resizeautoextendadd 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

 

8月7