Oracle(1) 安装与配置,基本概念

安装(docker拉取镜像)与配置,基本概念等

Posted by Hilda on March 4, 2025

本篇主要是学习Oracle的下载安装、基本概念(下一篇博客会开始记录SQL)。总的规划如下:

1.安装与配置,基本概念

2.SQL:DDL,DQL,DCL,常用函数

3.视图

4.索引

5.方法和过程

6.游标和触发器

7.JDBC

后续有其他兴趣/研究,再进行相关补充

1 数据库分类

数据库按照数据组织和管理的方式,主要分为两大类:关系型数据库 和 非关系型数据库(也常称为 NoSQL 数据库)。这两种类型各有其设计理念和适用场景。

  • 关系型数据库Relational Database

    • 基于关系模型(Relational Model),由 E.F. Codd 在 1970 年提出。数据以二维表(行和列)的形式存储,表之间通过主键和外键建立关系。
    • 结构化数据:数据以固定的模式(Schema)存储,表结构在创建时定义好,字段类型和约束明确。
    • SQL 支持:使用标准查询语言 SQL(Structured Query Language)进行操作,如查询、插入、更新、删除。
    • ACID 事务:支持原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
    • 代表:MySQL,Oracle,SQLServer,DB2,PostgreSQL……
  • 非关系型数据库Non-Relational Database / NoSQL

    • 不依赖固定的表结构,旨在解决传统关系型数据库在扩展性、高并发和大容量数据处理上的不足。NoSQL 是“Not Only SQL”的简称,支持多种数据模型。

    • 数据可以是键值对、文档、列族或图等形式

    • CAP 定理:在一致性(Consistency)、可用性(Availability)和分区容忍性(Partition Tolerance)中选择两者,牺牲部分一致性换取性能。

    • 代表:

      • redis
      • mongoDB
      • HBase
    • 举例:

      • 1
        2
        3
        4
        5
        6
        7
        8
        9
        
        {
          "student_id": "001",
          "name": "张三",
          "age": 20,
          "courses": [
        {"name": "数学", "score": 90},
        {"name": "英语", "score": 85}
          ]
        }
        

2 Oracle版本说明

  • 1998年Oracle8i:i指internet,表示oracle向互联网发展,8i之前数据库只能对应1个实例(8i引入了 Internet 计算特性)
  • 2001年Oracle9i:8i的升级,性能更佳,管理更人性化
  • 2003年Oracle10g:g指grid,表示采用网格计算的方式进行操作,性能更好。(引入了自动存储管理 (ASM)。)
  • 2007年Oracle11g:10g的稳定版本,目前公司里面最常用。增强了 RAC、ASM 和分区功能。 引入了 Exadata 数据库机。
  • 2013年Oracle12c:c指cloud,表示云计算,支持大数据处理。引入了多租户容器数据库 (CDB) 和可插拔数据库 (PDB)。
  • 2018年Oracle18c:部分工作自主完成,减少手动操作的工作量
  • 2019年Oracle19c:是12c和18c的稳定版本
  • Oracle Database 21c (21.x): 引入了许多新的特性和增强功能,例如原生 JSON 数据类型、区块链表等。 这是一个创新版本。
  • Oracle Database 23c (23.x): 最新版本,包含对JSON Relational Duality, SQL Domains, and JavaScript Stored Procedures 等新特性的支持。

我才用11g,如果需要上云,就用19c

可以使用以下 SQL 查询来确定 Oracle 数据库的版本:

1
2
SELECT version FROM PRODUCT_COMPONENT_VERSION WHERE PRODUCT LIKE 'Oracle%';
SELECT banner FROM v$version WHERE banner LIKE 'Oracle%';

这些查询将返回 Oracle 数据库的版本信息。

3 Oracle的一些八卦

Oracle 数据库和 MySQL 的关系可以追溯到它们各自的市场定位。Oracle 从 1979 年开始就是高端企业级数据库的代表,主打大型企业、金融系统和高负载场景,收费昂贵。而 MySQL 在 1995 年由瑞典公司 MySQL AB 推出,是开源的轻量级关系型数据库,特别受到中小型企业和 Web 开发者的喜爱(比如 LAMP 技术栈:Linux、Apache、MySQL、PHP)。两者一度是竞争对手,尤其在中小型市场,MySQL 的免费和灵活性抢了不少风头。

2008 年,Sun Microsystems(对,就是那家因为java出名的sun公司)以 10 亿美元收购了 MySQL AB。这一举动让业界有点意外,因为 Sun 并不是数据库领域的巨头。Sun 的意图是希望通过 MySQL 增强其在开源生态和 Web 市场的影响力,同时与 Oracle 的高端市场形成互补。

2009 年,Sun 陷入财务困境,Oracle 抓住机会,以 74 亿美元收购了 Sun Microsystems。这次收购的主要目标是 Sun 的硬件业务(SPARC 服务器)和软件资产(Java),但 MySQL 作为“附带品”也被 Oracle 收入囊中。

当时开源社区炸开了锅!很多人担心 Oracle 会“掐死” MySQL,因为 Oracle 自己的数据库是直接竞争对手。MySQL 的创始人之一 Michael Widenius(人称“Monty”)甚至发起请愿,要求 Oracle 要么剥离 MySQL,要么保证其开源性质,结果没啥用。Monty 一气之下还 fork 了 MySQL,创建了 MariaDB(以他女儿 Maria 命名),至今仍是 MySQL 的替代品。

出乎意料的是,Oracle 并没有毁掉 MySQL,反而继续投入资源开发。

有人说 Oracle 留着 MySQL 是为了“钓鱼”——吸引中小企业用户用 MySQL,等这些公司规模大了,就顺势推销 Oracle 数据库,毕竟两者架构相似,迁移不难。

事实是,Oracle 保留了 MySQL 的开源版本(Community Edition),同时推出收费的 Enterprise Edition,试图双线赚钱。MySQL 的发展也没停滞,比如 JSON 数据类型、性能优化等功能都是在 Oracle 手里加上的。

截至 2025 年,MySQL 依然是全球最流行的数据库之一(仅次于 Oracle Database 和 PostgreSQL),而 Oracle 也靠着它在中小型市场站稳脚跟。不过,开源社区对 Oracle 的信任度始终不高,MariaDB 和 PostgreSQL 抢走了一些用户。


Oracle Corporation 本身就是“甲骨文公司”,英文名就是 Oracle。

Oracle 由 Larry Ellison、Bob Miner 和 Ed Oates 在 1977 年创立,最初叫 Software Development Laboratories (SDL)。公司第一个项目是为 CIA 开发一个叫“Oracle”的数据库系统(代号取自希腊神话的“神谕”)。后来项目没成,但他们把这个名字留了下来,1983 年正式更名为 Oracle Corporation。

Larry Ellison 是个超级有野心的人,据说他创立 Oracle 的灵感就是想超越当时的数据库霸主 IBM。他还以个性张扬著称,比如喜欢开私人飞机、买豪宅,甚至一度想买夏威夷的一个岛。

Oracle 从一家纯软件公司变成软硬件兼备的巨头,靠的就是疯狂收购。

  • PeopleSoft(2005,103 亿美元):一场著名的恶意收购战,PeopleSoft 死活不想被买,最后还是屈服了。
  • Sun Microsystems(2010,74 亿美元):前面提到了,这次收购让 Oracle 拿下 Java 和 MySQL,也标志着它进入硬件市场。
  • Cerner(2021,283 亿美元):Oracle 最大的一笔收购,瞄准医疗行业,想把数据库技术跟健康数据结合。

业界传言 Larry Ellison 特别喜欢“买买买”,有人开玩笑说他是“科技界的购物狂”。这些收购也让 Oracle 的员工吐槽管理混乱,整合新公司时经常裁员。


Larry Ellison :曾花 3 亿美元买了艘超级游艇 Icon,号称“海上移动办公室”。

Oracle 收购 Sun 后,拿到了 Java 的专利,结果 2010 年就起诉谷歌,说 Android 侵犯 Java 版权。这场官司打了十年,最后谷歌胜诉,但 Oracle 赚足了眼球。

Oracle 的企业文化被戏称为“高压锅”,加班多、KPI 严苛。网上有段子说:“在 Oracle 工作,钱多事更多,头发越来越少。”

4 Oracle下载

通过官方来下载11g,地址为:

  • win
    • https://www.oracle.com/partners/campaign/112010-win64soft-094461.html
    • https://www.oracle.com/database/technologies/xe-prior-release-downloads.html
  • Mac
    • 结合docker安装
  • Linux
    • https://www.oracle.com/database/technologies/xe-prior-release-downloads.html

下面记录Mac的安装过程。

首先下载docker,如果碰到docker登录不上去的,建议装proxifier,这个软件有试用期30天(但是去某宝可以买个激活码,目前来说我是激活之后一直能用的)。

image-20250303170723664

image-20250303170815874

配置Proxifier:

image-20250303171004979

配置rule

image-20250303171137745

如果还是不行,可以试试现在terminal中用docker login进行登录。登录的账号和密码就是docker hub的账号密码(网址是registry.hub.docker.com)


补充:Docker 设置国内镜像源

1
2
3
1. 阿里云容器 服务:https://cr.console.aliyun.com
2. 中国科技大学:https://docker.mirrors.ustc.edu.cn
3. Docker中国区官方镜像:https://registry.docker-cn.com

image-20250303173934869

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "registry-mirrors": [
    "https://md4nbj2f.mirror.aliyuncs.com",
    "https://cr.console.aliyun.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}

“Apply and Restart”


拉取Oracle镜像

1.打开终端,登录Docker:(这一步不是必须的)

1
docker login

出现“Login Succeeded”,登录成功。

2.拉取Oracle 11g镜像

1
2
3
4
5
docker pull alexeiled/docker-oracle-xe-11g
或者
docker pull oracleinanutshell/oracle-xe-11g
来源于:https://hub.docker.com/r/oracleinanutshell/oracle-xe-11g
第一个真的pull不下来

pull下来之后,通过下面的命令进行启动(端口映射 1521):

1
docker run -d -p 1521:1521 oracleinanutshell/oracle-xe-11g

然后用navicat进行连接:(注意默认密码是oracle)

image-20250303211733467

注意Service Name填写xe,下面要选择SID.另外 主机名写的是 localhost,不知道为什么一开始写127.0.0.1不行。


image-20250303211832375

测试数据库连接 (在连接成功后):

执行一些简单的 SQL 查询,例如:

1
SELECT SYSDATE FROM DUAL;

image-20250303212131553

如果查询返回当前日期和时间,则表示数据库连接正常。


下面补充几点:

1.Windows 安装 Oracle 11g 时默认创建 orcl 数据库

在 Windows 上安装完整的 Oracle 11g (通常是 Standard Edition 或 Enterprise Edition),安装程序默认会创建一个名为 orcl 的数据库实例(SID)。 orcl 是 “Oracle” 的简写,用作默认的实例名,方便用户快速开始使用。 这种完整版本的 Oracle 设计用于生产环境,需要更全面的配置和管理。

2.为什么我安装的这个镜像却没有orcl?

image-20250303223211029

oracleinanutshell/oracle-xe-11g 镜像基于 Oracle 11g Express Edition (XE)。 XE 是一个免费的、轻量级的 Oracle 数据库版本,旨在用于学习、开发和小型部署。

image-20250303223441688

5 Oracle 11g服务

注意:如果设置了“手动“,那么每次开机如果要连接数据库,需要先启动监听器,再启动orcl的服务。

image-20250304103153888

Oracle 11g服务详细介绍及哪些服务是必须开启的?

安装oracle 11g R2中的方法成功安装Oracle 11g后,共有7个服务,这七个服务的含义分别为

  1. Oracle ORCL VSS Writer Service:Oracle卷映射拷贝写入服务,VSS(Volume Shadow Copy Service)能够让存储基础设备(比如磁盘,阵列等)创建高保真的时间点映像,即映射拷贝(shadow copy)。它可以在多卷或者单个卷上创建映射拷贝,同时不会影响到系统的系统能。(非必须启动)

  2. OracleDBConsoleorcl:Oracle数据库控制台服务,orcl是Oracle的实例标识,默认的实例为orcl。在运行Enterprise Manager(企业管理器OEM)的时候,需要启动这个服务。(非必须启动)

  3. OracleJobSchedulerORCL:Oracle作业调度(定时器)服务,ORCL是Oracle实例标识。(非必须动)

  4. OracleMTSRecoveryService:服务端控制。该服务允许数据库充当一个微软事务服务器MTS、COM/COM+对象和分布式环境下的事务的资源管理器。(非必须启动)

  5. OracleOraDb11g_home1ClrAgent:Oracle数据库.NET扩展服务的一部分。 (非必须启动)

  6. OracleOraDb11g_home1TNSListener:监听器服务,服务只有在数据库需要远程访问的时候才需要。(非必须启动,下面会有详细详解)。

  7. OracleServiceORCL:数据库服务(数据库实例),是Oracle核心服务该服务,是数据库启动的基础, 只有该服务启动,Oracle数据库才能正常启动。(必须启动)

那么在开发的时候到底需要启动哪些服务呢?对新手来说,要是只用Oracle自带的sql*plus的话,只要启动OracleServiceORCL即可,要是使用PL/SQL Developer等第三方工具的话,OracleOraDb11g_home1TNSListener服务也要开启。OracleDBConsoleorcl是进入基于web的EM必须开启的,其余服务很少用。

注:ORCL是数据库实例名,默认的数据库是ORCL,你可以创建其他的,即OracleService+数据库名

服务管理:

1、所有的服务改成”手动” 2、启动两个

  1. 监听服务:OracleOraDb10g_home1TNSListener监听客户端的连接
  2. 数据库服务:OracleServiceORCL 命名规则:OracleService+实例名

6 创建数据库

如果是windows

正常安装数据库的时候会默认安装一个orcl数据库。我们也可以通过 Database Configuration Assistant 来创建新的数据库。操作如下:

image.png

进入操作

image.png

创建数据库

image.png

image.png

创建数据库的唯一标识SID

image.png

image.png

指定口令

image.png

image.png

下一步

image.png

一直下一步。最后完成

image.png

image.png

image.png

创建完成

image-20250304104220945

如果是docker pull了一个oracle镜像

Oracle XE 11g 默认会创建一个数据库实例(SID 为 XE),并且它不像企业版那样支持直接通过 DBCA(Database Configuration Assistant)或其他工具创建多个独立数据库实例。

由于 Oracle XE 版本的限制,创建一个全新的数据库(Database)在 XE 版本中是不允许的。 XE 版本只支持一个用户数据库(orcl)。

7 客户端工具

推荐客户端工具下载:https://www.oracle.com/tools/downloads/sqldev-downloads-2143.html

image-20250304104841760

解压缩出来后运行

image-20250304104904113

打开后的主页

image-20250304104925436

建立连接

image-20250304104949363

录入相关的信息:

image-20250304105002042

添加测试。查看是否能够连接成功

image-20250304105014318

提示:状态:成功。说明连接正常了

image-20250304105031225

点开+就可以看到相关的数据库的信息了。

注:这个软件有Mac版本的,也可以下载尝试。

image-20250304105509904

下面记录了连接的详细步骤。

image-20250304110121130

注意版本要求。

image-20250304110415170

改完路径,可以成功打开:

image-20250304110450346

image-20250304110507496

image-20250304110534209

根据个人情况勾选,我就不喜欢被跟踪使用情况。

然后点击左上角【绿色的+号】进行连接(连接的 是docker拉取的镜像)。

image-20250304110948554

然后点击【连接】按钮:

image-20250304111033926

进行简单的SQL语句测试:

1
SELECT SYSDATE FROM DUAL;

image-20250304111116710

字体设置

工具—-》首选项—-〉代码编辑器—》字体—-〉调整字体大小

8 卸载的详细步骤(windows为例)

Mac只需要关闭通过 Docker 运行的 Oracle XE 11g 镜像,

使用 docker stop 命令(推荐)

1
docker ps

记下 CONTAINER ID 列的值,例如 a1b2c3d4e5f6。

1
docker stop a1b2c3d4e5f6

这是最安全和推荐的方法,它会发送一个停止信号给容器内的 Oracle 数据库,让它优雅地关闭。

1.关闭相关服务

  我们进入 service中,关闭所有和oracle相关的服务

image.png

image.png

3.卸载软件

  在搜索中找到Universal Installer。双击开始卸载

image.png

image.png

选中要删除的Oracle产品,然后点击删除

image.png

image.png

在你安装的app文件夹里面找到deinstall.bat文件,然后双击

image.png

双击后:出现指定要取消配置的所有单示例监听程序【LISTENER】:

image.png

没有权限需要通过管理员打开

image.png

然后再输入OCRL

image.png

等待时间比较长。输入y继续操作

image.png

继续

image.png

到这一步再CMD里面的操作就完成了,等待CMD界面自动消失即可

image.png

3.删除注册信息

  然后我们进入注册表中删除oracle的相关注册信息。输入: regedit 进入

image.png

删除HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ 路径下的所有Oracle开始的服务名称

image.png

删除:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application注册表的所有Oracle开头的所有文件

image.png

删除:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 注册表

若环境变量中存在Oracle相关的设置,直接删除,没有就跳过这一步

删除E:\app目录下的所有文件,根据自己的安装目录来

删除C盘下C:\Program File 目录下的Oracle目录

再删除C盘下C:\用户\XXXXX这个Oracle文件

注:所删除过程中遇到java.exe程序正在运行,按CTRL+shift+esc进入任务管理器,结束这个任务。

删除干净后重启电脑即可。

9 用户与权限管理

用户 (User):

  • Oracle 中的用户是登录数据库的账户,例如 SYSTEM 或你自己创建的用户。

Schema:

  • 每个用户对应一个 Schema,Schema 是用户拥有的对象的集合(如表、视图、索引等)。
  • 在 Oracle 中,用户和 Schema 是紧密关联的,创建用户时会自动创建对应的 Schema。

权限是授予用户执行特定数据库操作的许可。 权限分为两种类型:

  • 系统权限 (System Privileges): 允许用户执行数据库级别的操作,例如创建用户、创建表空间、备份数据库等。Oracle 11g 中有超过 100 种系统权限,具体取决于版本。系统权限不针对某个具体对象,而是影响整个数据库的操作能力。通常由管理员(如 SYSTEM 或 SYS)授予。 系统权限由 GRANT <system_privilege> TO <user/role> 语句授予。
  • 对象权限 (Object Privileges): 允许用户对特定数据库对象(例如表、视图、存储过程)执行操作,例如查询、插入、更新、删除、执行等。对象权限是针对特定对象的,需指定对象名称。 对象权限由 GRANT <object_privilege> ON <object_name> TO <user/role> 语句授予。

常见的预定义角色:

角色名称 描述 包含的权限
CONNECT 允许用户连接到数据库。 CREATE SESSION
RESOURCE 允许用户创建基本的数据库对象,例如表、索引、存储过程、触发器等。 CREATE CLUSTER, CREATE SEQUENCE, CREATE TABLE, CREATE TRIGGER, CREATE TYPE, CREATE PROCEDURE
DBA 数据库管理员角色,拥有最高的权限。 几乎所有的系统权限
EXP_FULL_DATABASE 允许用户执行完整的数据库导出。 数据库导出的相关权限
IMP_FULL_DATABASE 允许用户执行完整的数据库导入。 数据库导入的相关权限
SELECT_CATALOG_ROLE 允许用户查询数据字典视图(例如 USER_TABLES, USER_VIEWS 等)。 查询数据字典视图的相关权限

可以创建自己的角色并分配权限,比如:

1
2
3
4
5
6
7
8
9
-- 创建角色
CREATE ROLE myrole;

-- 授予权限给角色
GRANT CREATE TABLE, CREATE SESSION TO myrole;
GRANT SELECT ON employees TO myrole;

-- 将角色授予用户
GRANT myrole TO testuser;

在 Oracle XE 中的实践

首先以system登录

创建testuser的用户,其密码是test123,并且授予登录和创建表的权限。

1
2
3
CREATE USER testuser IDENTIFIED BY test123;
GRANT CREATE SESSION TO testuser; -- 允许登录
GRANT CREATE TABLE TO testuser;   -- 允许创建表

image-20250304140316690

使用预定义角色给testuser这个用户:

1
2
GRANT CONNECT, RESOURCE TO testuser;
-- testuser 现在可以登录并创建表、序列等

image-20250304140409088

创建和使用自定义角色:

1
2
3
4
5
6
7
8
9
-- 创建角色
CREATE ROLE developer_role;
GRANT CREATE SESSION, CREATE TABLE, CREATE SEQUENCE TO developer_role;
-- GRANT SELECT, INSERT ON employees TO developer_role;  -- employees 是表名

-- 授予角色
GRANT developer_role TO testuser;

-- testuser 登录后可以执行相应操作

image-20250304140433095

testuser 登录:

image-20250304140521296

image-20250304140557210

撤销权限或角色

1
2
REVOKE CREATE TABLE FROM testuser;
REVOKE developer_role FROM testuser;

image-20250304140628546

补充:为什么上面的权限或者角色用的是revoke,而不是drop?

因为drop关键字和revoke关键字作用的对象不同:

  • drop:作用于数据库对象,例如表(TABLE)、视图(VIEW)、序列(SEQUENCE)、用户(USER)、角色(ROLE)等。删除的是对象本身及其相关数据。属于DDL(数据定义语言)
  • revoke:作用于权限(PRIVILEGE)或角色(ROLE)。撤销的是用户或角色对某些操作或对象的访问能力,不影响对象本身。属于 DCL(数据控制语言)

删除角色:

1
DROP ROLE developer_role;

删除用户及其所有对象:

1
DROP USER testuser CASCADE;

仅删除用户,保留其对象:

1
DROP USER testuser;

image-20250304140856950

先断开连接:

image-20250304140940042

image-20250304141001677

10 oracle其他基本概念

数据库实例 (Instance) vs. 数据库 (Database):

  • 数据库实例: 可以简单理解为 Oracle 服务器的运行环境,运行数据库的内存结构和后台进程的集合,它是 Oracle 数据库的核心。 它由内存结构(如System Global Area (SGA) 和 Program Global Area (PGA))和后台进程组成。 一个数据库实例可以挂载并打开一个数据库。 可以把 Instance 想象成一个运行中的 Oracle 服务。
  • 数据库: 是磁盘上存储数据的物理文件集合,包括数据文件 (.dbf)、控制文件(.ctl)、重做日志文件等。 数据库存储了实际的数据。 一个数据库只能被一个实例挂载。 可以理解为存储数据的物理仓库。

一个数据库实例管理一个数据库。 你可以认为实例是负责管理和访问数据库内容的。

Schema (模式) / 用户 (User):

  • Schema (模式): 是数据库对象的集合,例如表、视图、索引、存储过程等。 可以将其视为一个命名空间,用于组织和管理数据库对象。
  • User (用户): 是一个数据库账户,用于连接到数据库并执行操作。 每个用户都拥有一个默认的 Schema,Schema 通常与用户名相同。

用户拥有并管理其 Schema 中的对象。 你可以用用户身份连接到数据库,并在其对应的 Schema 中创建和操作数据库对象。 在 Oracle 中,用户和 Schema 常常可以互换使用。

表空间 (Tablespace):

  • 表空间: 是逻辑存储单元,用于组织数据库文件。 数据文件是物理存储数据的地方,而表空间则将这些数据文件组织成逻辑单元。

表空间允许你更好地管理数据库的存储,例如将不同的表存储在不同的表空间中,以便进行备份、恢复和性能优化。

Oracle 中常见的表空间包括 SYSTEM, SYSAUX, USERS 等。 USERS 表空间通常用于存储用户创建的表。

数据文件 (Datafile):

  • 数据文件: 是实际存储数据库数据的物理文件。 一个表空间可以由一个或多个数据文件组成。

数据文件通常存储在磁盘上,其位置由数据库管理员指定。

控制文件 (Control File):

  • 控制文件: 包含数据库的元数据信息,例如数据库名称、数据文件和重做日志文件的位置、时间戳等。

控制文件对于数据库的启动和运行至关重要。 如果控制文件丢失或损坏,数据库可能无法启动。

重做日志文件 (Redo Log File):

  • 重做日志文件: 记录对数据库所做的所有更改。 它们用于在数据库崩溃或发生故障时恢复数据。

系统全局区 (SGA):

  • SGA: 是一个共享内存区域,由 Oracle 数据库实例使用。 它包含数据库缓冲区缓存、共享池、重做日志缓冲区等。

SGA 用于存储数据和 SQL 语句,以便快速访问和执行。

程序全局区 (PGA):

  • PGA: 是一个私有内存区域,由每个 Oracle 服务器进程使用。

PGA 用于存储进程特定的数据,例如会话信息和排序区域。

监听器 (Listener):

监听器 (Listener):是一个独立的进程,监听客户端连接请求,并将请求转发到相应的数据库实例。

监听器通常监听 1521 端口(默认端口)。

SQL 的分类

DDL (Data Definition Language):

  • 数据定义语言,用于定义和管理数据库结构(如 CREATE TABLE, ALTER TABLE, DROP TABLE)。

DQL (Data Query Language):

  • 数据查询语言,主要指 SELECT 语句,用于查询数据。

DCL (Data Control Language):

  • 数据控制语言,用于管理权限(如 GRANT, REVOKE)。

DML (Data Manipulation Language):

  • 数据操作语言,用于操作数据(如 INSERT, UPDATE, DELETE)。

常用对象

表 (Table):

  • 存储数据的核心结构。

视图 (View):

  • 基于表的虚拟表,用于简化查询或限制数据访问。

索引 (Index):

  • 提高查询性能的结构。

序列 (Sequence):

  • 用于生成唯一编号(如主键)。

事务 (Transaction)

一组 SQL 操作的集合,要么全部成功,要么全部失败(如 INSERT + UPDATE)。

Oracle 默认支持事务,使用 COMMIT 提交,ROLLBACK 回滚。