
对 *** 作系统进行备份和还原也许是最常用的 实际业务环境升级后 因多方面原因存在严重问题 这时很可能需要还原到升级前的状态 因此数据库建立备份并能进行还原就很有意义 本文是一个使用C#(Visual Studio )结合Oracle客户端完成还原点的建立与恢复的完整例子
明确还原目标
在建立还原点时 首先要明确还原对象 我们所提及的还原并不是简单地对数据库某个时间点整个数据库的备份与还原 因为在升级后发生的实际业务数据是不能进行还原的
会引起重要问题的主要是程序 在数据库中体现在包 函数和存储过程以及与流程相关的参数 方案等核心字典数据与界面层的一致性 而具体业务中产生的数据如收费项目 收费明细等 是不能进行还原的 明确还原目标后 问题的解决就有方向性了
要建立还原点 首先要了解数据库中关键对象的存放位置 对于包 函数等可以在Oracle的数据库视图user_source中找到
备份 建立还原对象列表
在建立C#的工程之后 今天我们利用配置文件nfig xml 设定了相应的 导出对象 Oracle连接 等内容 如图
这样参数就可以在CONFIG中进行调整了 在进行备份时 我们首先要取得相关的程序列表 下面的语句可以找到我们需要的导出对象
selectdistinctus name us typefromuser_sourceuswhereus typein( PROCEDURE FUNCTION PACKAGE PACKAGEBODY );
可以使用 configurationAppSettings来取得配置文件中的设置 如导出对象 数据库连接 回滚目录 如
ls_configs=(string)(configurationAppSettings GetValue( 导出对象 typeof(string))); 首先针对 导出对象 所定义的串进行拆分 ls_typeinfo存放需要导出的类型 并建立Oracle的数据库连接 再根据需要取得数据查询结果
ls_querysql= SelectdistinctUs Name
us typeFromUser_SourceUswhereus typein( +ls_typeinfo+ )orderbyus Name us Type ;
OracleCommand CommandText=ls_querysql;
OracleCommand CommandType=CommandType Text;
//如何解析mandText的值
OracleDataReadermyReader=OracleCommand ExecuteReader(CommandBehavior CloseConnection);
while(myReader Read())
//使用OracleDateReader前进到下一条记录 通过循环 获得信息列表存放到对象列表listPrcInfo中 它包括两个项目 分别就是 对象名strName 对象类别strType
备份 有进度地产生各个对象体
生成了对象列表后 再根据每个对象名和对象类别来读取内容 相对来说就比较简单 只要使用以下方法
ls_querysql = Select us line us text From User_Source Us where us name = + listPrcInfo[i] strName + and us type= +listPrcInfo[i] strType+ order by us line ; OracleCommand CommandText = ls_querysql; OracleCommand CommandType = CommandType Text;//如何解析mandText的值 来读取对象的程序内容 并按照我们在CONFIG中所对应的各种文件扩展名来保存文件:
1
镜像数据库通常可以在与其主数据库不同的机器中找到。而,复制的数据和数据库对象存储在另一个数据库中。
2
镜像不支持分布式环境,而复制是为分布式数据库设计的。
3
数据库镜像的成本高于复制。复制和镜像技术也可以组合使用,以实现更
确定镜像数据库是否与主体数据库保持同步
在高性能模式下,主体服务器可能会积压大量仍需发送到镜像服务器的未发送日志记录
而且在任意运行模式下,镜像服务器也有可能积压大量已写入日志文件但仍需在镜像数据库中进行还原的未还原日志记录
确定在高性能模式下,当主体服务器实例变得不可用时所丢失的数据量
可以通过查看未发送的事务日志量(如果有)以及在主体服务器上提交丢失事务的时间间隔,来确定数据的丢失量
将当前性能与过去性能进行比较出现问题时,数据库管理员可以查看镜像性能的历史记录来帮助了解当前状态
首选用putty连接linux服务器,进行命令行
输入mysql -u+数据库用户 -p+数据库密码
架设数据库用户是root 密码是123,应该是像下面这样才是正确的:
mysql -uroot -p123
-u和-p连接数据库用户和密码中间是不能有空格的
下面来创建数据库mydatabase
create database mydatabase;
这样一个名叫mydatabase的数据库就创建好了
show databases; 显示所有数据库列表
drop database mydatabase; 删除数据库mydatabase
那么如何退出mysql命令行呢?
在终端输入exit; 知道完全退出mysql命令行为止!
首先Ping一下 new-db02o1appcom
如果不通,在host里面做映射,
C:\Windows\System32\drivers\etc\hosts
new-db02o1appcom 192168112
是需要的。
在MySQL数据库镜像的贴子中,主数据库A 的数据镜像到从数据库B,是单向的,Zen Cart网店的数据读写都必须在数据库A进行,结果会自动镜像到数据库B中。但是对数据库B的直接 *** 作,不会影响数据库A。
对于双向数据库镜像,就是数据库A的数据变化要镜像到数据库B中,同时数据库B里的修改也要同时复制到数据库A里
最近正好在做这个
数据库镜像是可以实现自动故障转移
这点是镜像和复制最大的区别
还有一点比较重要的区别是 镜像你做好了之后 是实时同步的
它的自动转移时要靠见证服务器做的
我所知道的复制方式是订阅、镜像、复制、备份与还原
希望对你有用
以上就是关于C#完成Oracle数据库镜像与还原全部的内容,包括:C#完成Oracle数据库镜像与还原、数据卷复制方案和数据卷镜像方案的相同是什么、如何查看镜像数据库的状态等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)