Oracle课程档案,第八天

时间:2021-10-03 01:29:14

存储管理

查询块的大小:show parameter db_block_size

database:数据库

tablespace:表空间

datafile:数据文件

segments:段

extents:扩展(范围)

dba_extents:每一个扩展的信息

dba_segments:段的信息

add datafile:添加数据文件

rollback:回滚(做完一个命令后悔了可以用回滚回到上一个命令)

objects:对象

user_tables:用户的表

dba:数据库所有

including:包含

contents:内容

dba_xxx(如果出现错误命令则权限不够,sys为Oracle的最高权限者。 hr scott 分别为不同的两个用户)

删除表空间 drop tablespace xxx(表空间的名字)

删除表 drop table xxx(表的名字) 怕搞混写一下。

创建新表空间:
SQL> create tablespace tbs01 datafile '/u01/app/oracle/oradata/orcl/tbs01.dbf' SIZE 10M AUTOEXTEND ON NEXT 10M MAXSIZE 100M;
(在创建新的表空间时 表空间名字后面必须加+datafile(数据文件)以及后面的文件路径)

在指定的表空间中创建表:
SQL> create table t1 tablespace tbs01 as select * from dba_objects where 1=0;

只读表空间:
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

删除表空间:
SQL> drop tablespace tbs01 including contents and datafile;

从逻辑的角度来看,一个数据库(database)下面可以分多个表空间(tablespace);一个表空间下面又可以分多个段(segment);一个数据表要占一个段(segment),一个索引也要占一个段(segment )。 一个段(segment)由多个 区间(extent)组成,那么一个区间又由一组连续的数据块(data block)组成。这连续的数据块是在逻辑上是连续的,有可能在物理磁盘上是分散。

  那么从物理的角度上看,一个表空间由多个数据文件组成,数据文件是实实在在存在的磁盘上的文件。这些文件是由oracle数据库操作系统的block 组成的。

SQL> select * from v$tablespace; 查看表空间

SQL> desc dba_data_files; 查看每个表空间有哪些数据文件

数据字典/动态性能视图

一、数据字典
数据字典记录了数据库的系统信息,它是只读表和视图的集合,数据字典的所有者为sys用户。
用户只能在数据字典上执行查询操作(select语句),而其维护和修改是由系统自动完成的。
数据字典包括数据字典基表和数据字典视图,其中基表存储数据库的基本信息,普通用户不能直接访问数据字典的基表。数据字典视图是基于数据字典基表所建立的视图,普通用户可以通过查询数据字典视图取得系统信息。

数据字典视图主要包括:user_xxx,all_xxx,dba_xxx 三种类型。(dba这类型有时得看在什么用户下 如果该用户权限不够则错误命令)

显示当前数据库全称。
SQL> select * from global_name;

显示当前用户所拥有的表。
SQL> select table_name from user_tables;

显示当前用户可以访问的所有表。
SQL> select table_name from all_tables;

查询数据库的表空间。
SQL> select tablespace_name from dba_tablespaces;

Oracle的所有动态性能视图都是以 V_$ 开头的,v_$和v$是一样的,动态性能视图的所有者为sys,一般情况下由dba或特权用户查询动态性能视图。

SQL> desc v$instance 显示所有的例 select(查询当前) desc(显示全部)

SQL> desc v$database 显示所有的数据库