Oracle备份与恢复

Oracle备份与恢复

 

9.1 目标

本节中,您应该能够:

  • 设定数据库以进行备份与还原操作
  • 建立与管理数据库备份
  • 恢复和复原数据库
  • 使用闪回功能

 

9.2 Oracle恢复功能

  • 实例在发生错误后会自动进行恢复(损毁恢复)
  • 数据文件介质恢复
  • 闪回:
    – 闪回查询
    – 闪回版本查询
    – 闪回事务查询
    – 闪回表
    – 闪回删除
    – 闪回数据库

 

Oracle提供了多重功能,可让您从数据库的错误中恢复,其中包含了硬件故障与用户错误。在本节中,您将学会如何实行备份和还原策略,在硬件故障时保护数据库。此外,您还会学到如何使用闪回功能来恢复用户错误。

[Read more…]

【MySQL学生手册】MySQL客户端程序的调用

本文地址:https://www.askmaclean.com/archives/mysql-client-involve.html

 

MySQL客户端程序通过命令行调用,如使用Windows命令行窗口或Linux Shell Teminal。当你调用了客户端程序,你可以在程序命令后指定命令项来控制其行为。命令项可以设置在配置项文件中。一些命令项可用于告知客户端如何连接MySQL Server,其它一些则告知程序如何执行相应操作。

 

本节中例子都使用mysql程序,不过一般在mysql程序上可用的原则上对其它命令行客户端程序也可用。

 

 

为了了解MySQL程序所支持的命令项,可以通过调用 --help项。如,了解如何使用mysql程序:

shell> mysql --help

 

查看程序当前版本,可以使用 --version项。如当前mysql客户端程序版本为:

 

 

虽然说没有必要要求客户端运行程序的版本和服务端保持一致。多数情况下,高版本或低版本的客户端程序都能够成功连接到服务端。不过,不同版本可能会由于一些bug而导致问题,因此最好使用匹配兼容的版本。

[Read more…]

【MySQL学生手册】MySQL第三章测试

本文地址:https://www.askmaclean.com/archives/mysql-3rd-chapter-test.html

 

 

从回答中选出你认为正确的答案:

1. 以下哪些陈述是正确的?
a. 在对MySQL Server设置SQL模式后,它会对所有连接到此服务的客户端起作用。
b. 如果你需要设置两个SQL模式(如,STRICT_ALL_TABLES和ERROR_FOR_DIVISION_BY_ZERO模式),你必须执行两个SET sql_mode语句。
c. 除非显示进行全局声明,否则设置SQL模式仅会对进行此设置的客户端有影响。
d. SQL模式会对server的行为进行影响,如它们会影响到server无效输入数据处理方式。
e. SQL模式可以影响到server对客户端所提供的功能;如你可以使用SQL模式来启用或关闭InnoDB支持。

答案:C,D

 

仅在global全局模式下,SQL模式设置会对所有之后连接服务的客户端其作用。如果有多个SQL模式,你需要使用逗号分隔模式并执行相应语句:

 

SET sql_mode = 'STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO';

[Read more…]

MySQL的SQL查询优化课程

MySQL的SQL查询优化课程

文档下载地址: https://zcdn.askmaclean.com/MySQL%E6%9F%A5%E8%AF%A2%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96.pdf

 

 

第一课:课程介绍

 

 

 

第二课:数据访问优化

 

 

 

第三课 了解MySQL查询优化概念(1)

 

 

 

第四课 了解MySQL查询优化概念(2)

 

 

 

第五课 了解EXPLAIN

 

 

 

 

第六课 SELECT语句优化实例

 

 

 

L7 – 优化实例 – 单个复杂查询 vs 多个简单查询

 

 

L8 – 优化实例 – JOIN语法中表顺序的影响

 

 

L9 – 优化实例 – 子查询,Exists,表连接?谁是最优之选

 

 

L10 – 优化实例 – 聚合函数 MIN,MAX的调优

 

 

L11 – 优化实例 – Group By语法优化

 

 

L12 – 优化实例 – 使用Limit语法进行分页优化

 

 

L13 – 优化实例 – Union和Union ALL之间的性能差别

 

 

L14 – 优化实例 – 索引和不等号

 

 

L15 – 最佳实践建议总结

 

 

 

【MySQL学生手册】MySQL的升级

本文地址:https://www.askmaclean.com/archives/mysql-upgrade.html

 

 

我们知道,对于MySQL的新版本开发仍在继续,Oracle现在对MySQL发行版更新也很频繁。新版本中增加了许多新特性且修正了旧版本中发现的问题。然而,你不应该在未深入了解升级所涉及到的问题和困难程度的情况下贸然进行新版本的升级。如果你需要进行升级,请在执行操作前仔细阅读官方的《MySQL参考手册》:

  • 总是留意查看升级部分中是否有你所需进行升级时要注意的要点。如果有,请遵照所描述的操作步骤进行升级操作。
  • 检查修改注意部分中在你当前安装版本后的所有相关修改信息,由于有些修正并非都是向后兼容的,因此在你进行升级时,你需要对你的已存应用进行一定的改变。

 

除了那些警告提示外,升级MySQL总体上可以简单使用以下步骤进行操作:

  • 备份你的数据库
  • 关闭Server
  • 在已存版本上安装新版本MySQL
  • 启动Server

 

如果你在原有版本的最顶层目录上覆盖安装了最新版本MySQL数据库,你可能就不需要做太多的重新设定。这是因为MySQL在Windows版本的安装,RPM包安装,和源文件安装中都使用相同的安装目录,且无关MySQL版本。不过,如果你在升级MySQL时使用tar文件安装的话,新发行版本的安装更像是进行基于特定版本的目录安装,而不是按已有的安装目录进行安装。因此,在这种情况下,你就需要在升级安装时进行一些重新设置了。如果你已经建立有一个软链接来指向你的旧有安装目录,你可以删除此链接,重建并指向新的安装目录。之后操作中对此链接的引用将对新安装的文件进行访问。

[Read more…]

【MySQL学生手册】MySQL二进制日志(Binary Log)

本文地址:https://www.askmaclean.com/archives/mysql-binary-log.html

MySQL Replication(MySQL复制)使用的是一种日志传送复制解决方案。日志传送是指将所有主库(master)上的数据变化存储在一个日志中并发送日志,然后从库(slave)从这些接收到的日志读取信息并依次执行。过程中存储的日志称为二进制日志。由于需要实时地下载日志文件并执行其中内容,因此这意味着一旦一个日志文件事件产生,它会被发送到相连的从库并进行执行。当然,由于网络传输延时和类似问题,它会花上几秒或在甚至最差情况几分钟来接收这些更新。然而,理想状态下这中延时会被控制在1秒内。

 

为了启用二进制日志,使用 --log-bin项(在MySQL Server配置文件中进行设置)。

 

MySQL Server二进制日志默认被建立在 –datadir设置的目录中。其文件名会如以下形式:hostname-bin.000001。你也可以直接将二进制日志文件名和其位置通过 --log-bin项进行指定。

当启动二进制日志后,日志将以顺序进行建立,而不是仅生成一个大的日志文件。它们将以尾缀序号顺序建立,序号大的代表建立的更晚。二进制日志会在以下三种事件发生后,进行日志切换:

  • 当MySQL Server重启时
  • 当达到最大日志大小时(max_binlog_size)
  • 当SQL命令FLUSH LOGS被执行时

[Read more…]

Oracle数据库管理简介

Oracle数据库管理简介

 

Oracle数据库管理简介

 

1.1 目标

从本章中,你应该能够:

  • 描述关系型数据库的结构和使用SQL
  • 分辨Oracle实例与数据库的组件
  • 描述Oracle DBA需执行的基本工作
  • 定义用来管理Oracle数据库的工具
  • 使用My Oracle Support (Oracle Metalink)来研究问题并上报服务要求(SR)

 

1.2关系型数据库: 介紹

关系型数据库是关系和二维表的组合。

Oracle数据库是一种关系型数据库管理系统(RDBMS), 所以在使用Oracle Database建立的数据库就是关系型数据库。关系型数据库使用关系(Relation) 或者二维表格(Two-dimensional table)来存储数据。

[Read more…]

【MySQL学生手册】MySQL日志和状态文件

本文地址:https://www.askmaclean.com/archives/mysql-log-status-file.html

 

MySQL Server会将信息写入几种类型的日志文件中。日志会记录下与被Server处理的SQL语句相关的各种信息:

  • 通用查询日志(general query log)记录了所有从客户端收到的语句。
  • 二进制日志(binary log)记录了对数据进行了修改的语句。
  • 慢查询日志(slow query log)记录了长时间执行的查询。
  • 报错日志(error log)记录了关于MySQL Server启动,关闭和异常情况的诊断信息。

 

这些日志可用于服务状态的确定, 对奔溃后数据恢复,以及用于有帮助,同时也有助于定位运行很慢的查询。之后我们会简单描述下每种日志的启用。虽然它们都不是默认启用的, 但是z在启用后,你需要意识到(特别对于通用查询日志),它们的大小会增长很快。因此,你并不需要将它们都启用起来,尤其对一个很繁忙的数据库。以下是推荐的日志策略:

  1. 在你最初建立MySQL Server的时候,启用通用查询日志,二进制日志及慢查询日志。
  1. 在服务配置好且运行较流畅后,关闭通用查询日志以节约磁盘空间。

 

除了二进制日志外,其他所有日志都是以平文本的形式进行记录。平文日志便于程序或个人进行查看。对于慢查询日志,另一种打开方法是通过使用mysqldumpslow工具;它能对日志中的内容进行总结。如果需要查看二进制日志中的内容,可以使用mysqlbinlog工具。 [Read more…]

MySQL架构概览 – MySQL架构

章节中会介绍MySQL所使用的客户/服务器模型。你会了解:

  • 对MySQL C/S模式的描述
  • 理解通信协议(Communication Protocols)
  • 理解服务器如何支持存储引擎
  • 关于MySQL如何使用内存和磁盘空间的基础知识

 

2.1 MySQL架构概览

 

MySQL架构实际上是一组为了完成数据库服务器任务而协同工作的相关功能组合。这些功能集包含超过50,0000行代码。下图中对其中的功能子系统进行了分层展示,层级之间通过相应API进行交互。多数情况下,每个子系统会对信息进行接收,处理然后再传送给下一个子系统以完成所分配的任务。子系统之间相对独立,这样就会有更大的自由度(如由于执行语句的存储引擎独立性,客户端不必知道哪个存储引擎执行其请求)。
m31_ch2.1_mysql_subsystem_overview

 

2.1.1 核心共享子系统(Core Shared Subsystems)

在MySQL中的每个子系统都能自成一章。由于篇幅所限,这里仅对每个核心共享子系统进行简单描述,以给大家对其性能特点有一个概括性理解。

 

进程,线程和资源管理器(Process, Thread and Resource Management):

MySQL使用了一个基于线程的服务器架构,允许各种执行线程(或称为轻量级进程)访问核心共享资源。MySQL这种的多线程单进程架构能保证多个执行线程之间不会相互冲突或覆盖重要数据。使用基于线程的服务器架构最值得注意的优点是:

  • 节约成本 – 和进程相比,线程的建立和销毁成本更低。新的线程可使用其父进程的地址空间而不需要额外的地址空间。
  • 切换代价低 – 由于线程运行于相同的服务器进程空间中, 因此线程之间的切换代价很小。
  • 极小的开销 – 由于线程可对父进程地址空间进行访问,因此在共享资源下开销也变得极小。

 

缓存(Cache/Buffer)管理:

此子系统专注于缓冲并取回服务器进程中所有线程执行所用的大量数据类型。由于已经将返回的数据进行内存缓存,因此数据缓存使得MySQL可以降低大量对于基于磁盘I/O代价昂贵的操作。

 

网络管理(Networking Management):

此子系统的职责是通过处理在多平台间发送和接收带有MySQL连接请求和命令的网络数据包这样的工作,使得各种通信协议(TCP/IP, 命名管道Named Pipes等)对连接线程变得透明。它也包括了处理安全套接字层(Secured Socket Layers: SSL)这样的工作。

 

日志管理:

这个子系统是为了将各种日志事件子类被维护在一个日志类下而建立的。这样能使得开发者能在不破坏系统核心功能的情况下增加日志和日志事件。通过对日志系统中子系统的区分。各种系统活动(启动,多语句事务,自动增量auto-increment值改变等)就可以通过子类事件进行记录。

 

访问及授权管理:

此子系统定义了所有为执行命令所需的GRANT权限并主要用于保证客户端和服务器间的安全。它会验证用户在登陆过程中的访问权限及查询权限。此子系统也包含了一些对授权表的内存版本修改功能及密码生成功能。

 

2.1.2 存储引擎接口(Storage Engine Abstraction)

此子系统使得MySQL可以在系统架构中使用不同的表数据handlers(处理子程序)。尽管不是所有存储引擎都完整实现了相关handler API,但大部分独立的handler API都被用于转换数据、schema和索引格式,以使其符合MySQL内部记录格式所需(内存记录格式)。

 

2.1.3 查询解析,优化和执行

由于这些子系统负责接收SQL语句,将语句解构为各种数据结构并以最佳路径进行执行,因此它们被称为MySQL服务器的大脑。

  • 查询解析:

这是一个将SQL语句解析为一个抽象语法的过程。由于此过程非常复杂,因此解析时不能对任何用户变量进行改变。

  • 优化:

此子系统负责找到查询的最优执行计划。

  • 执行:

此子系统又被称为语句执行单元,负责按照通过SQL命令解析和优化后所得的最优执行路径进行执行。执行进程的基本功能是都有一个指针作为其第一参数以将结构数据包发回给客户端。

 

2.1.4 查询缓存(Query Cache)

不像其它MySQL子系统,此“子系统”组件由一系列类组成。它不仅负责缓存被执行的SQL命令,还存储命令执行后的结果。

 

Mysql 客户端/服务器(C/S)架构

本文地址:https://www.askmaclean.com/archives/mysql-log-status-file.html

 

 

MySQL在整个网络环境中使用客户端/服务器(Client/Server)架构运行。换言之,其核心程序扮演着服务器角色,而各个客户端程序连接到服务器并提出请求。MySQL的安装涉及以下主要组件: MySQL Server, Client程序和MySQL非客户端工具

 

 

 

2.2.1 MySQL Server

MySQL Server或者说mysqld,实际上是一个数据库服务器程序。它管理着对磁盘数据库和内存的访问。MySQL Server进行多线程操作,它支持多个客户端连接的同时访问。为了更好地管理数据库内容,MySQL Server的特色架构模型支持多种存储引擎以处理不同类型的表(例如,它同时支持事务和非事务表)。

 

由于MySQL Server此特性配置可能随时间变化而有所改动,因此当你下载新版本MySQL时候,请仔细阅读相关版本文档。

 

请您清楚了解我们的用词,server(服务器)和host(主机)的用词区别。在这里Server是指软件(MySQL server程序mysqld)。Server的特征中有它的版本号,指的是哪些特性包括,哪些不包括等。而host是指server程序运行所在的物理机。Host的特征中包括了硬件配置,所运行的操作系统,其网络地址等等。一个host可以有多个mysqld实例在上面同时运行。

 

2.2.2 Client程序

客户端程序被用于和server进行通信以修改服务器端server管理的数据库信息。MySQL提供了多种client端工具程序:

  • MySQL Workbench, 一种作为访问Mysql Server的图形化的前端工具(具有MySQL Query Browser和MySQL Administrator相关功能,MySQL Query Browser和MySQL Administrator现已不再提供更新)。
  • mysql,一种文本形式的命令行前端工具。
  • 其他命令行客户端工具包括导入数据文件用的mysqlimport,生成备份的mysqldump, 作为服务器管理的mysqladmin,和用于检查数据库文件完整性的mysqlcheck。

 

MySQL客户端/服务器(Client/Server)模型:

MySQL可运行于Windows, Unix和Linux平台上,但客户端和服务器之间的沟通并不受限于所运行的操作系统。客户端程序和服务器之间的连接可以在同一台主机上进行,也可以是不同的主机间进行,且客户端主机和服务器主机不需要操作系统保持一致。例如,客户端程序可以运行于Windows上,而所连接的Server则运行在Linux host上。

 

大多在此讨论的概念都是指针对于MySQL运行的系统。除了一些特定的平台说明外,这里”Unix”一般都是指包括Linux和其他的Unix-like操作系统。

 

2.2.3 通信协议

以下详细描述了和MySQL server进行交互所使用各种不同通信协议:

  • TCP/IP – 传输控制协议(Transmission Control Protocol)/互联网协议(Internet Protocol),是一套被用于连接互联网上各主机的通信协议。TCP/IP一开始是用于UNIX操作系统建立互联网通信的。现在它已经成为了一种网络数据传输的事实标准。即便那些拥有自己通信协议的网络操作系统,如Netware也支持TCP/IP协议。
  • Unix Socket – 在计算机世界,一个socket是一种内部进程通信形式,它被用于在相同主机上形成进程间的双向通信连接点(在本地系统上的一个物理文件)。
  • 共享内存(Shared Memory) – 一个在程序间传送数据的有效方法。一个程序会建立一个内存区以提供其它受允许的进程进行访问。Windows显式”passive”连接模式仅可工作于(Windows系统)主机中。
  • NT管道这种命名管道设计更偏向于客户端-服务器通信,它们更像socket:除了用于通常的读写操作外,Windows命名管道也同时对server应用支持显式”passive”被动连接模式。仅在单独(Windows平台)主机中运行。

 

2.2.4 MySQL非客户端工具

有这么些程序运行时独立于server之外。它们首先在操作时并不会和server建立连接。如myisamchk。它执行表检查及修复操作。其它此类型程序有myisampack,它用于建立压缩的只读版本的MyISAM表。这两个工具都可以直接对MyISAM表文件进行访问,且独立于mysqld数据库server之外。

 

沪ICP备14014813号

沪公网安备 31010802001379号