1. 程式人生 > >20170807上課筆記

20170807上課筆記

objects rac from resize -- 視圖 ble toe bytes

Oracle邏輯結構(TableSpace→Segment→Extent→Block)

  個數據庫是由多個表空間(tablespace)組成,一個表空間又由多個段(segment)組成,一個段又由多個區(extent)組成,一個區則由多個塊(block)組成。

數據塊(data block) 是oracle最小的邏輯部件,數據塊大小合適的選擇可以提高性能;//相當於一行行數據
區段(extent)由幾個相鄰的數據塊組合在一起;
段(segment)有一組區段構成;//相當於表
表空間(tablespace)是包含物理數據文件的邏輯實體,存放數據庫的所有可用數據,因此表空間的尺寸也是包含數據的數據文件尺寸的總和,是oracle 主要的邏輯存儲結構。

Oracle物理結構(datafile→ OS block)

查詢預定義表空間:

SQL> select TABLESPACE_NAME,CONTENTS from dba_tablespaces;

SQL> select FILE_NAME, TABLESPACE_NAME from dba_data_files;

s

創建新表空間:

  1. 用戶
  2. 建立:create user 用戶名 identified by "密碼";
  3. 授權:grant create session to 用戶名;
  4. grant create table to 用戶名;
  5. grant create tablespace to 用戶名;
  6. grant create view to 用戶名;

  1. 表空間
  2. 建立表空間(一般建N個存數據的表空間和一個索引空間):
  3. create tablespace 表空間名
  4. datafile ‘ 路徑(要先建好路徑)\***.dbf ‘ size *M
  5. tempfile ‘ 路徑\***.dbf ‘ size *M
  6. autoextend on --自動增長
  7. --還有一些定義大小的命令,看需要
  8. unlimited 無最大空間限制

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> alter table t1 move; 釋放空間

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> 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 datafiles;

字典表

實際是1張視圖,本身oracle中有基表,但是晦澀難懂,切一開始為商業模式,底層不對外開放,因此oacle中創建了字典視圖即為我們平時所說的字典表(實際是視圖)供客戶使用

用戶所做的ddl語句實際就是對字典表的dml語句操作

20170807上課筆記