oracle 12.2.0.1 搭建 active dataguard

os: centos 7.4
database:12.2.0.1 + dbf

本次是以 oracle database 12.2.0.1 + dbf 的形式部署的,后面会记录 rac + asm 的形式。

任何时候都要说下三种模式:

最大保护:maximize protection
最高性能:maximize performance
最高可用:maximize availability

alter database set standby to maximize protection;
alter database set standby to maximize performance;
atler database set standby to maximize availability;

oradb-node1 192.168.56.101 master

adb-node1 192.168.56.101 master
安装好了12.2.0.1 的软件,并创建了数据库
dataguard 所有节点的 db_name 是相同的,通过db_unique_name来区分彼此。

主库name相关

db_name:            orcl
db_unique_name:     orclp
net service name:   tns_orclp

修改 db_unique_name

SQL> alter system set db_unique_name='orclp' scope=spfile;System altered.

修改 net service name

$ vi listener.ora 
SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = orcl)(ORACLE_HOME = /u01/app/oracle/product/12.2.0/db_1)(SID_NAME = rac01)))
$ vi tnsnames.ora
tns_orclp =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = oradb-node1)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))tns_orcls1 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = oradb-node2)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))  

主库启用 force logging

SQL> alter database force logging;Database altered.

主库启用 archivelog

SQL> archive log list;
Database log mode          No Archive Mode
Automatic archival         Disabled
Archive destination        /u01/app/oracle/product/12.2.0/db_1/dbs/arch
Oldest online log sequence     1
Current log sequence           2SQL> alter system set log_archive_dest_1='location=/u01/app/oracle/archivelog' scope=spfile;
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;

执行 open pdb,确保处于 read write

SQL> show pdbs;CON_ID CON_NAME           OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------2 PDB$SEED              READ ONLY  NO3 RAC01PDB           MOUNTED
SQL> alter pluggable database RAC01PDB open;Pluggable database altered.SQL> show pdbs;CON_ID CON_NAME           OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------2 PDB$SEED              READ ONLY  NO3 RAC01PDB           READ WRITE NO

主库创建 standby redo logfile

SQL> select * from v$log;GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME      NEXT_CHANGE# NEXT_TIME           CON_ID
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ------------------- ------------ ------------------- ----------1      1          4  209715200    512      1 NO  CURRENT            1572343 2018-07-07 14:47:20   1.8447E+19                  02      1          2  209715200    512      1 YES INACTIVE           1429048 2018-07-07 11:45:32      1472300 2018-07-07 14:44:53      03      1          3  209715200    512      1 YES INACTIVE           1472300 2018-07-07 14:44:53      1572343 2018-07-07 14:47:20      0SQL> col MEMBER format a40;
SQL> select * from v$logfile;GROUP# STATUS  TYPE    MEMBER                                   IS_ CON_ID
---------- ------- ------- ---------------------------------------- --- ----------3     ONLINE  /u01/app/oracle/oradata/orcl/redo03.log          NO       02     ONLINE  /u01/app/oracle/oradata/orcl/redo02.log          NO       01     ONLINE  /u01/app/oracle/oradata/orcl/redo01.log          NO       0

最少添加n+1个standby redo logfile,完全可以比n+1多,如下面

alter database add standby logfile '/u01/app/oracle/oradata/standby_redo01.log' size 200M;
alter database add standby logfile '/u01/app/oracle/oradata/standby_redo02.log' size 200M;
alter database add standby logfile '/u01/app/oracle/oradata/standby_redo03.log' size 200M;
alter database add standby logfile '/u01/app/oracle/oradata/standby_redo04.log' size 200M;
alter database add standby logfile '/u01/app/oracle/oradata/standby_redo05.log' size 200M;

主库创建 pfile,并修改

*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='12.2.0'
*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/oradata/orcl/control02.ctl'
*.db_block_size=8192
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=rac01XDB)'
*.enable_pluggable_database=true
*.local_listener='LISTENER_RAC01'
*.log_archive_dest_1='location=/u01/app/oracle/archivelog'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=597m
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=1788m
*.undo_tablespace='UNDOTBS1'*.db_name='orcl'
*.db_unique_name='orclp'
*.log_archive_config='dg_config=(orclp,orcls1)'
*.log_archive_dest_1='location=/u01/app/oracle/archivelog valid_for=(all_logfiles,all_roles) db_unique_name=orclp'
*.log_archive_dest_2='service=tns_orcls1 valid_for=(online_logfiles,primary_role) lgwr affirm sync db_unique_name=orcls1'
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
*.log_archive_format='%t_%s_%r.dbf'
*.standby_file_management='auto'
*.fal_server='orcls1'
*.fal_client='orclp'
*.db_file_name_convert='/u01/app/oracle/','/u01/app/oracle/'
*.log_file_name_convert='/u01/app/oracle/','/u01/app/oracle/'
*.remote_login_passwordfile='EXCLUSIVE'

oradb-node2 192.168.56.102 physical standby

安装好了12.2.0.1 的软件,不创建数据库,用duplicate命令从master拉过来

备库name相关

db_name:            orcl
db_unique_name:     orcls1
net service name:   tns_orcls1

修改 net service name

$ vi listener.ora 
SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = orcl)(ORACLE_HOME = /u01/app/oracle/product/12.2.0/db_1)(SID_NAME = rac01)))
$ vi tnsnames.ora
tns_orclp =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = oradb-node1)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))tns_orcls1 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = oradb-node2)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))  

上面的 listener.ora、tnsnames.ora 需要和master 保持一致。

备库目录相关

参考主库创建必要的目录

mkdir -p $ORACLE_BASE/admin/orcl/adump
mkdir -p $ORACLE_BASE/archivelog
mkdir -p $ORACLE_BASE/audit
mkdir -p $ORACLE_BASE/oradata/orcl
mkdir -p $ORACLE_BASE/oradata/pdbseed
mkdir -p $ORACLE_BASE/oradata/rac01pdb

备库拷贝master 的password file

$scp ./orapwrac01 oracle@192.168.56.102:/u01/app/oracle/product/12.2.0/db_1/dbs

备库spfile内容如下

*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='12.2.0'
*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/oradata/orcl/control02.ctl'
*.db_block_size=8192
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=rac01XDB)'
*.enable_pluggable_database=true
*.local_listener='LISTENER_RAC01'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=597m
*.processes=300
*.sga_target=1788m
*.undo_tablespace='UNDOTBS1'*.db_name='orcl'
*.db_unique_name='orcls1'
*.log_archive_config='dg_config=(orclp,orcls1)'
*.log_archive_dest_1='location=/u01/app/oracle/archivelog valid_for=(all_logfiles,all_roles) db_unique_name=orcls1'
*.log_archive_dest_2='service=tns_orclp valid_for=(online_logfiles,primary_role) lgwr affirm sync db_unique_name=orclp'
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
*.log_archive_format='%t_%s_%r.dbf'
*.standby_file_management='auto'
*.fal_server='orclp'
*.fal_client='orcls1'
*.db_file_name_convert='/u01/app/oracle/','/u01/app/oracle/'
*.log_file_name_convert='/u01/app/oracle/','/u01/app/oracle/'
*.remote_login_passwordfile='EXCLUSIVE'

备库启动到nomount状态

SQL> startup nomount;
ORACLE instance started.Total System Global Area 1879048192 bytes
Fixed Size          8794072 bytes
Variable Size         553648168 bytes
Database Buffers     1308622848 bytes
Redo Buffers            7983104 bytes

备库开始active duplicate

$ rman target sys/oracleoracle@tns_orclp  auxiliary sys/oracleoracle@tns_orcls1RMAN> duplicate target database for standby from active database nofilenamecheck dorecover;

备库打开

SQL> select open_mode from v$database;OPEN_MODE
------------------------------------------------------------
MOUNTEDSQL> alter database open;Database altered.SQL> select open_mode,log_mode,open_mode ,database_role from v$database;OPEN_MODE        LOG_MODE     OPEN_MODE        DATABASE_ROLE
-------------------- ------------ -------------------- ----------------
READ ONLY        ARCHIVELOG   READ ONLY        PHYSICAL STANDBY

此时查看pdb

SQL> show pdbs;CON_ID CON_NAME           OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------2 PDB$SEED              READ ONLY  NO3 RAC01PDB           MOUNTED
SQL> alter pluggable database RAC01PDB open;Pluggable database altered.SQL> show pdbs;CON_ID CON_NAME           OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------2 PDB$SEED              READ ONLY  NO3 RAC01PDB           READ ONLY  NO

备库开始real-time apply

SQL> alter database recover managed standby database using current logfile disconnect from session;

验证

备库查看日志

$ tail -f -n 1000 /u01/app/oracle/diag/rdbms/orcls1/rac01/trace/alert_rac01.log

主库查看

selectdbms_flashback.get_system_change_number() as master_current_scn,ad.APPLIED_SCN,ad.*
from v$archive_dest ad
where 1=1
;select *
from v$archive_dest_status
;select *
from v$archive_gap
;select *
from v$archive_processes
;

整体来说和11g手动搭建dataguard基本类似,需要注意的是记得操作pdb

参考:
https://docs.oracle.com/en/database/oracle/oracle-database/12.2/high-availability.html

下面是 duplicate 时输出,自己分析,博友可以忽略

$rman target sys/oracleoracle@tns_orclp  auxiliary sys/oracleoracle@tns_orcls1Recovery Manager: Release 12.2.0.1.0 - Production on Sat Jul 7 17:21:13 2018Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.connected to target database: ORCL (DBID=1508635741)
connected to auxiliary database: ORCL (not mounted)RMAN> duplicate target database for standby from active database nofilenamecheck dorecover;Starting Duplicate Db at 2018-07-07 17:21:30
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=36 device type=DISK
current log archivedcontents of Memory Script:
{backup as copy reusetargetfile  '/u01/app/oracle/product/12.2.0/db_1/dbs/orapwrac01' auxiliary format '/u01/app/oracle/product/12.2.0/db_1/dbs/orapwrac01'   ;
}
executing Memory ScriptStarting backup at 2018-07-07 17:21:31
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=69 device type=DISK
Finished backup at 2018-07-07 17:21:32contents of Memory Script:
{restore clone from service  'tns_orclp' standby controlfile;
}
executing Memory ScriptStarting restore at 2018-07-07 17:21:32
using channel ORA_AUX_DISK_1channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service tns_orclp
channel ORA_AUX_DISK_1: restoring control file
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/u01/app/oracle/oradata/orcl/control01.ctl
output file name=/u01/app/oracle/oradata/orcl/control02.ctl
Finished restore at 2018-07-07 17:21:34contents of Memory Script:
{sql clone 'alter database mount standby database';
}
executing Memory Scriptsql statement: alter database mount standby databasecontents of Memory Script:
{set newname for tempfile  1 to "/u01/app/oracle/oradata/orcl/temp01.dbf";set newname for tempfile  2 to "/u01/app/oracle/oradata/orcl/pdbseed/temp012018-07-07_11-44-06-982-AM.dbf";set newname for tempfile  3 to "/u01/app/oracle/oradata/orcl/rac01pdb/temp01.dbf";switch clone tempfile all;set newname for datafile  1 to "/u01/app/oracle/oradata/orcl/system01.dbf";set newname for datafile  3 to "/u01/app/oracle/oradata/orcl/sysaux01.dbf";set newname for datafile  4 to "/u01/app/oracle/oradata/orcl/undotbs01.dbf";set newname for datafile  5 to "/u01/app/oracle/oradata/orcl/pdbseed/system01.dbf";set newname for datafile  6 to "/u01/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf";set newname for datafile  7 to "/u01/app/oracle/oradata/orcl/users01.dbf";set newname for datafile  8 to "/u01/app/oracle/oradata/orcl/pdbseed/undotbs01.dbf";set newname for datafile  9 to "/u01/app/oracle/oradata/orcl/rac01pdb/system01.dbf";set newname for datafile  10 to "/u01/app/oracle/oradata/orcl/rac01pdb/sysaux01.dbf";set newname for datafile  11 to "/u01/app/oracle/oradata/orcl/rac01pdb/undotbs01.dbf";set newname for datafile  12 to "/u01/app/oracle/oradata/orcl/rac01pdb/users01.dbf";restorefrom  nonsparse   from service 'tns_orclp'   clone database;sql 'alter system archive log current';
}
executing Memory Scriptexecuting command: SET NEWNAMEexecuting command: SET NEWNAMEexecuting command: SET NEWNAMErenamed tempfile 1 to /u01/app/oracle/oradata/orcl/temp01.dbf in control file
renamed tempfile 2 to /u01/app/oracle/oradata/orcl/pdbseed/temp012018-07-07_11-44-06-982-AM.dbf in control file
renamed tempfile 3 to /u01/app/oracle/oradata/orcl/rac01pdb/temp01.dbf in control fileexecuting command: SET NEWNAMEexecuting command: SET NEWNAMEexecuting command: SET NEWNAMEexecuting command: SET NEWNAMEexecuting command: SET NEWNAMEexecuting command: SET NEWNAMEexecuting command: SET NEWNAMEexecuting command: SET NEWNAMEexecuting command: SET NEWNAMEexecuting command: SET NEWNAMEexecuting command: SET NEWNAMEStarting restore at 2018-07-07 17:21:39
using channel ORA_AUX_DISK_1channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service tns_orclp
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00001 to /u01/app/oracle/oradata/orcl/system01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:15
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service tns_orclp
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00003 to /u01/app/oracle/oradata/orcl/sysaux01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:07
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service tns_orclp
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00004 to /u01/app/oracle/oradata/orcl/undotbs01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:02
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service tns_orclp
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00005 to /u01/app/oracle/oradata/orcl/pdbseed/system01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service tns_orclp
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00006 to /u01/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:07
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service tns_orclp
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00007 to /u01/app/oracle/oradata/orcl/users01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service tns_orclp
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00008 to /u01/app/oracle/oradata/orcl/pdbseed/undotbs01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service tns_orclp
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00009 to /u01/app/oracle/oradata/orcl/rac01pdb/system01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service tns_orclp
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00010 to /u01/app/oracle/oradata/orcl/rac01pdb/sysaux01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:07
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service tns_orclp
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00011 to /u01/app/oracle/oradata/orcl/rac01pdb/undotbs01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service tns_orclp
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00012 to /u01/app/oracle/oradata/orcl/rac01pdb/users01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 2018-07-07 17:22:29sql statement: alter system archive log current
current log archivedcontents of Memory Script:
{restore clone force from service  'tns_orclp' archivelog from scn  1585893;switch clone datafile all;
}
executing Memory ScriptStarting restore at 2018-07-07 17:22:30
using channel ORA_AUX_DISK_1channel ORA_AUX_DISK_1: starting archived log restore to default destination
channel ORA_AUX_DISK_1: using network backup set from service tns_orclp
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=6
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
channel ORA_AUX_DISK_1: starting archived log restore to default destination
channel ORA_AUX_DISK_1: using network backup set from service tns_orclp
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=7
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 2018-07-07 17:22:32datafile 1 switched to datafile copy
input datafile copy RECID=4 STAMP=980875352 file name=/u01/app/oracle/oradata/orcl/system01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=5 STAMP=980875352 file name=/u01/app/oracle/oradata/orcl/sysaux01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=6 STAMP=980875352 file name=/u01/app/oracle/oradata/orcl/undotbs01.dbf
datafile 5 switched to datafile copy
input datafile copy RECID=7 STAMP=980875352 file name=/u01/app/oracle/oradata/orcl/pdbseed/system01.dbf
datafile 6 switched to datafile copy
input datafile copy RECID=8 STAMP=980875352 file name=/u01/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf
datafile 7 switched to datafile copy
input datafile copy RECID=9 STAMP=980875352 file name=/u01/app/oracle/oradata/orcl/users01.dbf
datafile 8 switched to datafile copy
input datafile copy RECID=10 STAMP=980875352 file name=/u01/app/oracle/oradata/orcl/pdbseed/undotbs01.dbf
datafile 9 switched to datafile copy
input datafile copy RECID=11 STAMP=980875352 file name=/u01/app/oracle/oradata/orcl/rac01pdb/system01.dbf
datafile 10 switched to datafile copy
input datafile copy RECID=12 STAMP=980875352 file name=/u01/app/oracle/oradata/orcl/rac01pdb/sysaux01.dbf
datafile 11 switched to datafile copy
input datafile copy RECID=13 STAMP=980875353 file name=/u01/app/oracle/oradata/orcl/rac01pdb/undotbs01.dbf
datafile 12 switched to datafile copy
input datafile copy RECID=14 STAMP=980875353 file name=/u01/app/oracle/oradata/orcl/rac01pdb/users01.dbfcontents of Memory Script:
{set until scn  1586097;recoverstandbyclone databasedelete archivelog;
}
executing Memory Scriptexecuting command: SET until clauseStarting recover at 2018-07-07 17:22:33
using channel ORA_AUX_DISK_1starting media recoveryarchived log for thread 1 with sequence 6 is already on disk as file /u01/app/oracle/archivelog/1_6_980855007.dbf
archived log for thread 1 with sequence 7 is already on disk as file /u01/app/oracle/archivelog/1_7_980855007.dbf
archived log file name=/u01/app/oracle/archivelog/1_6_980855007.dbf thread=1 sequence=6
archived log file name=/u01/app/oracle/archivelog/1_7_980855007.dbf thread=1 sequence=7
media recovery complete, elapsed time: 00:00:00
Finished recover at 2018-07-07 17:22:34
Finished Duplicate Db at 2018-07-07 17:22:43

转载于:https://www.cnblogs.com/ctypyb2002/p/9792947.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/465563.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

运行地址与加载地址估计大部分人没弄明白~

本文为【单片机步入嵌入式Linux】系列文章的第二篇,主要是跟大家讲解一下链接过程中几个地址的区分与理解~1 单片机存储分配在玩单片机(以stm32为例)的时候会有RAM空间和ROM空间,RAM空间主要是用于数据的访问,而ROM空间用于存放烧录的固件&am…

foxpro:将表写入excel

oleApp CREATEOBJECT("Excel.Application")oleapp.workbooks.addoleapp.visible.t.SELECT ls*写入表的标题oleapp.cells(1,10).value"这是我的表"*oleapp.cells(1,10).font.fontname"黑体"oleapp.cells(1,10).font.size24nfieldcountAFIELDS(al…

adb打开网页_android 使用指定浏览器打开网页

梳理下流程:枚举对应浏览器包名到数组中数组循环根据包名找到对应的LaunchIntent通过LaunchIntent找到对应的LaunchActivity的包名Intent通过设置activity的包名类名/*** 工具类*/public class CheckApkExist {private static String ucPkgName "com.uc.brows…

博客目录列表(C与Linux部分)

一、C语言 1、C语言——关键字 2、C语言——位操作 3、C语言——数组、函数、指针 4、C语言——结构体 5、C语言——预编译 6、C语言——宏定义 7、C语言——字符串函数 8、C语言——可变参数 9、C语言——回调函数 10、数据结构——链表 11、数据结构——堆栈 12、数据结构——…

python-greenlet模块(协程)

12345678910111213141516from greenlet import greenletdef test1():print(12)gr2.switch()print(34)gr2.switch()def test2():print(56)gr1.switch()print(78)gr1 greenlet(test1)#启动一个协程gr2 greenlet(test2)#启动一个协程gr1.switch()#switch是协程切换高并发&#x…

我妈在深圳的这些日子

今天送了我丈母娘回家,平时在家里,我会叫妈。下面文章中写到的我爸、我妈、指的是我老丈人和丈母娘。上个周末,我跟我妈说,谢谢你过来帮忙我们照顾楠哥,辛苦你了。我说了两遍,可能她听的不是很清楚&#xf…

2010-04-25 搞定aftr

今天终于完全地把aftr给搞定了。 刚开始的时候,建了三台机器,甲,乙,丙,甲和乙通过ipv6相连,甲的ipv6地址为2001:0:0:1::2/64,乙的ipv6地址为2001:0:0:1::1/64,乙和丙通过ipv4相连&am…

linux下解包bin二进制文件_linux下如何使用docker二进制文件安装_docker离线安装

1,下载二进制文件https://download.docker.com/linux/static/stable/x86_64/docker-18.03.1-ce.tgz2,解压二进制文件tar xzvf docker-18.03.1-ce.tgz3,复制二进制文件到/usr/bin目录下cp docker/* /usr/bin/4,检查是否安装docker versionClient:Version: 18.03.1-ceAPI ve…

【腾讯面试题】兔子试毒

大家好,我是牛牛,经过了忙碌的一周,终于盼来了周五。今天给大家分享一道有趣有料的算法题,希望能让大家开启周末的好心情。01故事起源有1000瓶药水,其中有一瓶是毒药,只要喝上一滴,一天之后就必…

git clone 指定分支的内容

使用Git下载指定分支命令为:git clone -b 分支名仓库地址 使用Git下载v.2.8.1分支代码,使用命令:git clone -b v2.8.1 https://git.oschina.net/oschina/android-app.git转载于:https://www.cnblogs.com/pansidong/p/9284967.html

大型网站架构

一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单,随着互联网业务的不断丰富&#…

分享一个剪切板的小软件CopyQ

我是最近在工作的时候经常需要复制一些命令,而且这些命令如果用手敲的话会超级麻烦,所以体验了几个剪切板的小软件,这个是我体验之后觉得最不错的一个,分享给大家。软件链接地址https://github.com/hluk/CopyQ/releases软件图标我…

python2编码问题解决了吗_Python2编码问题

以下内容说的都是 python 2.x 版本简介基本概念Python “帮”你做的事情推荐姿势1、基本概念我们看到的输入输出都是‘字符’(characters),计算机(程序)并不能直接处理,需要转化成字节数据(bytes),因为程序只能处理 bytes 数据。例如&#xf…

GridView自定义分页

有时候的只是需要一些简单的但却是自定义的分页功能,但是又舍不得objectdatasource的排序功能,那就只有把pageddatasoure和objectdatasour结合起来, 由于pageddatasource实现的是IEnumberable,直接把objectdatasource赋给它是不行…

当年年仅18岁韩寒舌战群儒,受尽冷嘲热讽!

https://weibo.com/3251967895/Gk4nNu9Fr转载于:https://www.cnblogs.com/bakblog/p/9287258.html

在朋友圈求助的NTP问题~

之前朋友圈求助的问题最后是我一个朋友尝试了一天的配置「这个配置尝试的过程需要技术基础,但是不管如何的技术基础都是需要去不断的尝试的」,终于找到了方法,所以~我给他们送了秋天的第一杯奶茶~「是他们是因为他们都是一群我很喜欢的同事」…

JRE和JDK 1.3、1.4、1.5(5.0)、6.0 各版本下载地址大全(J2SDK,JavaSE JavaEE)

本文转载(http://hi.baidu.com/y66901356/blog/item/7d32bf0abf7d7c3ab0351d39.html)本人绝对支持原创!!!Java SE Development Kit(JDK)和Java Runtime Envirnment(JRE)1.3、1.4、1.5(5.0)、6.0 各版本下载地址大全 (J…

聊聊身边的嵌入式,英语学习利器点读笔

家里有小孩的朋友,可能对下面的这款产品不陌生。点读笔,一个会发声的电子产品,我当时为了给孩子做英语启蒙,买了小达人点读笔(上图最下方那个,另外两个分别是宝玩英语和巧虎配套的点读笔),用了好几年了&…

gps84转换gcj02公式_百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换...

//定义一些常量var x_PI 3.14159265358979324 * 3000.0 / 180.0;var PI 3.1415926535897932384626;var a 6378245.0;var ee 0.00669342162296594323;/*** 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02)的转换* 即 百度 转 谷歌、高德* param bd_lon* param bd_lat* returns {…

javascript 15位和18位身份证的正则表达式及其验证

1、简单的正则表达式: (1)preg_match("/^(\d{18,18}|\d{15,15}|\d{17,17}x)$/",$id_card)(2)preg_match("/^(\d{6})(18|19|20)?(\d{2})([01]\d)([0123]\d)(\d{3}) (\d|X)?$/",$id_card)&#x…