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;

你可能感兴趣的:(orcle的逻辑体系结构)