Oracle_基本概念和体系

JavaMan_KA 2011-05-07 08:59:08
数据库
是磁盘上存储的数据的集合(包括配置文件、数据文件、日志文件和控制文件等)
数据库实例
运行在数据库文件上的一组Oracle后台进程/线程以及一个共享内存区。数据库可以由实例装载
和打开。
oracle实时应用集群(RAC,Real Application Clusters)
oralce并行服务器架构/RAC架构
数据库服务名
从oracle8i开始引入,数据库客户端与服务器端连接时建议指定其数据库服务名,而不是数据库
实例名。
网络服务名
数据库在客户端的逻辑表示,包含数据库服务名和网络地址两方面信息。
监听器

ORACLE里锁有以下几种模式:
------------------------------------------------------
0:none
------------------------------------------------------
1:null 空
Select,有时会在v$locked_object出现。
------------------------------------------------------
2:Row-S 行共享(RS):共享表锁,sub share
2级锁有:Select for update,Lock For Update,Lock Row Share
select for update当对话使用for update子串打开一个游标时,所有返回集中的数据行都将处于行级(Row-X)独占式锁定,其他对象只能查询这些数据行,不能进行update、delete或select for update操作。
------------------------------------------------------
3:Row-X 行独占(RX):用于行的修改,sub exclusive
3级锁有:Insert, Update, Delete, Lock Row Exclusive
没有commit之前,如果另外一个会话插入同样的一条记录会没有反应, 因为后一个3的锁会一直等待上一个3的锁, 我们必须释放掉上一个才能继续工作。
------------------------------------------------------
4:Share 共享锁(S):阻止其他DML操作,share
4级锁有:Create Index, Lock Share
locked_mode为2,3,4不影响DML(insert,delete,update,select)操作, 但DDL(alter,drop等)操作会提示ora-00054错误。
00054, 00000, "resource busy and acquire with NOWAIT specified"
// *Cause: Resource interested is busy.
// *Action: Retry if necessary.
------------------------------------------------------
5:S/Row-X 共享行独占(SRX):阻止其他事务操作,share/sub exclusive
5级锁有:Lock Share Row Exclusive
具体来讲有主外键约束时update/delete…;可能会产生4,5的锁。
------------------------------------------------------
6:exclusive 独占(X):独立访问使用,exclusive
6级锁有:Alter table, Drop table, Drop Index, Truncate table, Lock Exclusive
------------------------------------------------------
解锁命令
alter user scott account unlock 可将scott帐户解锁
oracle体系
1、物理结构(由控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件组成)
控制文件(。ctl):包含维护和验证数据库完整性的必要信息、例如,控制文件用于识别数据文件和重做日志文件,一个数据库至少需要一个控制文件
数据文件(。dbf):存储数据的文件
重做日志文件(。log):含对数据库所做的更改记录,这样万一出现故障可以启用数据恢复。一个数据库至少需要两个重做日志文件
联机日志文件 又名 重复日志文件
第一个写满后,写第二个,第二个写满后写第一个,第一个以前内容删除。
归档日志文件
参数文件:定义Oracle 例程的特性,例如它包含调整SGA 中一些内存结构大小的参数
归档文件:是重做日志文件的脱机副本,这些副本可能对于从介质失败中进行恢复很必要。
密码文件:认证哪些用户有权限启动和关闭Oracle例程
文件调用顺序:参数文件找到控制文件,控制文件管理控制数据文件和日志文件。启动时,先启动控制文件,之后打开数据文件。
2、逻辑结构(表空间、段、区、块)
表空间(Table Space) :是数据库中的基本逻辑结构,一系列数据文件的集合。
段(Segment):是对象在数据库中占用的空间
区(Extent):是为数据一次性预留的一个较大的存储空间
块(Block):ORACLE最基本的存储单位,在建立数据库的时候指定
3、内存分配(SGA和PGA)
SGA:是用于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle 服务器的数据和控制信息, 它是在Oracle 服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。
PGA:包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA 正相反PGA 是只被一个进程使用的区域,PGA 在创建进程时分配在终止进程时回收
4、后台进程(数据写进程、日志写进程、系统监控、进程监控、检查点进程、归档进程、服务进程、用户进程)
数据写进程:负责将更改的数据从数据库缓冲区高速缓存写入数据文件
日志写进程:将重做日志缓冲区中的更改写入在线重做日志文件
系统监控:检查数据库的一致性如有必要还会在数据库打开时启动数据库的恢复
进程监控:负责在一个Oracle 进程失败时清理资源
检查点进程:负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库状态信息。
归档进程:在每次日志切换时把已满的日志组进行备份或归档
服务进程:用户进程服务。
用户进程:在客户端,负责将用户的SQL 语句传递给服务进程,并从服务器段拿回查询数据。
5、oracle例程:Oracle 例程由SGA 内存结构和用于管理数据库的后台进程组成。例程一次只能打开和使用一个数据库。
6、SCN(System Change Number):系统改变号,一个由系统内部维护的序列号。当系统需要更新的时候自动增加,他是系统中维持数据的一致性和顺序恢复的重要标志。
表空间概念
是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间。
数据库被分成一个或多个逻辑部件称作表空间。而表空间又被分成称作段(segment)的逻辑部件。这些段再细分就叫扩展(extents)。
一般有下面的表空间:
1、系统表空间(System tablespace)
是各种不同版本的Oracle必备的部分,存放Oracle系统的一些信息,一般只有一个SYSTEM表空间。
2、临时表空间(Temporary tablespace )
由于Oracle工作时经常需要一些临时的磁盘空间,这些空间主要用作查询时带有排序(Group by,Order by等)等算法所用,当用完后就立即释放,对记录在磁盘区的信息不再使用,因此叫临时表空间。一般安装之后只有一个TEMP临时表空间。
3、工具表空间(Tools tablespace)
用于保存Oracle数据库工具所需的数据库对象,这些工具表空间存放在工作时所用的专用表。旧的Oracle版本无此表空间。安装之后的工具表空间是Tools。
4、用户表空间(Users tablespace)
用于存放一些实验例子用的空间,当然也可以用于存放应用系统的数据。旧版本无Users表空间。现在的用户表空间为 USERS 。
5、数据及索引表空间
存放数据及索引的表空间,Oracle7以后都提倡在应用系统中,特别是具有大量数据的系统,要把数据和索引分开存放在不同的分区中,以便提高查询速度。在安装后索引表空间可能是INDX。数据表空间就是USERS。
6、回滚段表空间(Rollback Segment)
Oracle数据库系统在运行Insert、Update、Delete时都需要一个磁盘空间来存放恢复信息 (Undo Information),以便在进行恢复时能将原来信息读出来。安装后的回滚段表空间是RBS表空间。数据库管理员也可根据应用的需要建立另外的回滚段表空间。
----------------------------------------------------------------------------------------
--如何查看表空间的剩余空间
connect sys/password as sysdba
desc dba_free_space
select tablespace_name,sum(bytes)/1024/1024 free_Mbytes from dba_free_space group by tablespace_name order by free_Mbytes;
------------------------------------------------------------------------------------------------
--如何查看oracle 表空间的利用率
select a.tablespace_name,
round(a.total_size) “total_size(MB) ”,
round(a.total_size) - round(b.free_size, 3) "used_size(MB)",
round(b.free_size, 3) "free_size(MB)",
round(b.free_size / total_size * 100, 2) || '%' free_rate
from (select tablespace_name, sum(bytes) / 1024 / 1024 total_size
from dba_data_files
group by tablespace_name) a,
(select tablespace_name, sum(bytes) / 1024 / 1024 free_size
from dba_free_space
group by tablespace_name) b
where a.tablespace_name = b.tablespace_name(+);
----------------------------------------------------------------------------------------
设置默认表空间
数据库创建后没有指定默认表空间,它将默认为 SYSTEM,
可以通过发出以下命令来使一个表空间变成默认表空间:
ALTER DATABASE DEFAULT TABLESPACE <tsname>;
----------------------------------------------------------------------------------------
--如何才能知道现有的数据库的默认表空间是哪一个
SELECT PROPERTY_VALUE
FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME = 'DEFAULT_PERMANENT_TABLESPACE';
----------------------------------------------------------------------------------------
重命名一个现有的表空间(SYSTEM 和 SYSAUX 除外) — 无论是永久表空间还是临时表空间:
ALTER TABLESPACE <oldname> RENAME TO <newname>;
...全文
158 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinmoz 2011-05-27
  • 打赏
  • 举报
回复
感谢分享!

1,617

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧