|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在JOIN操作中(需要从多个数据表提取数据时),MySQL只有在主键和外键的数据类型相同时才能使用索引。办理
成绩形貌:
下战书现场职员说产物库不测中断,紧接着说多是阵列破坏,由于灯都不亮了。
因而告急拨号到远程,反省数据库,5分钟今后,数据库从头启动乐成。
成绩实在十分复杂,可是厥后看alertlog,发明从阵列生效一向到给我打德律风,两头有快要1个小时的工夫,这段工夫内里,由于现场职员不晓得成绩地点,以是重复切换cluster,试图让数据库可以启动乐成,汗!
成绩注释:
产物库中把持文件统共三份,分离保留在/global/oracle,/global/backup1,/global/backup2
下。重作日记和回档日记各两份,分离保留在/global/backup1,/global/backup2
下。
/global/oracle,/global/backup1,/global/backup2是三个自力的阵列。
因为把持文件关于oracle必需坚持分歧,以是三份把持文件中的任何一份没法读取
,数据库城市封闭。而重作日记和回档日记,只需有一份能够一般读写,那末数据
库还能够持续一般运转。
以是,假如任何一个阵列生效,那末因为把持文件的成绩,数据库城市不测中断。
办理流程:
1。数据库不测中断
2。反省$ORACLE_HOME/admin/dpshdb/bdump/alert_dpshdb.log文件,确认不测中
止的缘故原由,好比明天的内容是:
TueOct2616:36:402004
Errorsinfile/export/oracle/product/817/admin/dpshdb/bdump/dpshdb_ckpt_16541.trc:
ORA-00206:errorinwriting(block3,#blocks1)ofcontrolfile
ORA-00202:controlfile:/global/backup1/oradata/dpshdb/control02.ctl
ORA-27063:skgfospo:numberofbytesread/writtenisincorrect
SVR4Error:6:Nosuchdeviceoraddress
Additionalinformation:-1
Additionalinformation:8192
TueOct2616:36:402004
Errorsinfile/export/oracle/product/817/admin/dpshdb/bdump/dpshdb_lgwr_16539.trc:
ORA-00345:redologwriteerrorblock38713count2
ORA-00312:onlinelog1thread1:/global/backup1/oradata/dpshdb/redo1b.log
ORA-27063:skgfospo:numberofbytesread/writtenisincorrect
SVR4Error:5:I/Oerror
Additionalinformation:-1
Additionalinformation:1024
第一部分是指出control02.ctl把持文件没法读取,第二部分是指出redo1b.log重
作日记没法读取。
然后数据库主动封闭,以下显现,是16:36:43产生的,也就是在16:36:40初次发明
阵列生效的3秒今后(我们晓得CKPT的timeout值是3秒):
TueOct2616:36:432004
Errorsinfile/export/oracle/product/817/admin/dpshdb/udump/dpshdb_ora_10206.trc:
ORA-00221:写进把持文件堕落
InstanceterminatedbyCKPT,pid=16541
从这些log中我们能够晓得/global/backup1阵列生效了。
3。修正初始化参数文件$ORACLE_HOME/dbs/initdpshdb.ora,疏忽生效的把持文件
和生效的回档路径
原内容:
control_files=("/global/oracle/oradata/dpshdb/control01.ctl",
"/global/backup1/oradata/dpshdb/control02.ctl",
"/global/backup2/oradata/dpshdb/control03.ctl")
log_archive_dest_1="location=/global/backup1/oradata/dpshdb/arch"
修正后的内容:
control_files=("/global/oracle/oradata/dpshdb/control01.ctl",
"/global/backup2/oradata/dpshdb/control03.ctl")
#log_archive_dest_1="location=/global/backup1/oradata/dpshdb/arch"
4。启动数据库,此时数据库已能够一般利用了。
5。为了包管重作日记文件一直坚持2份,以是在数据库启动今后,我们必要删撤除
本来生效的文件,增加新的重作日记文件。这部分操纵能够在数据库启动今后再作
,可是最好不要有大批的更新操纵,是为了避免重作日记切换过快,招致删除重作
日记的操纵失利。
alterdatabasedroplogfilemember
/global/backup1/oradata/dpshdb/redo1b.log;
alterdatabaseaddlogfilemember
/global/oracle/oradata/dpshdb/redo1c.logtogroup1;
alterdatabasedroplogfilemember
/global/backup1/oradata/dpshdb/redo2b.log;
alterdatabaseaddlogfilemember
/global/oracle/oradata/dpshdb/redo2c.logtogroup2;
alterdatabasedroplogfilemember
/global/backup1/oradata/dpshdb/redo3b.log;
alterdatabaseaddlogfilemember
/global/oracle/oradata/dpshdb/redo3c.logtogroup3;
alterdatabasedroplogfilemember
/global/backup1/oradata/dpshdb/redo4b.log;
alterdatabaseaddlogfilemember
/global/oracle/oradata/dpshdb/redo4c.logtogroup4;
在实行alterdatabasedroplogfilemember之前要反省v$log视图,确认该文件
所属的重作日记组的status字段不是current,不是active,而是inactive。不然
删除会报错,假如删除报错,那末运转两次以下语句:
altersystemswtichlogfile;
然后再从头实行删除昔日志和增加新日记的操纵。
目前的方案是用mysqlbinlog工具,增加一个Flashback参数,输出结果为一个新的binlog文件――姑且叫做flashbacklog,这个flashbacklog顺序执行,可制定某张表和执行到哪个pos,来实现数据库的闪回。 |
|