orcle的邏輯體系結構


系統默認表空間
SQL>select tablespace_name,block_size from dba_tablespaces;

TABLESPACE_NAME      BLOCK_SIZE
-------------------- ----------
SYSTEM               8192
SYSAUX               8192
UNDOTBS1           8192   
TEMP               8192
USERS               8192


ORACLE後臺進程
[oracle@ora66 admin]$ ps -ef |grep oracle

SQL>select paddr,description from v$bgprocess where paddr !='00' order by paddr desc;

歸檔進程ora_ARCn_$ORACLE_SID

診斷性進程:DIAG,在oracle11g以前的版本,該進程用於rac環境。負責監視實例的總體狀況,並且會捕獲實例失敗的所需信息。
後臺進程有:
DBWR(Database Write) : 數據庫寫入程序
LGWR(Log Write) : 日誌寫入程序
CKPT(Checkpoint) : 檢查點
SMON (System Monitor): 系統監控
PMON(Process Monitor) : 進程監控
ARCH(Archive) : 歸檔
RECO : 恢復
LCKn : 封鎖;
vktm:虛擬時間管理器,爲oracle實現一個一致的,細粒度的時鐘。
gen0:通用任務執行進程,分擔另外某個進程的阻塞處理,並在後臺完成所阻塞的操做。
dbrm:數據庫資源管理進程,實現一個數據庫實例配置的資源計劃。
psp0:進程生氣器,負責生成各個後臺進程/線程,會在實例啓動時完成它的大部分工做。

####block
block爲8KB(8192字節),爲oracle最小的邏輯單位

SYS@orcl 10:55:02>show parameter db_block_size;

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
db_block_size                 integer     8192

--查看錶空間的blocksize
select tablespace_name,block_size from dba_tablespaces;

oracl最小擴展單位和分配單位爲extent,默認爲1MB

--表空間  ;

    CREATE tablespace sdt  
    DATAFILE '/u01/app/oracle/oradata/orcl/tbs_01.dbf'   size 800M  
            extent management local segment space management auto;        
      
--2.建用戶  
    create user demo identified by demo   
    default tablespace demo  temporary tablespace temp;
       
--3.賦權  
    grant connect,resource to demo;  
    grant create sequence to demo;  
    grant create  table to demo;  
    grant delete table to demo;  
    grant insert  table to demo;  
    grant select table to demo;  
    grant unlimited tablespace to demo;  
    grant execute  procedure to demo;  
    grant update  table to demo;  
    grant create  view to demo;  
    grant dba to demo;



grant connect,resource to demo;

CONNECT角色: --是授予最終用戶的典型權利,最基本的

  ALTER SESSION --修改會話

  CREATE CLUSTER --創建聚簇

  CREATE DATABASE LINK --創建數據庫連接

  CREATE SEQUENCE --創建序列

  CREATE SESSION --創建會話

  CREATE SYNONYM --創建同義詞

  CREATE VIEW --創建視圖

RESOURCE角色: --是授予開發人員的

  CREATE CLUSTER --創建聚簇

  CREATE PROCEDURE --創建過程

  CREATE SEQUENCE --創建序列

  CREATE TABLE --建表

  CREATE TRIGGER --創建觸發器

  CREATE TYPE --創建類型
--建立表
    create table ssr(id int) tablespace sdt;
--查詢表結構
GUOYF@orcl 03:31:01>select dbms_metadata.get_ddl('TABLE','SSR') from dual;
select dbms_metadata.get_ddl('TABLE','SSR') from dual;

select segment_name, extents, bytes from user_segments;
no rows selected  沒有分配任何extents

--爲表插入數據後分配區
insert into ssr select rownum from dual connect by level < 100000;

 使用connect by level/rownum實現連續數字的插入
 dual 確實是一張表.是一張只有一個字段,一行記錄的表.
習慣上,咱們稱之爲'僞表'.由於他不存儲主題數據.

--查看ssr表區分配的空間信息
select segment_name,extent_id,tablespace_name,bytes/1024/1024 bytes_mb
blocks from user_extents where segment_name='SSR';


--查看索引段
create index idx_id on ssr(id);

select segment_name,segment_type,tablespace_name,blocks,extents,bytes/1024/1024 bytes_mb from user_segments;

SEGMENT_NAME         SEGMENT_TYPE    TABLESPACE_NAME      BLOCKS    EXTENTS   BYTES_MB
-------------------- ------------------ -------------------- ---------- ---------- ----------
SSR             TABLE        TBS_01                384     18        3
IDX_ID             INDEX        TBS_01                256     17        2
--查看索引佔了多少個區
select count(*) from user_extents where segment_name='IDX_ID';

  COUNT(*)
----------
    17


--調整block size

alter system set db_16k_cache_size=100m;

create tablespace tbs_16k  blocksize 16k datafile '/u01/app/oracle/oradata/orcl/tbs_16k_01.dbf'

size 100m autoextend on extent management local segment space management auto;

autoextend on next 5M maxsize 3000M; 自動擴展表空間,每次5M 最大 3000M
extent management local爲本地管理表空間
segment space management auto 爲自動管理表空間

select tablespace_name,block_size from dba_tablespaces;



--查看每次分配區大小
select segment_name,segment_type,tablespace_name,bytes from user_extents;

--查看segment

select segment_name,segment_type,tablespace_name,blocks,extents,bytes/1024/1024 bytes_mb from user_segments where segment_name='SSR';

--查詢語句
v$tablespace  v$datafile表空間的數據文件
col name for a20;

查詢表空間名 數據文件名 數據文件大小 快的大小
select a.ts#, a.name,b.name,b.bytes,b.block_size from v$tablespace a join v$datafile b on a.ts#=b.ts#;select a.ts#, a.name,b.name,b.bytes,b.block_size from v$tablespace a join v$datafile b on a.ts#=b.ts#;
       TS# NAME         NAME              BYTES BLOCK_SIZE
---------- -------------------- -------------------- ---------- ----------
     0 SYSTEM        /u01/app/oracle/orad  723517440       8192
                ata/orcl/system01.db
                f

     1 SYSAUX        /u01/app/oracle/orad  587202560       8192
                ata/orcl/sysaux01.db
                f

     2 UNDOTBS1        /u01/app/oracle/orad  104857600       8192
                ata/orcl/undotbs01.d
                bf

     4 USERS        /u01/app/oracle/orad    5242880       8192
                ata/orcl/users01.dbf

     6 EXAMPLE        /u01/app/oracle/orad  104857600       8192
                ata/orcl/example01.d
                bf

     7 TBS_01        /u01/app/oracle/orad  104857600       8192


爲一個表空間增長多個datafile
alter tablespace tbs_01 add datafile '/u01/app/oracle/oradata/orcl/tbs_01_02.dbf' size 50m autoextend on;



建立臨時表空間
create temporary tablespace tmp_01 tempfile '/u01/app/oracle/oradata/orctmp_01.dbf' size 50m;
臨時表空間的數據文件
SQL> select file#,ts#,name,block_size from v$tempfile;
建立undo表空間

SQL> create undo tablespace undotbs_01 datafile '/u01/app/oracle/oradata/orcl/undotbs_1.dbf' size 50m;


刪除表空間  
drop tablespace 名字 including contents and datafiles;

alter user 用戶名 quota unlimited on 表空間;  
或 alter user 用戶名 quota *M on 表空間;  

刪除表
drop table ssr purge;數據庫

相關文章
相關標籤/搜索