oracle数据库创建自动增长的表空间语句怎么写

oracle数据库创建自动增长的表空间语句怎么写,第1张

按磁盘剩余空间的10%自动增长,这个实现不了。 如果表空间设置为自动增长,在空间不足的情况下Oracle系统会自动增长表空间的,但是也不会超过磁盘的总空间大小。 创建表空间的语法如下:create tablespace jydbdatafile 'XXX\XXX\xxdbf' --这里数据文件的路径你自己视情况定size 5120Mautoextend onnext 1024Mextent management local --这里设置表空间为本地管理

以下的文章主要是介绍Oracle空间管理的技巧 我们大家都知道在Oracle数据库中 DBA是可以通过相应的表或是视图来了解当前的空间具体使用的状况观测 从而作出可能的调整决定

一 表空间的自由空间

通过对表空间的自由空间的观察 可用来判断分配给某个表空间的空间是太多还是不够 请看下列的语句

SQL > select a file_id FileNo a tablespace_name

Tablespace_name

a bytes Bytes a bytes sum(nvl(b bytes )) Used

sum(nvl(b bytes )) Free

sum(nvl(b bytes ))/a bytes %free

from dba_data_files a dba_free_space b

where a file_id=b file_id(+)

group by a tablespace_name

a file_id a bytes order by a tablespace_name;

File Tablespace

No _nameBytes Used Free %free

IDX_JF E+ E+

JFSJTS E+ E+

JFSJTS E+ E+

RBS

RBS E+ E+

RBSJF E+ E+

SFGLTS E+ E+

SFSJTS E+ E+

SYSTEM

TEMP

TOOLS

USERS

rows selected

可以看出 在FileNo为 的表空间RBS中 只有 %的分配空间未被使用 这个比例太小了 而在SYSTEM及TEMP等表空间中 高达 %以上的空间未被利用 对于生产型数据库 这个表空间的设置有些偏高

关于自由Oracle空间管理 有下面的一些建议

利用Export及Import命令卸出和装入表空间可以释放大量的空间 从而缓解增加另外的数据文件的要求

如果包含具有高插入(insert)和更新(update)活动的表的表空间中自由空间的比重下降到了 %以下 要为此表空间增加更多的空间

对于一个基本是静态表数据的表空间 如果有多于 %的自由空间 则可以考虑减少分配给它的文件空间量

减少SYSTEM表空间的空间量比较困难 因为那要重建数据库

二 表及索引的扩展

A 为了防止表或索引被过分扩展 及时实现对数据库的调整 用户应当经常对有关对象进行观察

我们可以认为 扩展区域大于 个的表或索引为过分扩展(overextended) 请看下面的语句

SQL > select substr(segment_name )

Segment_name segment_type

substr(tablespace_name )

Tablepace_name extents Max_extents

from dba_segments

where extents > and owner= JFCL

order by segment_name;

SEGMENT_NAMESEGMENT TABLEPACE_

EXTENTS MAX_EXTENTS

_TYPE

CHHDFYB TABLE JFSJTS

CHHDFYB_DHHMINDEX JFSJTS

DJHZFYB_BF TABLE JFSJTS

DJHZFYB_DJHMINDEX IDX_JF

DJHZFYB_JZHMINDEX IDX_JF

GSMFYB TABLE JFSJTS

JFDHTABLE JFSJTS

JFDH_DHHM INDEX IDX_JF

JFDH_JZHM INDEX IDX_JF

XYKFYB TABLE JFSJTS

YHDATABLE JFSJTS

YHDA_BAKTABLE JFSJTS

YHHZFYB_ TABLE JFSJTS

rows selected

通过观察 DBA可以及时发现问题并进行相应的处理

我们可以利用export卸出表 然后删除表 再利用import命令将表装入 这样 可以将不连续的区域合并成一个连续的空间

B 如果用户希望对表的空间设置进行优化 例如 需要改变表EMP的initial参数 可以采用下面的方法

在将EMP表卸出并删除后执行imp命令时使用indexfile参数

imp userid=scott/tiger file=emp dmp indexfile=emp sql Oracle把表和索引的创建信息写到指定的文件 而不是把数据写回

打开emp sql文件

REM CREATE TABLE SCOTT EMP ( EMPNO

NUMBER( ) ENAME

REM VARCHAR ( ) JOB VARCHAR ( )

MGR NUMBER( ) HIREDATE DATE

REM SAL NUMBER( ) M NUMBER

( ) DEPTNO NUMBER( ))

REM PCTFREE PCTUSED INITRANS

MAXTRANS LOGGING STORAGE(INITIAL

REM NEXT MINEXTENTS MAXEXTENTS

PCTINCREASE FREELISTS

REM FREELIST GROUPS BUFFER_POOL DEFAULT)

TABLESPACE USER_DATA ;

REM rows

对它进行编辑 去除 REM 等信息 找到Initial参数 根据需要改变它

在SQLplus中执行emp sql

装入数据

mp userid=scott/tiger ignore=y file=emp dmp

需要注意的是 ignore参数必须设为Y

C 可以用下面的语句来观察表或索引距离达到最大扩展的状况 UNUSE 为距离达到最大扩展的值 在User_extents表中 extent_id是从 开始记述数的

SQL >select a table_name TABLE_NAME max

(a max_extents) MAXEXTENTS

max(b extent_id)+ IN USE MAX

(a max_extents) (max(b extent_id)+ ) UNUSE

from user_tables a user_extents b

where a table_name=b segment_name

group by a table_name ORDER BY ;

TABLE_NAME MAXEXTENTS IN USEUNUSE

YZPHB

SHJYB

SHFYB

RCHDB

SJTXDZB

SJTXDAB

CHYHB

JFDH

rows selected

如果 UNUSE 小到一定的程度 我们就应该加以关注 进行适当的调整处理

三 关于连续空间

可以用下面的语句来查看数据库中的自由空间

SQL > select from dba_free_space

where tablespace_name= SFSJTS

order by block_id;

TABLESPACE FILE_ID BLOCK_ID BYTESBLOCKS

_NAME

SFSJTS

SFSJTS

SFSJTS

SFSJTS

SFSJTS

SFSJTS

SFSJTS

SFSJTS

SFSJTS

SFSJTS

rows selected

我们可以通过命令的结果来估计相邻自由空间的真正数量 对每一行 用起始快的id(BLOCK_ID)加上自由块(BLOCKS)的数量 如果其和与下一行的块id(BLOCK_ID)相等 则此两行是连续的 如上例第二行和第三行 + = 而 + != 所以从block_id为 开始 有 + = 个block的连续空间

在Oracle数据库的后台 系统监视器(SMON)周期性地合并自由空间相邻的块 以得到更大的连续块 而DBA可以用SQL命令来完成这个工作

alter tablespace tablespace_name coalesce;

lishixinzhi/Article/program/Oracle/201311/17790

不知道你的初衷是什么。你还没有理解数据库的一个深层次含义:

例如: update 更新一张新的空值Table,

update table set vlaue='0'

那你说这是不是增加TABLESPACE 呢?

如果在新有的表进行更新也很用可能会增加表空间,如你的存储类型是什么,如大文件,,等等。

如果避免是TABLESPACE 增加,那你只能定时清洗数据也就是每天DBA 工作职责一部分,巡检。

还有,你所提问的问题已经详细,谢谢

建立表空间和用户的步骤:

用户建立:create user 用户名 identified by "密码";

授权:grant create session to 用户名;

grant create table to  用户名;

grant create tablespace to  用户名;

grant create view to  用户名;

建立表空间(一般建N个存数据的表空间和一个索引空间):

create tablespace 表空间名

datafile ' 路径(要先建好路径)\dbf  ' size M

tempfile ' 路径\dbf ' size M

autoextend on  --自动增长

--还有一些定义大小的命令,看需要

default storage(

initial 100K,

next 100k,

);

完整例子:

--表空间

CREATE TABLESPACE sdt

DATAFILE 'F:\tablespace\demo' size 800M

EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;

--索引表空间

CREATE TABLESPACE sdt_Index

DATAFILE 'F:\tablespace\demo' size 512M

EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;

--2建用户

create user demo identified by demo

default tablespace std;

--3赋权

grant connect,resource to demo;

grant create any sequence to demo;

grant create any table to demo;

grant delete any table to demo;

grant insert any table to demo;

grant select any table to demo;

grant unlimited tablespace to demo;

grant execute any procedure to demo;

grant update any table to demo;

grant create any view to demo;

开始~程序~Oracle~Enterprise Manager Console

这个软件就是给你准备的~

如果你的Oracle有这个功能~

进去登陆,直接创建表空间~或者临时表空间~

1连接数据库

2存储~表空间~查看

3存储~数据文件~创建

4存储~表空间~添加数据文件~

最好用这个创建~方便~

或者没有的话就用sql创建表空间~

一、建立表空间

CREATE TABLESPACE data01

DATAFILE '/oracle/oradata/db/DATA01dbf' SIZE 500M

UNIFORM SIZE 128k; #指定区尺寸为128k,如不指定,区尺寸默认为64k

三、建立临时表空间

CREATE TEMPORARY TABLESPACE temp_data

TEMPFILE '/oracle/oradata/db/TEMP_DATAdbf' SIZE 50M

六、扩展表空间

首先查看表空间的名字和所属文件

select tablespace_name, file_id, file_name,

round(bytes/(10241024),0) total_space

from dba_data_files

order by tablespace_name;

1增加数据文件

ALTER TABLESPACE game

ADD DATAFILE '/oracle/oradata/db/GAME02dbf' SIZE 1000M;

2手动增加数据文件尺寸

ALTER DATABASE DATAFILE '/oracle/oradata/db/GAMEdbf'

RESIZE 4000M;

3设定数据文件自动扩展

ALTER DATABASE DATAFILE '/oracle/oradata/db/GAMEdbf

AUTOEXTEND ON NEXT 100M

MAXSIZE 10000M;

设定后查看表空间信息

SELECT ATABLESPACE_NAME,ABYTES TOTAL,BBYTES USED, CBYTES FREE,

(BBYTES100)/ABYTES "% USED",(CBYTES100)/ABYTES "% FREE"

FROM SYSSM$TS_AVAIL A,SYSSM$TS_USED B,SYSSM$TS_FREE C

WHERE ATABLESPACE_NAME=BTABLESPACE_NAME AND ATABLESPACE_NAME=CTABLESPACE

以上就是关于oracle数据库创建自动增长的表空间语句怎么写全部的内容,包括:oracle数据库创建自动增长的表空间语句怎么写、Oracle空间管理的3技巧、oracle update 语句会使表空间增加吗 如果会如何避免呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9785351.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存