oracle自动段管理ASSM笔记

CREATE TABLESPACE demo

DATAFILE ‘J:\app\wufan\oradata\orcl\demo01.dbf‘

SIZE 50M

EXTENT MANAGEMENT LOCAL          --一定是本地管理

SEGMENT SPACE MANAGEMENT AUTO;   --ASSM管理的标志

CREATE TABLE demotab (x NUMBER)

TABLESPACE demo

STORAGE (INITIAL 1000 K);

SQL> show user

USER is "SCOTT"

SQL> SELECT t.table_name,

2         t.initial_extent,

3         t.next_extent,

4         t.pct_free,

5         t.pct_used

6    FROM user_tables t

7   WHERE   t.table_name = ‘DEMOTAB‘;

TABLE_NAME                     INITIAL_EXTENT NEXT_EXTENT   PCT_FREE   PCT_USED

------------------------------ -------------- ----------- ---------- ----------

DEMOTAB                               1024000                     10

SQL> set serveroutput on

SQL> exec scott.show_space(‘demotab‘,‘auto‘,‘T‘,‘Y‘);

Total Blocks............................0

Total Bytes.............................0

Unused Blocks...........................0

Unused Bytes............................0

Last Used Ext FileId....................0

Last Used Ext BlockId...................0

Last Used Block.........................0

*************************************************

The segment is analyzed

0% -- 25% free space blocks.............0

0% -- 25% free space bytes..............0

25% -- 50% free space blocks............0

25% -- 50% free space bytes.............0

50% -- 75% free space blocks............0

50% -- 75% free space bytes.............0

75% -- 100% free space blocks...........0

75% -- 100% free space bytes............0

Unused Blocks...........................0

Unused Bytes............................0

Total Blocks............................0

Total bytes.............................0

PL/SQL procedure successfully completed.

SQL> SELECT   t.segment_name, t.extent_id, t.block_id

2    FROM   dba_extents t

3   WHERE   t.segment_name = ‘DEMOTAB‘;

no rows selected

SQL>

该实验刚好佐证了11g创建一个表,只是产生了一个表定义,并未分配任何空间

附show_space过程代码,觉得这段代码挺有用,记下来mark 一下:

CREATE OR REPLACE PROCEDURE show_space (p_segname_1 IN varchar2,

                                        p_space IN varchar2 DEFAULT 'MANUAL' ,

                                        p_type_1 IN varchar2 DEFAULT 'TABLE' ,

                                        p_analyzed IN varchar2 DEFAULT 'N' ,

                                        p_owner_1 IN varchar2 DEFAULT USER

)

AS

   p_segname              VARCHAR2 (100);

   p_type                 VARCHAR2 (10);

   p_owner                VARCHAR2 (30);

   l_unformatted_blocks   NUMBER;

   l_unformatted_bytes    NUMBER;

   l_fs1_blocks           NUMBER;

   l_fs1_bytes            NUMBER;

   l_fs2_blocks           NUMBER;

   l_fs2_bytes            NUMBER;

   l_fs3_blocks           NUMBER;

   l_fs3_bytes            NUMBER;

   l_fs4_blocks           NUMBER;

   l_fs4_bytes            NUMBER;

   l_full_blocks          NUMBER;

   l_full_bytes           NUMBER;

   l_free_blks            NUMBER;

   l_total_blocks         NUMBER;

   l_total_bytes          NUMBER;

   l_unused_blocks        NUMBER;

   l_unused_bytes         NUMBER;

   l_lastusedextfileid    NUMBER;

   l_lastusedextblockid   NUMBER;

   l_last_used_block      NUMBER;

   PROCEDURE p (p_label IN varchar2, p_num IN number)

   IS

   BEGIN

      DBMS_OUTPUT.put_line (RPAD (p_label, 40, '.') || p_num);

   END;

BEGIN

   p_segname                 := UPPER (p_segname_1);          -- rainy changed

   p_owner                   := UPPER (p_owner_1);

   p_type                    := p_type_1;

   IF (p_type_1 = 'i' OR p_type_1 = 'I')

   THEN                                                        --rainy changed

      p_type   := 'INDEX';

   END IF;

   IF (p_type_1 = 't' OR p_type_1 = 'T')

   THEN                                                        --rainy changed

      p_type   := 'TABLE';

   END IF;

   IF (p_type_1 = 'c' OR p_type_1 = 'C')

   THEN                                                        --rainy changed

      p_type   := 'CLUSTER';

   END IF;

   DBMS_SPACE.unused_space (segment_owner => p_owner,

                            segment_name => p_segname,

                            segment_type => p_type,

                            total_blocks => l_total_blocks,

                            total_bytes => l_total_bytes,

                            unused_blocks => l_unused_blocks,

                            unused_bytes => l_unused_bytes,

                            last_used_extent_file_id => l_lastusedextfileid,

                            last_used_extent_block_id => l_lastusedextblockid,

                            last_used_block => l_last_used_block

   );

   IF p_space = 'MANUAL' OR (p_space <> 'auto' AND p_space <> 'AUTO')

   THEN

      DBMS_SPACE.free_blocks (segment_owner => p_owner,

                              segment_name => p_segname,

                              segment_type => p_type,

                              freelist_group_id => 0,

                              free_blks => l_free_blks

      );

      p ('Free Blocks', l_free_blks);

   END IF;

   p ('Total Blocks', l_total_blocks);

   p ('Total Bytes', l_total_bytes);

   p ('Unused Blocks', l_unused_blocks);

   p ('Unused Bytes', l_unused_bytes);

   p ('Last Used Ext FileId', l_lastusedextfileid);

   p ('Last Used Ext BlockId', l_lastusedextblockid);

   p ('Last Used Block', l_last_used_block);

   /*IF the segment is analyzed */

   IF p_analyzed = 'Y'

   THEN

      DBMS_SPACE.space_usage (segment_owner => p_owner,

                              segment_name => p_segname,

                              segment_type => p_type,

                              unformatted_blocks => l_unformatted_blocks,

                              unformatted_bytes => l_unformatted_bytes,

                              fs1_blocks => l_fs1_blocks,

                              fs1_bytes => l_fs1_bytes,

                              fs2_blocks => l_fs2_blocks,

                              fs2_bytes => l_fs2_bytes,

                              fs3_blocks => l_fs3_blocks,

                              fs3_bytes => l_fs3_bytes,

                              fs4_blocks => l_fs4_blocks,

                              fs4_bytes => l_fs4_bytes,

                              full_blocks => l_full_blocks,

                              full_bytes => l_full_bytes

      );

      DBMS_OUTPUT.put_line (RPAD (' ', 50, '*'));

      DBMS_OUTPUT.put_line ('The segment is analyzed');

      p ('0% -- 25% free space blocks', l_fs1_blocks);

      p ('0% -- 25% free space bytes', l_fs1_bytes);

      p ('25% -- 50% free space blocks', l_fs2_blocks);

      p ('25% -- 50% free space bytes', l_fs2_bytes);

      p ('50% -- 75% free space blocks', l_fs3_blocks);

      p ('50% -- 75% free space bytes', l_fs3_bytes);

      p ('75% -- 100% free space blocks', l_fs4_blocks);

      p ('75% -- 100% free space bytes', l_fs4_bytes);

      p ('Unused Blocks', l_unformatted_blocks);

      p ('Unused Bytes', l_unformatted_bytes);

      p ('Total Blocks', l_full_blocks);

      p ('Total bytes', l_full_bytes);

   END IF;

END;
时间: 2025-01-02 04:13:18

oracle自动段管理ASSM笔记的相关文章

设置ORACLE自动内存管理

文章参考:ORACLE 11g官方文档[Managing Memory] 前言:之前搭建数据库集群环境后,现场的维护人员不知何时改为了手动内存管理,且参数设置存在不合理,导致客户plsql执行报错,如下所示: 查看数据库日志,有如下提示: Wed Mar 15 00:15:08 2017 Errors in file /app/oracle/diag/rdbms/resdb/resdb1/trace/resdb1_ora_12320832.trc  (incident=441054): ORA-

Oracle 自动内存管理 SGA、PGA 详解

ASMM自动共享内存管理: 自动根据工作量变化调整 最大程度地提高内存利用率 有助于消除内存不足的错误 [email protected]>show parameter sga NAME                                 TYPE        VALUE ------------------------------------ ----------- ------------------------------ lock_sga                  

本地管理表空间(LMT)与自动段空间管理(ASSM)概念

创建表空间时,extent management local 定义本地管理表空间(LMT),segment space management auto 定义自动段空间管理(ASSM). extent management local(本地管理表空间)是在表空间的头部用位图区记录extent(区)的使用情况(是否为free).与之相对的是字典管理表空间,用数据字典记录extent使用信息. segment space management auto(段空间自动管理)是在段的头部使用位图管理块(BM

Arc 自动内存管理 分类Category 类扩展 Block 代码段 和 Protocol协议的一些简单知识的总结

1. Arc的使用 Arc是自动内存管理: arc的使用原则 1).只要对象没有任何强类型指针引用就会被释放’. 2).只要对象被任何强类型指针指引就不会被释放. 弱指针:__weak 被__weak修饰的指针就被称为弱型指针: 强类型指针 默认的指针都是强类型指针: 被__strong修饰的指针也是强类型指针. 使用Arc时可以重写dealloc方法,但是在重写方法时不能手动调用[super dealloc]: 在Arc中通过@property生成的属性如果是OC的对象那么要用Strong来修

oracle--存储结构_段 区 块-笔记

这次的笔记将描述了Oracle数据库服务器中逻辑存储结构的段,区,块的本质和相互关系.1.介绍数据段.区段和段2.段概述3.区概述4.数据块概述 a.数据库由一个或多个表空间组成.    b.表空间由一个或多个数据文件组成.    c.段(table.index等)由一个或多个区组成.(可以理解“段”就是表)    d.区是文件中一个逻辑上连续分配的块(block),区是ORACLE中最小的分配单元,但区所在的数据文件并不连续的,甚至是跨磁盘分区的,一般一个段至少有一个区.    f.Oracl

ORACLE表空间管理方式segment和extent

A permanent tablespace contains persistent schema objects. Objects in permanent tablespaces are stored in data files. An undo tablespace is a type of permanent tablespace used by Oracle Database to manage undo data if you are running your database in

Oracle之PL/SQL学习笔记

自己在学习Oracle是做的笔记及实验代码记录,内容挺全的,也挺详细,发篇博文分享给需要的朋友,共有1w多字的学习笔记吧.是以前做的,一直在压箱底,今天拿出来整理了一下,给大家分享,有不足之处还望大家批评指正. PL/SQL定义:PL/SQL是由Oracle开发,专门用于Oracle的程序设计语言. PL---Procedural Language. SQL—Structure QueryLanguage.PL/SQL包括过程化语句和SQL语句     PL/SQL的单位:块. 一个块中可以嵌套

Oracle创建、管理撤销表空间

撤销管理模式: 用户通过设定撤销管理模式(undo mode)就可以灵活地选择使用手动撤销管理(manual undo management)或自动撤销管理(automatic undo management).数据库系统既可以运行在手动撤销管理模式下,也可以运行于自动撤销管理模式下.在手动撤销管理模式下,撤销空间通过回滚段(rollback segment)管理.在自动撤销管理模式下,撤销空间通过撤销表空间(undo tablespace)管理.如需使用自动撤销管理模式,数据库管理员只需为每个

作为一个新手的Oracle(DBA)学习笔记【转】

一.Oracle的使用 1).启动 *DQL:数据查询语言 *DML:数据操作语言 *DDL:数据定义语言 DCL:数据控制语言 TPL:事务处理语言 CCL:指针控制语言 1.登录 Win+R—cmd—>sqlplus “/as sysdba” //以sysdba用户登录,这样可以管理权限,添加用户等 Win+R—cmd—>sqlplus username/password //以指定用户名密码登录 win+R —> cmd —–> sqlplus //按照提示,输入用户名密码