数据库小技能:Oracle基础【上篇】

简介: QPS: 请求进入的速度 并发数: 系统中同时存在的请求数 并发数 = QPS * 耗时

引言

oracle默认端口为1521,根据需要修改。

I 预备知识

1.1 客户端配置

 other_db=
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 远程服务器IP或主机名)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = 全局数据库名)
    )
  )

登录

 sqlplus用名名/密码@网络服务名

1.2 连接到Oracle

  1. 专用服务器连接: 专用服务器为连接创建一个新的进程,客户端与这个专用服务器直接通信,并由这个专用服务器接收和执行SQL。

  • 共享服务器: 使用“共享进程”池为大量用户服务,实际上就是一种连接池机制。
客户端不能直接与共享服务器通信,调度器将客户请求放入请求队列,由共享服务器处理后,把响应放入原调度器的响应队列中,最后调度器把响应传回给客户。

1.3 文件系统机制

  • 操作系统(OS)文件系统: 文件存放在文 件系统中,操作系统中可以查看到这些文件。
  • 原始分区(raw partitions,也称裸分区): 不是文件,而是原始磁盘,没有文件系统。
  • 自动存储管理(Atuomatic Storage Management,ASM): Oracle 10g的新特性,ASM是专为数据库设计的文件系统

• 集群文件系统: 专用于RAC(集群)环境,集群中的多个节点共享的cooked文件系统。

II 逻辑存储结构

2.1 Oracle存储层次体系

  1. 数据库由一个或多个表空间组成,数据库默认有SYSTEMSYSAUXTEMP三个表空间。
  2. 表空间是一个逻辑存储容器,由一个或多个数据文件组成,表空间包含段。
  3. 段就是占用存储空间的数据库对象,由一个或多个区组成,段在表空间中,但是可以包含这个表空间中多个数据文件中的数据。
  4. 区是文件中一组逻辑连续的块,区段只在一个表空间中,而且总是在该表空间内的一个文件中。
  5. 块是数据库中最小的分配单位,也是数据库使用的最小I/O单位。
  6. 位(Bit):本地管理表空间的空间管理单位,一个位可能等于一个区间,也可能多个位组成一个区间。

2.2 表空间的管理模式

  • 字典管理表空间(Dictionary-Managed Tablespace): 由字典表管理区(extent)的分配,需要串行的查询、更改字典表,来获得空间。
当创建或删除对象时,Oracle的空间分配或回收是通过数据库中的数据字典表来记录和管理的,用于管理的两个数据字典表分别是: UET$(used extents-已使用的空间)和 FET$(free extents-空闲空间)。
  • 本地管理表空间(Locally Managed Tablespace):8i以后出现的一种新的表空间的管理模式,通过本地位图来管理表空间的空间使用。使用每个数据文件中存储的一个位图(Bitmap)来管理区,需要得到一个区,系统只需在位图中将某一位设置为1,释放空间,再设置为0。
Bit-map的基本思想就是用一个bit位来标记某个元素对应的Value,而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。

本地化管理,就是指Oracle不再利用数据字典表来记录Oracle表空间里面的区的使用状况,而是在每个表空间的数据文件的头部加入了一个位图区,在其中记录每个区的使用状况。每当一个区被使用,或者被释放以供重新使用时,Oracle都会更新数据文件头部的这个记录,反映这个变化。

本地化管理的表空间创建语法:

    CREATE TABLESPACE 表空间名字
    DATAFILE '数据文件详细信息'
    [EXTENT MANAGEMENT { LOCAL
    {AUTOALLOCATE | UNIFORM [SIZE INTETER [K|M]]}}] 
EXTENT MANAGEMENT LOCAL 指定这是一个本地化管理的表空间

AUTOALLOCATE,则表明让Oracle来决定区块的使用办法;

UNIFORM,则可以详细指定每个区块的大小,若不加指定,则为每个区使用1M大小。

  • 创建表空间的例子
create tablespace tbs_datdatafile'c:\oradata\tbs_dat.dbf' size 2000M;

本地化管理的优点:支持在一个表空间里边进行更多的并发操作,并减少了对数据字典的依赖。

  1. 避免了字典表空间一直头疼的碎片问题: 表空间里的区的大小可以选择由Oracle系统来决定,或者由数据库管理员指定一个统一的大小。
  2. 避免产生回滚信息: 从由数据字典来管理空闲块改为由数据文件的头部记录来管理空闲块,不再使用系统表空间里的回滚段。
  3. 减少了手工合并自由空间的需要: 区的本地化管理自动跟踪表空间里的空闲块
  4. 提高了空间管理的并发性: 本地化管理的表空间避免了在数据字典相应表里面写入空闲空间、已使用空间的信息。
  5. 本地化管理的表空间避免了递归的空间管理操作。而这种情况在数据字典管理的表空间是经常出现的,当表空间里的区的使用状况发生改变时,数据字典的表的信息发生改变,从而同时也使用了在系统表空间里的回滚段。
  • 扩充表空间大小
  1. 添加数据文件
alter tablespacetbs_datadddatafile 'c:\oradata\tbs_dat2.dbf' size100M;
  1. 改变数据文件大小
alter database datafile 'c:\oradata\tbs_dat.dbf' resize 2500M;
  1. 数据文件自动扩展大小
alter database datafile 'c:\oradata\tbs_dat.dbf' autoextend on next 1m maxsize 20m;
  • 修改表空间名称
alter tablespace tbs_datrename totbs_dat1;
  • 删除表空间
drop tablespacetbs_datincluding contents anddatafiles;
--and datafiles,表示同时也删除物理文件

2.3 段(segment)

就是占用存储空间的数据库对象,如表、索引、回滚段等。
创建表时,会创建一个表段。
创建分区表时,每个分区会创建一个段。
创建索引时,会创建一个索引段。
依次类推,占用存储空间的每一个对象都会存储在一个段中,此外,还有回滚段(rollback segment)、临时段(temporary segment)、聚族段(cluster segment)、索引段(index segment)等。

create table T(id int primary key, content clob)

这里创建了四个段

  • 1个Table T的段
  • 1个索引段(主键会自动添加唯一索引)
  • 2个clob段(一个clob段是lob索引,一个段是lob数据本身)

2.4 区(extent)

区是文件中一个逻辑上连续分配的空间,即由一些连续分布的块组成,最大可以达到2GB。

2.5 块(block)

块是Oracle中最小的空间分配单位。
数据行、索引条目或临时排序结果就存储在块中,通常Oracle从磁盘读写的就是块。
块常见4种大小:2KB,4KB,8KB,16KB。

有些情况下32KB也可以,受操作系统限制。

III 物理存储结构

3.1 Oracle体系结构

  • 数据库 (Database):物理操作系统文件或磁盘(disk) 的集合
一个数据库可以由一个或多个实例(使用RAC)装载并打开

Oracle RAC是Oracle Real Application Cluster,一般有两台或者两台以上同构计算机及共享存储设备构成,可提供强大的数据库处理能力。

• 实例( instance):一组后台进程/线程和一个共享内存区

实例只能装载并打开一个数据库
  • 系统全局区SGA (System Global Area)是Oracle Instance的 基本组成部分,在实例启动时分配。是一组包含一个Oracle实例的数据和控制信息的共享内存结构。主要是用于存储数据库信息的内存区,该信息为数据库进程所共享。

每个实例都只有一个 SGA 区,当多个用户连接到同一实例时,这些用户进程、服务进程共享 SGA 区。包括 :

  1. 数据高速缓存区
  2. 字典缓存区
  3. 重做日志缓存区
  4. SQL共享池
  • 程序全局区PGA(PROCESS GLOBAL AREA)是一个内存区,包含单个进程的数据和控制信息,所以又称为进程全局区。

3.2 物理存储结构

主要是指在操作系统中,Oracle数据的存储和管理方式,它的组成包括:

  • 数据文件 (data file)
存储表、索引等实际数据的文件.一个表空间,可以有多个数据文件,一个数据文件,只能属于一个表空间
  • 控制文件 (control file)
存储数据库的物理结构等信息的文件。
  • 重做日志文件 (redo file)
记录数据库的修改操作和事务操作的文件
  • 其他文件

see also

  • QPS: 请求进入的速度
  • 并发数: 系统中同时存在的请求数
  • 并发数 = QPS * 耗时

gzh:iOS逆向

目录
相关文章
|
16天前
|
存储 Oracle 关系型数据库
数据库数据恢复—ORACLE常见故障的数据恢复方案
Oracle数据库常见故障表现: 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。
62 11
|
29天前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。
|
1月前
|
存储 Oracle 关系型数据库
oracle数据恢复—Oracle数据库文件大小变为0kb的数据恢复案例
存储掉盘超过上限,lun无法识别。管理员重组存储的位图信息并导出lun,发现linux操作系统上部署的oracle数据库中有上百个数据文件的大小变为0kb。数据库的大小缩水了80%以上。 取出&并分析oracle数据库的控制文件。重组存储位图信息,重新导出控制文件中记录的数据文件,发现这些文件的大小依然为0kb。
|
22天前
|
存储 Oracle 关系型数据库
服务器数据恢复—华为S5300存储Oracle数据库恢复案例
服务器存储数据恢复环境: 华为S5300存储中有12块FC硬盘,其中11块硬盘作为数据盘组建了一组RAID5阵列,剩下的1块硬盘作为热备盘使用。基于RAID的LUN分配给linux操作系统使用,存放的数据主要是Oracle数据库。 服务器存储故障: RAID5阵列中1块硬盘出现故障离线,热备盘自动激活开始同步数据,在同步数据的过程中又一块硬盘离线,RAID5阵列瘫痪,上层LUN无法使用。
|
1月前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
54 7
|
3天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
13 3
|
3天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
19 3
|
3天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE 'log_%';`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
22 2
|
17天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
117 15
|
10天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。

推荐镜像

更多