• Oracle总结


    1、RMAN全备备份文件的顺序
    备份归档日志、所有的数据文件、控制文件、spfile、再次备份归档日志
    2、redo日志丢失恢复
    redo日志的三种状态是current、active、inactive
    inactive,可以重建 clear log
    active、current不能变成inactive,只能通过不完全恢复进行恢复,然后重建日志文件
    3、口令文件丢失恢复
    丢失可重建 orapwd file= password= enfries=
    重建完成之后ORACLE正常使用
    4、控制文件丢失恢复
    a> rman 可以备份控制文件
    b> 控制文件可以cp一份备用
    c> 控制文件可以重建手写
    5、体系结构
    物理:
    ORACLE数据库包括instance、database两部分。
    instance包括SGA(系统全局区)跟一些后台进程组成的。
    SGA包括:share pool、db buffer cache、redo log buffer、流池、大型池、JAVA POOL、
    share pool(共享池) :
    库缓存:缓存最近执行的代码,同样的sql多次执行不需要频繁读取数据字典中得数据
    数据字典缓存:存储oracle中得对象定义
    PL/SQL区:缓存存储过程、函数触发器等数据库对象。
    db buffer cache(数据库缓存区)
    redo log buffercache(日志缓存区)
    常见的后台进程:
    DBWn:用于数据库缓存写入磁盘
    LGWn:用于log日志写入磁盘
    CKPT:检查点进程
    SMON:实例维护进程,系统监视器
    MMON:AWR主要进程
    PMON:维护用户进程,进程监视器
    ARCN:归档进程
    database包括数据文件、控制文件、日志文件等。
    逻辑:
    oracle数据块-区-段-表空间-数据库-方案
    多个oracle数据块组成一个区,多个区组成一个段,多个段组成一个表空间,多个表空间组成一个数据库
    表空间和数据文件的关系:
    表空间是由一个或多个数据文件组成的,一个数据文件只属于一个表空间,表空间的大小是所有数据文件大小的总和。
    数据文件和段的关系
    一个段只能存在一个表空间上,但是可分布在属于这个表空间中得多个数据文件中。
    一个段就是一张表
    6、一条SQL语句的执行历程(UPDATE)
    客户端发起一条update语句由服务进程提交到sga,这个服务进程占用的是pga的内存,首先对这条update语句进行语义解析跟语法解析
    硬解析、软解析、软软解析,解析完成后判断无语法错误,然后会在共享池中查找是否有执行计划,如果有则意味着在缓存中有所需的
    语句跟数据,若没有则会生成执行计划,然后将磁盘中的数据提出到缓存中,在此同时会更新undo日志文件,update语句在缓存中执行
    先写入redo日志,然后修改过的数据会通过dbwr写入磁盘,最后通过服务器进程返回客户端,完成SQL执行历程。
    7、redo log跟undo log 的作用
    这两类日志文件作用是保持数据的完整性跟一致性
    redo log 重做日志(用于前滚日志) undo log 撤销日志(用于回滚日志)
    一条insert语句redo跟undo都会生成。
    redo记录的是insert的状态
    undo记录的是insert之前的状态
    8、索引
    a、索引是数据库对象之一,用于加快数据库的检索,类似于书籍的索引,在数据库中索引可以减少数据查询结果
    时需要读取的数据量。
    b、索引是建立在表上的可选对象;索引的关键在于通过一组排序后的索引键来取代默认的全表扫描检索的方式,从而提高检索效率。
    c、索引在逻辑上和物理上都与相关的表和数据无关,当创建或者删除一个索引时,不会影响基本的表。
    d、索引一旦建立,在表上进行DML操作时,oracle会自动管理索引,索引删除,不会产生影响。
    e、索引对用户是透明的,无论表上是否有索引,sql语句的用法不变。
    f、oracle创建主键时会自动在该列上创建索引
    9、索引的基本操作
    创建索引的基本语法
    create index index_name on table_name;
    重命名索引
    alter index index_name rename to index_name2;
    合并索引
    alter index index_name coalesce;
    创建索引
    删除原索引,重建索引
    alter index index_name rebuild;
    删除索引
    drop index index_name;
    10、索引的种类
    a、B树索引(默认索引):最常用的索引,是一颗二叉树;不管查询条件怎么样,查询速度基本相同;能够适应精确查询,模糊查询
    和比较查询。
    创建语句:create index index_name on EMP('name');适用于列基数(列不重复的个数)。
    b、位图索引:建立位图索引时,oracle会扫描整张表,并为索引列的每个取值建立一个位图(要么0要么1)来标示该行是否包含该位图
    的索引列的取值如果为1,表示对应的rowid所在的纪录包含该位图索引的列值,通过位图索引中的映射函数完成位到行的ROWID的转换
    创建语句:create bitmap index index_name on EMP('name');适用于基数小,种类少的列(性别)
    c、单行索引和复合索引(基于多个列创建):如果索引建立在多个列上,只有它的第一个列贝where子句引用时,优化器才会适用该索引,
    即至少要包含组合索引的第一列
    d、函数索引:当要经常访问一些函数或者表达式时,可以将其存储在索引中,这样下次访问时,该值已经计算出来了可以加快查询速度
    函数索引既可以适用B数索引,也可以适用位图索引;当函数结果不确定时采用B树索引,结果是固定的某个值时使用位图索引。寒暑索引中可以使用len、
    trim、substr、upper(每行返回独立结果的)不能使用sum、max、min、avg等
    创建语句:create index index_name on EMP(upper(name));
    此时使用函数索引 select * from student where upper(name) = 'swith';
    11、索引的一些特点
    a、如果有两个或两以上的索引时其中有一个唯一性索引,而其他的是非唯一的则这种情况下会使用唯一性索引而完全忽略非唯一性索引。
    b、带有索引的列不能进行函数计算以及隐式转换,否则会造成索引失效。
    12、oracle启动过程
    startup nomount 启动数据库实例,读取参数文件,不加在数据库;
    alter database mount 加载数据库,但数据库处于关闭状态,读取控制文件;
    alter databses open 加载并打开数据库,读取数据文件;
    13、服务端连接不上服务器的原因
    a、用户名密码错误
    b、监听没启动
    c、服务端文件配置错误
    14、oracle中控制文件的作用
    记录了:数据库名称和数据库唯一标识符(DBID)、创建数据库的时间戳、有关数据库文件、联机重做日志、归档日志的信息表空间信息、RMAN备份信息
    指导数据库,找到数据文件,日志文件并将数据库启动到open状态。
    15、oracle中参数文件的作用
    参数文件在数据库实例启动时候加载的,决定了数据库的物理结构、内存、数据库的限制及系统大量的默认值、数据库的各种物理属性、指定数据库控制文件名和路径等信息,
    是进行数据库设计和性能调优的重要文件。
    参数文件分为:
    pfile 可以手工修改
    spfile 二进制文件,不能手工修改
    16、oracle备份方式
    a、RMAN备份(物理备份) 特点:数据库需要开启归档模式 ,支持增量备份,自动管理备份文件,自动化备份与恢复,不产生重做信息,支持映像复制
    备份的数据文件支持压缩处理,备份文件有效性检查功能。
    RMAN〉backup database;restore database;recover database
    b、exp/imp、expdp/impdp(导入导出逻辑备份)
    四种模式:exp 全库导出full=y,用户到出owner=,表导出tables=,表空间导出tablespace=
    expdp 全库导出full=y,用户导出schemas=,按表导出TABLES=,按查询条件导出query='';按表空间导出TABLESPACES=,并行进程parallel=;
    c、冷备
    直接打包复制,操作需要关库,最简单的,low

    17、开启归档模式
    shutdown immediate;
    startup nomount;
    alter database archivelog ;
    alter database open;

    18、查锁表sql
    select l.session_id sid,
    s.serial#,
    l.locked_mode,
    l.oracle_username,
    s.user#,
    l.os_user_name,
    s.machine,
    s.terminal,
    a.sql_text,
    a.action
    from v$sqlarea a, v$session s, v$locked_object l
    where l.session_id = s.sid
    and s.prev_sql_addr = a.address
    order by sid, s.serial#;
    19、exp/imp、expdp/impdp区别
    a、使用expdp要先在数据库中创建directory,并给相应的用户read、write权限。
    b、常用导出方法有一些参数不一样例如按用户导出exp:user=,expdp:schemas=,owner=。有些参数也相同比如全库导出full=y
    c、expdp可以通过parallel参数增加线程来显著的加速作业。
    d、expdp/impdp只能在DB服务器上运行,exp/imp可以再客户端上运行,expdp/impdp所支持的参数类型更多,功能更强大。
    20、oracle的客户端 : PLSQL、toad for oracle
    21、数据库迁移的方式
    a、exp/imp、expdp/impdp 数据库导出工具导出dump文件实现数据库迁移。
    b、rac集群架构能够实现数据库迁移。
    c、DG高可用主备库同步,能够实现数据库迁移。
    d、rman备份能够迁移。
    e、冷备,打包发走能够实现数据库迁移。
    f、某些工具能够实现数据库迁移PLSQL

    一:概述

    一、简介

    1. 概念:Oracle 数据库是 ORACLE 公司提供的以分布式数据库为核心的一组软件产品, 是使用最为广泛的大型数据库管理系统。

    2. 特点

    1. 开放性:Oracle能在所有主流平台上运行(包括Windows),完全支持所有的工业 标准,采用完全开放策略,可以使客户选择最适合的解决方案,对开发商全力支持。

    2. 可伸缩性,并行性:Oracle的并行服务器通过使一组结点共享同一簇中的工作来扩 Windownt的能力,提供高可用性和高伸缩性的簇的解决方案。如果WindowsNT不能满足 需要,用户可以把数据库移到UNIX中。Oracle的并行服务器对各种UNIX平台的集群机制都有 着相当高的集成度。

    3. 性能优越:Oracle几乎是性能最高的关系型数据库,保持开放平台下的TPC-D和 TPC-C的世界记录。

    4. 客户端支持及应用模式:Oracle支持多层次网络计算,支持多种工业标准,可以用 ODBC、JDBC、OCI等网络客户连接。

    5. 操作性:Oracle相对于其他RDBMS来讲较复杂,同时提供GUI和命令行,在 WindowsNT和Unix下操作相同。

    6. 使用性:Oracle具有相当长时间的开发经验,完全向下兼容。得到广泛的认可与应 用,完全没有风险。

    7. 安全性:Oracle获得了最高认证级别的ISO标准认证。它提供多层安全性,包括用于 评估风险、防止未授权的数据泄露、检测和报告数据库活动,以及通过数据驱动的安全性在数 据库中实施数据访问控制的控制。

     

    3. 架构体系


     

     

     

    1. 数据库实例(instance):指数据库服务器的内存及相关处理程序,是Oracle 的心 脏,包括两个部分:

     


     

    部分:

    1. SGA(System Global Area,即系统全局区活共享内存区),性能核心,包括三个


     

    1. 数据缓冲区:可避免重复读取常用的数据;

    2. 日志缓冲区:提升了数据增删改的速度,减少磁盘的读写而加快速度;

    3. 共享池:使相同的SQL语句不再编译,提升了SQL的执行速度;

    2. 后台进程:系统监控、进程监控、数据读写、日志读写、检验点进程,配合完成 数据库管理任务;

     

    2. 数据库文件

    1. 数据文件(.dbf):存放数据库的数据,保存信息的物理存储位置;

    2. 控制文件(.ctl) :存放数据库的基本信息,告诉数据库到哪里找到数据文件和重做 日志文件等;

    3. 日志文件(.log):记录日志信息

    4. 参数文件(.ora):数据库启动时读取的属性

     

    4. 逻辑结构


     

     

     

    1. 表空间(tablespace):最高级的逻辑存储结构,数据库是由多个表空间组成,表 空间对应于若干个磁盘文件,即表空间是由一个或多个磁盘文件构成的。

    1. 系统表空间:默认的表空间,用于保存数据字典,保存所有的PL/SQL程序的源代 码和解析代码,包括存储过程、函数、包、数据库触发器等,保存数据库对象(表、视图、序 列)的定义;

    2. 数据表空间:用于存储用户数据的普通表空间;

    3. 临时表空间:存储SQL执行过程中产生的临时数据;

    4. 回滚表空间:用于存放回滚段,每个实例最多只能使用一个撤销表空间;

     

     

    2. 数据段(Segment):是由多个数据区构成的(可以不连续),它是为特定的数据 库对象(如表段、索引段、回滚段、临时段)分配的一系列数据区。

    1. 数据段:保存表中的记录。当创建一个表时,系统自动创建一个以该表的名字 命名的数据段。

    2. 索引段:索引中的索引条目。一旦建立索引,系统自动创建一个以该索引的名字 命名的索引段。

    3. 临时段:在执行查询等操作时,Oracle可能会需要使用到一些临时存储空间,用 于临时保存解析过的查询语句以及在排序过程中产生的临时数据。

    4. 回滚段:保存回滚数据。当一个事务开始处理时,系统为之分配回滚段,回滚段 可以动态创建和撤销。

     

    3. 数据区(Extent):一组连续的数据块,用来保存特定数据类型的数据。


    4. 数据块(Blocks):Oracle用来管理存储的最小单元,也是最小的逻辑存储结构,

    块中存放表的数据和索引的数据。

    1.     块的结构:由块头、表目录、行目录、空余空间、行数据五部分组成。

    1. 块头(header/Common and Variable):存放块的基本信息,如:块的物理 地址,块所属的段的类型。

    2. 表目录(Table Directory):存放表的信息。 3. 行目录(Row Directory):存放行数据信息。

    4. 空余空间(Free Space):块中未使用的区域,这片区域用于新行的插入和已经 存在的行的更新。

    5. 行数据(Row Data):真正存放表数据和索引数据的地方。这部分空间是已被 数据行占用的空间。

     

    2. 块的存储区:主要包含空闲空间和已经使用的空间。

    1. PCTFREE参数:指定块中必须保留的最小空闲空间比例。当块中的空闲存储空 间减少到PCTFREE所设置的比例后,Oracle将块标记为不可用状态,新的数据行将不能被加入 到这个块。

    2. PCTUSED参数:制定一个百分比,当块中已经使用的存储空间降低到这个百 分比只下时,这个块才被重新标记为可用状态。

     

    6. 数据类型

     

     

     

     

    二、安装部署(Windows)

    1. 官网下载(https://www.oracle.com/database/technologies/oracle-database- software-downloads.html#19c


     

     

     

     

    2. 解压并运行setup.exe进行安装

     

     

     

     

     

     


     

     

     

     

    3. 配置监听(Net Configuration Assistant 和 listener.ora)

     

     

     


     

     

     

     

    4. 配置服务(客户端)(Net Configuration Assistant 和 tnsnames.ora)

     

     

     


     

     

     

     

     

     

    二:Shell 操作

    一、数据定义语言(DDL)

     

     

     


    二、数据操作语言(DML)

     

     

     

     

     

    三、数据查询语言(DQL)

     

     

     

     

    1. 单表

    1. 条件查询

    1. 条件判断

     

     

     

    2. 逻辑判断


     

     

     

    3. 范围查找

     

     

     

     

    4. 模糊查找

     

     

     

    2. 分组

     

     

     

     

    3. 排序

     

     

     

     

    4. 分页

     

     

     

     

    2. 多表


    1. 表与表之间的关系

    1. 一对一:唯一外键对应/主键对应

    2. 一对多:多方创建外键对应一方的主键

    3.      多对多:创建中间表,至少有两个字段分别作为外键指向多对多双方的主键。

    2. 连接查询

    1. 方言:过滤的笛卡尔积

     

     

     

     

    2. 自然连接:属性相同的元组对

     

     

     

    3. 内连接:等值连接

     

     

     

     

    4. 外连接:注意空值

     

     

     

     

     

    2. 子查询:嵌套查询(select中包含select)


     

     

     

     

    四、数据控制语言(DCL)

     

     

     

     

     

    五、完整性约束

    1. 作用:DBMS自动按照一定的约束条件对数据进行监测,防止不符合规范的数据进入数 据库,以确保数据库中存储的数据正确、有效、相容。


    2. 实体完整性

    1. 概念:主键的值不能为空或部分为空的约束条件称为实体完整性。

    2. 作用:表示每一行数据不重复。

    3. 分类(所有的INT改为NUMBER,VARCHAR改为VARCHAR2)

    1. 主键约束(PRIMARY KEY):指定该列的值可以唯一地标识该列记录且不能为空

     

     

     

    2. 唯一约束(UNIQUE):指定某列或者几列组合不能重复。

     

     

     

     

    3. 域完整性

    1. 概念:域完整性指列的值域的完整性。

    2. 作用:保证表中某些列不能输入无效的值。

    3. 分类(所有的INT改为NUMBER,VARCHAR改为VARCHAR2) 1. 非空约束(NOT NULL):指定某列不能为空

    2. 默认约束(DEFAULT):设置默认值


     

     

     

     

    4. 参照完整性

    1.     概念:外键约用来在两个表之间建立连接,一对多关系中一方的主键。

    2. 作用:保持数据的一致性,完整性

     

     

     

     

     

    六、视图

    1. 概念:视图是从一个或多个表中导出的一个虚拟表,用户对视图的各种操作都不会影 响源数据,保障数据库系统的安全。

    2.      作用:简化用户对数据的操作,屏蔽真实表结构变化的影响,保护数据库数据安全。

    3. 使用


     

     

     

     

     

     

    Keep moving forwards~
  • 相关阅读:
    常用的16个Java实用工具类,Java开发人员请收藏!
    JVM内存区域与垃圾回收
    听说你还不知道Java代码是怎么运行的?
    Java 到底是值传递还是引用传递?
    Java线程池实现原理及其在美团业务中的实践
    别再说Java对象都是在堆内存上分配空间的了!
    面试常问的Java虚拟机内存模型,看这篇就够了!
    好用的Java工具类库,GitHub星标10k+你在用吗?
    MySQL 全文索引实现一个简单版搜索引擎
    laravel 数据库里的图片重命名
  • 原文地址:https://www.cnblogs.com/-X-peng/p/13684034.html
Copyright © 2020-2023  润新知