表空间(tablespace)
表空间是数据库中的基本逻辑结构,一系列数据文件的集合。一个表空间可以包含多个数据文件,但是一个数据文件只能属于一个表空间。
段(Segment)
段是对象在数据库中占用的空间,虽然段和数据库对象是一一对应的,但段是从数据库存储的角度来看的。一个段只能属于一个表空间,当然一个表空间可以有多个段。
表空间和数据文件是物理存储上的一对多的关系,表空间和段是逻辑存储上的一对多的关系,段不直接和数据文件发生关系。一个段可以属于多个数据文件,关于段可以指定扩展到哪个数据文件上面。
段基本可以分为以下四种
数据段(Data Segment)
索引段(Index Segment)
回滚段(Rollback Segment)
临时段(Temporary Segment)
区间(Extent)
在一个段中可以存在多个区间,区间是为数据一次性预留的一个较大的存储空间,直到那个区间被用满,数据库会继续申请一个新的预留存储空间,即新的区间,一直到段的最大区间数(Max Extent)或没有可用的磁盘空间可以申请。
在 ORACLE8i以上版本,理论上一个段可以无穷个区间,但是多个区间对ORACLE却是有性能影响的,ORACLE建议把数据分布在尽量少的区间上,以减少ORACLE的管理与磁头的移动,但是在某些特殊情况下,需要把一个段分布在多个数据文件或多个设备上,适当的加多区间数也是有很大好处的。
数据块(Block)
ORACLE最基本的存储单位,他是OS数据块的整数倍。ORACLE的 *** 作都是以块为基本单位,一个区间可以包含多个块(如果区间大小不是块大小的整数倍,ORACLE实际也扩展到块的整数倍)。
select sum(chulishichang1) from: 查询chulishichang1属性值的和
formtable_main_854 t1: formtable_main_854是左表,起别名为t1
left join: 左连接
workflow_requestbase t2: workflow_requestbase是右表,起别名为t2
on t1requestid=t2requestid: 通过这两个属性连接两张表
where t2currentnodetype =3: 筛选条件,右表t2的currentnodetype属性值 = 3
程序开始建立两个数据库连接,函数mysql_query()原型:
resource mysql_query ( string $query [, resource $link_identifier ] )
方法1:在mysql_query函数中指定所用连接,即:
方法2:在sql语句中关联所用数据库,此时可以省略mysql_query的第二个参数,即:
string dataDir = AppDomainCurrentDomainBaseDirectory;//获取当前程序路径
if (dataDirEndsWith(@"\bin\Debug\")
|| dataDirEndsWith(@"\bin\Release\"))//判断是在\bin\Debug\或\bin\Release\路径下
{
dataDir = SystemIODirectoryGetParent(dataDir)ParentParentFullName;
//获取dataDir的父目录的名称
AppDomainCurrentDomainSetData("DataDirectory", dataDir);
}
一、问题现象
ORA-04030: out of process memory when trying to allocate 64544 bytes (sort subheap)
二、问题诊断
根据错误提示,可以确定是在 *** 作数据库时内存不够造成的。
检查ORACLE数据库内存使用情况,发现SGA和PGA内存使用都有剩余。
然后检查 *** 作系统用户的内存设置,发现/etc/security/limits文件中应用账户sde内存限制过小。
三、问题解决
1、先调整数据库服务器上sde用户的单个进程的数据段限制,由131072调整为ulimited
$ ulimit -a
time(seconds) unlimited
file(blocks) unlimited
data(kbytes) 131072
stack(kbytes) 4194304
memory(kbytes) 32768
coredump(blocks) 0
nofiles(descriptors) 2000
threads(per process) unlimited
processes(per user) unlimited
2、编辑/etc/security/limits文件,添加sde用户参数值
# vi /etc/security/limits
sde:
fsize = -1
core = -1
cpu = -1
data = -1
rss = -1
stack = -1
nofiles = -1
fsize_hard = -1
core_hard = -1
cpu_hard = -1
data_hard = -1
rss_hard = -1
stack_hard = -1
nofiles_hard = -1
3、重启数据库监听
# su - oracle
$ lsnrctl stop
$ lsnrctl start
监听启动后,重新执行应用,应用成功执行。至此,问题解决。
以上就是关于简述Oracle表空间,断,盘区和数据块之间的关系!全部的内容,包括:简述Oracle表空间,断,盘区和数据块之间的关系!、求大神帮忙解释一下这段数据库代码的意思,越详细越好,感激不尽!、php 如何把两段数据库内容拼接等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)