当前位置: 首页 > news >正文

standby全库rman备份文件恢复到异机

一 实验目的

此实验是建立在oracle DG架构基础之上。rman备份standby数据库。将现有standby全库rman备份文件(在包含控制文件,参数文件,数据文件,归档日志文件及知晓 DBID的情况下),恢复到另一台仅装了oracle database 软件的机器. (源库database目录结构未知)

要求:
1.异机系统、数据库版本与源库一致

2.异机 oracle_sid 与源库一致

二 实验步骤

1.将源库所有有效的能恢复的备份文件copy到异机 (/home/oracle/backup目录下)  这个有效的能恢复的我也不晓得怎么查,rman用法有提到吧。

注:这步应该copy到与源数据库backup存放位置相同的目录结构中,否则会在后面的restore时报错,找不到恢复文件,等后面恢复报错,按照报错信息将/home/oracle/backup  mount 到报错信息提示的目录中就可以了.

2.异机已经有了database软件,直接进入rman
rman target /

3.还记得前面提到知晓DBID吧,这里就用到了
set DBID 690896071

4.虽然没有pfile,也强制启动  嘿嘿
startup nomount;

5.恢复pfile

恢复的具体位置要看异机了,DBA都知道要恢复到哪
restore spfile to pfile '/home/oracle/database/product/10.2.0/db_1/dbs/initora10.ora' from '/home/oracle/backup/spf_ORA10_20100210_142_1';


6.编辑参数文件 建立目录结构

下面是刚恢复的pfile的内容
cat /home/oracle/database/product/10.2.0/db_1/dbs/initora10.ora

ora10.__db_cache_size=1241513984
ora10.__java_pool_size=16777216
ora10.__large_pool_size=16777216
ora10.__shared_pool_size=285212672
ora10.__streams_pool_size=0
*.audit_file_dest='/oracle/oracleDG/admin/ora10/adump'
*.background_dump_dest='/oracle/oracleDG/admin/ora10/bdump'
*.compatible='10.2.0.3.0'
*.control_files='/oracle/data/oradata/ora10/control01.ctl','/oracle/data/oradata/ora10/control02.ctl','/oracle/data/oradata/ora10/control03.ctl'#Restore Controlfile
*.core_dump_dest='/oracle/oracleDG/admin/ora10/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='ora10'
*.db_recovery_file_dest='/oracle/data/oradata/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.DB_UNIQUE_NAME='ora10'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=ora10XDB)'
*.FAL_CLIENT='ora10'
*.FAL_SERVER='ora10STD'
*.job_queue_processes=10
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(ora10,ora10STD)'
*.LOG_ARCHIVE_DEST_1='LOCATION=/oracle/data/oradata/arch/ora10 VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ora10'
*.LOG_ARCHIVE_DEST_2='SERVICE=ora10STD LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ora10STD'
*.LOG_ARCHIVE_DEST_STATE_1='enable'
*.LOG_ARCHIVE_DEST_STATE_2='enable'
*.log_archive_format='ora10_%t_%s_%r.arc'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=800
*.pga_aggregate_target=414187520
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_max_size=1572864000
*.sga_target=1577058304
*.standby_archive_dest='/oracle/data/oradata/arch/ora10'
*.STANDBY_FILE_MANAGEMENT='AUTO'
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS2'
*.user_dump_dest='/oracle/oracleDG/admin/ora10/udump'

替换目录 (前面有说源数据库目录结构不知道,现在通过恢复的pfile就可以了解了,不过我这里做的实验不准备跟源数据库目录结构一样,所以将pfile中的目录结构改成异机的目录结构)
vi /home/oracle/database/product/10.2.0/db_1/dbs/initora10.ora
:1,$ s/\/oracle\/oracleDG\//\/home\/oracle\/database\//g
:1,$ s/\/oracle\/data\//\/home\/oracle\/database\//g

检查新pfile内容(由于源数据库为standby数据库,因此pfile中一有些standby参数,视情况可以去掉)
cat /home/oracle/database/product/10.2.0/db_1/dbs/initora10.ora

ora10.__db_cache_size=1241513984
ora10.__java_pool_size=16777216
ora10.__large_pool_size=16777216
ora10.__shared_pool_size=285212672
ora10.__streams_pool_size=0
*.audit_file_dest='/home/oracle/database/admin/ora10/adump'
*.background_dump_dest='/home/oracle/database/admin/ora10/bdump'
*.compatible='10.2.0.3.0'
*.control_files='/home/oracle/database/oradata/ora10/control01.ctl','/home/oracle/database/oradata/ora10/control02.ctl','/home/oracle/database/oradata/ora10/control03.ctl'#Restore Controlfile
*.core_dump_dest='/home/oracle/database/admin/ora10/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='ora10'
*.db_recovery_file_dest='/home/oracle/database/oradata/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.DB_UNIQUE_NAME='ora10'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=ora10XDB)'
*.FAL_CLIENT='ora10'
*.FAL_SERVER='ora10STD'
*.job_queue_processes=10
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(ora10,ora10STD)'
*.LOG_ARCHIVE_DEST_1='LOCATION=/home/oracle/database/oradata/arch/ora10 VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ora10'
*.LOG_ARCHIVE_DEST_2='SERVICE=ora10STD LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ora10STD'
*.LOG_ARCHIVE_DEST_STATE_1='enable'
*.LOG_ARCHIVE_DEST_STATE_2='enable'
*.log_archive_format='ora10_%t_%s_%r.arc'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=800
*.pga_aggregate_target=414187520
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_max_size=1572864000
*.sga_target=1577058304
*.standby_archive_dest='/home/oracle/database/oradata/arch/ora10'
*.STANDBY_FILE_MANAGEMENT='AUTO'
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS2'
*.user_dump_dest='/home/oracle/database/admin/ora10/udump'


7.根据新pfile的内容建立目录结构
mkdir -p /home/oracle/database/oradata/arch/ora10
mkdir -p /home/oracle/database/admin/ora10/udump
mkdir -p /home/oracle/database/oradata/flash_recovery_area
mkdir -p /home/oracle/database/admin/ora10/cdump
mkdir -p /home/oracle/database/admin/ora10/bdump
mkdir -p /home/oracle/database/admin/ora10/adump
mkdir -p /home/oracle/database/oradata/ora10/

8.用新pfile启动数据库
rman target /
startup force nomount pfile='/home/oracle/database/product/10.2.0/db_1/dbs/initora10.ora';


9.恢复controlfile(可以检查controlfile已经被恢复到了新的目录结构下)
restore controlfile from '/home/oracle/backup/ctl_ORA10_20100210_141_1';

10.使用新的control file启动数据库
alter database mount;

11.查看控制文件中记录的数据文件位置,这步的目的是用select语句生成后面rman将要用到的改位置的文件,方便恢复到我们异机我们新定的目录结构中
sqlplus / as sysdba
set head off
set lines 100
set pages 500
col name for a60
set feedback off
spool /home/oracle/spool_datafile#.txt      
select 'set newname for datafile '||file#||' to '||''''||name||''''||';' from v$datafile;              
spool off

或者 (下面也可以列出源库的数据文件位置,不过我不知道应该怎么编辑列出的结果)
rman target /
report schema;



12.编辑上步中的 spool_datafile#.txt  (完善上一步,将源库目录结构改变成异机的目录结构)
vi /home/oracle/spool_datafile#.txt

:1,$ s/\/oracle\/data\//\/home\/oracle\/database\//g
还有一些内容需要添加,自己照着下一步列出的内容向里面添吧。


13. 显示一下spool_datafile#.txt 的内容
cat /home/oracle/spool_datafile#.txt
run{
set newname for datafile 1 to '/home/oracle/database/oradata/ora10/system01.dbf';                            
set newname for datafile 2 to '/home/oracle/database/oradata/ora10/piats01.dbf';                             
set newname for datafile 3 to '/home/oracle/database/oradata/ora10/sysaux01.dbf';                            
set newname for datafile 4 to '/home/oracle/database/oradata/ora10/users01.dbf';                             
set newname for datafile 5 to '/home/oracle/database/oradata/ora10/test.dbf';                                
set newname for datafile 6 to '/home/oracle/database/oradata/ora10/undotbs02.dbf';                           
set newname for datafile 7 to '/home/oracle/database/oradata/ora10/com_para01.dbf';                          
set newname for datafile 8 to '/home/oracle/database/oradata/ora10/app_indx_space01.dbf';                    
set newname for datafile 9 to '/home/oracle/database/oradata/ora10/COD_UPLOAD_FILE01.dbf';                   
set newname for datafile 10 to '/home/oracle/database/oradata/ora10/COD_CODEFILE01.dbf';                     
set newname for datafile 11 to '/home/oracle/database/oradata/ora10/drug01.dbf';                             
set newname for datafile 12 to '/home/oracle/database/oradata/ora10/cmp_ras01.dbf';                          
set newname for datafile 13 to '/home/oracle/database/oradata/ora10/cax01.dbf';                              
set newname for datafile 14 to '/home/oracle/database/oradata/ora10/piats_log01.dbf';                        
set newname for datafile 15 to '/home/oracle/database/oradata/ora10/partition_cod_code_status001.dbf';       
set newname for datafile 16 to '/home/oracle/database/oradata/ora10/partition_cod_code_status002.dbf';       
set newname for datafile 17 to '/home/oracle/database/oradata/ora10/partition_cod_code_status003.dbf';       
set newname for datafile 18 to '/home/oracle/database/oradata/ora10/partition_cod_code_status004.dbf';       
set newname for datafile 19 to '/home/oracle/database/oradata/ora10/partition_cod_code_status005.dbf';       
set newname for datafile 20 to '/home/oracle/database/oradata/ora10/partition_cod_code_status006.dbf';       
set newname for datafile 21 to '/home/oracle/database/oradata/ora10/partition_cod_code_status007.dbf';       
set newname for datafile 22 to '/home/oracle/database/oradata/ora10/partition_cod_code_status008.dbf';       
set newname for datafile 23 to '/home/oracle/database/oradata/ora10/partition_cod_code_status009.dbf';       
set newname for datafile 24 to '/home/oracle/database/oradata/ora10/partition_cod_code_status010.dbf';       
set newname for datafile 25 to '/home/oracle/database/oradata/ora10/partition_cod_code_status011.dbf';       
set newname for datafile 26 to '/home/oracle/database/oradata/ora10/partition_cod_code_status012.dbf';       
set newname for datafile 27 to '/home/oracle/database/oradata/ora10/partition_cod_code_status013.dbf';       
set newname for datafile 28 to '/home/oracle/database/oradata/ora10/partition_cod_code_status014.dbf';       
set newname for datafile 29 to '/home/oracle/database/oradata/ora10/partition_cod_code_status015.dbf';       
set newname for datafile 30 to '/home/oracle/database/oradata/ora10/partition_cod_code_status016.dbf';       
set newname for datafile 31 to '/home/oracle/database/oradata/ora10/partition_cod_code_status017.dbf';       
set newname for datafile 32 to '/home/oracle/database/oradata/ora10/partition_cod_code_status018.dbf';       
set newname for datafile 33 to '/home/oracle/database/oradata/ora10/partition_cod_code_status019.dbf';       
set newname for datafile 34 to '/home/oracle/database/oradata/ora10/partition_cod_code_status020.dbf';       
set newname for datafile 35 to '/home/oracle/database/oradata/ora10/partition_cod_code_status021.dbf';       
set newname for datafile 36 to '/home/oracle/database/oradata/ora10/partition_cod_code_status022.dbf';       
set newname for datafile 37 to '/home/oracle/database/oradata/ora10/partition_cod_code_status023.dbf';       
set newname for datafile 38 to '/home/oracle/database/oradata/ora10/partition_cod_code_status024.dbf';       
set newname for datafile 39 to '/home/oracle/database/oradata/ora10/partition_cod_code_status025.dbf';       
set newname for datafile 40 to '/home/oracle/database/oradata/ora10/partition_cod_code_status026.dbf';       
set newname for datafile 41 to '/home/oracle/database/oradata/ora10/partition_cod_code_status027.dbf';       
set newname for datafile 42 to '/home/oracle/database/oradata/ora10/partition_cod_code_status028.dbf';       
set newname for datafile 43 to '/home/oracle/database/oradata/ora10/partition_cod_code_status029.dbf';       
set newname for datafile 44 to '/home/oracle/database/oradata/ora10/partition_cod_code_status030.dbf';       
set newname for datafile 45 to '/home/oracle/database/oradata/ora10/partition_cod_code_status031.dbf';       
set newname for datafile 46 to '/home/oracle/database/oradata/ora10/partition_cod_code_status032.dbf';       
set newname for datafile 47 to '/home/oracle/database/oradata/ora10/partition_cod_code_status033.dbf';       
set newname for datafile 48 to '/home/oracle/database/oradata/ora10/partition_cod_code_status034.dbf';       
set newname for datafile 49 to '/home/oracle/database/oradata/ora10/partition_cod_code_status035.dbf';       
set newname for datafile 50 to '/home/oracle/database/oradata/ora10/partition_cod_code_status036.dbf';       
set newname for datafile 51 to '/home/oracle/database/oradata/ora10/partition_cod_code_status037.dbf';       
set newname for datafile 52 to '/home/oracle/database/oradata/ora10/partition_cod_code_status038.dbf';       
set newname for datafile 53 to '/home/oracle/database/oradata/ora10/partition_cod_code_status039.dbf';       
set newname for datafile 54 to '/home/oracle/database/oradata/ora10/partition_cod_code_status040.dbf';       
set newname for datafile 55 to '/home/oracle/database/oradata/ora10/partition_cod_code_status041.dbf';       
set newname for datafile 56 to '/home/oracle/database/oradata/ora10/partition_cod_code_status042.dbf';       
set newname for datafile 57 to '/home/oracle/database/oradata/ora10/partition_cod_code_status043.dbf';       
set newname for datafile 58 to '/home/oracle/database/oradata/ora10/partition_cod_code_status044.dbf';       
set newname for datafile 59 to '/home/oracle/database/oradata/ora10/partition_cod_code_status045.dbf';       
set newname for datafile 60 to '/home/oracle/database/oradata/ora10/partition_cod_code_status046.dbf';       
set newname for datafile 61 to '/home/oracle/database/oradata/ora10/partition_cod_code_status047.dbf';       
set newname for datafile 62 to '/home/oracle/database/oradata/ora10/partition_cod_code_status048.dbf';       
set newname for datafile 63 to '/home/oracle/database/oradata/ora10/partition_cod_code_status049.dbf';       
set newname for datafile 64 to '/home/oracle/database/oradata/ora10/partition_cod_code_status050.dbf';       
set newname for datafile 65 to '/home/oracle/database/oradata/ora10/partition_cod_code_status051.dbf';       
set newname for datafile 66 to '/home/oracle/database/oradata/ora10/partition_cod_code_status052.dbf';       
set newname for datafile 67 to '/home/oracle/database/oradata/ora10/partition_cod_code_status053.dbf';       
set newname for datafile 68 to '/home/oracle/database/oradata/ora10/partition_cod_code_status054.dbf';       
set newname for datafile 69 to '/home/oracle/database/oradata/ora10/partition_cod_code_status055.dbf';       
set newname for datafile 70 to '/home/oracle/database/oradata/ora10/partition_cod_code_status056.dbf';       
set newname for datafile 71 to '/home/oracle/database/oradata/ora10/partition_cod_code_status057.dbf';       
set newname for datafile 72 to '/home/oracle/database/oradata/ora10/partition_cod_code_status058.dbf';       
set newname for datafile 73 to '/home/oracle/database/oradata/ora10/partition_cod_code_status059.dbf';       
set newname for datafile 74 to '/home/oracle/database/oradata/ora10/partition_cod_code_status060.dbf';       
set newname for datafile 75 to '/home/oracle/database/oradata/ora10/partition_cod_code_status061.dbf';       
set newname for datafile 76 to '/home/oracle/database/oradata/ora10/partition_cod_code_status062.dbf';       
set newname for datafile 77 to '/home/oracle/database/oradata/ora10/partition_cod_code_status063.dbf';       
set newname for datafile 78 to '/home/oracle/database/oradata/ora10/partition_cod_code_status064.dbf';       
set newname for datafile 79 to '/home/oracle/database/oradata/ora10/partition_cod_code_status065.dbf';       
set newname for datafile 80 to '/home/oracle/database/oradata/ora10/partition_cod_code_status066.dbf';       
set newname for datafile 81 to '/home/oracle/database/oradata/ora10/partition_cod_code_status067.dbf';       
set newname for datafile 82 to '/home/oracle/database/oradata/ora10/partition_cod_code_status068.dbf';       
set newname for datafile 83 to '/home/oracle/database/oradata/ora10/partition_cod_code_status069.dbf';       
set newname for datafile 84 to '/home/oracle/database/oradata/ora10/partition_cod_code_status070.dbf';       
set newname for datafile 85 to '/home/oracle/database/oradata/ora10/partition_cod_code_status071.dbf';       
set newname for datafile 86 to '/home/oracle/database/oradata/ora10/partition_cod_code_status072.dbf';       
set newname for datafile 87 to '/home/oracle/database/oradata/ora10/partition_cod_code_status073.dbf';       
set newname for datafile 88 to '/home/oracle/database/oradata/ora10/partition_cod_code_status074.dbf';       
set newname for datafile 89 to '/home/oracle/database/oradata/ora10/partition_cod_code_status075.dbf';       
set newname for datafile 90 to '/home/oracle/database/oradata/ora10/partition_cod_code_status076.dbf';       
set newname for datafile 91 to '/home/oracle/database/oradata/ora10/partition_cod_code_status077.dbf';       
set newname for datafile 92 to '/home/oracle/database/oradata/ora10/partition_cod_code_status078.dbf';       
set newname for datafile 93 to '/home/oracle/database/oradata/ora10/partition_cod_code_status079.dbf';       
set newname for datafile 94 to '/home/oracle/database/oradata/ora10/partition_cod_code_status080.dbf';       
set newname for datafile 95 to '/home/oracle/database/oradata/ora10/partition_cod_code_status081.dbf';       
set newname for datafile 96 to '/home/oracle/database/oradata/ora10/partition_cod_code_status082.dbf';       
set newname for datafile 97 to '/home/oracle/database/oradata/ora10/partition_cod_code_status083.dbf';       
set newname for datafile 98 to '/home/oracle/database/oradata/ora10/partition_cod_code_status084.dbf';       
set newname for datafile 99 to '/home/oracle/database/oradata/ora10/partition_cod_code_status085.dbf';       
set newname for datafile 100 to '/home/oracle/database/oradata/ora10/partition_cod_code_status086.dbf';      
set newname for datafile 101 to '/home/oracle/database/oradata/ora10/partition_cod_code_status087.dbf';      
set newname for datafile 102 to '/home/oracle/database/oradata/ora10/partition_cod_code_status088.dbf';      
set newname for datafile 103 to '/home/oracle/database/oradata/ora10/partition_cod_code_status089.dbf';      
set newname for datafile 104 to '/home/oracle/database/oradata/ora10/partition_cod_code_status090.dbf';      
set newname for datafile 105 to '/home/oracle/database/oradata/ora10/partition_cod_code_status091.dbf';      
set newname for datafile 106 to '/home/oracle/database/oradata/ora10/partition_cod_code_status092.dbf';      
set newname for datafile 107 to '/home/oracle/database/oradata/ora10/partition_cod_code_status093.dbf';      
set newname for datafile 108 to '/home/oracle/database/oradata/ora10/partition_cod_code_status094.dbf';      
set newname for datafile 109 to '/home/oracle/database/oradata/ora10/partition_cod_code_status095.dbf';      
set newname for datafile 110 to '/home/oracle/database/oradata/ora10/partition_cod_code_status096.dbf';      
set newname for datafile 111 to '/home/oracle/database/oradata/ora10/partition_cod_code_status097.dbf';      
set newname for datafile 112 to '/home/oracle/database/oradata/ora10/partition_cod_code_status098.dbf';      
set newname for datafile 113 to '/home/oracle/database/oradata/ora10/partition_cod_code_status099.dbf';      
set newname for datafile 114 to '/home/oracle/database/oradata/ora10/partition_cod_code_status100.dbf';      
set newname for datafile 115 to '/home/oracle/database/oradata/ora10/partition_cod_code_status101.dbf';      
set newname for datafile 116 to '/home/oracle/database/oradata/ora10/partition_cod_code_status102.dbf';      
set newname for datafile 117 to '/home/oracle/database/oradata/ora10/partition_cod_code_status103.dbf';      
set newname for datafile 118 to '/home/oracle/database/oradata/ora10/partition_cod_code_status104.dbf';      
set newname for datafile 119 to '/home/oracle/database/oradata/ora10/partition_cod_code_status105.dbf';      
set newname for datafile 120 to '/home/oracle/database/oradata/ora10/partition_cod_code_status106.dbf';      
set newname for datafile 121 to '/home/oracle/database/oradata/ora10/partition_cod_code_status107.dbf';      
set newname for datafile 122 to '/home/oracle/database/oradata/ora10/partition_cod_code_status108.dbf';      
set newname for datafile 123 to '/home/oracle/database/oradata/ora10/partition_cod_code_status109.dbf';      
set newname for datafile 124 to '/home/oracle/database/oradata/ora10/partition_cod_code_status110.dbf';      
set newname for datafile 125 to '/home/oracle/database/oradata/ora10/partition_cod_code_status111.dbf';      
set newname for datafile 126 to '/home/oracle/database/oradata/ora10/partition_cod_code_status112.dbf';      
set newname for datafile 127 to '/home/oracle/database/oradata/ora10/partition_cod_code_status113.dbf';      
set newname for datafile 128 to '/home/oracle/database/oradata/ora10/partition_cod_code_status114.dbf';      
set newname for datafile 129 to '/home/oracle/database/oradata/ora10/partition_cod_code_status115.dbf';      
set newname for datafile 130 to '/home/oracle/database/oradata/ora10/partition_cod_code_status116.dbf';      
set newname for datafile 131 to '/home/oracle/database/oradata/ora10/partition_cod_code_status117.dbf';      
set newname for datafile 132 to '/home/oracle/database/oradata/ora10/partition_cod_code_status118.dbf';      
set newname for datafile 133 to '/home/oracle/database/oradata/ora10/partition_cod_code_status119.dbf';      
set newname for datafile 134 to '/home/oracle/database/oradata/ora10/partition_cod_code_status120.dbf';      
set newname for datafile 135 to '/home/oracle/database/oradata/ora10/partition_cod_code_status121.dbf';      
set newname for datafile 136 to '/home/oracle/database/oradata/ora10/partition_cod_code_status122.dbf';      
set newname for datafile 137 to '/home/oracle/database/oradata/ora10/partition_cod_code_status123.dbf';      
set newname for datafile 138 to '/home/oracle/database/oradata/ora10/partition_cod_code_status124.dbf';      
set newname for datafile 139 to '/home/oracle/database/oradata/ora10/partition_cod_code_status125.dbf';      
set newname for datafile 140 to '/home/oracle/database/oradata/ora10/partition_cod_code_status126.dbf';      
set newname for datafile 141 to '/home/oracle/database/oradata/ora10/partition_cod_code_status127.dbf';      
set newname for datafile 142 to '/home/oracle/database/oradata/ora10/partition_cod_code_status128.dbf';      
set newname for datafile 143 to '/home/oracle/database/oradata/ora10/partition_cod_code_status129.dbf';      
set newname for datafile 144 to '/home/oracle/database/oradata/ora10/partition_cod_code_status130.dbf';      
set newname for datafile 145 to '/home/oracle/database/oradata/ora10/partition_cod_code_status131.dbf';      
set newname for datafile 146 to '/home/oracle/database/oradata/ora10/partition_cod_code_status132.dbf';      
set newname for datafile 147 to '/home/oracle/database/oradata/ora10/partition_cod_code_status133.dbf';      
set newname for datafile 148 to '/home/oracle/database/oradata/ora10/partition_cod_code_status134.dbf';      
set newname for datafile 149 to '/home/oracle/database/oradata/ora10/partition_cod_code_status135.dbf';      
set newname for datafile 150 to '/home/oracle/database/oradata/ora10/partition_cod_code_status136.dbf';      
set newname for datafile 151 to '/home/oracle/database/oradata/ora10/partition_cod_code_status137.dbf';      
set newname for datafile 152 to '/home/oracle/database/oradata/ora10/partition_cod_code_status138.dbf';      
set newname for datafile 153 to '/home/oracle/database/oradata/ora10/partition_cod_code_status139.dbf';      
set newname for datafile 154 to '/home/oracle/database/oradata/ora10/partition_cod_code_status140.dbf';      
set newname for datafile 155 to '/home/oracle/database/oradata/ora10/partition_cod_code_status141.dbf';      
set newname for datafile 156 to '/home/oracle/database/oradata/ora10/partition_cod_code_status142.dbf';      
set newname for datafile 157 to '/home/oracle/database/oradata/ora10/partition_cod_code_status143.dbf';      
set newname for datafile 158 to '/home/oracle/database/oradata/ora10/partition_cod_code_status144.dbf';      
set newname for datafile 159 to '/home/oracle/database/oradata/ora10/partition_cod_code_status145.dbf';      
set newname for datafile 160 to '/home/oracle/database/oradata/ora10/partition_cod_code_status146.dbf';      
set newname for datafile 161 to '/home/oracle/database/oradata/ora10/partition_cod_code_status147.dbf';      
set newname for datafile 162 to '/home/oracle/database/oradata/ora10/partition_cod_code_status148.dbf';      
set newname for datafile 163 to '/home/oracle/database/oradata/ora10/partition_cod_code_status149.dbf';      
set newname for datafile 164 to '/home/oracle/database/oradata/ora10/partition_cod_code_status150.dbf';      
set newname for datafile 165 to '/home/oracle/database/oradata/ora10/partition_cod_code_status151.dbf';      
set newname for datafile 166 to '/home/oracle/database/oradata/ora10/partition_cod_code_status152.dbf';      
set newname for datafile 167 to '/home/oracle/database/oradata/ora10/partition_cod_code_status153.dbf';      
set newname for datafile 168 to '/home/oracle/database/oradata/ora10/partition_cod_code_status154.dbf';      
set newname for datafile 169 to '/home/oracle/database/oradata/ora10/partition_cod_code_status155.dbf';      
set newname for datafile 170 to '/home/oracle/database/oradata/ora10/partition_cod_code_status156.dbf';      
set newname for datafile 171 to '/home/oracle/database/oradata/ora10/partition_cod_code_status157.dbf';      
set newname for datafile 172 to '/home/oracle/database/oradata/ora10/partition_cod_code_status158.dbf';      
set newname for datafile 173 to '/home/oracle/database/oradata/ora10/partition_cod_code_status159.dbf';      
set newname for datafile 174 to '/home/oracle/database/oradata/ora10/partition_cod_code_status160.dbf';      
set newname for datafile 175 to '/home/oracle/database/oradata/ora10/partition_cod_code_status161.dbf';      
set newname for datafile 176 to '/home/oracle/database/oradata/ora10/partition_cod_code_status162.dbf';      
set newname for datafile 177 to '/home/oracle/database/oradata/ora10/partition_cod_code_status163.dbf';      
set newname for datafile 178 to '/home/oracle/database/oradata/ora10/partition_cod_code_status164.dbf';      
set newname for datafile 179 to '/home/oracle/database/oradata/ora10/partition_cod_code_status165.dbf';      
set newname for datafile 180 to '/home/oracle/database/oradata/ora10/partition_cod_code_status166.dbf';      
set newname for datafile 181 to '/home/oracle/database/oradata/ora10/partition_cod_code_status167.dbf';      
set newname for datafile 182 to '/home/oracle/database/oradata/ora10/partition_cod_code_status168.dbf';      
set newname for datafile 183 to '/home/oracle/database/oradata/ora10/partition_cod_code_status169.dbf';      
set newname for datafile 184 to '/home/oracle/database/oradata/ora10/partition_cod_code_status170.dbf';      
set newname for datafile 185 to '/home/oracle/database/oradata/ora10/partition_cod_code_status171.dbf';      
set newname for datafile 186 to '/home/oracle/database/oradata/ora10/partition_cod_code_status172.dbf';      
set newname for datafile 187 to '/home/oracle/database/oradata/ora10/partition_cod_code_status173.dbf';      
set newname for datafile 188 to '/home/oracle/database/oradata/ora10/partition_cod_code_status174.dbf';      
set newname for datafile 189 to '/home/oracle/database/oradata/ora10/partition_cod_code_status175.dbf';      
set newname for datafile 190 to '/home/oracle/database/oradata/ora10/partition_cod_code_status176.dbf';      
set newname for datafile 191 to '/home/oracle/database/oradata/ora10/partition_cod_code_status177.dbf';      
set newname for datafile 192 to '/home/oracle/database/oradata/ora10/partition_cod_code_status178.dbf';      
set newname for datafile 193 to '/home/oracle/database/oradata/ora10/partition_cod_code_status179.dbf';      
set newname for datafile 194 to '/home/oracle/database/oradata/ora10/partition_cod_code_status180.dbf';      
set newname for datafile 195 to '/home/oracle/database/oradata/ora10/partition_cod_code_status181.dbf';      
set newname for datafile 196 to '/home/oracle/database/oradata/ora10/partition_cod_code_status182.dbf';      
set newname for datafile 197 to '/home/oracle/database/oradata/ora10/partition_cod_code_status183.dbf';      
set newname for datafile 198 to '/home/oracle/database/oradata/ora10/partition_cod_code_status184.dbf';      
set newname for datafile 199 to '/home/oracle/database/oradata/ora10/partition_cod_code_status185.dbf';      
set newname for datafile 200 to '/home/oracle/database/oradata/ora10/partition_cod_code_status186.dbf';      
restore database;
switch datafile all;
recover database;
}
汗!表怪我有这么多的数据文件,因为源库有一个表做了分区,而我的分区方式又很笨,100个分区100个tablespace,每个tablespace有一个数据文件。  再汗一个!

14.执行上面的恢复文件
rman target /
@/home/oracle/spool_datafile#.txt

15.你已经看到了,上面的恢复文件只写到 'recover database'这一步。recover database之后是open database (废话).
这里 你可以' alter database open resetlogs' 试试........
呵呵,不成功吧.controlfile是一个 standby controlfile.  ------    因为我们用的是standby的备份文件恢复的,恢复出来的库当然还是standby库的样子,下面就涉及到了怎么将standby库恢复成主库了.   下面的情况相当于 DG架构的 fail over  (还是废话)

三 standby数据库切换成主库


以下操作分两种情况

1.丢数据的操作(仅用rman备份中含有的archivelog)

2.不丢数据的操作(也分为两种)
    2.1 接着用源库中其余的没有备份的archivelog,redolog进行小小的暴力恢复(不用standby log恢复)
    2.2 在2.1的基础之上再用standby log 很温柔的恢复


先说丢数据的:
sqlplus / as sysdba
SQL> recover standby database using backup controlfile until cancel;
ORA-00279: change 26734855 generated at 02/09/2010 22:00:05 needed for thread 1
ORA-00289: suggestion :
/home/oracle/database/oradata/arch/ora10/ora10_1_200_708792271.arc
ORA-00280: change 26734855 for thread 1 is in sequence #200


Specify log: {=suggested | filename | AUTO | CANCEL}
cancel
Media recovery cancelled.
SQL> alter database commit to switchover to primary;
alter database commit to switchover to primary
*
ERROR at line 1:
ORA-16139: media recovery required


SQL>  alter database activate standby database;

Database altered.
看出来没? 数据只恢复到备份的归档时刻



再说不丢数据的:
sqlplus / as sysdba
recover standby database;
(eg:
SQL> recover standby database;
ORA-00279: change 26734855 generated at 02/09/2010 22:00:05 needed for thread 1
ORA-00289: suggestion :
/home/oracle/database/oradata/arch/ora10/ora10_1_200_708792271.arc
ORA-00280: change 26734855 for thread 1 is in sequence #200
Specify log: {=suggested | filename | AUTO | CANCEL}
此时 提示说需要sequence 为200的 归档日志, 因此要到源数据库上将提示名的archive log 传到恢复数据库,然后告诉恢复进程archive log的位置
Specify log: {=suggested | filename | AUTO | CANCEL}
/home/oracle/database/oradata/arch/ora10/ora10_1_200_708792271.arc      #这里就是传输过来的 archive log
ORA-00279: change 26764512 generated at 02/10/2010 10:28:10 needed for thread 1
ORA-00289: suggestion :
/home/oracle/database/oradata/arch/ora10/ora10_1_201_708792271.arc
ORA-00280: change 26764512 for thread 1 is in sequence #201
ORA-00278: log file                                
'/home/oracle/database/oradata/arch/ora10/ora10_1_200_708792271.arc' no longer
needed for this recovery
Specify log: {=suggested | filename | AUTO | CANCEL}
现在不需要archive log了,但需要redo log来恢复, 把相应的redo log也传过来告诉库(说相应的redo log是因为不是每个redo log都是 #201序号的,这个 这个 就各人有各招的找吧, 我是很笨笨的到源库里去查的,高手有更好的方法找redo log序号的方式还请麻烦留言通告下,这里不胜感激)
Specify log: {=suggested | filename | AUTO | CANCEL}
/home/oracle/redo02.log                           
ORA-00339: archived log does not contain any redo
ORA-00334: archived log: '/home/oracle/redo02.log'
SQL>
到这里 出现分水岭了.也就是前面不丢数据的两种情况,一种是很温柔的以'alter database commit to switchover to primary;'命令打开,另一种是以'alter database activate standby database; '小小的暴力点的直接激活standby数据库


先说不丢数据的2.2的情况
SQL> alter database commit to switchover to primary;
alter database commit to switchover to primary
*
ERROR at line 1:
ORA-16139: media recovery required
当archive log,redo log都应用完时,切换standby到主库说是需要介质恢复,所以要告诉数据库介质恢复已经完了,可以打开了.
SQL> recover managed standby database finish;       #
ORA-00283: recovery session canceled due to errors
ORA-00313: open failed for members of log group 4 of thread 1
ORA-00312: online log 4 thread 1:
'/oracle/data/oradata/ora10/redo04standby.log'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3                         
报错,说明数据库知道介质恢复还没完. 看提示说少redo04standby.log文件.到源数据库将redo04standby.log这个文件copy过来,要注意,还要 copy到跟提示一样的目录下才行.
SQL> recover managed standby database finish;
redo04standby.log文件copy过来了,执行finish后没出问题.
SQL> alter database commit to switchover to primary;   
Database altered.
OK,可以很温柔的打开数据库了


不丢数据的 2.1 的情况
SQL> recover managed standby database finish;
ORA-00283: recovery session canceled due to errors
ORA-00314: log 4 of thread 1, expected sequence# 200 doesn't match 0
ORA-00312: online log 4 thread 1:
'/oracle/data/oradata/ora10/redo04standby.log'


SQL> alter database commit to switchover to primary;
alter database commit to switchover to primary
*
ERROR at line 1:
ORA-16139: media recovery required


SQL> alter database activate standby database;

Database altered.

说白了,温柔的方式就是出错就改,直到改到没错为止.小小的暴力的方式是出点小错不去管.大局搞定就行 :)




参考文档:

How to restore and recover a database from an RMAN backup. [ID 881395.1]


How To Restore Rman Backups On A Different Node When The Directory Structures Are Different [ID 419137.1]

后注: (有点乱,乱的现在看 我都不知道写的是什么,不过还是放上来吧)
做standby的全库备份恢复 不是那么容易  呵呵   前面的 archivelog    redolog   standbylog  能copy就copy过来呀  想要做不丢数据的恢复不是那么容易的  看看我下面的需要的文件,这个汗呀
[oracle@node100 ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Wed Feb 10 15:20:36 2010

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> recover standby database;
ORA-00279: change 26734855 generated at 02/09/2010 22:00:05 needed for thread 1
ORA-00289: suggestion :
/home/oracle/database/oradata/arch/ora10/ora10_1_200_708792271.arc
ORA-00280: change 26734855 for thread 1 is in sequence #200


Specify log: {=suggested | filename | AUTO | CANCEL}
/home/oracle/database/oradata/arch/ora10/ora10_1_200_708792271.arc
ORA-00279: change 26764512 generated at 02/10/2010 10:28:10 needed for thread 1
ORA-00289: suggestion :
/home/oracle/database/oradata/arch/ora10/ora10_1_201_708792271.arc
ORA-00280: change 26764512 for thread 1 is in sequence #201
ORA-00278: log file
'/home/oracle/database/oradata/arch/ora10/ora10_1_200_708792271.arc' no longer
needed for this recovery


Specify log: {=suggested | filename | AUTO | CANCEL}
/home/oracle/redo02.log
ORA-00339: archived log does not contain any redo
ORA-00334: archived log: '/home/oracle/redo02.log'


SQL> alter database open read only;

Database altered.

SQL> alter database commit to switchover to primary;
alter database commit to switchover to primary
*
ERROR at line 1:
ORA-16139: media recovery required


SQL> recover managed standby database finish;
ORA-00283: recovery session canceled due to errors
ORA-00313: open failed for members of log group 4 of thread 1
ORA-00312: online log 4 thread 1:
'/oracle/data/oradata/ora10/redo04standby.log'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3


SQL> recover managed standby database finish;
ORA-00283: recovery session canceled due to errors
ORA-00313: open failed for members of log group 4 of thread 1
ORA-00312: online log 4 thread 1:
'/oracle/data/oradata/ora10/redo04standby.log'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3


SQL> !
[oracle@node100 ~]$ mv /home/oracle/database/oradata/
arch/                flash_recovery_area/ ora10/               
[oracle@node100 ~]$ mv /home/oracle/database/oradata/ora10/redo04standby.log /oracle/data/orada
[oracle@node100 ~]$ mkdir /oracle/data/oradata/ora10
[oracle@node100 ~]$
[oracle@node100 ~]$
[oracle@node100 ~]$ mkdir -p /oracle/data/oradata/ora10
mkdir: 无法创建目录 “/oracle/data/oradata”: 权限不够
[oracle@node100 ~]$ su -
口令:
su: 密码不正确
[oracle@node100 ~]$ su -
口令:
[root@node100 ~]# chown -R oracle:oinstall /oracle/
[root@node100 ~]# exit
logout

[oracle@node100 ~]$ mkdir -p /oracle/data/oradata/ora10/
[oracle@node100 ~]$ mv /home/oracle/database/oradata/ora10/redo04standby.log  /oracle/data/oradata/ora10/
[oracle@node100 ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Wed Feb 10 15:38:47 2010

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> recover managed standby database finish;

Media recovery complete.
SQL> SQL> alter database commit to switchover to primary;


Database altered.

SQL> SQL> shutdown immediate


ORA-01013: user requested cancel of current operation

SQL>
SQL> shutdown abort
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 1577058304 bytes
Fixed Size            1267716 bytes
Variable Size          318769148 bytes
Database Buffers     1241513984 bytes
Redo Buffers           15507456 bytes
Database mounted.
Database opened.
SQL>



又做了一遍的过程
RMAN> exit


Recovery Manager complete.
[oracle@node100 ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Wed Feb 10 16:19:45 2010

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> alter database commit to switchover to primary;
alter database commit to switchover to primary
*
ERROR at line 1:
ORA-16139: media recovery required


SQL> alter database activate standby database;
alter database activate standby database
*
ERROR at line 1:
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: '/home/oracle/database/oradata/ora10/system01.dbf'


SQL> alter database commit to switchover to primary;
alter database commit to switchover to primary
*
ERROR at line 1:
ORA-16139: media recovery required


SQL> !
l[oracle@node100 ~]$ ls
10201_database_linux32.iso           backup                    db_ORA10_20100207_113_1_710301615  redo02.log
arch_ORA10_20100207_111_1_710301602  ctl_ORA10_20100207_115_1  Desktop                            spool_datafile#.txt
arch_ORA10_20100207_112_1_710301611  database                  p6810189_10204_Linux-x86.iso
[oracle@node100 ~]$ cd /oracle/data/
backup/  oradata/
[oracle@node100 ~]$ cd /oracle/data/oradata/ora10/
redo01.log         redo02.log         redo03.log         redo04standby.log  temp01.dbf         
[oracle@node100 ~]$ mv /oracle/data/oradata/ora10 /oracle/data/oradata/ora10.backup
[oracle@node100 ~]$ exit
exit

SQL> recover managed standby database finish;
ORA-00283: recovery session canceled due to errors
ORA-00313: open failed for members of log group 4 of thread 1
ORA-00312: online log 4 thread 1:
'/oracle/data/oradata/ora10/redo04standby.log'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3


SQL> !
[oracle@node100 ~]$ mv /oracle/data/oradata/ora10.backup/ /oracle/data/oradata/ora10
[oracle@node100 ~]$ exit
exit

SQL>  recover managed standby database finish;
ORA-00283: recovery session canceled due to errors
ORA-00314: log 4 of thread 1, expected sequence# 200 doesn't match 0
ORA-00312: online log 4 thread 1:
'/oracle/data/oradata/ora10/redo04standby.log'


SQL> select sequence# from v$database;
select sequence# from v$database
       *
ERROR at line 1:
ORA-00904: "SEQUENCE#": invalid identifier


SQL> select sequence# from v$archived_log;

 SEQUENCE#
----------
     2
       135
       136
       137
       138
       139
       140
       141
       142
       143
       144

 SEQUENCE#
----------
       145
       146
       147
       148
       149
       150
       151
       152
       153
       154
       155

 SEQUENCE#
----------
       156
       157
       158
       159
       160
       162
       161
       163
       166
       167
       164

 SEQUENCE#
----------
       165
       168
       169
       170
       171
       172
       173
       174
       175
       176
       177

 SEQUENCE#
----------
       178
       179
       180
       181
       182
       183
       184
       185
       186
       187
       188

 SEQUENCE#
----------
       189
       190
       191
       192
       193
       194
       195
       196
       197
       198
       199

66 rows selected.

SQL> recover standby database;
ORA-00279: change 26734855 generated at 02/09/2010 22:00:05 needed for thread 1
ORA-00289: suggestion :
/home/oracle/database/oradata/arch/ora10/ora10_1_200_708792271.arc
ORA-00280: change 26734855 for thread 1 is in sequence #200


Specify log: {=suggested | filename | AUTO | CANCEL}
/home/oracle/redo02.log
ORA-00339: archived log does not contain any redo
ORA-00334: archived log: '/home/oracle/redo02.log'


SQL> recover managed standby database finish;
ORA-00283: recovery session canceled due to errors
ORA-00314: log 4 of thread 1, expected sequence# 200 doesn't match 0
ORA-00312: online log 4 thread 1:
'/oracle/data/oradata/ora10/redo04standby.log'

----------------------
SQL> recover standby database;
ERROR:
ORA-03114: not connected to ORACLE


SQL> conn / as sysdba
Connected.
SQL> recover standby database;
ORA-00279: change 26734855 generated at 02/09/2010 22:00:05 needed for thread 1
ORA-00289: suggestion :
/home/oracle/database/oradata/arch/ora10/ora10_1_200_708792271.arc
ORA-00280: change 26734855 for thread 1 is in sequence #200


Specify log: {=suggested | filename | AUTO | CANCEL}
/home/oracle/ora10_1_200_708792271.arc
ORA-00279: change 26764512 generated at 02/10/2010 10:28:10 needed for thread 1
ORA-00289: suggestion :
/home/oracle/database/oradata/arch/ora10/ora10_1_201_708792271.arc
ORA-00280: change 26764512 for thread 1 is in sequence #201
ORA-00278: log file '/home/oracle/ora10_1_200_708792271.arc' no longer needed
for this recovery


Specify log: {=suggested | filename | AUTO | CANCEL}
/home/oracle/redo02.log
ORA-00339: archived log does not contain any redo
ORA-00334: archived log: '/home/oracle/redo02.log'


SQL> recover managed standby database finish;
ORA-00283: recovery session canceled due to errors
ORA-00314: log 4 of thread 1, expected sequence# 200 doesn't match 0
ORA-00312: online log 4 thread 1:
'/oracle/data/oradata/ora10/redo04standby.log'


SQL> ~!
SP2-0042: unknown command "~!" - rest of line ignored.
SQL> !~
/bin/bash: /home/oracle: is a directory

SQL> !
[oracle@node100 ~]$ exit
exit

SQL> alter database commit to switchover to primary;
alter database commit to switchover to primary
*
ERROR at line 1:
ORA-16139: media recovery required


SQL> alter database activate standby database;

Database altered.

SQL> shutdown immediate
ORA-01109: database not open


Database dismounted.
ORACLE instance shut down.
SQL>


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11780477/viewspace-631564/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/11780477/viewspace-631564/

相关文章:

  • sqlServer2005向oracle导表,表名未显示双引号
  • 通过tg4msql 查询无反应
  • 10g日志挖掘logmnr
  • dbca建库按百分比分内存最大10G疑问
  • oracle 10g 索引监控
  • ASM kfed工具的部分说明
  • sqlplus uptime过久事件
  • RMAN-06207 rman恢复数据库后备份delete出错
  • RMAN异库恢复之EM(1)
  • RMAN异库恢复之EM(2)遭遇 2010/12/31 root认证过期 bug
  • 丢失redo log的恢复
  • RMAN异库恢复之EM(3)
  • LOCK_SGA=TRUE causes an ORA-27126 during database startup on AIX
  • exp/imp parfile 用到的参数
  • 日志挖掘
  • 「译」Node.js Streams 基础
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 2018一半小结一波
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • JavaScript中的对象个人分享
  • JS题目及答案整理
  • mockjs让前端开发独立于后端
  • ReactNativeweexDeviceOne对比
  • redis学习笔记(三):列表、集合、有序集合
  • SpiderData 2019年2月16日 DApp数据排行榜
  • 阿里云购买磁盘后挂载
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 走向全栈之MongoDB的使用
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • $GOPATH/go.mod exists but should not goland
  • (1)Nginx简介和安装教程
  • (1)STL算法之遍历容器
  • (13):Silverlight 2 数据与通信之WebRequest
  • (pytorch进阶之路)扩散概率模型
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (五)关系数据库标准语言SQL
  • (一)Dubbo快速入门、介绍、使用
  • (转)母版页和相对路径
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .NET BackgroundWorker
  • .NET Framework杂记
  • .NET成年了,然后呢?
  • .NET的数据绑定
  • .NET和.COM和.CN域名区别
  • .NET学习全景图
  • .NET中两种OCR方式对比
  • /etc/fstab和/etc/mtab的区别
  • [.net 面向对象程序设计进阶] (19) 异步(Asynchronous) 使用异步创建快速响应和可伸缩性的应用程序...
  • [2021 蓝帽杯] One Pointer PHP
  • [AndroidStudio]_[初级]_[修改虚拟设备镜像文件的存放位置]