Archives for 二月 2016

ZTO2M Oracle到MySQL的数据库迁移 存储过程、包,触发器,脚本和应用程序

如果自己搞不定可以找诗檀软件专业ORACLE数据迁移团队成员帮您实现Oracle至MySQL迁移!

诗檀软件专业数据库修复团队

服务热线 : 13764045638    QQ号:47079569    邮箱:service@parnassusdata.com

 

本文档用于介绍影响Oracle到MYSQL数据库和应用程序迁移的具体细节及其影响。成本和风险因素都被详细介绍,同时也会着重介绍ZTO2M和其相关技术以便了解如何完成一次高效的转换。

 

在过去几年中MySQL被证明是十分稳定和可收缩的数据库产品,在很多数据库排行榜上MySQL紧跟Oracle之后,是世界上最流行的开源数据库。很多企业利用MySQL社区版的免费优势,有效降低了软件许可证、硬件、管理等多方面的成本。然后从Oracle迁移到MySQL平台最大的挑战在于要将复杂的业务逻辑和数据结构转换成MySQL的格式,特别是在现有应用程序本身大量使用oracle特性例如 PL/SQL存储过程、触发器、程序包package和Oracle特有SQL语句的情况下。

 

由此oracle到mySQL的迁移会变得困难重重,耗费大量时间、以及异常昂贵。ZTO2M的设计就是为了简化这种迁移的复杂度,做到对于简单的应用程序使用的Oracle数据库(极少使用PL/SQL存储过程、函数、触发器或包的实例)可以一路next迁移。对于复杂度较高的场景则可以极大降低迁移工程师的工作量。这一系列技术革新的目的就是为了降低Oracle到MySQL迁移的成本和风险。在ZTO2M的帮助下,迁移的工作量可以被评估,迁移计划可以有限规划,迁移动作可以自动化运作。 在合理使用ZTO2m的前提下迁移工程师会从一个无地下脚的场景中解放出来,有效降低70%以上的工作量。

 

迁移复杂在哪里?

Oracle数据库提供非常先进和丰富的技术给我们的应用程序开发者来开发异常复杂的应用程序逻辑,这几乎导致开发者生成一种对Oracle的强烈依赖感。举个例子来说在开发应用程序上Oracle就像自动档位车,有效降低了开发者本身的技术门槛,让初级的开发者也能实现复杂的业务逻辑的同时保证一定的性能。其所提供的开发技术包括PL/SQL存储过程,函数,程序和触发器。

 

Oracle Pl/SQL语言是一种易于使用的开发语言,PL/SQL天生是对SQL的一种强大的基于过程的扩展,在各个行业PL/SQL都有广泛的使用,例如EPR行业中ORACLE EBS应用程序中大量采用PL/SQL来实现各种业务逻辑。在绝大多数应用程序中,使用PL/SQL必然导致不小数量的存储过程、包和触发器。MySQL中虽然也有类似的功能,但和PL/SQL差异巨大。

 

除了Oracle特有的语法外,PLSQL提供很多非ANSI标准化的复杂特性,包括如下这些:

  • Package包,共享包变量,内建包
  • %TYPE,%ROWTYPE,exception
  • 面向对象的特性:object type,函数,集合
  • 商业智能和XML特性

如果你需要转换PLSQL代码(过程,包,函数和触发器)或查看/查询包含Oracle 特有的SQL语法,则你不得不了解这些特性到底是如何使用的,并确定这些使用存在的分布和数量。下面是一些例子需要被重视的:

  • 非ANSI兼容性的SQL函数,操作符和语句
  • results set
  • 游标循环
  • exceptions
  • 临时表
  • 对象类型和函数
  • 集合
  • 动态SQL
  • 内建包
  • OLAP函数
  •  XML函数

 

在你完成上述评估后;最好在理清下MySQL中对象的功能或解决方案以便替代Oracle特性的特性。一般可以在后续章节找到典型的迁移方案。

 

应用程序评估

 

除了schema和服务器端的商业逻辑转换外,用户有时还需要修改应用程序内的SQL语句。此时评估工作量将是至关重要的。

从一开始你就要检查所有哪些你的应用程序正在使用的数据库API; 获取你的应用程序源代码,这些代码包括在数据库外运行的JAVA或其他语言程序,包含在程序中的SQL语句,和存放在Oracle中的PLSQL代码;获取所有这些程序的代码并一一评估,毫无遗漏在迁移中是至关重要的。

 

大多数应用程序使用一种标准的API: ODBC,JDBC或ADO.NET来访问Oracle,但是一些应用程序可能使用一种原生的 API例如ORACLE OCI或Pro*C或C++。收集这些信息细节是必要的。

 

即便你使用的是标准API,例如 ODBC/JDBC这些驱动器,还是要对现存的SQL语句做大量的修改。举例来说 DECODE函数或左外连接语法(*)都需要被改写。ZTO2M工具可以有效抓出这些Oracle原生语句。

若应用程序确实使用了Oracle原生API例如OCI,则几乎需要全盘重写数据库访问部分的代码,修改为使用MySQL API或ODBC。

 

 

评估工具

 

ZTO2M工具工具可以有效评估现有Oracle数据库内使用过的SQL语句,已经创建的PLSQL对象。以下是一个简要的评估表:

基于上述评估结果,用户可以编写迁移计划。若用户只有几十个存储过程,则可以考虑做手动代码转换。但是如果你有成千上百个存储过程需要迁移,则最好还是评估使用ZTO2M的自动转换功能。

成本和风险

 

迁移项目相关的成本和风险主要来源于迁移的代码量。oracle独有的特性用的越多则迁移复杂性越高。同时oracle特性用的越多则自动化迁移工作所能做的也越多。

 

数据和DDL迁移成本

数据和DDL对象迁移是最典型的迁移对象,所以其迁移成本较低,工作量相比起代码-应用程序迁移而言简单得多。

典型的数据和DDL迁移包含如下的转换:

  • 数据类型
  • 约束 主外键,唯一键,空值,默认值
  • 数据转移
  • 索引

 

虽然oracle和mysql之间的DDL语句中存在语法差异,但有着类似的数据类型(字符,数字,日期,时间,LOB大对象等)并允许你指定类似的完整性约束。

 

样例DDL/数据迁移评估:

 

由于是自动化操作,所以迁移DDL和数据的成本与表的数量和数据的大小没有直接的关系。举例来说,若数据结构差异不大,则迁移100个表和300个表在成本上是近似的。

但当表的数量和数据容量大到某个数量级别,则用户需要花费更多的时间来配置MYSQL数据库,调优数据传输速度,并关心例如索引创建性能等细节。

 

迁移DDL和数据的风险

 

典型的DDL/数据迁移的迁移风险较低。使用ZTO2M可以将整个数据库的应用DDL和数据都迁移过到MySQL数据库中。

典型的工作流如下:

  1. 启动全库传输
  2. 检查传输错误,比较表结构,比较Oracle和MySQL中的表的行数
  3. 针对所有表或有针对性的表做验证和测试数据,可以用如sqldeveloper、 mysql query browser等工具做验证。
  4. 运行应用程序连接到新的MySQL数据库做验证

 

数据迁移中的挑战:

虽然常规来说数据和ddl迁移是相对简单的,与之相比商业逻辑转换要复杂得多。但下面这些场景会增加数据和ddl迁移的难度:

超大数据量

 

若你需要迁移超大容量的数据,你可能需要进一步配置Mysql目标服务器。

极大容量的数据将直接影响迁移过程,特别是何时才能完成迁移。为了降低迁移时间,你可能需要将迁移工作以并发的形式来提高效率。当然这将增加迁移的复杂度。

对于海量数据的迁移可能在迁移过程中出现报错,若出现报错则可能导致你没有足够的时间再重新跑一次整个迁移过程。

迁移项目将受益于批量插入特性,通过bulk insert可以大批量插入数据从而减少交互和♻️循环次数。

最小停机时间

 

在一些关键任务环境中,你必须让停机时间最短,例如对于医院和银行、电信等关键业务而言只允许停机1个小时。为了迎合这样的要求,就必要将数据迁移工作以最快速度并行实现,或在非停机窗口时间将静态表优先传输完成。有些时候也要利用一些同步复制工具例如goldengate来减少停机时间。

 

强性能要求

 

在一些环境中对于产品数据库性能有着极高的要求。但当迁移到MySQL后,很难保证性能要比原来的Oracle好。这样就要求用户花费更多的时间去做数据库调优,更重要的是在迁移前做必要的全盘性能测试。

 

数据迁移风险

 

具有挑战性的数据迁移工作不是简单的点击下鼠标就能完成的。在正式迁移前建议做一个完整的 POC proof of concept。

在大多数情况下,对于迁移进程而言简意做如下的准备:

  1. 做 迁移POC以检查可行性
  2. 测试迁移以便做完整的测试,包括 可用性和性能
  3. 产品迁移

 

商业逻辑转换成本

 

若数据库包含几十个存储过程和触发器,则很容易纯手工重写代码到 MySQL的标准。若你有成千个存储过程和触发器,则手动转换的成本太高了。用户必须考虑基于自动化工具来实现大量代码的转换。

手动转换的成本直接与代码的函数相关。换句话说,自动化工具极大的降低了成本,并让迁移上百万行代码的项目存在一个合理的报价。

取决于要转换的代码行数,自动化转换商业逻辑代码对比手动转换降低了7~10倍的成本。

oracle特性在代码中使用的分布和频率决定了商业逻辑转换的复杂度和自动化工具工作的复杂度级别。

ZTO2M的有效自动转换可以针对95%以上的复杂业务逻辑做到自动转换。

下面是一个简单的例子,对于业务逻辑转换而言的工作项目罗列:

 

 

若你要比较DDL/数据和业务逻辑的迁移,则你回发现后者的成本占总本的约95%。这是Oracle到MySQL迁移的基本因子。

 

业务逻辑迁移风险

 

若有大量的代码行以及分布广泛的oracle特有特性要做迁移,则转换存在较大的风险,这样需要几个步骤来实现迁移。

 

经验

 

负责做迁移项目的员工应当有该项目的开发者和管理人员,并拥有较为丰富的oracle和MySQL使用经验。他们需要清楚工作中的挑战、任务和各个阶段。

完整的评估

 

在最初的阶段,用户需要实施一个完整的数据库评估。作为整个评估的产物用户将知道哪些特定的功能需要做转换,例如用户最终要决定使用何种方案去替换非 ANSI的 Oracle特性。

用户需要判断是否针对各个特性存在一个解决方案。一些Oracle特性是不易于去转换到MySQL的,这时则需要重新设计这些功能

 

在所有代码基础上做 POC

例如 ZTO2M的自动化工具让迁移易于去执行,完全可以在初始阶段直接对所有的代码做转换测试。我们建议在一开始就使用 ZTO2M介入进来,以便暴露所有的潜在问题,并厘清哪些部分是可以自动化完成的。

最重要的是,这会让你对这些笨重的PL/SQL 代码的转换充满信心。

 

尽可能使用自动化迁移

 

虽然纯手工迁移的成本很高,但其在初始阶段有就有效发掘了解决了瓶颈。与之对比,自动化工具在低成本的前提下让转换能够大量重复执行,但需要用户更多的反馈介入其中。 通常来说,手动转换是一项十分繁重的体力和脑力劳动,即便对于有经验的人而言也会出现一系列的人类人为错误。 几乎没有人能承受常见做这样的工作,因此手动转换是高成本的,同时也会耗费大量的时间。

 

早期测试

 

在早期阶段测试应当可以最小化工程的风险。用户可以在应用级别的功能测试还没开始前就开展单元测试,或实施代码核验。

利用自动化工具可以自动产生 测试场景来以特定变量调用存储过程和函数并比较结果。请注意这并不能替代应用级别的功能测试,但可以帮助发现潜在的问题。

 

应用程序转换

 

除了服务器端的业务逻辑转换外,在大多情况下你还需要修改你的应用程序以适应MYSQL。

在 java或Powerbuild应用中都可能存在非ANSI的SQL语句,不同于MySQL的 SQL语法的语句都需要修改。

例如oracle的左外连接(+)使用特殊的语法,那么转到MySQL中就要特别当心了。decode,nvl和sysdate都要特别注意。

你不能光使用find/replace寻找替换来替换函数名,在大多数情况下,函数都可能有不同的参数语法或需要SQL语句做整体修改。

此外简单的string字符串替换可能会替换那些不该替换的位置,例如字符串,或java语言语句。

最佳的方式是使用例如ZTO2M工具的自动修改应用程序的能力来转换SQL语句到合理的MySQL语法。

ZTO2M工具可以正确识别代码中SQL语句,实施转换,并生成修改报告,极大地简化了转换工作。

 

方案规划

 

合理的方案规划对于成功的迁移而言至关重要,典型的迁移步骤如下:

评估

 

评估涌来分析数据库和应用程序,定义迁移范围,记录那些Oracle特性功能的使用。

基于评估产生的信息,用户可以定义具体要使用的方法途径:手动转换还是自动转换以及相关的风险。

在早期阶段完成一次全部转换 这是一次POC

 

假设你的数据库有2000个存储过程,那么你可以使用ZTO2M来转换所有的代码,特别是在 POC阶段。我们建议你这样做无论你是否喜欢一个模块一个模块来做测试和部署。

显然现在是迁移的早期阶段,但对整个迁移项目的基本了解和反馈是很重要的,这让我们大概知道要踩哪些坑。显然用软件实现自动化转换与手工转换要花上几十个小时来预习这些代码要来的核算。

基于ZTO2M你可以实施一个整合和统一的迁移方法。 与之对比手工转换必然是在一群人中开展,不同的存储过程,不同的代码风格现在又要求一堆人来修改,可以想象工作的繁重。所以显然风格约统一结果越好。

理想状况下用户的转换完成后可以在MySQL中直接无错运行。这意味着所有的表、函数、过程和触发器都在MySQL中成功创建。

对于复杂的应用代码而言100%转换是十分困难的,我们通常还是要做一些手动修复工作。

 

运行时,逻辑以及性能测试

 

迁移经常是以一个一个模块的形式来实现的。当你已经转换了服务器端的业务逻辑,而应用程序还没做转换且应用级测试都还没做时,应当先做数据库的转换。

用户可以选择几个有代表性的或特别重要的过程来做代码检查。当然你可能在检查代码时并不能找出所有的毛病,但在早期阶段这仍是必要的。

通过检查转换后的代码,你可以找出使用了哪些替代技术方案,并评估转换质量。

若你想深入了解转换的技术背景则有必要对哪些oracle独有特性的转换情况列出清单。

即便你的代码在转换后可以在MySQL中成功创建,也不意味着运行时不会出错。许多报错可以在运行时快速发现。

ZTO2M可以针对存储调用采用不同的输入变量;在测试代码时ZTO2M可以知道哪些变量被使用了,使用的变量类型是字符串还是日期常数,流程控制条件。 为了实施复杂的逻辑和性能测试,用户也可以用真实数据配合自己开发的测试脚本来满足多种多样的测试场景。

若你针对oracle数据库使用自动化测试软件,则考虑升级这些自动化质控软件以应对MYSQL。

 

典型的转换场景 - 样例

虽然转换任务和方案是case by case的,也就是说每个项目的都差异很大;但转换工作中的大部分内容还是相似的。

注意 所有下面提到的转换场景都可以使用ZTO2M来自动转换。

 

DDL

oracle和mysql都支持create table语句,但语法差异很大:

 

 

数据类型

 

 

--- ORACLE 

create table employees 
( id          number(5),
  name        varchar2(120),
  hire_date   date,
  salary      number(7),
  dept_id     number(2) 
);


--- MYSQL 


create table employees
( id          int,
  name        varchar(120),
  hire_date   datetime,
  salary      int,
  dept_id     tinyint
);

 

保留词

Oracle和MySQL 使用不同的保留词 ,所以一些列名在MySQL查询中要打上引号:

 

--- ORACLE 

SELECT product_id,limit from product_data;


--- MYSQL 


SELECT product_id,'limit'  from product_data;



查询和PLSQL代码

 

你需要修改SQL语句以修改函数和表达式的语法。PL/SQL代码要完整地转换到MySQL SQL过程语法。

 

Outer Joins外连接

oracle对外连接支持特定的语法,并被很多应用程序大量使用:

 

 

--- ORACLE 

SELECT e.name,d.name from employees e , departments d 
where e.dept_id= d.id(+);



-- MYSQL 

SELECT e.name, d.name from employees e left outer join departments d on e.dept_id =d.id;

 

给列自动分配ID

Oracle在12c之前不支持自增列(auto0increment identity column),一般用sequence 序列来实现对应用程序新ID的分配。

Oracle中虽然创建一个简单的序列sequence对象可以用来给多张表分配值,但绝大多数场景中也就只是给一张表分配ID罢了,所以可以利用oracle中的自增列 auto-increment column 。

代码形式如下:

 

 

--- ORACLE 

create table employees 
( id number(5) primary key,
  name varchar2(120),
  hire_date date,
  dept_id number(2)
);

create trigger emp_id before 
insert on employees
for each row 
BEGIN
  select emp_id_seq.nextval into :new.id from dual;
end;




--- MYSQL 

create table employees 
( id int auto_increment primary key  ,
  name varchar2(120),
  hire_date datetime,
  dept_id tinyint);


不需要创建trigger 

同一个event多个触发器

在Oracle中,针对同一张表用户可以定义多个触发器应对同一个事件(例如针对employees表的INSERT事件有多个触发器)。

在MySQL里这个行不通,所以要求把针对该事件的所有代码都写在一个触发器里。

 

包和共享变量

在Oracle中,一个包是一组相关存储过程和函数,并可以共享变量。MYSQL中存储过程和函数都要转换成单独的对象。

包变量可以在包中的存储过程中被修改,之后另一个包中国年的存储过程可以看到并传递回变更的变量。 在MYSQL中可以以@符号开头的会话变量来替代这一功能:

---ORACLE

CREATE PACKAGE BODY emp_pack
AS
processed NUMBER DEFAULT 0;
PROCEDURE new_employee AS
BEGIN
…
processed := processed + 1;
END;
PROCEDURE raise_salary AS
BEGIN
…
processed := processed + 1;
END;
END;



---MYSQL 



CREATE PROCEDURE new_employee
BEGIN
…
IF @processed IS NULL
THEN @processed = 0;
@processed = @processed + 1;
END;
CREATE PROCEDURE raise_salary
BEGIN
…
IF @processed IS NULL
THEN @processed = 0;
@processed := @processed + 1;
END;
END;


返回的结果集

 

在Oracle中要用一个游标变量(REF CURSOR)当一个外参来返回结果集。 在很多场景中,MYSQL里就是很简单的SELECT

 

--- ORACLE 

CREATE PROCEDURE get_salaries
(d_id IN NUMBER, cur OUT
SYS_REFCURSOR)
AS
BEGIN
OPEN cur FOR
SELECT id, name, salary
FROM employees
WHERE dept_id = d_id
ORDER BY name;
END;



---MYSQL

CREATE PROCEDURE get_salaries (IN d_id
INT)
BEGIN
SELECT id, name, salary
FROM employees
WHERE dept_id = d_id
ORDER BY name;
END;

 

 

%TYPE 和 %ROWTYPE 数据类型定义

Oracle中%TYPE属性允许开发者让PL/SQL变量和表上的列的数据类型一致。在MYSQL里,用户需要精确指定数据类型。

--- ORACLE 

v_emp_name employees.name%TYPE;
v_emp_rec employees%ROWTYPE;


--- MYSQL 

v_emp_name VARCHAR(120)
v_ emp_id INT
v_ emp_name VARCHAR(120)
v_ emp_hire_date DATETIME
v_ emp_salary INT
v_ emp_dept_id TINYINT

JAVA应用程序中的SQL转换

在JAVA应用程序需要这样修改SQL语句语法:

---ORACLE 

…
PreparedStatement ps = null;
ResultSet rs = null;
String sql = “SELECT e.name, d.name” +
“FROM employees e, departments d” +
“WHERE e.dept_id = d.id(+)”;
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
…

---MYSQL 

…
PreparedStatement ps = null;
ResultSet rs = null;
String sql = “SELECT e.name, d.name” +
“FROM employees e LEFT OUTER JOIN” +
“departments d ON e.dept_id = d.id”;
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
…

powerbuilder应用程序中的SQL转换

在powerbuilder中,需要这样修改SQL语法:

---ORACLE 

datawindow(units=0 processing=0
print.orientation = 0
…
print.preview.buttons=no)
table(column=(type=char(120)
updatewhereclause=yes name=e_name
dbname="employees.name" )
column=(type=char(120)
updatewhereclause=yes name=d_name
dbname="departments.name" )
retrieve="SELECT e.name, d.name
FROM employees e, departments d
WHERE e.dept_id = d.id(+)”)


---MYSQL 

datawindow(units=0 processing=0
print.orientation = 0
…
print.preview.buttons=no)
table(column=(type=char(120)
updatewhereclause=yes name=e_name
dbname="employees.name" )
column=(type=char(120)
updatewhereclause=yes name=d_name
dbname="departments.name" )
retrieve=" SELECT e.name, d.name
FROM employees e LEFT OUTER JOIN
departments d ON e.dept_id = d.id”)


一些其他的不支持的功能

ORACLE PL/SQL中很多功能点仍不被MYSQL SQL过程语言支持。若这些功能确实在源库中有被使用,则需要利用一些方法绕过:

  • PLSQL集合
    • MYSQL中可以使用临时表和SQL DML 操作(SELECT ,INSERT,UPDATE,DELETE)
  • RAISE_APPLICATION_ERROR
    • 在 MYSQL 存储过程中可以使用 UDF来报错
  • UTL_FILE内建包
    • 在 MYSQL 存储过程中可以使用 UDF来操作文件
  • 复杂的业务逻辑
    • 复杂的业务逻辑可以转成JAVA代码

 

结论

迁移到MYSQL的收益时巨大的,同时自动化迁移也是经济实惠的。使用ZTO2M功能来简化迁移项目可以答复降低项目周期,提升转换质量。

 

 

Oracle Grid Infrastructure HAIP原理

11.2.0.2 开始Grid infrastructure引入新功能HAIP,对应资源ora.cluster_interconnect.haip用于私有网络通信。详细信息请您查看:Grid Infrastructure Redundant Interconnect and ora.cluster_interconnect.haip ( Doc ID 1210883.1 )

GRID集群安装时,发送ARP probe/announce用于检测是否存在重复的HAIP地址,如果存在重复的HAIP地址,那么新的GRID集群分配新的HAIP地址,避免HAIP地址冲突。

根据ORACLE最近实践, 建议每个集群GRID的私有网络(interconnect network)使用单独交换机或者单独的vlan,在这样的环境下,是不会出现HAIP冲突的情况。

另外,如果出现您描述的现象,将测试环境grid集群迁移到生产环境下,即在一个单独交换机或者单独的vlan下存在多套集群的情况下,我们建议在迁移前检查网络IP地址是否有冲突,包括HAIP地址。

如果不同的集群GRID中有重复的HAIP地址,我们建议将其中一套RAC 重新配置(deconfig/reconfig GRID),这样可以使grid集群生成新的HAIP地址,或者不同的集群grid位于不同的vlan,避免冲突。

【MySQL学生手册】表维护中的客户端工具程序

本文地址:http://www.askmaclean.com/archives/mysql-maintenance-tools.html

dbDao 百度贴吧:http://tieba.baidu.com/dbdao

Mysql技术学习QQ群:146959374

 

10.3 表维护中的客户端工具程序

之前讨论的表维护SQL语句可以在mysql客户端工具执行,也可以通过其它应用发送给服务端来执行。通过使用这些语句,你可以写一些自己的管理应用程序来进行表的检查和修理操作。

 

一些MySQL客户端程序作为前端可发出表维护命令:

  • MySQL Workbench提供了执行语句的编辑窗口可用于进行表检查,修理和优化操作。当你执行这些操作时,语句会被发至服务端。
  • mysqlcheck可用于检查,维修,分析和优化表。此命令行工具按所提供的命令项来决定发送哪些相适合的SQL语句到MySQL服务端以进行所需操作。

对于MyISAM表,使用myisamchk工具也能进行表维护。然而,它不同于MySQL Workbench和mysqlcheck需要将SQL语句发送到服务端,myisamchk可直接读取并修改表文件。也因为此,请保证在使用myisamchk的同时服务端不会去访问这些表。

 

10.3.1 mysqlcheck客户端程序

mysqlcheck可对表进行的操作有检查,修理,分析和优化。对于MyISAM表,此程序工具可执行所有这些操作,而对于InnoDB表,则只能执行一部分操作。它提供了一种命令行接口方式来执行各种SQL语句(如CHECK TABLE和REPAIR TABLE)以告知服务端进行何种表维护。

 

mysqlcheck在某些情况下比起直接执行SQL语句,可以使得操作变得更容易。例如,如果你指定一个数据库,它包含了需要执行语句来处理的所有表。使用mysqlcheck你就不需要在进行操作时显式地指定每个表,而且,mysqlcheck是一个命令行程序,它可以在工作中被用于周期性计划维护作业。【dbdao.com 数据岛】

[Read more…]

【数据恢复】ORA-00600 [4194], [21], [25] 数据库恢复案例

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638   QQ号:47079569    邮箱:service@parnassusdata.com

 

某军工动力技术公司Oracle数据库出现启动故障,诗檀软件工程师 王工在分析后在2个小时内完成了数据库恢复:

1 环境
数据库版本:10.2.0.1
操作系统:windows2003 64位
数据库实例名:ORCL

1.2 技术分析

数据库于2017年某星期一,发生断电,导致数据库启动时报错ORA-00600: internal error code, arguments: [4194], [21], [25], [], [], [], [], []。 详情如下:

Thu XXXX 14:25:58 2017
ORACLE V10.2.0.1.0 – Production vsnsta=0
vsnsql=14 vsnxtr=3
Windows NT Version V5.2 Service Pack 2
CPU                 : 4 – type 586, 1 Physical Cores
Process Affinity    : 0x00000000
Memory (Avail/Total): Ph:3475M/4095M, Ph+PgF:5490M/5977M, VA:1927M/2047M
Thu XXXX 14:25:58 2017
Starting ORACLE instance (normal)
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
Picked latch-free SCN scheme 2
Using LOG_ARCHIVE_DEST_10 parameter default value as USE_DB_RECOVERY_FILE_DEST
Autotune of undo retention is turned on.
IMODE=BR
ILAT =18
LICENSE_MAX_USERS = 0
SYS auditing is disabled
ksdpec: called for event 13740 prior to event group initialization
Starting up ORACLE RDBMS Version: 10.2.0.1.0.
System parameters with non-default values:
processes                = 150
event                    = 10231 trace name context forever,level 10
__shared_pool_size       = 96468992
__large_pool_size        = 4194304
__java_pool_size         = 4194304
__streams_pool_size      = 0
spfile                   = E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\SPFILEORCL.ORA
sga_target               = 612368384
control_files            = E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL, E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL, E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL
db_block_size            = 8192
__db_cache_size          = 499122176
compatible               = 10.2.0.1.0
db_file_multiblock_read_count= 16
db_recovery_file_dest    = E:\oracle\product\10.2.0/flash_recovery_area
db_recovery_file_dest_size= 2147483648
undo_management          = AUTO
undo_tablespace          = UNDOTBS1
remote_login_passwordfile= EXCLUSIVE
db_domain                =
dispatchers              = (PROTOCOL=TCP) (SERVICE=orclXDB)
job_queue_processes      = 10
audit_file_dest          = E:\ORACLE\PRODUCT\10.2.0\ADMIN\ORCL\ADUMP
background_dump_dest     = E:\ORACLE\PRODUCT\10.2.0\ADMIN\ORCL\BDUMP
user_dump_dest           = E:\ORACLE\PRODUCT\10.2.0\ADMIN\ORCL\UDUMP
core_dump_dest           = E:\ORACLE\PRODUCT\10.2.0\ADMIN\ORCL\CDUMP
db_name                  = orcl
open_cursors             = 300
pga_aggregate_target     = 203423744
MMAN started with pid=4, OS id=2692
PMON started with pid=2, OS id=2684
PSP0 started with pid=3, OS id=2688
DBW0 started with pid=5, OS id=2696
LGWR started with pid=6, OS id=2700
CKPT started with pid=7, OS id=2704
SMON started with pid=8, OS id=2708
RECO started with pid=9, OS id=2712
CJQ0 started with pid=10, OS id=2716
MMON started with pid=11, OS id=2720
Thu XXXX 14:26:03 2017
starting up 1 dispatcher(s) for network address ‘(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))’…
MMNL started with pid=12, OS id=2724
Thu XXXX 14:26:03 2017
starting up 1 shared server(s) …
Thu XXXX 14:26:04 2017
alter database mount exclusive
Thu XXXX 14:26:09 2017
Setting recovery target incarnation to 3
Thu XXXX 14:26:09 2017
Successful mount of redo thread 1, with mount id 1464551420
Thu XXXX 14:26:09 2017
Database mounted in Exclusive Mode
Completed: alter database mount exclusive
Thu XXXX 14:26:09 2017
alter database open
Thu XXXX 14:26:09 2017
Beginning crash recovery of 1 threads
parallel recovery started with 3 processes
Thu XXXX 14:26:10 2017
Started redo scan
Thu XXXX 14:26:10 2017
Completed redo scan
1008 redo blocks read, 103 data blocks need recovery
Thu XXXX 14:26:10 2017
Started redo application at
Thread 1: logseq 17, block 76
Thu XXXX 14:26:10 2017
Recovery of Online Redo Log: Thread 1 Group 2 Seq 17 Reading mem 0
Mem# 0 errs 0: E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG
Thu XXXX 14:26:10 2017
Completed redo application
Thu XXXX 14:26:10 2017
Completed crash recovery at
Thread 1: logseq 17, block 1084, scn 305721697
103 data blocks read, 103 data blocks written, 1008 redo blocks read
Thu XXXX 14:26:11 2017
Thread 1 advanced to log sequence 18
Thread 1 opened at log sequence 18
Current log# 3 seq# 18 mem# 0: E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG
Successful open of redo thread 1
Thu XXXX 14:26:11 2017
MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set
Thu XXXX 14:26:11 2017
SMON: enabling cache recovery
Thu XXXX 14:26:15 2017
Successfully onlined Undo Tablespace 1.
Thu XXXX 14:26:15 2017
SMON: enabling tx recovery
Thu XXXX 14:26:15 2017
Database Characterset is ZHS16GBK
replication_dependency_tracking turned off (no async multimaster replication found)
Starting background process QMNC
QMNC started with pid=19, OS id=2860
Thu XXXX 14:26:25 2017
Errors in file e:\oracle\product\10.2.0\admin\orcl\udump\orcl_ora_2744.trc:
ORA-00600: 内部错误代码, 参数: [4194], [21], [25], [], [], [], [], []

Thu XXXX 14:26:27 2017
db_recovery_file_dest_size of 2048 MB is 0.66% used. This is a
user-specified limit on the amount of space that will be used by this
database for recovery-related files, and does not reflect the amount of
space available in the underlying filesystem or ASM diskgroup.
Thu XXXX 14:26:29 2017
ORA-607 signalled during: alter database open…
Doing block recovery for file 2 block 483
Block recovery from logseq 18, block 75 to scn 305721829
Thu XXXX 14:26:29 2017
Errors in file e:\oracle\product\10.2.0\admin\orcl\bdump\orcl_smon_2708.trc:
ORA-00600: internal error code, arguments: [4194], [33], [40], [], [], [], [], []

Thu XXXX 14:26:29 2017
Recovery of Online Redo Log: Thread 1 Group 3 Seq 18 Reading mem 0
Mem# 0 errs 0: E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG
Block recovery stopped at EOT rba 18.78.16
Block recovery completed at rba 18.78.16, scn 0.305721829
Doing block recovery for file 2 block 25
Block recovery from logseq 18, block 75 to scn 305721825
Thu XXXX 14:26:29 2017
Recovery of Online Redo Log: Thread 1 Group 3 Seq 18 Reading mem 0
Mem# 0 errs 0: E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG
Block recovery completed at rba 18.76.16, scn 0.305721828
Thu XXXX 14:26:30 2017
Doing block recovery for file 2 block 12
Block recovery from logseq 18, block 76 to scn 305721831
Thu XXXX 14:26:30 2017
Recovery of Online Redo Log: Thread 1 Group 3 Seq 18 Reading mem 0
Mem# 0 errs 0: E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG
Block recovery stopped at EOT rba 18.78.16
Block recovery completed at rba 18.78.16, scn 0.305721829
Doing block recovery for file 2 block 9
Block recovery from logseq 18, block 76 to scn 305721828
Thu XXXX 14:26:30 2017
Recovery of Online Redo Log: Thread 1 Group 3 Seq 18 Reading mem 0
Mem# 0 errs 0: E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG
Block recovery completed at rba 18.78.16, scn 0.305721829
Thu XXXX 14:26:31 2017
Errors in file e:\oracle\product\10.2.0\admin\orcl\bdump\orcl_smon_2708.trc:
ORA-01595: error freeing extent (2) of rollback segment (1))
ORA-00607: Internal error occurred while making a change to a data block
ORA-00600: internal error code, arguments: [4194], [33], [40], [], [], [], [], []

Thu XXXX 14:31:33 2017
Errors in file e:\oracle\product\10.2.0\admin\orcl\bdump\orcl_smon_2708.trc:
ORA-00600: internal error code, arguments: [4194], [34], [27], [], [], [], [], []

Thu XXXX 14:31:33 2017
Doing block recovery for file 2 block 2130
Block recovery from logseq 18, block 280 to scn 305721962
Thu XXXX 14:31:33 2017
Recovery of Online Redo Log: Thread 1 Group 3 Seq 18 Reading mem 0
Mem# 0 errs 0: E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG
Block recovery stopped at EOT rba 18.285.16
Block recovery completed at rba 18.285.16, scn 0.305721962
Doing block recovery for file 2 block 73
Block recovery from logseq 18, block 280 to scn 305721960
Thu XXXX 14:31:34 2017
Recovery of Online Redo Log: Thread 1 Group 3 Seq 18 Reading mem 0
Mem# 0 errs 0: E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG
Block recovery completed at rba 18.284.16, scn 0.305721961
Thu XXXX 14:31:34 2017
Errors in file e:\oracle\product\10.2.0\admin\orcl\bdump\orcl_smon_2708.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-00607: Internal error occurred while making a change to a data block
ORA-00600: internal error code, arguments: [4194], [34], [27], [], [], [], [], []

Thu XXXX 14:33:20 2017
Errors in file e:\oracle\product\10.2.0\admin\orcl\bdump\orcl_mmon_2720.trc:
ORA-00600: internal error code, arguments: [4194], [21], [25], [], [], [], [], []

Thu XXXX 14:33:21 2017
Flush retried for xcb 0x3338fd24, pmd 0x32844c24
Doing block recovery for file 2 block 483
No block recovery was needed
Thu XXXX 14:33:21 2017
Errors in file e:\oracle\product\10.2.0\admin\orcl\bdump\orcl_mmon_2720.trc:
ORA-00600: internal error code, arguments: [4194], [21], [25], [], [], [], [], []
ORA-00600: internal error code, arguments: [4194], [21], [25], [], [], [], [], []

Thu XXXX 14:34:24 2017
Flush retried for xcb 0x3338fd24, pmd 0x32844c24
Doing block recovery for file 2 block 483
No block recovery was needed
Thu XXXX 14:34:25 2017
Errors in file e:\oracle\product\10.2.0\admin\orcl\bdump\orcl_pmon_2684.trc:
ORA-00600: internal error code, arguments: [4194], [21], [25], [], [], [], [], []

Thu XXXX 14:34:25 2017
Errors in file e:\oracle\product\10.2.0\admin\orcl\bdump\orcl_pmon_2684.trc:
ORA-00600: internal error code, arguments: [4194], [21], [25], [], [], [], [], []

PMON: terminating instance due to error 472
Thu XXXX 14:34:25 2017
Errors in file e:\oracle\product\10.2.0\admin\orcl\bdump\orcl_q001_3268.trc:
ORA-00472: PMON  process terminated with error

Thu XXXX 14:34:26 2017
Errors in file e:\oracle\product\10.2.0\admin\orcl\bdump\orcl_reco_2712.trc:
ORA-00472: PMON  process terminated with error

Thu XXXX 14:34:26 2017
Errors in file e:\oracle\product\10.2.0\admin\orcl\bdump\orcl_smon_2708.trc:
ORA-00472: PMON  process terminated with error

Thu XXXX 14:34:26 2017
Errors in file e:\oracle\product\10.2.0\admin\orcl\bdump\orcl_ckpt_2704.trc:
ORA-00472: PMON  process terminated with error

Thu XXXX 14:34:26 2017
Errors in file e:\oracle\product\10.2.0\admin\orcl\bdump\orcl_lgwr_2700.trc:
ORA-00472: PMON  process terminated with error

Thu XXXX 14:34:26 2017
Errors in file e:\oracle\product\10.2.0\admin\orcl\bdump\orcl_dbw0_2696.trc:
ORA-00472: PMON  process terminated with error

Thu XXXX 14:34:27 2017
Errors in file e:\oracle\product\10.2.0\admin\orcl\bdump\orcl_mman_2692.trc:
ORA-00472: PMON  process terminated with error

Thu XXXX 14:34:27 2017
Errors in file e:\oracle\product\10.2.0\admin\orcl\bdump\orcl_psp0_2688.trc:
ORA-00472: PMON  process terminated with error

Instance terminated by PMON, pid = 2684

错误分析:
ORA-00600[4194]错误的根本原因是 redo记录与回滚段(rollback/undo)记录之间的不一致。当ORACLE在验证undo记录时相对应的变化需要应用到undo数据块的最大undo记录上,此时若检验出错则会报ORA-00600[4194]

PRM-DUL Works on Oracle 12c

PRM-DUL Works on Oracle 12c

prm works on oracle 12c

dbDao 老汪的MySQL学生手册汇总

【MySQL学生手册】MySQL架构概览 – MySQL架构 http://www.askmaclean.com/archives/ch2-mysql%e6%9e%b6%e6%9e%84.html
【MySQL学生手册】Mysql 客户端/服务器(C/S)架构 http://www.askmaclean.com/archives/mysql-%e5%ae%a2%e6%88%b7%e7%ab%af%e6%9c%8d%e5%8a%a1%e5%99%a8cs%e6%9e%b6%e6%9e%84.html
【MySQL学生手册】MySQL的磁盘空间使用 http://www.askmaclean.com/archives/mysql%e7%9a%84%e7%a3%81%e7%9b%98%e7%a9%ba%e9%97%b4%e4%bd%bf%e7%94%a8.html
【MySQL学生手册】MySQL的内存使用 http://www.askmaclean.com/archives/mysql%e7%9a%84%e5%86%85%e5%ad%98%e4%bd%bf%e7%94%a8.html
【MySQL学生手册】MySQL的发行版本类型 http://www.askmaclean.com/archives/mysql%e7%9a%84%e5%8f%91%e8%a1%8c%e7%89%88%e6%9c%ac%e7%b1%bb%e5%9e%8b.html
【MySQL学生手册】MySQL的安装 http://www.askmaclean.com/archives/mysql%e7%9a%84%e5%ae%89%e8%a3%85.html
【MySQL学生手册】MySQL在Windows上的启动及停止 http://www.askmaclean.com/archives/mysql%e5%9c%a8windows%e4%b8%8a%e7%9a%84%e5%90%af%e5%8a%a8%e5%8f%8a%e5%81%9c%e6%ad%a2.html
【MySQL学生手册】MySQL在Unix上的启动及停止 http://www.askmaclean.com/archives/424.html
【MySQL学生手册】MySQL的配置 http://www.askmaclean.com/archives/mysql-configuration.html
【MySQL学生手册】MySQL的SQL模式 http://www.askmaclean.com/archives/mysql-sql-mode.html
【MySQL学生手册】MySQL日志和状态文件 http://www.askmaclean.com/archives/mysql-log-status-file.html
【MySQL学生手册】MySQL二进制日志(Binary Log) http://www.askmaclean.com/archives/mysql-binary-log.html
【MySQL学生手册】MySQL的升级 http://www.askmaclean.com/archives/mysql-upgrade.html
【MySQL学生手册】MySQL第三章测试 http://www.askmaclean.com/archives/mysql-3rd-chapter-test.html
【MySQL学生手册】MySQL客户端程序的调用 http://www.askmaclean.com/archives/mysql-client-involve.html
【MySQL学生手册】mysql客户端程序使用 http://www.askmaclean.com/archives/mysql-client-prog-using.html
【MySQL学生手册】mysqladmin、mysqlimport、mysqldump客户端程序 http://www.askmaclean.com/archives/mysql-client-tools-desc.html
【MySQL学生手册】MySQL客户端程序的限制 http://www.askmaclean.com/archives/mysql-client-tools-limitations.html
【MySQL学生手册】MySQL客户端接口 http://www.askmaclean.com/archives/mysql-client-api.html
【MySQL学生手册】MySQL元数据获取 http://www.askmaclean.com/archives/mysql-metadata-obtaining.html
【MySQL学生手册】INFORMATION_SCHEMA数据库 http://www.askmaclean.com/archives/mysql-information-schema.html
【MySQL学生手册】SHOW和DESCRIBE命令使用 http://www.askmaclean.com/archives/mysql-show-describe-cmd.html
【MySQL学生手册】mysqlshow程序 http://www.askmaclean.com/archives/mysqlshow-cmd.html
【MySQL学生手册】MySQL的SQL解析器和存储引擎层 http://www.askmaclean.com/archives/sql%e8%a7%a3%e6%9e%90%e5%99%a8%e5%92%8c%e5%ad%98%e5%82%a8%e5%bc%95%e6%93%8e%e5%b1%82.html
【MySQL学生手册】MySQL锁 http://www.askmaclean.com/archives/mysql-lock.html
【MySQL学生手册】显式(Explicit)表锁 http://www.askmaclean.com/archives/mysql-explicit-lock.html
【MySQL学生手册】协同(Advisory)锁 http://www.askmaclean.com/archives/mysql-advisory-lock.html
【MySQL学生手册】事务 http://www.askmaclean.com/archives/mysql-transactions.html
【MySQL学生手册】MySQL存储引擎 http://www.askmaclean.com/archives/mysql-storage-engines.html
【MySQL学生手册】常用存储引擎 – MyISAM http://www.askmaclean.com/archives/mysql-storage-engines-myisam.html
【MySQL学生手册】常用存储引擎 – InnoDB http://www.askmaclean.com/archives/mysql-storage-engines-innodb.html
【MySQL学生手册】常用存储引擎 – MEMORY http://www.askmaclean.com/archives/%e3%80%90mysql%e5%ad%a6%e7%94%9f%e6%89%8b%e5%86%8c%e3%80%91%e5%b8%b8%e7%94%a8%e5%ad%98%e5%82%a8%e5%bc%95%e6%93%8e-memory.html
【MySQL学生手册】其它存储引擎 http://www.askmaclean.com/archives/mysql-other-storage-engines.html
【MySQL学生手册】选择合适的存储引擎 http://www.askmaclean.com/archives/mysql-storage-engines-choice.html
【MySQL学生手册】分区(Partition) http://www.askmaclean.com/archives/mysql-partition.html
【MySQL学生手册】MySQL表分区类型 http://www.askmaclean.com/archives/mysql-partition-type.html
【MySQL学生手册】表维护操作类型 http://www.askmaclean.com/archives/mysql-maintenance-type.html

 

 

MySQL学生手册汇总

【MySQL学生手册】MySQL架构概览 – MySQL架构 http://www.askmaclean.com/archives/ch2-mysql-architecture.html
【MySQL学生手册】Mysql 客户端/服务器(C/S)架构 http://www.askmaclean.com/archives/mysql-cs-architecture.html
【MySQL学生手册】MySQL的SQL解析器和存储引擎层 http://www.askmaclean.com/archives/sql-parser-storage-engine.html
【MySQL学生手册】MySQL的磁盘空间使用 http://www.askmaclean.com/archives/mysql-disk-space-using.html
【MySQL学生手册】MySQL的内存使用 http://www.askmaclean.com/archives/mysql-memory-using.html
【MySQL学生手册】MySQL的发行版本类型 http://www.askmaclean.com/archives/mysql-distribution-types.html
【MySQL学生手册】MySQL的安装 http://www.askmaclean.com/archives/mysql-installations.html
【MySQL学生手册】MySQL在Windows上的启动及停止 http://www.askmaclean.com/archives/mysql-win-stop-and-run.html
【MySQL学生手册】MySQL在Unix上的启动及停止 http://www.askmaclean.com/archives/424.html
【MySQL学生手册】MySQL的配置 http://www.askmaclean.com/archives/mysql-configuration.html
【MySQL学生手册】MySQL的SQL模式 http://www.askmaclean.com/archives/mysql-sql-mode.html
【MySQL学生手册】MySQL日志和状态文件 http://www.askmaclean.com/archives/mysql-log-status-file.html
【MySQL学生手册】MySQL二进制日志(Binary Log) http://www.askmaclean.com/archives/mysql-binary-log.html
【MySQL学生手册】MySQL的升级 http://www.askmaclean.com/archives/mysql-upgrade.html
【MySQL学生手册】MySQL第三章测试 http://www.askmaclean.com/archives/mysql-3rd-chapter-test.html
【MySQL学生手册】MySQL客户端程序的调用 http://www.askmaclean.com/archives/mysql-client-involve.html
【MySQL学生手册】mysql客户端程序使用 http://www.askmaclean.com/archives/mysql-client-prog-using.html
【MySQL学生手册】mysqladmin、mysqlimport、mysqldump客户端程序 http://www.askmaclean.com/archives/mysql-client-tools-desc.html
【MySQL学生手册】MySQL客户端程序的限制 http://www.askmaclean.com/archives/mysql-client-tools-limitations.html
【MySQL学生手册】MySQL客户端接口 http://www.askmaclean.com/archives/mysql-client-api.html
【MySQL学生手册】MySQL元数据获取 http://www.askmaclean.com/archives/mysql-metadata-obtaining.html
【MySQL学生手册】INFORMATION_SCHEMA数据库 http://www.askmaclean.com/archives/mysql-information-schema.html
【MySQL学生手册】SHOW和DESCRIBE命令使用 http://www.askmaclean.com/archives/mysql-show-describe-cmd.html
【MySQL学生手册】mysqlshow程序 http://www.askmaclean.com/archives/mysqlshow-cmd.html
【MySQL学生手册】MySQL锁 http://www.askmaclean.com/archives/mysql-lock.html
【MySQL学生手册】显式(Explicit)表锁 http://www.askmaclean.com/archives/mysql-explicit-lock.html
【MySQL学生手册】协同(Advisory)锁 http://www.askmaclean.com/archives/mysql-advisory-lock.html
【MySQL学生手册】事务 http://www.askmaclean.com/archives/mysql-transactions.html
【MySQL学生手册】MySQL存储引擎 http://www.askmaclean.com/archives/mysql-storage-engines.html
【MySQL学生手册】常用存储引擎 – MyISAM http://www.askmaclean.com/archives/mysql-storage-engines-myisam.html
【MySQL学生手册】常用存储引擎 – InnoDB http://www.askmaclean.com/archives/mysql-storage-engines-innodb.html
【MySQL学生手册】常用存储引擎 – MEMORY http://www.askmaclean.com/archives/mysql-storage-engines-memory.html
【MySQL学生手册】其它存储引擎 http://www.askmaclean.com/archives/mysql-other-storage-engines.html
【MySQL学生手册】选择合适的存储引擎 http://www.askmaclean.com/archives/mysql-storage-engines-choice.html
【MySQL学生手册】分区(Partition) http://www.askmaclean.com/archives/mysql-partition.html
【MySQL学生手册】MySQL表分区类型 http://www.askmaclean.com/archives/mysql-partition-type.html
【MySQL学生手册】表维护操作类型 http://www.askmaclean.com/archives/mysql-maintenance-type.html
【MySQL学生手册】表维护中的客户端工具程序 http://www.askmaclean.com/archives/mysql-maintenance-tools.html
【MySQL学生手册】关于InnoDB及MyISAM表的恢复 http://www.askmaclean.com/archives/mysql-innodb-myisam-recoveryinfo.html
【MySQL学生手册】备份和恢复 http://www.askmaclean.com/archives/mysql-backup_recovery_knowledge.html
【MySQL学生手册】binary备份 vs 文本备份 http://www.askmaclean.com/archives/mysql-binary-vs-text-backup.html
【MySQL学生手册】建立binary备份 http://www.askmaclean.com/archives/mysql-generate-binary-bk.html
【MySQL学生手册】建立文本备份 http://www.askmaclean.com/archives/mysql-generate-binary-bk.html
【MySQL学生手册】更多备份相关 http://www.askmaclean.com/archives/mysql-more-bk-related.html
【MySQL学生手册】数据恢复 http://www.askmaclean.com/archives/mysql-data-recovery.html

Oracle 11g OCM考试考点分析 URL地址汇总

 本文永久链接地址:http://www.askmaclean.com/archives/oracle-11g-ocm-urall.html

dbDao Oracle OCM培训群
点击链接加入群【dbDao Oracle 11g OCM培训群】

 

11g ocm 相关博文:

数据库恢复的配置 http://www.askmaclean.com/archives/11g-ocm-student-guide-backup-restore.html
配置备份的规范 http://www.askmaclean.com/archives/dbdao-11g-oracle-ocm-2.html
使用RMAN创建备份 http://www.askmaclean.com/archives/oracle-11g-ocm-rman.html
使用RMAN执行恢复 http://www.askmaclean.com/archives/oracle-11g-ocm-master-rman-restore.html
SPA http://www.askmaclean.com/archives/oracle-11g-ocm-spa.html
SQL执行计划管理 http://www.askmaclean.com/archives/oracle-11g-ocm-spm.html
grid control 架构 http://www.askmaclean.com/archives/oracle-11g-ocm-grid-control-architecture.html
grid control 安装 http://www.askmaclean.com/archives/oracle-11g-ocm-grid-control-install.html
配置EMGC http://www.askmaclean.com/archives/oracle-11g-ocm-setemgc.html
Oracle Data Guard 介绍 http://www.askmaclean.com/archives/oracle-11g-ocm-dg.html
使用SQL和RMAN命令来创建一个物理备库 http://www.askmaclean.com/archives/oracle-11g-ocm-create-dg.html
oracle Data Guard Broker:概述 http://www.askmaclean.com/archives/oracle-data-guard-broker.html
配置 DataGuard 保护模式 http://www.askmaclean.com/archives/oracle-11g-ocm-data-mode.html
grid 安装 http://www.askmaclean.com/archives/oracle-11g-install-grid.html
管理Oracle 集群 http://www.askmaclean.com/archives/oracle-11g-ocm-manage-clusterware.html
RAC数据库安装 http://www.askmaclean.com/archives/oracle-11g-ocm-rac-install.html

 

 

11g OCM 考试培训 视频地址:

 

Oracle 11g ocm考试考点复习 手动建库 http://www.dbdao.com/dba-road/11g-ocm-exam-review/1
11g ocm 备份恢复理论部分 http://www.dbdao.com/dba-road/11g-ocm-exam-review/2
11g ocm 数据仓库部分 http://www.dbdao.com/dba-road/11g-ocm-exam-review/3
Oracle 11g ocm考试考点复习 SQL优化 http://www.dbdao.com/dba-road/11g-ocm-exam-review/4
11g OCM SPA SQL Performance Analyzer http://www.dbdao.com/dba-road/11g-ocm-exam-review/5
Oracle 11g OCM 数据库审计与安全部分 http://www.dbdao.com/dba-road/11g-ocm-exam-review/6
11g ocm Data Guard理论部分 http://www.dbdao.com/dba-road/11g-ocm-exam-review/7
Oracle 11g ocm考试考点复习 DG DataGuard http://www.dbdao.com/dba-road/11g-ocm-exam-review/8
11g ocm RAC集群部分考试-安装操作系统 http://www.dbdao.com/dba-road/11g-ocm-exam-review/9
11g ocm RAC集群部分考试-安装Grid Infrastructure http://www.dbdao.com/dba-road/11g-ocm-exam-review/10
11g ocm RAC集群部分考试-部署创建数据库 http://www.dbdao.com/dba-road/11g-ocm-exam-review/11
Oracle 11g OCM Workshop 1 http://www.dbdao.com/dba-road/11g-ocm-exam-review/12

 

沪ICP备14014813号

沪公网安备 31010802001379号

TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569