使用 RMAN同步数据库

使用 RMAN 同步数据库

一.概述

二 操作步骤

(一).把生产库置为归档模式

(二).启动rman做数据库0级备份

(三).修改生产库数据库到未归档

(四).拷贝备份集到测试库

(五).在测试库上的操作

一.概述

因项目组遇到要2台数据库同步的问题,决定使用rman来实现此功能,生产库运行在非归档模式,所以操作起来相对麻烦些,生产库最多允许丢失半天数据,晚上可以重启数据,这样就为我们使用rman创造了必要条件,先来理清一下操作步骤:

1. 首先shutdown生产库(node1) ,并修改成归档模式。

2. 使用rman做一个0级备份集,并设置控制文件为自动备份。

3. 修改生产库为非归档模式,并置为open状态。

4. 到测试库上面,修改数据库为归档模式,因没有性能要求,不需要再改回非归档,方便恢复操作。

5. 拷贝备份集到测试库(node2),备份集的存放位置和生产库保持一致。

6. 启动测试库到nomount状态。

7. 启动rman,第一步先恢复controlfile.里面包含了重要的备份信息。

8. 更改数据库到mount状态.

9. 恢复数据库 restore database,注意,此步骤只会使用最近的一次0级备份,而不会应用增量或差异备份。

10. Recover database,此步骤会首先应用所有的差异或增量备份,然后恢复归档日志,当然在恢复归档时会出现错误,在此可以忽略掉。

11. 使用resetlogs关键字打开数据库,数据库同步完成。

以后每天按上面操作写成脚本自动执行即可,需要注意的地方是把0级备份改为1级或2级即可,这样就可以每半月做一次0级备份,每天晚上做一次1级或2级备份,然后恢复到测试库,以此来实现2数据库的同步.

操作步骤 (一).把生产库置为归档模式.

1. [oracle@primary orcl]$ Sqlplus ‘/as sysdba’

2. Sql>shutdown immediate;

3. Sql>startup mount;

4. Sql>alter database archivelog;

5. Sql>alter database open;

6. Sql>quit

(二).启动rman做数据库0级备份

1. [oracle@primary orcl]$ rman target /

2. RMAN>CONFIGURE CONTROLFILE AUTOBACKUP ON;

3. RMAN> backup incremental level 0 database format 'full_db_%d_%s_%t_%p';

--第一次同步操作时用该语句。

RMAN>quit;

日常同步备份时使用1级备份

4. [oracle@primary orcl]$ rman target /

5. RMAN>CONFIGURE CONTROLFILE AUTOBACKUP ON;

6. RMAN> backup incremental level 1 database format 'increment _db_%d_%s_%t_%p';

7. RMAN>quit;

(三).修改生产库数据库到未归档.

1. [oracle@primary orcl]$ Sqlplus ‘/as sysdba’

2. Sql>alter database noarchivelog;

3. Sql>alter database open;

4. Sql>quit;

(四).拷贝备份集到测试库

拷贝备份集文件到测试库,并和生产库相同位置,可以使用sftp或ftp等工具完成。

(五).在测试库上的操作

1. [oracle@primary orcl]$ Sqlplus ‘/as sysdba’

2. Sql>startup nomount;

3. Sql>quit;

4. [oracle@primary orcl]$ rman target /

5. RMAN> restore controlfile from/opt/oracle11g/u01/dbs/c-1190421672-20080819-01';

--该处可修改为实际备份集。

6. RMAN> alter database mount;

7. RMAN> restore database;

8. RMAN> recover database;

9. RMAN>alter database open resetlogs;

注意,所有的增量或差异备份都是用recover database来恢复的,如果丢失增量备份,需用下面方法启动数据库,将可能导致丢失大量数据:

启动sqlplus,使用下面语句清除丢失的增量备份.

Sql>recover database using backup controlfile until cancel;

ORA-00279: ü 1839635 ( 08/18/2008 23:25:21 ú) 1 ±è

ORA-00289: ¨é: /archive/1_74_662640938.dbf

ORA-00280: ü 1839635 ( 1) ò #74

Specify log: {=suggested | filename | AUTO | CANCEL}

Cancel <需要手工输入后回车>

Media recovery cancelled.

最后执行resetlogs关键字启动数据库。

SQL> alter database open resetlogs;

Database altered.

备份及同步脚本:
 rman_backup_v1.1.sh

点击(此处)折叠或打开

  1. #!/bin/bash
  2. ###################################################################
  3. # Usage:
  4. # backup_rman_v1.1.sh [all|repeat|sync]
  5. # all: list all backup file.
  6. # repeat: repeat level-1 increment backup.
  7. # sync: sync backup file to target database.
  8. ###################################################################
  9. export ORACLE_HOME=/opt/oracle11g/u01
  10. export ORACLE_SID=primary
  11. export LD_LIBRARY_PATH=${ORACLE_HOME}/lib:${ORACLE_HOME}/ctx/lib
  12. export PATH=$PATH:${ORACLE_HOME}/bin
  13. export NLS_LANG="American_america.zhs16gbk"
  14. export ORACLE_OWNER=oracle
  15. export backup_dir=/home/oracle/backup/backup
  16. export log=/home/oracle/backup/log
  17. rsync_dir=$backup_dir #sync dir
  18. controlfile_dir=$backup_dir/controlfile
  19. username=oracle #target OS ,oracle user
  20. password=go2north #target oracle user password
  21. target_host=172.16.5.27
  22. today_backup=`date +'%Y-%m-%d'`
  23. mail_to_admin="zhaorupeng@126.com"
  24. ########set display color#########
  25. white=$(echo -e "\e[39;40m")
  26. green=$(echo -e "\e[36;40m")
  27. red=$(echo -e "\e[31;40m")
  28. purple=$(echo -e "\e[35;40m")
  29. yellow=$(echo -e "\e[33;40m")
  30. blue=$(echo -e "\e[34;40m")
  31. ########color set end ############
  32. # data backup status.
  33. # 0: backup failed.
  34. # 2: default
  35. # 9: success
  36. backup_status=2
  37. #database status check ,If it's not turn on,the value is 0,or else 1
  38. ora_stat=`ps -ef | grep -i 'ora_smon_*' |grep -v grep| wc -l`
  39. #database mode check,If it's archive mode,that value is 1,or else 0;
  40. arch=`ps -ef | grep -i 'ora_arc_*' | grep -v grep | wc -l`
  41. function open_database()
  42. {
  43. if [ "$ora_stat" = 0 ]; then
  44. cat << EOF | $ORACLE_HOME/bin/sqlplus '/as sysdba'
  45. shutdown immediate;
  46. startup;
  47. quit;
  48. EOF
  49. backup_status=2
  50. if [ "$?" = 1 ]; then
  51. echo "database unable strtup!"
  52. backup_status=0
  53. exit 1
  54. fi
  55. fi
  56. }
  57. function open_archive_mode()
  58. {
  59. if [ "$arch" = 0 ]; then #if arch=1,nothing,because it was already on archive mode
  60. echo "****************open archive mode*************"
  61. cat << EOF | $ORACLE_HOME/bin/sqlplus '/as sysdba'
  62. shutdown immediate;
  63. startup mount;
  64. alter database archivelog;
  65. alter database open;
  66. quit;
  67. EOF
  68. fi
  69. }
  70. function return_initaliztion_mode()
  71. {
  72. if [ "$arch" = 0 -a "$backup_status" > 0 ]; then
  73. #if arch=1,nothing,because initialization mode is archive mode
  74. echo "********* return initialization database mode**********"
  75. cat << EOF | $ORACLE_HOME/bin/sqlplus '/as sysdba'
  76. shutdown immediate;
  77. startup mount;
  78. alter database noarchivelog;
  79. alter database open;
  80. quit;
  81. EOF
  82. fi
  83. if [ "$?" = 0 ]; then
  84. echo "return initalization database successfully."
  85. fi
  86. echo "************return initialization database mode *********" ;
  87. }
  88. function increment_backup_level_1() # incremental level-1 backup
  89. {
  90. open_database
  91. open_archive_mode
  92. echo "******** `date +'%Y%m%d'` Do level-1 increment backup....*********************" 2>&1;
  93. cat << EOF | $ORACLE_HOME/bin/rman target / |tee $log/rman_increment_db_`date +'%y%m%d%H%M'`.log
  94. configure maxsetsize to 20g;
  95. configure controlfile autobackup on;
  96. configure controlfile autobackup format for device type disk to '$controlfile_dir/%F';
  97. run {
  98. allocate channel c01 type disk;
  99. backup incremental level 1 database format '$backup_dir/increment_db_%d_%s_%t_%p' tag="increment_db_`date +'%y%m%d%H%M'`";
  100. release channel c01;
  101. }
  102. configure controlfile autobackup off;
  103. crosscheck backup of database;
  104. crosscheck archivelog all;
  105. delete noprompt obsolete ;
  106. delete noprompt expired backup;
  107. delete noprompt backup completed before 'sysdate-30';
  108. delete noprompt archivelog until time 'sysdate-14';
  109. EOF
  110. if [ "$?" = 0 ];then
  111. echo "*******************level-1 backup completed!************************"
  112. backup_status=9
  113. else
  114. echo "*****************level-1 backup databae failed,please contact oracle dba*******"
  115. backup_status=0
  116. fi
  117. return $backup_status
  118. return_initaliztion_mode
  119. }
  120. function level_0_backup_database()
  121. {
  122. open_database
  123. open_archive_mode
  124. echo "************* Do level-0 backup ****************"
  125. cat << EOF | $ORACLE_HOME/bin/rman target / |tee $log/rman_full_db_`date +'%y%m%d%H%M'`.log
  126. configure retention policy to redundancy 30;
  127. configure maxsetsize to 20g;
  128. configure controlfile autobackup on;
  129. configure controlfile autobackup format for device type disk to '$controlfile_dir/%F';
  130. crosscheck backup of database;
  131. crosscheck archivelog all;
  132. delete noprompt obsolete ;
  133. delete noprompt expired backup;
  134. delete noprompt backup completed before 'sysdate-30';
  135. delete noprompt archivelog until time 'sysdate-5';
  136. run {
  137. allocate channel c1 type disk;
  138. backup incremental level 0 database format '$backup_dir/full_db_%d_%s_%t_%p' tag="full_db_`date +'%y%m%d%H%M'`";
  139. release channel c1 ;
  140. }
  141. configure controlfile autobackup off;
  142. quit;
  143. EOF
  144. if [ "$?" = 0 ];then
  145. echo "*******************level-0 backup completed!************************"
  146. backup_status=9
  147. else
  148. echo "******************level-0 backup databae failed,please contact oracle dba*******"
  149. backup_status=0
  150. fi
  151. return $backup_status
  152. return_initaliztion_mode
  153. }
  154. function repeat_increment_backup()
  155. {
  156. if [ "$#" = 0 ]; then
  157. exit 0
  158. else
  159. if [ "$1" = "repeat" ]; then
  160. echo "************do database increment backup again**************"
  161. increment_backup_level_1 $ORACLE_HOME $log $backup_dir
  162. echo "************repeat increment backup completed!**************"
  163. else
  164. echo "command error,please use parameter 'repeat'"
  165. exit 0
  166. fi
  167. fi
  168. }
  169. # sync target database backup files #
  170. function sync()
  171. {
  172. ping $target_host -c 1 > /dev/null # test network link #
  173. if [ $? != 0 ] ; then
  174. echo "sync host:$red $target_host $white link failed!,please check network."
  175. exit 1
  176. fi
  177. if [ -f /usr/bin/rsync ]; then
  178. #check resync command #
  179. cat << EOF > sync
  180. #!/usr/bin/expect
  181. spawn /usr/bin/rsync -avzu $rsync_dir/ $username@$target_host:$rsync_dir
  182. expect "password:"
  183. send "$password\n";
  184. send "quit\n";
  185. interact
  186. EOF
  187. echo "********copy backup files to target database********"
  188. if [ -f sync -a -f /usr/bin/expect ]; then
  189. chmod +x sync
  190. ./sync
  191. rm -rf ./sync
  192. #list sync files
  193. backup_file=`ls -ltR --full-time $backup_dir/ | egrep -i "increment_|c-" | grep -i $today_backup | awk '{print $6 " " substr($7,1,8) " " $9}'`
  194. echo "sync files:"
  195. echo "$blue"
  196. j=0
  197. for i in $backup_file
  198. do
  199. ((j++))
  200. a[$j]=$i
  201. if [ $j = 3 ]; then
  202. echo "${a[`expr $j - 2`]} ${a[`expr $j - 1`]} ${a[$j]}"
  203. j=0
  204. fi
  205. done
  206. echo "$white"
  207. echo " transtion has succeed.please check the backup files on target database."
  208. exit 0
  209. else
  210. echo "command expect not found, please install Tcl/expect"
  211. exit 1
  212. fi
  213. else
  214. echo "command rsync not found,please install!"
  215. exit 1
  216. fi
  217. }
  218. if [ -f $log/autobak_`date +'%Y%m%d'`.log ]; then
  219. rm -rf $log/autobak_`date +'%Y%m%d'`.log
  220. fi
  221. (
  222. level_0_backup_status=`find $backup_dir/ -name 'full_db_*'| grep -i full_db |grep -v grep | wc -l` 2>&1
  223. level_1_backup_status=`ls -l --full-time $backup_dir/ |grep -i 'increment_db_*'| grep -i $today_backup|grep -v grep | wc -l` 2>&1
  224. if [ $level_0_backup_status = 0 -a $backup_status = 2 ]; then
  225. level_0_backup_database
  226. backup_status=$?
  227. fi
  228. if [ $level_1_backup_status = 0 -a $backup_status = 2 ]; then
  229. increment_backup_level_1
  230. backup_status=$?
  231. fi
  232. # ############Today's database backup information##########
  233. # check today's backup status #
  234. check_backup=`ls -l --full-time $backup_dir/ | egrep -i "increment_db_|full_db_" | awk '{print $6}' | grep -i $today_backup | wc -l`
  235. # check today's controlfile backup information #
  236. control_file=`ls -lt --full-time $controlfile_dir/ | grep -i "c-*" | grep -i $today_backup | awk '{print $6 " " substr($7,1,8) " " $9}'`
  237. # check today's increment backup information #
  238. backup_file_info=`ls -lt --full-time $backup_dir/ | egrep -i "increment_db_|full_db_" | grep -i $today_backup | awk '{print $6 " " substr($7,1,8) " " $9}'`
  239. log_file_info=`ls -lt --full-time $log/ | egrep -i "increment_db_|full_db_" | grep -i $today_backup | awk '{print $6 " " substr($7,1,8) " " $9}'`
  240. if [ "$1" = "all" ] ; then
  241. backup_file_info=`ls -lt --full-time $backup_dir/ | egrep -i "increment_db_|full_db" | awk '{print $6 " " substr($7,1,8) " " $9}'`
  242. control_file=`ls -lt --full-time $controlfile_dir/ | grep -i "c-*"| awk '{print $6 " " substr($7,1,8) " " $9}'`
  243. fi
  244. # print today's backup information including controlfile and log information #
  245. if [ $check_backup -ge 0 ]; then
  246. if [ "$1" = "repeat" ] ; then
  247. repeat_increment_backup $1
  248. else
  249. echo " ############Today's database backup information########## "
  250. if [ "$1" = "all" ]; then
  251. today_backup=`ls -l --full-time $backup_dir/ | grep -i full_db_* | awk '{print $6}'`
  252. echo "List date $purple ${today_backup[0]} $white level-0 backup database after file information"
  253. else
  254. echo "Date $purple $today_backup $white database backup is completed."
  255. fi
  256. echo "backup file directory: $backup_dir"
  257. echo "backup file information: $green"
  258. echo ""
  259. j=0
  260. for i in $backup_file_info
  261. do
  262. ((j++))
  263. a[$j]=$i
  264. if [ $j = 3 ]; then
  265. echo "${a[`expr $j - 2`]} ${a[`expr $j - 1`]} $backup_dir/${a[$j]}"
  266. j=0
  267. fi
  268. done
  269. echo "$white"
  270. echo "Controlfile information:$yellow"
  271. echo ""
  272. j=0
  273. for p in $control_file;do
  274. ((j++))
  275. a[$j]=$p
  276. if [ $j = 3 ] ; then
  277. echo "${a[`expr $j - 2`]} ${a[`expr $j - 1`]} $controlfile_dir/${a[$j]}"
  278. j=0
  279. fi
  280. done
  281. echo "$white"
  282. echo "log information:$blue"
  283. echo ""
  284. j=0
  285. for p in $log_file_info;do
  286. ((j++))
  287. a[$j]=$p
  288. if [ $j = 3 ] ; then
  289. echo "${a[`expr $j - 2`]} ${a[`expr $j - 1`]} $log/${a[$j]}"
  290. j=0
  291. fi
  292. done
  293. echo "$white"
  294. echo "If you want increment backup database again,please use \"repeat\" parameter"
  295. echo " ############Today database backup information the end ########## "
  296. fi
  297. fi
  298. # end print backup information #
  299. # copy backup file #
  300. if [ "$1" = "sync" ] ; then
  301. backup_status=9
  302. fi
  303. if [ "$backup_status" = 9 ]; then
  304. sync
  305. else
  306. echo "Today's Backup file is synced. please check whether it's in the target database."
  307. echo "If you want to sync again,please use \"sync\" parameter."
  308. exit 0
  309. fi
  310. echo "If you want to view all backup information,Please use \"all\" parameter."
  311. ) 2> $log/autobak_`date +'%Y%m%d'`.log
  312. #mail -s "`date +'%Y%m%d'`database backup information" $mail_to_admin<$log/autobak_`date +'%Y%m%d'`.log

恢复脚本:
rman_restore_v1.1.sh

  1. #!/bin/sh
  2. export ORACLE_HOME=/opt/oracle11g/u01
  3. export ORACLE_SID=primary
  4. export LD_LIBRARY_PATH=${ORACLE_HOME}/lib:${ORACLE_HOME}/ctx/lib
  5. export PATH=$PATH:${ORACLE_HOME}/bin
  6. export NLS_LANG="American_america.zhs16gbk"
  7. export ORACLE_OWNER=oracle
  8. export backup_dir=/home/oracle/backup/backup
  9. export log=/home/oracle/backup/log
  10. rsync_dir=$backup_dir #sync dir
  11. controlfile_dir=$backup_dir/controlfile
  12. username=oracle #target OS ,oracle user
  13. password=go2north #target oracle user password
  14. target_host=172.16.5.27
  15. today_backup=`date +'%Y-%m-%d'`
  16. today=`date +'%Y%m%d'`
  17. white=$(echo -e "\e[39;40m")
  18. green=$(echo -e "\e[36;40m")
  19. red=$(echo -e "\e[31;40m")
  20. blue=$(echo -e "\e[33;40m")
  21. backup_status=2 #data backup status ,0: backup faild,1: 1 level increment backup,2 : 0 level backup
  22. # Begin change restore variable
  23. restore_status=true
  24. last_restore_file=increment_db_ORCL_76_663449691_1
  25. last_restore_date=(2008-08-22 19:36)
  26. last_recover_time="2008-08-28 15:12:08"
  27. last_restore_time=2
  28. last_restore_num=3
  29. # End change restore variable
  30. #sed -i '/^# Begin change restore variable/,/^# End change restore variable/s/t=[0-9]\+/t='$((t+1))'/' $0
  31. #sed -i 's/t=[0-9]\+/t='$((t+1))'/' $0
  32. restore_file=`ls -lt --full-time $backup_dir/ | grep -i 'increment_db_*' | awk '{print $9}'|head -1`
  33. controlfile=`ls -lt --full-time $controlfile_dir | grep -i 'c-*' | awk '{print $9}'| head -1`
  34. recover_time=`ls -lt --full-time $backup_dir/ | grep -i 'increment_db_*' | awk '{print substr($7,1,5)}'| head -1`
  35. recover_date=(`ls -lt --full-time $backup_dir/ | grep -i 'increment_db_*' | awk '{print $6 " " substr($7,1,5)}' | head -1`)
  36. recover_times=`date +'%Y-%m-%d %H:%M:%S'`
  37. function update_backup_info()
  38. {
  39. sed -i '/^# Begin change restore variable/,/^# End change restore variable/s/restore_status=.*/restore_status=true/' $0
  40. sed -i '/^# Begin change restore variable/,/^# End change restore variable/s/last_restore_file=.*/last_restore_file='"${restore_file}"'/' $0
  41. sed -i '/^# Begin change restore variable/,/^# End change restore variable/s/last_recover_time=.*/last_recover_time='"\"${recover_times}\""'/' $0
  42. sed -i '/^# Begin change restore variable/,/^# End change restore variable/s/last_restore_date=.*/last_restore_date='"(${recover_date[*]})"/ $0
  43. sed -i '/^# Begin change restore variable/,/^# End change restore variable/s/last_restore_time=.*/last_restore_time='$((last_restore_time+1))'/' $0
  44. sed -i '/^# Begin change restore variable/,/^# End change restore variable/s/last_restore_num=.*/last_restore_num='$((last_restore_num+1))'/' $0
  45. }
  46. function restore_database()
  47. {
  48. echo "************* recover database start ****************"
  49. cat << EOF | $ORACLE_HOME/bin/sqlplus '/as sysdba'
  50. shutdown immediate;
  51. startup nomount;
  52. EOF
  53. cat << EOF | $ORACLE_HOME/bin/rman target / |tee $log/rman_restore_db_`date +'%y%m%d%H%M'`.log
  54. run {
  55. allocate channel c01 type disk;
  56. allocate channel c02 type disk;
  57. allocate channel c03 type disk;
  58. restore controlfile from "$controlfile_dir/$controlfile";
  59. alter database mount;
  60. recover database;
  61. release channel c01;
  62. release channel c02;
  63. release channel c03;
  64. }
  65. alter database open resetlogs;
  66. EOF
  67. if [ "$?" = 0 ];then
  68. echo "*******************restore be completed!************************"
  69. backup_status=9
  70. update_backup_info
  71. exit 0
  72. else
  73. echo "******************restore database failed,please contact oracle dba*******"
  74. sed -i '/^# Begin change restore variable/,/^# End change restore variable/s/last_recover_time=.*/last_recover_time='"\"${recover_times}\""'/' $0
  75. sed -i '/^# Begin change restore variable/,/^# End change restore variable/s/restore_status=.*/restore_status=false/' $0
  76. fi
  77. return "$backup_status"
  78. }
  79. #delete backup file on the weekend again
  80. #file_info=`ls -l $backup_dir/ | grep -i 'increment_backup_*.gz'|wc -l`
  81. #if [ $file_count -gt 7 ]
  82. #then
  83. # del_files=`ls -lR $backup_dir| egrep -i "increment_db_|full_db_"|grep \`date -d "7 days ago" +'%Y-%m-%d'\`|awk "{print $9}"`
  84. # rm -f $del_files;
  85. # if [ $? = 0 ]
  86. # then
  87. # echo "removing $del_files"
  88. # fi
  89. #else
  90. # echo "No last file"
  91. #
  92. #fi
  93. ###########################################
  94. if [ "$last_restore_file" != "$restore_file" -o "${last_restore_date[1]}" != "$recover_time" ]; then
  95. restore_database
  96. fi
  97. if [ "$1" = "repeat" ] ; then
  98. restore_database
  99. fi
  100. if [ "$restore_status" = "true" -o "${last_restore_date[0]}" = ${recover_date[0]} ]; then
  101. echo "Today's sync already completed!"
  102. echo "Last restore file: $backup_dir/$last_restore_file"
  103. echo "Last restore time: $last_restore_time"
  104. echo "The number of times the database be restored today: $last_restore_num"
  105. echo "The total number of times the database have ever been restore: $last_recover_time"
  106. sed -i '/^# Begin change restore variable/,/^# End change restore variable/s/last_recover_time=.*/last_recover_time='"\"${recover_times}\""'/' $0
  107. else
  108. sed -i '/^# Begin change restore variable/,/^# End change restore variable/s/last_restore_time=.*/last_restore_time=0/' $0
  109. sed -i '/^# Begin change restore variable/,/^# End change restore variable/s/restore_status=.*/restore_status=false/' $0
  110. sed -i '/^# Begin change restore variable/,/^# End change restore variable/s/last_recover_time=.*/last_recover_time='"\"${recover_times}\""'/' $0
  111. fi

使用 RMAN 同步数据库的更多相关文章

  1. RMAN 备份数据库到DISK后进行数据恢复

    RMAN 备份数据库到DISK,然后进行数据恢复 一.rman备份 1. 全备脚本 vi bakup_level0.sql connect target / run { allocate channe ...

  2. Linux上搭建Elasticsearch服务器并同步数据库

    1.准备工作         下载Elasticsearch版本号2.3.4 https://www.elastic.co/downloads/past-releases/elasticsearch- ...

  3. 使用rman迁移数据库到异机

    迁移数据库的方法有多种,较为常用的则是使用RMAN来迁移.使用RMAN迁移数据库属于数据库的物理备份与恢复范畴,整个过程中数据库的相关信息是完整地镜像.因此,基于此种方式还原恢复的数据库用于测试会使得 ...

  4. Netsharp快速入门(之5) 基础档案(之D 实体建模 生成实体代码、同步数据库、配置插件运行时)

    作者:秋时 杨昶   时间:2014-02-15  转载须说明出处 3.3.1  同步数据库并生成dll文件 1.在基础档案和销售管理项目上右击,选择同步数据库结构来创建数据库表 2. 在基础档案项目 ...

  5. Rman实现数据库迁移

    Rman实现数据库迁移(从库A迁移到库B)环境:服务器A:Oracle10g+AS3服务器B:Oracle10g+AS4准备工作: 1 在数据库B上建立与库A相同的目录结构(若由于磁盘空间等原因可以用 ...

  6. 项目管理实践【六】自动同步数据库【Using Visual Studio with Source Control System to synchronize database automatically】

    在上一篇项目管理实践[五]自动编译和发布网站中,我们讲解了如何使用MSBuild+Robocopy+WebDeployment来自动编译和部署网站,今天,我们来看一下,如何使用MSBuild +SVN ...

  7. django(python manage.py imgrate)同步数据库出错后的解决办法

    问题 很多情况下,因为app的models.py的文件内容有误,但是通过python   manage.py    check检查不出来时,当执行python   manage.py    migra ...

  8. Oracle使用rman备份数据库时出现cannot reclaim的错误

    1. 按照<2 day DBA>中的guide,设置fast recovery area. SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_S ...

  9. Oracle RMAN 恢复数据库到不同主机(二)

    我们在recover database时报一个错误: RMAN-06054: media recovery requesting unknown archived log for thread 1 w ...

随机推荐

  1. [在读]JavaScript异步编程:设计快速响应的网络应用

    很棒的一本,就如书名所示,主要讲js异步的一些东西,比如定时器.Jquery的promise和deffered,node...看了一小半.推荐哦~~

  2. shell脚本实现自动化备份

    1.备份规则: 在生产环境中有若干服务器需要定时将服务器中应用程序,以及数据库等进行备份.要求在本地服务器中保存近一周的备份,备份服务器中保存最近一月的备份文件.                    ...

  3. 前端之CSS列表及背景类属性

    一.列表类属性: 1.列表符号样式: list-style-type:disc(实心圆)|circle(空心圆)|square(实心方块)|decimal(数字)|none(去掉列表符号样式); 2. ...

  4. spring cloud各种超时时间设置

    如果是zuul(网关)的超时时间需要设置zuul.hystrix.ribbon等三部分: #zuul超时设置#默认1000zuul.host.socket-timeout-millis=2000#默认 ...

  5. 使用express4.x版、Jade模板以及mysql重写《nodejs开发指南》微博实例

    最近阅读<nodejs开发指南>一书,书是不错的,然而其微博代码示例用的是express3.x,用些过时了,运行代码出现不少bug(我电脑安的是express4.x),于是用express ...

  6. CF747D Winter Is Coming

     题目链接: http://codeforces.com/problemset/problem/747/D 题目大意: 接下来的n天内每天都有一个气温,如果某天的温度为负数,则必须使用冬季轮胎:而温度 ...

  7. substring()和substr()的使用以及区别

    在JavaScript中,通常会用到截取,那所谓截取呢,其实就是要获得被截取元素的某个位置到某个位置的内容,那么JS给我提供了substring和substr这两种方法: 这两种截取的方式有什么区别呢 ...

  8. HashMap,你知道多少?

    一.前言 HashMap在面试中是个火热的话题,那么你能应付自如吗?下面抛出几个问题看你是否知道,如果知道那么本文对于你来说就不值一提了. HashMap的内部数据结构是什么? HashMap扩容机制 ...

  9. java.lang.UnsatisfiedLinkError: dlopen failed: /data/app/xxx/lib/arm/liblame.so: has text relocations

    最近在写本地录音转码过程中引入了liblame.so,我这边用了不同系统版本的手机测试本地录音都没有出现问题,但是有一天,同事在测试的时候,出现了以下错误: 09-13 17:32:29.140 26 ...

  10. freebsd安装ports

    /etc/portsnap.conf 里面更改 SERVERNAME=portsnap.hshh.org portsnap的命令比较少 fetch 获取数据 extract 释放全部ports upd ...