分配的空间主要是指预估的数据文件大小,要根据实际预计的需求定,定大了会占用过多的磁盘空间,定义时候可以指定增加的选项(步长),所有定义初始值太小的话,数据不够时候,会系统会频繁调整空间,影响效率。当然如果初期不能预见实际大小,可以把步长放适当宽裕些,如10%
我们有时候需要找到数据库服务器中,哪些用户具有DBA权限,以便于有关安全与权限管理。
通常可以使用以下简单方法可以得到答案:
选择当前数据库, 执行SQL:
选择当前数据库, 执行SQL:
select from dba_role_privs where granted_role='DBA'; 哪些用户有DBA权限
select from dba_role_privs; 当前库中所有用户、角色及相应的权限
注:在输出的结果中,有关usertype字段的含义如下,就可以找到相应的DBA权限的用户了。
D - DBA
C - CONNECT
R - RESOURCE
alter user SCOTT quota unlimited on users;
来赋予用户某个表空间的使用权
用下面的命令可以修改数据库系统默认的表空间,就是修改参数DEFAULT_PERMANENT_TABLESPACE对应的值:
alter database default tablespace ee;
复制
要改默认临时表空间,可以修改参数DEFAULT_TEMP_TABLESPACE对应的值。修改的语句如下:
alter database default temporary tablespace tempa;
复制
修改表的表空间
ALTER TABLE SCOTTT MOVE TABLESPACE EE;
复制
修改用户的表空间
ALTER USER SCOTTDEFAULT TABLESPACE EE(表空间名);
ALTER USER SCOTTTEMPORARY TABLESPACE TEST_TMP (临时表空间名);
复制
注意:
1即使用system 用户修改表的表空间
ALTER TABLE SCOTTT MOVE TABLESPACE EE;
复制
也会提示 ORA-01950 对表空间没有权限
2scott 用户新建的表,属于ee表空间,但是无法插入,提示 ORA-01950 对表空间没有权限
--1、查看表空间的名称及大小
select
ttablespace_name,
round(sum(bytes/(10241024)),0)
ts_size
from
dba_tablespaces
t,
dba_data_files
d
where
ttablespace_name
=
dtablespace_name
group
by
ttablespace_name;
--2、查看表空间物理文件的名称及大小
select
tablespace_name,
file_id,
file_name,
round(bytes/(10241024),0)
total_space
from
dba_data_files
order
by
tablespace_name;
3查看所有表空间使用情况
select
bfile_id
文件ID号,
btablespace_name
表空间名,
bbytes/1024/1024||'M'字节数,
(bbytes-sum(nvl(abytes,0)))/1024/1024||'M'
已使用,
sum(nvl(abytes,0))/1024/1024||'M'
剩余空间,
round(100
-
sum(nvl(abytes,0))/(bbytes)100,2)||
'%'
占用百分比
from
dba_free_space
a,dba_data_files
b
where
afile_id=bfile_id
group
by
btablespace_name,bfile_id,bbytes
order
by
bfile_id;
总有一款适合你!
1、数据库空间是个概述,在sqlserver里,使用语句 exec sp_spaceused 'TableName' 这个语句来查。
2、sp_spaceused 该存储过程在系统数据库master下。exec sp_spaceused '表名' --该表占用空间信息exec sp_spaceused ' ' 留空表示查询当前数据库占用空间信息。
3、接下来查看字段长度与已经使用的最大字段,使用如下命令。
4、最后查询整个数据库的空间大小,选中数据库,点击右键在下拉菜单中选择属性。
5、在常规里可以看到数据库可用空间,当发现可用空间太小的时候,就要扩大数据库空间了。
SQLSERVER数据库中数据存储:
一:存储文件类型
SQLSERVER有两种数据存储文件,分别是数据文件和日志文件。
其中:数据文件是以8K(=8192Byte)的页面(Page)作为存储单元的。
而日志文件是以日志记录作为存储单元。本文只讨论数据文件的存储方式,不涉及到日志文件存储方式。
数据文件以页面做为存储单元存储数据,要理解数据文件的存储方式,必须了解SQLSERVER中定义的页面类型种类。
二:页面类型
SQLSERVER中页面类型有8种,具体每种类型的详细说明,见下图:
用户的数据一般存放在数据页面中,由上图可以看出,数据页包含数据行中除 text、ntext 和 image 数据外的所有数据,text、ntext 和 image 数据存储在单独的页中。那么在一个数据页面中,数据是如何存放,SQLSERVER又是根据什么来定位页面与页面上的数据呢。要回答这个问题,有必要先了解数据页面的具体结构。
三:数据页面结构
在数据页上,数据行紧接着页首按顺序放置。在页尾有一个行偏移表。在行偏移表中,页上的每一行都有一个条目,每个条目记录那一行的第一个字节与页首的距离。行偏移表中的条目序列与页中行的序列相反。数据页面结构如下图所示,下面将详细解释
其中:数据页面页首:96个字节,保存着页面的系统信息,如页的类型、页的可用空间量、拥有页的对象的对象 ID 以及该页面所属于哪个物理文件。
数据区:对应于上图中所有数据行的总区域,存放真正的数据,是以Slot为单位。一个Slot就是对应于一条数据记录行,从0开始编号,以16进制反序保存,Slot0, Slot1。
行偏移数组:用于记录该数据页面中每个Slot在数据页面所处的相对位置,便于定位和检索每个Slot在数据页面中的位置,数组中每个记录占两个字节。
四:存储分配单位:盘区(扩展 Extend)
虽然SQLSERVER中数据文件存储单位是页面(Page),但实际SQLSERVE并不是为页面为单位给数据分配空间,SQLSERVER默认的存储分配单位是盘区。这样做的主要原因是为了提高性能。为了避免频繁的读写IO,在表或其它对象分配存储空间,不是直接分配一个8K的页面,而是以一个盘区(Extend)为存储分配单位,一个盘区为8个页面(=8*8K=64K)。
但是这样做虽然减少了频繁的IO读写,提高的数据库性能,但却导致出一个新问题,那就是在存储那些只有少量数据,不足8K的对象,如果也是分配给一个盘区,就会存在存储空间上的浪费,降低了空间分配效率。
为解决上述问题,SQLSERVER提供了一种解决方案,定义了两种盘区类型,统一盘区和混合盘区。
其中:统一盘区只能存放同一个对象,该对象拥有这个盘区的所有页面
混合盘区:由多个对象共同拥有该盘区。
在实际为对象分配存储盘区时,为了提高空间利用率,默认的情况下,如果一个对象一开始大小小于8个页面,就尽量放在混合盘区中,如果该对象大小增加到8个页面后,SQLSERVER会为这个对象重新分配一个统一盘区。
为了能够通过上述策略来实现为对象分配存储盘区,SQLSERVER提供了GAM/SGAM机制来管理和维护数据文件的盘区信息。
以上就是关于sql 建立数据库的问题全部的内容,包括:sql 建立数据库的问题、数据库服务器分配给我一个用户(无DBA权限),我想查看我这个用户下剩余空间,使用空间,总空间,sql、数据库修改数据库的初始分配空间的代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)