仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 755|回复: 8
打印 上一主题 下一主题

[学习教程] MYSQL网站制作之Oracle数据库备份战略的相干观点及利用...

[复制链接]
海妖 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:16:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
MySQL的低成本来自于其简单性吗?它的普及性是由于其低成本吗?其实,在MySQL的最“好”与最“不好”的功能之间没有明显的分界线,但它们组合在一起就形成了一副让我们欣赏的作品。这篇论坛文章次要先容了Oracle数据库备份战略的相干观点及利用中的注重事项,具体内容请人人参考下文1、懂得备份的主要性
能够说,从盘算机体系出生的那天起,就有了备份这个观点,盘算机以其壮大的速率处置才能,代替了良多工资的事情,可是,常常良多时分,它又是那末身强力壮,主板上的芯片、主板电路、内存、电源等任何一项不克不及一般事情,城市招致盘算机体系不克不及一般事情。固然,这些破坏能够修复,不会招致使用和数据的破坏。可是,假如盘算机的硬盘破坏,将会招致数据丧失,此时必需用备份恢单数据。
实在,在我们的实际天下中,已就存在良多备份战略,如RAID手艺,双机热备,集群手艺开展的不就是盘算机体系的备份和高可用性吗?有良多时分,体系的备份切实其实就可以办理数据库备份的成绩,如磁盘介质的破坏,常常从镜相下面做复杂的恢复,或复杂的切换呆板就能够了。
可是,下面所说的体系备份战略是从硬件的角度来思索备份与恢复的成绩,这是必要价值的。我们所能选择备份战略的根据是:丢是数据的价值与确保数据不丧失的价值之比。另有的时分,硬件的备份偶然基本满意不了实际必要,假设你误删了一个表,可是你又想恢复的时分,数据库的备份就变的主要了。Oracle自己就供应了壮大的备份与恢复战略,这里我们只会商ORACLE备份战略,以下的备份都是指Oracle数据库备份,恢复将放到下一讲中。
所谓备份,就是把数据库复制到转储设备的历程。个中,转储设备是指用于安排数据库拷贝的磁带或磁盘。
可以举行甚么样的恢复依附于有甚么样的备份。作为DBA,有义务从以下三个方面保护数据库的可恢复性:
·使数据库的生效次数减到起码,从而使数据库坚持最年夜的可用性;
·当数据库不成制止地生效后,要使恢复工夫减到起码,从而使恢复的效力到达最高;
·当数据库生效后,要确保只管少的数据丧失或基本不丧失,从而使数据具有最年夜的可恢复性。
劫难恢复的最主要的事情是计划充分频次的硬盘备份历程。备份历程应当满意体系请求的可恢复性。比方,假如数据库可有较长的关机工夫,则能够每周举行一次冷备份,并回档重做日记,关于24*7的体系,也许我们思索的只能是热备份。假如天天都能备份固然会很幻想,但要思索其实际性。企业都在想举措下降保护本钱,实际的计划才大概被接纳。只需细心企图,并想举措到达数据库可用性的底线,花大批的钱举行乐成的备份与恢复也是大概的。
2、懂得Oracle的运转体例
ORACLE数据库有两种运转体例:一是回档体例(ARCHIVELOG),回档体例的目标是当数据库产生妨碍时最年夜限制恢单数据库,能够包管不丧失任何已提交的数据;二是不回档体例(NOARCHIVELOG),只能恢单数据库到比来的接纳点(冷备份或是逻辑备份)。我们依据数据库的高可用性和用户可接受丧失的事情量的几,关于临盆数据库,激烈请求接纳为回档体例;那些正在开辟和调试的数据库能够接纳不回档体例。
怎样改动数据库的运转体例,在创立数据库时,作为创立数据库的一部分,就决意了数据库初始的存档体例。一样平常情形下为NOARCHIVELOG体例。当数据库创立好今后,依据我们的必要把必要运转在回档体例的数据库改成ARCHIVELOG体例。
1、改动不回档体例为为回档体例
a.封闭数据库,备份已有的数据,改动数据库的运转体例是对数据库的主要修改,以是要对数据库做备份,对大概呈现的成绩作出回护。
b.修正初试化参数,使能主动存档
修正(增加)初始化文件init[SID].ora参数:
log_archive_start=true#启动主动回档
log_archive_format=ARC%T%S.arc#回档文件格局
log_archive_dest=/arch12/arch#回档路径
在8i中,能够最多有五个回档路径,并能够回档到别的服务器,如备用数据库(standbydatabase)服务器
c.启动Instance到Mount形态,即加载数据库但不翻开数据库:
$》SVRMGRL
SVRMGRL》connectinternal
SVRMGRL》startupmount
d.收回修正命令
SVRMGRL》alterdatabasearchivelog;
SVRMGRL》alterdatabaseopen;
2、改动回档形态为不回档形态
与以上步骤不异,但有些操纵纷歧样,次要是在以上的b操纵中,如今为删除或正文该参数,在d操纵中,命令为
SVRMGRL》alterdatabasenoarchivelog;
注重,从回档体例转换到非回档体例后必定要做一次数据库的全冷备份,避免不测事务的产生。
3、Oracle备份的分类
复杂的依照备份举行的体例,能够分为逻辑备份、冷备份(脱机备份)、热备份(联机备份),实在冷备份与热备份又能够合称为物理备份
依照备份的工具,能够分为EXP/IMP备份、OS拷贝、RMAN、第三方工具,如VERITAS
以下我们将从多个角度来讲明以上的各类备份体例
1、EXP/IMP逻辑备份
导进/导出是ORACLE幸存的最陈旧的两个命令行工具了,实在我历来不以为Exp/Imp是一种好的备份体例,准确的说法是Exp/Imp只能是一个好的转储工具,出格是在小型数据库的转储,表空间的迁徙,表的抽取,检测逻辑和物理抵触等中有不小的功烈。固然,我们也能够把它作为小型数据库的物理备份后的一个逻辑帮助备份,也是不错的倡议。
关于愈来愈年夜的数据库,出格是TB级数据库和愈来愈多半据堆栈的呈现,EXP/IMP愈来愈力所能及了,这个时分,数据库的备份都转向了RMAN和第三方工具。上面我们仍是扼要先容一下EXP/IMP的利用。
i、利用办法
Expparameter_name=value
OrExpparameter_name=(value1,value2……)
只需输出参数help=y就能够看到一切匡助
如:
C:》setnls_lang=simplifiedchinese_china.zhs16gbk
C:》exp-help
Export:Release8.1.6.0.0-Productionon木曜日4月1019:09:212003
(c)Copyright1999OracleCorporation.Allrightsreserved.
经由过程输出EXP命令和用户名/口令,您能够
在用户/口令以后的命令:
实例:EXPSCOTT/TIGER
大概,您也能够经由过程输出跟有各类参数的EXP命令来把持“导出”
的运转体例。要指定参数,您可使用关头字:
格局:EXPKEYWORD=value或KEYWORD=(value1,value2,。..,valueN)
实例:EXPSCOTT/TIGERGRANTS=YTABLES=(EMP,DEPT,MGR)
或TABLES=(T1:P1,T1:P2),假如T1是分区表
USERID必需是命令行中的第一个参数。
关头字申明(默许)关头字申明(默许)
--------------------------------------------------------------------------
USERID用户名/口令FULL导出全部文件(N)
BUFFER数据缓冲区的巨细OWNER一切者用户名列表
FILE输入文件(EXPDAT.DMP)TABLES表名列表
COMPRESS导进一个局限(Y)RECORDLENGTHIO纪录的长度
GRANTS导出权限(Y)INCTYPE增量导出范例
INDEXES导出索引(Y)RECORD跟踪增量导出(Y)
ROWS导出数据行(Y)PARFILE参数文件名
CONSTRAINTS导出限定(Y)CONSISTENT交织表分歧性
LOG屏幕输入的日记文件STATISTICS剖析工具(ESTIMATE)
DIRECT间接路径(N)TRIGGERS导出触发器(Y)
FEEDBACK显现每x行(0)的进度
FILESIZE各转储文件的最年夜尺寸
QUERY选定导出表子集的子句
以下关头字仅用于可传输的表空间
TRANSPORT_TABLESPACE导出可传输的表空间元数据(N)
TABLESPACES将传输的表空间列表
在没有告诫的情形下乐成停止导出。
C:》
匡助已很具体的申明了参数的意义和利用办法,并枚举了几个复杂的例子,注重的是,从8i入手下手,已入手下手撑持数据子集的办法,就是能够指定本人的Where前提,能够从表中导出一行或多行数据。
注重下面的setnls_lang=simplifiedchinese_china.zhs16gbk,经由过程设置情况变量,可让exp的匡助以中文显现,假如setnls_lang=American_america.字符集,那末你的匡助就是英文的了。
增量和累计导出必需在全库体例下才无效,并且,年夜多半情形下,增量和累计导出并没有设想中的那末无效。ORACLE从9i入手下手,不再撑持增量导出和累计导出。
ii、表空间传输
表空间传输是8i新增添的一种疾速在数据库间挪动数据的一种举措,是把一个数据库上的格局数据文件附加到别的一个数据库中,而不是把数据导出成Dmp文件,这在有些时分长短常管用的,由于传输表空间挪动数据就象复制文件一样快。
关于传输表空间有一些划定规矩,即:
·源数据库和方针数据库必需运转在不异的平台上。
·源数据库与方针数据库必需利用不异的字符集。
·源数据库与方针数据库必定要有不异巨细的数据块(9i已不必)
·方针数据库不克不及有与迁徙表空间同名的表空间
·SYS的工具不克不及迁徙
·必需传输自包括的工具集
·有一些工具,如物化视图,基于函数的索引等不克不及被传输
能够用以下的办法来检测一个表空间或一套表空间是不是切合传输尺度:
execsys.dbms_tts.transport_set_check(‘tablespace_name’,true);
select*fromsys.transport_set_violation;
假如没有行选择,暗示该表空间只包括表数据,而且是自包括的。关于有些非自包括的表空间,如数据表空间和索引表空间,能够一同传输。
以下为扼要利用步骤,假如想参考具体利用办法,也能够参考ORACLE联机匡助。
a.设置表空间为只读(假定表空间名字为APP_Data和APP_Index)
altertablespaceapp_datareadonly;
altertablespaceapp_indexreadonly;
b.收回EXP命令
SQL》hostexpuserid=”””sys/passwordassysdba”””
transport_tablespace=ytablespace=(app_data,app_index)
以上必要注重的是
·为了在SQL中实行EXP,USERID必需用三个引号,在UNIX中也必需注重制止“/”的利用
·在816和今后,必需利用sysdba才干操纵
·这个命令在SQL中必需安排在一行(这里是由于显现成绩放在了两行)
c.拷贝数据文件到另外一个地址,即方针数据库
能够是cp(unix)或copy(windows)或经由过程ftp传输文件(必定要在bin体例)
d.把当地的表空间设置为读写
e.在方针数据库附加该数据文件
impfile=expdat.dmpuserid=”””sys/passwordassysdba”””
transport_tablespace=y
“datafile=(c:        empapp_data,c:        empapp_index)”
f.设置方针数据库表空间为读写
altertablespaceapp_datareadwrite;
altertablespaceapp_indexreadwrite;
iii、导出/导进与字符集
分明ORACLE的多国言语设置,ORACLE多国言语设置是为了撑持天下局限的言语与字符集,一样平常对言语提醒,泉币情势,排序体例和CHAR,VARCHAR2,CLOB,LONG字段的数据的显现等无效。ORACLE的多国言语设置最次要的两个特征就是国度言语设置与字符集设置,国度言语设置决意了界面或提醒利用的言语品种,字符集决意了数据库保留与字符集有关数据(如文本)时分的编码划定规矩。正如方才下面的一个小例子,情况变量NLS_LANG的分歧,招致EXP匡助产生变更,这就是多国言语设置的感化(NLS_LANG包括国度言语设置与字符集设置,这里起感化的是国度言语设置,而不是字符集)。
ORACLE字符集设定,分为数据库字符集和客户端字符集情况设置。在数据库端,字符集在创立数据库的时分设定,并保留在数据库props$表中,关于8i以上产物,已能够接纳“Alterdatabasecharacterset字符集”来修正数据库的字符集,但也仅仅是从子集到超集,不要经由过程updateprops$来修正字符集,假如是不撑持的转换,大概会得到一切与字符集有关的数据,就是撑持的转换,也大概招致数据库的不一般事情。字符集分为单字节字符集与多字节字符集,US7ASCII就是典范的单字节字符集,在这类字符会合length=lengthb,而ZHS16GBK就是经常使用的双字节字符集,在这里lengthb=2*length。
在客户真个字符集情况对照复杂,次要就是情况变量或注册表项NLS_LANG,注重NLS_LANG的优先级别为:参数文件
老尸 该用户已被删除
沙发
发表于 2015-1-19 06:34:52 | 只看该作者
这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片?
若天明 该用户已被删除
板凳
发表于 2015-1-25 15:39:39 | 只看该作者
索引视图2k就有。但是2005对其效率作了一些改进但是schema.viewname的作用域真是太限制了它的应用面。还有一大堆的环境参数和种种限制都让人对它有点却步。
admin 该用户已被删除
地板
发表于 2015-2-3 05:03:34 | 只看该作者
微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。
飘飘悠悠 该用户已被删除
5#
发表于 2015-2-8 19:48:30 | 只看该作者
还不是性能有问题!否则面向对象的数据库早就实现了!建议使用CLR的地方一般是和应用的复杂程度或操作系统环境有很高的耦合度的场景。如你想构建复杂的算法,并且用到了大量的指针和高级数据模型。
第二个灵魂 该用户已被删除
6#
发表于 2015-2-26 00:28:49 | 只看该作者
数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。
简单生活 该用户已被删除
7#
发表于 2015-3-8 10:52:25 | 只看该作者
个人感觉没有case直观。而且默认的第三字段(还可能更多)作为groupby字段很容易造成新手的错误。
再见西城 该用户已被删除
8#
发表于 2015-3-15 22:23:44 | 只看该作者
每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。
若相依 该用户已被删除
9#
发表于 2015-3-22 17:08:16 | 只看该作者
你可以简单地认为适合的就是好,不适合就是不好。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 03:38

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表