Maclean’s Oracle Database Tech Blog Archives

  • ORACLE TSPTIR 表空间时间点恢复过程

    如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复! 诗檀软件专业数据库修复团队 服务热线 : 13764045638    QQ号:47079569    邮箱:[email protected]   目录 定义 术语 方法 用户管理的TSPITR在相同服务器上 用户管理的TSPITR在不同的服务器上 使用RMAN 全自动TSPITR 自定义TSPITR使用自动辅助实例 用户管理辅助实例的TSPITR   定义 表空间时间点恢复(TSPITR)是恢复一个或多个表空间(除system表空间)到一个优先数据库其他部分的时间点.下面的场景说明了什么时候需要使用TSPITR: 恢复drop或truncate的表 恢复逻辑损坏的表 恢复drop 的表空间 恢复只影响部分数据库的不正确的批处理作业或DML语句 包括克隆一个新实例/数据库在相同或不同的服务器上使用最少的数据文件,恢复到指定的时间,导出对象,然后移动到主库中.   术语 术语 描述 TSPITR 表空间时间点恢复 Auxiliary Database or Instance 从备份中恢复出来的当前数据库的副本,通常在辅助主机上. Recovery Set 主库(源库)上所有需要按时间点恢复的表空间也称作Transportable Tablspase Set (TTS) Auxiliary Set 所有在辅助数据库执行恢复必需要恢复的文件(system,sysaux和undo表空间)   方法 用户执行TSPITR在相同服务器上 查询辅助集文件和你主库需要恢复的表空间的id和名字. SQL> col…

  • Oracle 11g OCM考纲Streams单向流复制

      Oracle 11g OCM考纲Streams单向流复制 下载 Oracle 11g OCM考纲Streams单向流复制

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

    本文地址:https://www.askmac.cn/archives/mysql-log-status-file.html   MySQL Server会将信息写入几种类型的日志文件中。日志会记录下与被Server处理的SQL语句相关的各种信息: 通用查询日志(general query log)记录了所有从客户端收到的语句。 二进制日志(binary log)记录了对数据进行了修改的语句。 慢查询日志(slow query log)记录了长时间执行的查询。 报错日志(error log)记录了关于MySQL Server启动,关闭和异常情况的诊断信息。   这些日志可用于服务状态的确定, 对奔溃后数据恢复,以及用于有帮助,同时也有助于定位运行很慢的查询。之后我们会简单描述下每种日志的启用。虽然它们都不是默认启用的, 但是z在启用后,你需要意识到(特别对于通用查询日志),它们的大小会增长很快。因此,你并不需要将它们都启用起来,尤其对一个很繁忙的数据库。以下是推荐的日志策略: 在你最初建立MySQL Server的时候,启用通用查询日志,二进制日志及慢查询日志。 在服务配置好且运行较流畅后,关闭通用查询日志以节约磁盘空间。   除了二进制日志外,其他所有日志都是以平文本的形式进行记录。平文日志便于程序或个人进行查看。对于慢查询日志,另一种打开方法是通过使用mysqldumpslow工具;它能对日志中的内容进行总结。如果需要查看二进制日志中的内容,可以使用mysqlbinlog工具。

  • MySQL架构概览 – MySQL架构

    章节中会介绍MySQL所使用的客户/服务器模型。你会了解: 对MySQL C/S模式的描述 理解通信协议(Communication Protocols) 理解服务器如何支持存储引擎 关于MySQL如何使用内存和磁盘空间的基础知识   2.1 MySQL架构概览   MySQL架构实际上是一组为了完成数据库服务器任务而协同工作的相关功能组合。这些功能集包含超过50,0000行代码。下图中对其中的功能子系统进行了分层展示,层级之间通过相应API进行交互。多数情况下,每个子系统会对信息进行接收,处理然后再传送给下一个子系统以完成所分配的任务。子系统之间相对独立,这样就会有更大的自由度(如由于执行语句的存储引擎独立性,客户端不必知道哪个存储引擎执行其请求)。   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…

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

    本文地址:https://www.askmac.cn/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…

  • Oracle Database Cloud服务购买流程初探

    Oracle推出自家的Cloud服务已有多时了,不过国内对其接触还较少。其Cloud服务中Database云服务自然是不可缺少的啦,对于Oracle来说,这属于DaaS服务,个人或公司都可购买使用。 下面我们就来简单介绍下购买其Database服务的大致过程。 1. 首先登陆https://cloud.oracle.com/ 2. 在菜单栏【Products & Services】下,右边的【Platform】列【Database】链接中,可以直接转至其Database专题页,你可以使用【Try It】进行注册以获得30天的试用体验。也可以像我们一样进入【Sign In】,找到订单页进行正式购买。 3. 在Sign In跳转至登陆页后,点击【Sign In My Account】。 4. 登陆后我们可以看到,由于正在申请数据库【Try It】,因此已经有一个databasetrial8167的申请正在等待Oracle审批回复,对于试用申请,一般会需要1周左右时间,在审批通过后,你在服务中申请的domain才会被激活,Oracle会发你邮件通知您试用申请通过,因此需要耐心等待。 回到正题,由于需要买正式服务,因此点【Orders】,之后点【Buy Services】进入服务购买流程。 5. 这里我们可以看到很多收费服务,查找database我们可以很快找到关于数据库的云服务。 6. 不同的服务对应的不同的数据库配置和流量限制,点击其中一个服务【View Details】查看细节,选择所需服务模式【Term】,这里我们选择Month-to-Month, Quantity可以根据需要填写。在填写完后点击【Add to Cart】加入购物车,进入之后的付款流程。 ** 请注意:本页中,左上角需要选择United States,因为China还不提供按月收费服务,如果是China的话,只能选到1 Year, 2 Year, 3 Year的年度服务。   7. 加入购物车后,你可以在页面右边找到【View Cart Details】进行服务的【Checkout】。 期间可能需要你再次登陆以提交更具体的客户信息。   8. 填写客户信息并确认保存,【Save and Continue】。 ** 请注意:在进行联系地址确认时,由于选择的是United States中的每月付费服务,而页面显示为美国地区,因此地址中必须提供一个美国地址,由于验证较为严格,请一定填写一个准确地址和邮件投递号。如果你选择为中国地区,且为年付,那么地址问题一定难不倒您 在地址确认无误后,点【Save and Continue】。 9. 进入付款信息填写 确认付款信息并保存 服务协议确认 订单完成!!   在购买服务后,我们就可以在购买服务时填写的邮箱中收到确认E-mail了。…

  • MySQL的SQL解析器和存储引擎层

    客户端通过以SQL语句的形式发送请求给服务器端从而从表中获取数据或对表数据进行修改。而服务端程序使用以下两层处理模型以执行每个语句请求: 上层包括SQL解析器(parser)和优化器(optimizer)。 下层包括了一组存储引擎。 需要注意的是,SQL层并不依赖于存储引擎管理的表。这意味着客户端通常不需要考虑哪个引擎被涉及处理其SQL语句,也不用考虑访问和更新的表是受到哪个引擎的管理。当然也有例外: CREATE TABLE语句有ENGINE项可用于在建立表时启用你所定义的存储引擎。ALTER TABLE语句也含有一个ENGINE项可以使你能将原表转换使用一个不同的存储引擎。 一些索引类型仅在某些特定存储类型中可用。例如, 仅MyISAM引擎支持空间索引(spatial index), 仅MyISAM, InnoDB(6.4以上)支持全文索引(full-text)等。 COMMIT和ROLLBACK仅对由事务型存储引擎(如InnoDB)管理的表有效果。 存储引擎细分 下图简单展示了MySQL服务和其存储引擎之间的交互。 依赖存储引擎不同会有以下不同: 存储方法 – 每张表中的数据按其自身的方法进行存储。 事务处理能力 – 某些存储引擎可以对事务进行处理,在执行多SQL语句时能确保数据库的完整性。 锁 – 是指每个引擎对于多线程执行场景中同一个资源的访问限制及同步机制处理。 备份恢复 – 基于不同的存储方法,表数据的备份和恢复也有区分。 优化 – 对于数据存储的优化和通过MySQL服务器的数据抽取,每个存储引擎都有其特定的优化点。 特定特性 – 某些引擎具有一些不同的特性包括全文搜索,参照完整性和处理空间数据的能力。 多数MySQL服务器会以相同的方式进行操作,即所有的常用SQL语句都是引擎无关的。当然,其优化器可能会按不同的存储引擎做出不同的优化判断,但也都是通过所有引擎都支持的一套标准接口(API)进行所有处理。  

  • MySQL的内存使用

    MySQL Server内存使用中包括了用于管理与客户端之间进行沟通和处理数据库内容Server所建立的数据结构。它会在运行时为许多类型的信息分配内存,如: 线程(Thread Handler): 线程在MySQL(或其它程序)中被用于将应用的执行分成多个同步运行的任务。对每个连接到MySQL Server的客户端,Server都会建立一个独立的线程来进行连接处理。MySQL Server为了避免一些可能产生的性能问题,会分配一块小的缓存给这些线程,在客户端断开后,被分配的缓存仍然会被保持。任何新的连接会首先通过此缓存来实例化线程,而不是重新建立一个新线程。这样就能确保内存消耗始终处于最低状态。 缓存(Buffers / Cache) MySQL Server会使用多个buffers(或者称为caches),作为内存集以临时保存数据的输入或输出,目的是避免高成本的磁盘I/O访问。这些缓存主要由缓存管理子系统来进行操作,可对支持MyISAM索引块的索引缓存和持有已打开表的表述符的授权表缓存进行快速访问。此外,MySQL Server还包含了一个查询缓存(Query Cache)用于加速重复查询的处理速度。 MEMORY存储引擎 MySQL Server的一种存储引擎,此引擎允许表被存储在内存上。MEMORY表默认使用哈希索引,这对建立临时表及提高临时表处理速度很有用。然而,当服务器被关闭后,MEMORY表中的所有数据行会丢失。这些表的表结构定义会被存储在.frm文件中,当server重启后,这些表都是空表。 内部临时表 通常,我们碰到MySQL需要建立一张内部临时表的例子都是当你需要进行一个复杂查询时,这强迫你建立一个临时表来解决此类问题。系统变量tmp_table_size决定了这张临时表在转换为一张磁盘存储的MyISAM表之前所能增长的最大值,超出此值后,它将会被自动转换为一张MyISAM表。 客户特定缓存(Client specific buffers) MySQL server同时维护了多个特别设计的缓存以支持独立客户端的连接。例如包括了用于交互信息的通信缓存,用于表的读缓存及支持表连接和排序操作的缓存等。   2.5.1 数据存储 数据存储涉及到对性能调优和MySQL整体架构都非常重要的三个方面。这些方面是数据库服务器存储和检索系统的基础。   持久的数据存储: 数据存储系统要求持久性,或者说在服务重启时保留住数据的能力。这需要通过持久性数据设备如硬盘或二级存储设备来完成。此类数据存储对于数据的持续性和完整性保证是其关键,但是设备对数据的读写数据会相对慢些。   挥发性存储: 对于易挥发性存储如随机访问内存(RAM),一般处于持久性数据存储和数据库服务之间。好处是可以瞬时内存中读取数据。当然,一旦发生间歇性或非间歇性断电,这些数据会丢失。 逻辑数据呈现: 当数据从持久数据存储(硬盘)中移至易挥发性存储(内存),它必须有逻辑性地组织在一起并被保存称为页的许多块中。这些页将会由操作系统和硬件缓冲池来管理,作为操作单元被自动分配或释放。 MySQL的缓存管理子系统将和操作系统上的缓存管理一起来处理不同数据类型的缓存。每个存储引擎有不同的处理方法,我们在之后的存储引擎章节中会对其进行讨论。   2.5.2 挥发性存储(Memory) MySQL会对内部缓存的分配大致分为两类: 全局缓存将会被所有线程(连接)所共享。而本地缓存则和独立的线程相关。MySQL可对这两种分类内存进行大量的控制管理设置。   本地内存: 本地内存是针对特定会话连接并动态分配的。这些内存区在不连接后会被自动释放。本地内存大多被用于处理查询结果。 全局内存: 全局内存是那些被预先分配且可被共享使用的内存。全局内存仅分配一块缓存区。 需要注意的是不断增长的本地内存则会使用更多、甚至占用机器余下的全部内存。当所有服务器内存被使用,操作系统就会开始使用swap交换区来保存内存信息,这样性能就降低了。MySQL Server的性能最终会收到负面效果,甚至可能导致性能崩溃。  

  • MySQL的发行版本类型

    MySQL可用于多种操作系统,其包括Windows和Unix操作平台。除非特别说明,这里”Unix”一般指包括Linux和其他Unix-like操作系统。   你可以通过使用已经包含有MySQL预编译程序的二进制发行版来进行MySQL安装,也可以自己动手编译源文件发行版来完成MySQL的安装。这里我们会对你可选择的各类MySQL发行版进行一下描述。   3.1.1 MySQL二进制发行版(Binary Distribution) 在Windows上,你可以从以下类型的预编译二进制发行版进行安装: 一个基础发行版(MySQL Installer MSI, GA Release),包含了MySQL所需安装的最通用组件及相关配置精灵。这是一个推荐大多数用户使用的版本。 一个包含了所有MySQL安装相关文件的非安装发行版(Zip Archive, GA Release),其中不含有MySQL installer及配置精灵。 你可以使用Installer选择最基本MySQL组件的安装或进行完整安装。默认,MySQL 5.x会被安装在%ProgramFiles%\MySQL\MySQL Server 5.x下,一般%ProgramFiles%值为C:\Program Files。而非安装发行版则仅是一个Zip压缩包,安装时,你只需要解压并移至你所希望的位置即可。   在Unix上,你可以选择以下类型的二进制版本: RPM包可用于Linux系统。这些文件可通过使用rpm命令进行安装。你可以使用rpm -qpl rpm_file来查看RPM软件包中所包含的安装文件。 tar包文件可用于其他各种Unix和Unix-like系统。为了安装此类发行版,你可以通过使用tar命令将tar包解压至你希望安装的目录即可。 还有许多其他Unix和Linux发行版特定安装包。你可以访问MySQL网站下载页来了解可用的安装包:http://www.mysql.com/downloads/ 注意:安装后的启动及服务配置会在本章稍后进行说明。   使用二进制发行版有这样几个好处。除了明显的,你不需要经历整个建立编译过程外,一个最大的好处是使用MySQL二进制安装文件比你自己去建立文件更高效。 MySQL团队有大量编译器使用的选择配置经验,这有助于产生最优化的二进制文件。 在多数情况下,MySQL团队使用商业编译器进行编译,相比于使用通用编译器,这样可以获得更高质量代码。 在一些情况下,MySQL团队在编译时会使用比一般标准操作系统供应商所提供的库文件更好的库文件。例如,在Linux系统上,MySQL会使用特定的C库文件以允许更大数量的并行连接。其它一些情况,使用特定库文件来临时解决供应商库文件中的存在的bug问题等。   3.1.2 MySQL源发行版 你也可以通过编译源发行版来建立MySQL。劈开使用预编译发行版进行安装所带来的好处,你可能仍然有理由选择自己编译MySQL: 你的操作平台没有对应可用的二进制发行版,你不得不选择自己通过源文件来建立MySQL。 你需要启用一个在预编译发行版中没有的功能,如全面调试支持。或你可能希望关闭一个你不需要的特性,以降低server对内存的使用。例如,你可以禁用可选的存储引擎,或仅编译那些你需要的字符集等。 二进制发行版仅会在正式版中提供下载,而最新的开发版本则仅提供源码版本。如果你希望使用当前最新的源码版本,则你必须进行编译。 你可以将源发行版安装在你所需的位置上。其默认安装位置为/usr/local/mysql。 如果你最终决定通过源文件来建立MySQL,请阅读MySQL参考手册(MySQL Reference Manual)在线文档, 其中包含了对特定平台安装的相关注意信息。

  • MySQL的安装

      MySQL数据库服务的推荐安装方法是通过MySQL网站直接下载安装。这种方法在一些不同的平台上都有支持,仅在不同的平台上的安装细节上略有不同。然而,其主要步骤都一样。请注意你需要管理好权限设置以完成此安装。   对于在Windows和Linux操作系统上的安装步骤如下: MySQL Server在Windows操作系统上的安装 1)访问MySQL官网下载页http://dev.mysql.com/downloads/ 2)找到对应主题: MySQL on Windows -> MySQL Installer 3)下载my-installer-community MSI版本 4)双击下载的MSI文件,启动MySQL Installer, 选择Custom安装模式后,选择对应MySQL Server组件。 5)Next后按提示进行一步步安装,你需要提供相应root密码。 6)默认安装目录为:C:\Program Files\MySQL\MySQL Server 5.x 7)完成安装时会有提示信息告知。   MySQL Server在Linux操作系统上的安装: 1)访问MySQL官网下载页http://dev.mysql.com/downloads/ 2)找到对应主题MySQL Community Downloads -> MySQL Community Server (GPL) 3)找到对应操作系统并下载最新二进制tar包(这里举例Linux-Generic), 如: mysql-5.6.25-linux-glibc2.5-x86_64.tar.gz 4)将tar包解压至/usr/local目录下(如果tar包在/tmp目录下) # cd /usr/local # tar -zxvf /tmp/mysql-5.6.25-linux-glibc2.5-x86_64.tar.gz 5)对目录建立软链接 # ln -s mysql-5.6.25-linux-glibc2.5-x86_64 mysql…