oracle恢复指定数据文件,Oracle特殊恢复-BBED修改某个数据文件头

Oracle数据文件头中的scn要与控制文件中的scn一致,数据库才可以open,在open过程中我们可以通过bbed来修改某个数据文件头的scn,来欺骗oracle,来open库。

1、环境如下

使用Oracle 11gR2进行测试,具体版本为11.2.0.4

SYS@linuxidc SQL>select file#,name,checkpoint_change#,checkpoint_time from v$datafile;

FILE# NAME                                    CHECKPOINT_CHANGE# CHECKPOINT_TIME

---------- ---------------------------------------- ------------------ -------------------

1 /dbdata/oradata/linuxidc/system01.dbf                  1233066 2016-11-10 11:23:44

2 /dbdata/oradata/linuxidc/sysaux01.dbf                  1233066 2016-11-10 11:23:44

3 /dbdata/oradata/linuxidc/undotbs01.dbf                1233066 2016-11-10 11:23:44

4 /dbdata/oradata/linuxidc/users01.dbf                  1233066 2016-11-10 11:23:44

5 /dbdata/oradata/linuxidc/moe01.dbf                    1233066 2016-11-10 11:23:44

2、模拟某个数据文件在问题

shutdown immediate数据库,然后拷贝moe01.dbf这个数据文件,然后打开数据库,做日志切换,然后shutdown immediate,再把之前的拷贝替换现在的moe01.dbf数据文件

SYS@linuxidc SQL>shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

[oracle@tstdb-25-220 linuxidc]$ cp moe01.dbf moe01.dbf.bak

[oracle@tstdb-25-220 linuxidc]$ ll

总用量 3872076

-rw-r-----. 1 oracle oinstall    9748480 11月 10 09:48 control01.ctl

-rw-r-----. 1 oracle oinstall    9748480 11月 10 09:48 control02.ctl

-rw-r-----. 1 oracle oinstall 1073750016 11月 10 09:48 moe01.dbf

-rw-r-----. 1 oracle oinstall 1073750016 11月 10 11:23 moe01.dbf.bak

-rw-r-----. 1 oracle oinstall  52429312 11月  9 13:13 redo01.log

-rw-r-----. 1 oracle oinstall  52429312 11月  9 22:00 redo02.log

-rw-r-----. 1 oracle oinstall  52429312 11月 10 09:48 redo03.log

-rw-r-----. 1 oracle oinstall  587210752 11月 10 09:48 sysaux01.dbf

-rw-r-----. 1 oracle oinstall  807411712 11月 10 09:48 system01.dbf

-rw-r-----. 1 oracle oinstall  30416896 11月  9 22:00 temp01.dbf

-rw-r-----. 1 oracle oinstall  131080192 11月 10 09:48 undotbs01.dbf

-rw-r-----. 1 oracle oinstall  111419392 11月 10 09:48 users01.dbf

SYS@linuxidc SQL>startup

ORACLE instance started.

Total System Global Area 2455228416 bytes

Fixed Size                  2255712 bytes

Variable Size            620758176 bytes

Database Buffers        1811939328 bytes

Redo Buffers              20275200 bytes

Database mounted.

Database opened.

SYS@linuxidc SQL>alter system switch logfile;

System altered.

SYS@linuxidc SQL>alter system switch logfile;

System altered.

SYS@linuxidc SQL>alter system switch logfile;

System altered.

SYS@linuxidc SQL>shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

[oracle@tstdb-25-220 linuxidc]$ cp moe01.dbf moe01.dbf.bak.f

[oracle@tstdb-25-220 linuxidc]$ cp moe01.dbf.bak moe01.dbf

启动数据库报错

SYS@linuxidc SQL>startup

ORACLE instance started.

Total System Global Area 2455228416 bytes

Fixed Size                  2255712 bytes

Variable Size            620758176 bytes

Database Buffers        1811939328 bytes

Redo Buffers              20275200 bytes

Database mounted.

ORA-01113: file 5 needs media recovery

ORA-01110: data file 5: '/dbdata/oradata/linuxidc/moe01.dbf'

SYS@linuxidc SQL>recover datafile 5;

ORA-00279: change 1233063 generated at 11/10/2016 09:48:02 needed for thread 1

ORA-00289: suggestion : /apps/oracle/11.2.0/db_1/dbs/arch1_24_925478204.dbf

ORA-00280: change 1233063 for thread 1 is in sequence #24

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

auto

ORA-00308: cannot open archived log '/apps/oracle/11.2.0/db_1/dbs/arch1_24_925478204.dbf'

ORA-27037: unable to obtain file status

Linux-x86_64 Error: 2: No such file or directory

Additional information: 3

ORA-00308: cannot open archived log '/apps/oracle/11.2.0/db_1/dbs/arch1_24_925478204.dbf'

ORA-27037: unable to obtain file status

Linux-x86_64 Error: 2: No such file or directory

Additional information: 3

3、场景模拟出来了,下面是修复过程

使用BBED,将文件头的SCN等关键信息修改到与控制文件control file相匹配即可

SYS@linuxidc SQL>select file#, CHECKPOINT_CHANGE# from v$datafile;

FILE# CHECKPOINT_CHANGE#

---------- ------------------

1            1233692

2            1233692

3            1233692

4            1233692

5            1233692

SYS@linuxidc SQL>select CHECKPOINT_CHANGE# from v$database;

CHECKPOINT_CHANGE#

------------------

1233692

SYS@linuxidc SQL>select file#, recover, fuzzy, CHECKPOINT_CHANGE# from v$datafile_header;

FILE# REC FUZ CHECKPOINT_CHANGE#

---------- --- --- ------------------

1 NO  NO            1233692

2 NO  NO            1233692

3 NO  NO            1233692

4 NO  NO            1233692

5 YES NO            1233063

控制文件中datafile5的scn是:1233692,而数据文件头中的scn是:1233063

使用bbed将datafile5的数据文件头对应的SCN修改为与其他文件相同,我们先看一下users01.dbf这个文件的文件头

BBED> set filename '/dbdata/oradata/linuxidc/users01.dbf'

FILENAME        /dbdata/oradata/linuxidc/users01.dbf

BBED> set block 1

BLOCK#          1

BBED> map

File: /dbdata/oradata/linuxidc/users01.dbf (0)

Block: 1                                    Dba:0x00000000

------------------------------------------------------------

Data File Header

struct kcvfh, 860 bytes                    @0

ub4 tailchk                                @8188

因为我们要修改数据文件头,因此我们需要关注四个偏移量offset点,分别为484、492、140和148

1、datafile 的file header 存储在第一个block里

2、Oracle considers four attributes of this data structure when determining if a datafile is sync with the other data files of the database:(不同oracle版本offset可能不同)

(1)kscnbas (at offset 484) – SCN of last change to the datafile.

(2)kcvcptim (at offset 492) -Time of the last change to the datafile.

(3)kcvfhcpc (at offset 140) – Checkpoint count.

(4)kcvfhccc (at offset 148) – Unknown, but is always 1 less than thecheckpoint point count.

Oracle有4个属性来判断datafile 是否和其他的datafile 一致,如果都一致,可以正常操作,如果不一致,那么会报ORA-01113错误

下面我们看下这几个offset

BBED> set offset 484

OFFSET          484

BBED> dump

File: /dbdata/oradata/linuxidc/users01.dbf (0)

Block: 1                Offsets:  484 to  995          Dba:0x00000000

------------------------------------------------------------------------

1cd31200 00000000 bd384937 01000000 1b000000 30010000 100051f2 02000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

0d000d00 0d000100 00000000 00000000 00000000 02000001 03000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

<32 bytes per line>

BBED> set offset 492

OFFSET          492

BBED> dump

File: /dbdata/oradata/linuxidc/users01.dbf (0)

Block: 1                Offsets:  492 to 1003          Dba:0x00000000

------------------------------------------------------------------------

bd384937 01000000 1b000000 30010000 100051f2 02000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 0d000d00 0d000100

00000000 00000000 00000000 02000001 03000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

<32 bytes per line>

BBED> set offset 140

OFFSET          140

BBED> dump

File: /dbdata/oradata/linuxidc/users01.dbf (0)

Block: 1                Offsets:  140 to  651          Dba:0x00000000

------------------------------------------------------------------------

78000000 14ff4737 77000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

04000000 05005553 45525300 00000000 00000000 00000000 00000000 00000000

00000000 04000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 7ac92131 01000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 1cd31200 00000000

bd384937 01000000 1b000000 30010000 100051f2 02000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 0d000d00 0d000100

<32 bytes per line>

BBED> set offset 148

OFFSET          148

BBED> dump

File: /dbdata/oradata/linuxidc/users01.dbf (0)

Block: 1                Offsets:  148 to  659          Dba:0x00000000

------------------------------------------------------------------------

77000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 04000000 05005553

45525300 00000000 00000000 00000000 00000000 00000000 00000000 04000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 7ac92131 01000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 1cd31200 00000000 bd384937 01000000

1b000000 30010000 100051f2 02000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 0d000d00 0d000100 00000000 00000000

<32 bytes per line>

其中,位于484和488偏移量的是数据文件对应的SCN编号。在Oracle内部,SCN是使用wrap*4*1024*1024*1024+base来进行标示的。通常我们看到的数据库wrap都是0。位于492偏移量的是最后一次检查点对应的时间信息。位于140和148偏移量的是检查点次数。这些信息都是会由于时间推动和检查点动作引起变化,我们严格情况下,需要保证文件头块的信息和控制文件信息一致。

另外一点,由于Linux是Little字节系统,要关注写入时候的格式问题。最简单的方式是dump一下偏移量,看看是怎么保存的。

1234567 BBED> dump

File: /dbdata/oradata/linuxidc/users01.dbf (0)

Block: 1                Offsets:  484 to  995          Dba:0x00000000

------------------------------------------------------------------------

1cd31200 00000000 bd384937 01000000 1b000000 30010000 100051f2 02000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

然后我们修改moe01.dbf的文件头(修改这几个offset,我这里只修改了484、492就可以open库了)

BBED> set filename '/dbdata/oradata/linuxidc/moe01.dbf'

FILENAME        /dbdata/oradata/linuxidc/moe01.dbf

BBED> set block 1

BLOCK#          1

BBED> set mode edit

MODE            Edit

BBED> set offset 484

OFFSET          484

BBED> dump

File: /dbdata/oradata/linuxidc/moe01.dbf (0)

Block: 1                Offsets:  484 to  995          Dba:0x00000000

------------------------------------------------------------------------

a7d01200 00000000 52204937 01000000 18000000 4d8d0000 100051f2 02000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

0d000d00 0d000100 00000000 00000000 00000000 02004001 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

<32 bytes per line>

BBED> m /x 1cd31200 484

Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y

File: /dbdata/oradata/linuxidc/moe01.dbf (0)

Block: 1                Offsets:  484 to  995          Dba:0x00000000

------------------------------------------------------------------------

1cd31200 00000000 52204937 01000000 18000000 4d8d0000 100051f2 02000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

0d000d00 0d000100 00000000 00000000 00000000 02004001 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

<32 bytes per line>

BBED> m /x bd384937 492

BBED-00209: invalid number (bd384937)

BBED> m /x bd38 492

File: /dbdata/oradata/linuxidc/moe01.dbf (0)

Block: 1                Offsets:  492 to 1003          Dba:0x00000000

------------------------------------------------------------------------

bd384937 01000000 18000000 4d8d0000 100051f2 02000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 0d000d00 0d000100

00000000 00000000 00000000 02004001 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

<32 bytes per line>

BBED> m /x 4937 494

File: /dbdata/oradata/linuxidc/moe01.dbf (0)

Block: 1                Offsets:  494 to 1005          Dba:0x00000000

------------------------------------------------------------------------

49370100 00001800 00004d8d 00001000 51f20200 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000d00 0d000d00 01000000

00000000 00000000 00000200 40010000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

<32 bytes per line>

BBED> sum apply

Check value for File 0, Block 1:

current = 0x1683, required = 0x1683

BBED> verify

DBVERIFY - Verification starting

FILE = /dbdata/oradata/linuxidc/moe01.dbf

BLOCK = 1

DBVERIFY - Verification complete

Total Blocks Examined        : 1

Total Blocks Processed (Data) : 0

Total Blocks Failing  (Data) : 0

Total Blocks Processed (Index): 0

Total Blocks Failing  (Index): 0

Total Blocks Empty            : 0

Total Blocks Marked Corrupt  : 0

Total Blocks Influx          : 0

Message 531 not found;  product=RDBMS; facility=BBED

这时我们再次查看各个数据文件头的scn,发现scn一致了

123456789 SYS@linuxidc SQL>select file#, recover, fuzzy, CHECKPOINT_CHANGE# from v$datafile_header;

FILE# REC FUZ CHECKPOINT_CHANGE#

---------- --- --- ------------------

1 NO  NO            1233692

2 NO  NO            1233692

3 NO  NO            1233692

4 NO  NO            1233692

5 YES NO            1233692

试着open库

SYS@linuxidc SQL>alter database open

2  ;

alter database open

*

ERROR at line 1:

ORA-01113: file 5 needs media recovery

ORA-01110: data file 5: '/dbdata/oradata/linuxidc/moe01.dbf'

SYS@linuxidc SQL>recover datafile 5;

Media recovery complete.

SYS@linuxidc SQL>alter database open;

Database altered.

看一下alert文件

ALTER DATABASE RECOVER  datafile 5

Media Recovery Start

Serial Media Recovery started

Media Recovery Complete (linuxidc)

Completed: ALTER DATABASE RECOVER  datafile 5

Thu Nov 10 13:47:24 2016

alter database open

Thu Nov 10 13:47:25 2016

Thread 1 opened at log sequence 27

Current log# 3 seq# 27 mem# 0: /dbdata/oradata/linuxidc/redo03.log

Successful open of redo thread 1

MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set

Thu Nov 10 13:47:25 2016

SMON: enabling cache recovery

[20910] Successfully onlined Undo Tablespace 2.

Undo initialization finished serial:0 start:3710149144 end:3710149224 diff:80 (0 seconds)

Verifying file header compatibility for 11g tablespace encryption..

Verifying 11g file header compatibility for tablespace encryption completed

SMON: enabling tx recovery

Database Characterset is AL32UTF8

No Resource Manager plan active

replication_dependency_tracking turned off (no async multimaster replication found)

Starting background process QMNC

Thu Nov 10 13:47:25 2016

QMNC started with pid=20, OS id=21409

Completed: alter database open

在本次恢复过程中,recover是可行的,原因是该库并没做过resetlog,如果datafile是在 resetlog之前就已经offline的数据文件,那recover是不可行的。

0b1331709591d260c1c78e86d0c51c18.png

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

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

相关文章

shell管道重定向程序的实现

管道常用于不同命令的组合使用&#xff0c;比如ps -aux|grep ..用于查找指定条件的进程&#xff0c;ls|less用于实现文件列表的分页显示等。总之是将前一个命令的输出作为后一个命令的输入&#xff0c;完成一个命令无法完成的功能。分别使用pipe()和popen()两种方式实现ls|less…

移动端网站,键盘弹出对页面的影响

在移动端网站中&#xff0c;ios与安卓键盘弹出时对页面有不同的处理方式。 ios&#xff0c;键盘弹出但整体页面高度不变。 安卓&#xff0c;页面高度屏幕高度-键盘高度 这样对页面样式就会造成不同的影响。 当有表单弹窗&#xff0c;且弹窗高度在页面高度的50%左右时影响尤为严…

Hyper-V和多处理器虚机

架构概述Hyper-V采用基于Hyperisor的架构&#xff0c;并且充分利用Windows驱动模型&#xff0c;以便提供广泛的硬件支持。Hypervisor可以把单个服务器划分为多个CPU和内存的容器。由于采用微内核架构&#xff0c;Hyper-V可以提供高效的分区间通信机制&#xff0c;并在此基础上搭…

oracle 11g 修改 sga,oracle 11g 调整SGA

1. 查看oracle 使用的参数文件SQL> show parameter spfileNAME TYPE VALUE------------------------------------ ----------- ------------------------------spfile string /u01/app/oracle/p…

Vue.js(2.x)之Class 与 Style 绑定

1、前面看数据绑定时还很困惑v-bind处理class时可以使用json格式的值&#xff0c;为什么换成id、href等其他属性就不行。看了下文档解释后明白了些&#xff1a; 2.对象语法主要有以下三种形式&#xff1a; 1&#xff09;直接在v-bind指令后使用键值对形式&#xff1a;键是否显示…

软件外包项目中的进度管理

案例 A公司是一家美资软件公司在华办事机构&#xff0c;其主要的目标是开拓中国市场、服务中国客户&#xff0c;做一些本地化和客户化的工作。它的主要软件产品是由总部在硅谷的软件开发基地完成&#xff0c;然后由世界各地的分公司或办事机构进行客户化定制、二次开发和系统维…

请求转发和请求重定向的区别?

请求重定向Redirect&#xff1a; 1. 产生了两次请求&#xff0c;俩次相应 , 所以浏览器地址会发生改变 !2. 可以重新定向到非本项目的服务器地址! 请求转发forword&#xff1a; 1. 产生了一次请求&#xff0c;一次相应 , 所以浏览器地址不会发生变化 !2. 只能转发到本项目的服务…

linux 下yy命令,Linux 基本命令(一)--时间 常用命令

2019-07-30date 系统时间参数显示时间是个常用的命令&#xff0c;在写shell脚本中也经常会用到与日期相关文件名或时间显示。无论是linux还是windows下都是date命令。Linux下date命令用法date [OPTION]… [FORMAT]date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]date命令…

qemu PPP连接

呵呵&#xff0c;出差最大的好处就是不用安排时间陪老婆大人&#xff1a;&#xff09;用QEMU虚拟两台串口连接设备&#xff0c;利用UDP模拟串口。再在串口上配置pppd。这样就模拟简单路由器就有戏了&#xff1a;) host--eth-RT1---serial---RT2---eth--HostRT1 qemu配置&#x…

FZU - 2268 Cutting Game

/*这题主要是想到突破口--每次除以2(我感觉还是思维题&#xff0c;就像我当时做时&#xff0c;就是想不到 T^T)然后&#xff0c;用1个奇数和1个偶数举一下例子f(7) f(3) 1, f(3) f(1) 1, f(1) 1f(8) f(4) 1, f(4) f(2) 1, f(2) f(1) 1, f(1) 1 */ #include <ios…

linux的less命令如何退出,Linux命令详解之less命令

less命令 与 more命令 非常类似&#xff0c;但less命令 可以更加随意地浏览文件&#xff0c;而且 less 在查看之前不会加载整个文件。相比较于more命令&#xff0c;很多人更喜欢使用 less命令。一、Linux less命令语法less [参数] 文件less命令非常强大&#xff0c;在此只介绍几…

今天去团省委维护网站

现在还是晚上11点&#xff0c;早上按计划9点跟学明一起打车去团省委维护网站&#xff0c;原来不太远&#xff0c;9点半就到了&#xff0c;一个女的接待我们&#xff0c;等了一会等到他们网站的技术来。基本上就是原来的网站用php写的&#xff0c;现在要把它转移到新的服务器上。…

linux 内核高拍仪,高拍仪开发控件 | Dynamsoft Camera SDK

基于浏览器的摄像头、高拍仪控件Dynamsoft Camera SDK 提供了 JavaScript API&#xff0c;帮助您在浏览器里轻松地从 USB(USB Video Class&#xff0c;即 UVC) 视频捕获设备,如摄像头、高拍仪, 捕捉图像和视频流。使用 Dynamsoft Camera SDK 这个基于 Web 的开发控件&#xff0…

MySQL优化大总结

1.要尽量避免全表扫描&#xff0c;首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断&#xff0c;否则将导致引擎放弃使用索引而进行全表扫描&#xff0c;如&#xff1a; select id from t where num is null 最好不要给…

BigDecimal四舍五入后保留两位小数

BigDecimal bd new BigDecimal("8.899");BigDecimal bigDecimal bd.setScale(2, BigDecimal.ROUND_HALF_UP);

25 个在 Web 中嵌入图表的免费资源

来源:blogof.francescomugnai.com在 Web 中嵌入图形图表的技术越来越丰富&#xff0c;我们可以选择 JavaScript 库&#xff0c;CSS&#xff0c;Flash&#xff0c;Silverlight&#xff0c;PHP 库&#xff0c;服务器端的组件&#xff0c;也可以选择 Google Chart API 这样的 Web …