《oracle管理3》

《oracle管理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;

 

SQL> conn scott/tiger

SQL> select count(*) from dba_tables;

 

SQL> desc v$instance

SQL> desc v$database

存储管理

 

 

逻辑层次机构

Database:数据库

Tablespace :表空间          (虚拟)

Segment:段                            表或者索引对应的是段

Extent  : 扩展(区)              空间扩展的最小单位

Block :块                                   lo 的最小单位

 

查询预定义表空间:

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;

 

在指定的表空间中创建表:

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; 成功

SQL> alter tablespace tbs01 read write;

dml和ddl的区别

 

 

改变表空间大小: 用图形化界面修改

Resize  :  表空间是虚拟的,通过修改数据文件大小来改变表空间大小

Autoextend:通过自动扩展的值(增量不要太小)

add datafile:   添加数据文件的数量

ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/orcl/tbs01.dbf' RESIZE 200M 

ALTER TABLESPACE "TBS01" ADD DATAFILE '/u01/app/oracle/oradata/orcl/tbs01b.dbf' SIZE 200M AUTOEXTEND ON NEXT 200K MAXSIZE 100M

 

 

 

删除表空间:

SQL> drop tablespace tbs01 including contents and datafiles;