zoukankan      html  css  js  c++  java
  • Oracle10g的不完全及完全恢复.

    在Oracle10g以前,在进行了不完全恢复使用resetlogs选项打开数据库以后,Oracle建议你要立即进行全备份。
     因为日志序号会被置位,以防止后续日志被应用。resetlogs之前的备份将不能用于进行跨域resetlogs时间点的恢复。
     
    在Oracle10g中,Oracle允许跨越resetlogs时间点进行完全/不完全恢复。
     看一下测试的例子:
    1.全备份数据库
     $ rman target /
    
    Recovery Manager: Release 10.1.0.2.0 - 64bit Production
    
    Copyright (c) 1995, 2004, Oracle.  All rights reserved.
    
    connected to target database: EYGLE (DBID=1337390772)
    
    RMAN> backup database plus archivelog delete all input;
    
    
    Starting backup at 2005-04-05 16:29:08
    current log archived
    using target database controlfile instead of recovery catalog
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: sid=143 devtype=DISK
    channel ORA_DISK_1: starting archive log backupset
    channel ORA_DISK_1: specifying archive log(s) in backup set
    input archive log thread=1 sequence=3 recid=294 stamp=554823466
    input archive log thread=1 sequence=4 recid=295 stamp=554828647
    input archive log thread=1 sequence=5 recid=297 stamp=554833749
    channel ORA_DISK_1: starting piece 1 at 2005-04-05 16:29:16
    channel ORA_DISK_1: finished piece 1 at 2005-04-05 16:29:19
    piece handle=/data5/flash_recovery_area/EYGLE/backupset/2005_04_05/o1_mf_annnn_TAG20050405T162914_154m2woc_.bkp comment=NONE
    channel ORA_DISK_1: backup set complete, elapsed time: 00:00:04
    channel ORA_DISK_1: deleting archive log(s)
    archive log filename=/data5/flash_recovery_area/EYGLE/archivelog/2005_04_05/o1_mf_1_3_154919qm_.arc recid=294 stamp=554823466
    archive log filename=/data5/flash_recovery_area/EYGLE/archivelog/2005_04_05/o1_mf_1_4_154g3728_.arc recid=295 stamp=554828647
    archive log filename=/data5/flash_recovery_area/EYGLE/archivelog/2005_04_05/o1_mf_1_5_154m2og4_.arc recid=297 stamp=554833749
    Finished backup at 2005-04-05 16:29:20
    
    Starting backup at 2005-04-05 16:29:21
    using channel ORA_DISK_1
    channel ORA_DISK_1: starting full datafile backupset
    channel ORA_DISK_1: specifying datafile(s) in backupset
    input datafile fno=00009 name=/data1/oradata/systemfile/bigtbs.dbf
    input datafile fno=00001 name=/opt/oracle/oradata/eygle/system01.dbf
    input datafile fno=00006 name=/opt/oracle/oradata/eygle/EYGLE/datafile/o1_mf_test_03xv34ny_.dbf
    input datafile fno=00002 name=/opt/oracle/oradata/eygle/undotbs01.dbf
    input datafile fno=00003 name=/opt/oracle/oradata/eygle/sysaux01.dbf
    input datafile fno=00010 name=/opt/oracle/oradata/eygle/dfmbrc.dbf
    input datafile fno=00008 name=/opt/oracle/oradata/eygle/trans01.dbf
    channel ORA_DISK_1: starting piece 1 at 2005-04-05 16:29:22
    channel ORA_DISK_1: finished piece 1 at 2005-04-05 16:31:07
    piece handle=/data5/flash_recovery_area/EYGLE/backupset/2005_04_05/o1_mf_nnndf_TAG20050405T162921_154m33kf_.bkp comment=NONE
    channel ORA_DISK_1: backup set complete, elapsed time: 00:01:45
    channel ORA_DISK_1: starting full datafile backupset
    channel ORA_DISK_1: specifying datafile(s) in backupset
    input datafile fno=00005 name=/data1/oradata/systemfile/eygle01.dbf
    input datafile fno=00004 name=/opt/oracle/oradata/eygle/users01.dbf
    input datafile fno=00007 name=/opt/oracle/oradata/eygle/EYGLE/datafile/o1_mf_itpub_03xv5g66_.dbf
    channel ORA_DISK_1: starting piece 1 at 2005-04-05 16:31:08
    channel ORA_DISK_1: finished piece 1 at 2005-04-05 16:31:33
    piece handle=/data5/flash_recovery_area/EYGLE/backupset/2005_04_05/o1_mf_nnndf_TAG20050405T162921_154m6dxm_.bkp comment=NONE
    channel ORA_DISK_1: backup set complete, elapsed time: 00:00:25
    channel ORA_DISK_1: starting full datafile backupset
    channel ORA_DISK_1: specifying datafile(s) in backupset
    input datafile fno=00011 name=/opt/oracle/oradata/eygle/t2k01.dbf
    channel ORA_DISK_1: starting piece 1 at 2005-04-05 16:31:34
    channel ORA_DISK_1: finished piece 1 at 2005-04-05 16:31:41
    piece handle=/data5/flash_recovery_area/EYGLE/backupset/2005_04_05/o1_mf_nnndf_TAG20050405T162921_154m76kz_.bkp comment=NONE
    channel ORA_DISK_1: backup set complete, elapsed time: 00:00:07
    Finished backup at 2005-04-05 16:31:41
    
    Starting backup at 2005-04-05 16:31:41
    current log archived
    using channel ORA_DISK_1
    channel ORA_DISK_1: starting archive log backupset
    channel ORA_DISK_1: specifying archive log(s) in backup set
    input archive log thread=1 sequence=6 recid=298 stamp=554833902
    channel ORA_DISK_1: starting piece 1 at 2005-04-05 16:31:44
    channel ORA_DISK_1: finished piece 1 at 2005-04-05 16:31:47
    piece handle=/data5/flash_recovery_area/EYGLE/backupset/2005_04_05/o1_mf_annnn_TAG20050405T163142_154m7jpo_.bkp comment=NONE
    channel ORA_DISK_1: backup set complete, elapsed time: 00:00:04
    channel ORA_DISK_1: deleting archive log(s)
    archive log filename=/data5/flash_recovery_area/EYGLE/archivelog/2005_04_05/o1_mf_1_6_154m7gb3_.arc recid=298 stamp=554833902
    Finished backup at 2005-04-05 16:31:47
    
    Starting Control File and SPFILE Autobackup at 2005-04-05 16:31:48
    piece handle=/data5/flash_recovery_area/EYGLE/autobackup/2005_04_05/o1_mf_s_554833908_154m7qps_.bkp comment=NONE
    Finished Control File and SPFILE Autobackup at 2005-04-05 16:31:56
    
    RMAN> exit
    
    
    Recovery Manager complete.
    
    
    
     2.进行数据更改
     $ sqlplus "/ as sysdba"
    
    SQL*Plus: Release 10.1.0.2.0 - Production on Tue Apr 5 16:32:23 2005
    
    Copyright (c) 1982, 2004, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - 64bit Production
    With the Partitioning, OLAP and Data Mining options
    
    SYS AS SYSDBA on 2005-04-05 16:32:23 >alter system switch logfile;
    
    System altered.
    
    SYS AS SYSDBA on 2005-04-05 16:32:30 >select count(*) from t;
    
      COUNT(*)
    ----------
         18956
    
    SYS AS SYSDBA on 2005-04-05 16:33:03 >insert into t select * from t;
    
    18956 rows created.
    
    SYS AS SYSDBA on 2005-04-05 16:33:17 >commit;
    
    Commit complete.
    
    SYS AS SYSDBA on 2005-04-05 16:33:19 >alter system switch logfile;
    
    System altered.
    
    SYS AS SYSDBA on 2005-04-05 16:33:45 >truncate table t;
    
    Table truncated.
    
    SYS AS SYSDBA on 2005-04-05 16:34:58 >alter system switch logfile;
    
    System altered.
    
     此时的日志序列情况如下:
     SYS AS SYSDBA on 2005-04-05 16:35:00 >select * from v$log_history where recid >1811;
    
         RECID      STAMP    THREAD#  SEQUENCE# FIRST_CHANGE# FIRST_TIME          NEXT_CHANGE# RESETLOGS_CHANGE# RESETLOGS_TIME
    ---------- ---------- ---------- ---------- ------------- ------------------- ------------ ----------------- -------------------
          1812  554813757          1          1      10923677 2005-04-05 09:54:53     10925720          10923677 2005-04-05 09:54:53
          1813  554813974          1          2      10925720 2005-04-05 10:55:57     10925827          10923677 2005-04-05 09:54:53
          1814  554823464          1          3      10925827 2005-04-05 10:59:34     10947409          10923677 2005-04-05 09:54:53
          1815  554828646          1          4      10947409 2005-04-05 13:37:44     10950318          10923677 2005-04-05 09:54:53
          1816  554833748          1          5      10950318 2005-04-05 15:04:06     10953123          10923677 2005-04-05 09:54:53
          1817  554833901          1          6      10953123 2005-04-05 16:29:08     10953187          10923677 2005-04-05 09:54:53
          1818  554833950          1          7      10953187 2005-04-05 16:31:41     10953213          10923677 2005-04-05 09:54:53
          1819  554834005          1          8      10953213 2005-04-05 16:32:30     10953633          10923677 2005-04-05 09:54:53
          1820  554834118          1          9      10953633 2005-04-05 16:33:25     10953726          10923677 2005-04-05 09:54:53
    
    9 rows selected.
    
     关闭数据库:
     SYS AS SYSDBA on 2005-04-05 16:35:18 >shutdown immediate;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    
    SYS AS SYSDBA on 2005-04-05 16:37:30 >exit
    Disconnected from Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - 64bit Production
    With the Partitioning, OLAP and Data Mining options
    
     3.执行不完全恢复
     $ rman target /
    
    Recovery Manager: Release 10.1.0.2.0 - 64bit Production
    
    Copyright (c) 1995, 2004, Oracle.  All rights reserved.
    
    connected to target database (not started)
    
    RMAN> startup mount;
    
    Oracle instance started
    database mounted
    
    Total System Global Area     314572800 bytes
    
    Fixed Size                     1301704 bytes
    Variable Size                261890872 bytes
    Database Buffers              50331648 bytes
    Redo Buffers                   1048576 bytes
    
    RMAN> run {
    2> set until sequence 8 thread 1;
    3> restore database;
    4> recover database;
    5> }
    
    executing command: SET until clause
    using target database controlfile instead of recovery catalog
    
    Starting restore at 2005-04-05 16:39:17
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: sid=160 devtype=DISK
    
    datafile 8 not processed because file is read-only
    channel ORA_DISK_1: starting datafile backupset restore
    channel ORA_DISK_1: specifying datafile(s) to restore from backup set
    restoring datafile 00001 to /opt/oracle/oradata/eygle/system01.dbf
    restoring datafile 00002 to /opt/oracle/oradata/eygle/undotbs01.dbf
    restoring datafile 00003 to /opt/oracle/oradata/eygle/sysaux01.dbf
    restoring datafile 00006 to /opt/oracle/oradata/eygle/EYGLE/datafile/o1_mf_test_03xv34ny_.dbf
    restoring datafile 00009 to /data1/oradata/systemfile/bigtbs.dbf
    restoring datafile 00010 to /opt/oracle/oradata/eygle/dfmbrc.dbf
    channel ORA_DISK_1: restored backup piece 1
    piece handle=/data5/flash_recovery_area/EYGLE/backupset/2005_04_05/o1_mf_nnndf_TAG20050405T162921_154m33kf_.bkp tag=TAG20050405T162921
    channel ORA_DISK_1: restore complete
    channel ORA_DISK_1: starting datafile backupset restore
    channel ORA_DISK_1: specifying datafile(s) to restore from backup set
    restoring datafile 00004 to /opt/oracle/oradata/eygle/users01.dbf
    restoring datafile 00005 to /data1/oradata/systemfile/eygle01.dbf
    restoring datafile 00007 to /opt/oracle/oradata/eygle/EYGLE/datafile/o1_mf_itpub_03xv5g66_.dbf
    channel ORA_DISK_1: restored backup piece 1
    piece handle=/data5/flash_recovery_area/EYGLE/backupset/2005_04_05/o1_mf_nnndf_TAG20050405T162921_154m6dxm_.bkp tag=TAG20050405T162921
    channel ORA_DISK_1: restore complete
    channel ORA_DISK_1: starting datafile backupset restore
    channel ORA_DISK_1: specifying datafile(s) to restore from backup set
    restoring datafile 00011 to /opt/oracle/oradata/eygle/t2k01.dbf
    channel ORA_DISK_1: restored backup piece 1
    piece handle=/data5/flash_recovery_area/EYGLE/backupset/2005_04_05/o1_mf_nnndf_TAG20050405T162921_154m76kz_.bkp tag=TAG20050405T162921
    channel ORA_DISK_1: restore complete
    Finished restore at 2005-04-05 16:41:45
    
    Starting recover at 2005-04-05 16:41:46
    using channel ORA_DISK_1
    datafile 8 not processed because file is offline
    
    starting media recovery
    
    archive log thread 1 sequence 7 is already on disk as file /data5/flash_recovery_area/EYGLE/archivelog/2005_04_05/o1_mf_1_7_154m8z7k_.arc
    channel ORA_DISK_1: starting archive log restore to default destination
    channel ORA_DISK_1: restoring archive log
    archive log thread=1 sequence=6
    channel ORA_DISK_1: restored backup piece 1
    piece handle=/data5/flash_recovery_area/EYGLE/backupset/2005_04_05/o1_mf_annnn_TAG20050405T163142_154m7jpo_.bkp tag=TAG20050405T163142
    channel ORA_DISK_1: restore complete
    archive log filename=/data5/flash_recovery_area/EYGLE/archivelog/2005_04_05/o1_mf_1_6_154mtkfk_.arc thread=1 sequence=6
    channel default: deleting archive log(s)
    archive log filename=/data5/flash_recovery_area/EYGLE/archivelog/2005_04_05/o1_mf_1_6_154mtkfk_.arc recid=302 stamp=554834513
    archive log filename=/data5/flash_recovery_area/EYGLE/archivelog/2005_04_05/o1_mf_1_7_154m8z7k_.arc thread=1 sequence=7
    media recovery complete
    Finished recover at 2005-04-05 16:41:57
    
    RMAN> alter database open resetlogs;
    
    database opened
    
    RMAN> exit
    
    
    Recovery Manager complete.
    
     4.此时的数据库状态
     $ sqlplus "/ as sysdba"
    
    SQL*Plus: Release 10.1.0.2.0 - Production on Tue Apr 5 16:43:58 2005
    
    Copyright (c) 1982, 2004, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - 64bit Production
    With the Partitioning, OLAP and Data Mining options
    
    SYS AS SYSDBA on 2005-04-05 16:43:58 >archive log list;
    Database log mode              Archive Mode
    Automatic archival             Enabled
    Archive destination            USE_DB_RECOVERY_FILE_DEST
    Oldest online log sequence     1
    Next log sequence to archive   1
    Current log sequence           1
    SYS AS SYSDBA on 2005-04-05 16:44:01 >select count(*) from t;
    
      COUNT(*)
    ----------
         18956
    
     5.继续进行数据更改
     SYS AS SYSDBA on 2005-04-05 16:44:08 >create table tt as select * from dba_users;
    
    Table created.
    
    SYS AS SYSDBA on 2005-04-05 16:45:51 >alter system switch logfile;
    
    System altered.
    
    SYS AS SYSDBA on 2005-04-05 16:45:56 >select count(*) from tt;
    
      COUNT(*)
    ----------
            12
    
    SYS AS SYSDBA on 2005-04-05 16:46:01 >insert into tt select * from tt;
    
    12 rows created.
    
    SYS AS SYSDBA on 2005-04-05 16:46:13 >commit;
    
    Commit complete.
    
    SYS AS SYSDBA on 2005-04-05 16:46:16 >alter system switch logfile;
    
    System altered.
    
     此时的日志序列:
     SYS AS SYSDBA on 2005-04-05 17:46:19 >select * from v$log_history where recid >1811;
    
         RECID      STAMP    THREAD#  SEQUENCE# FIRST_CHANGE# FIRST_TIME          NEXT_CHANGE# RESETLOGS_CHANGE# RESETLOGS_TIME
    ---------- ---------- ---------- ---------- ------------- ------------------- ------------ ----------------- -------------------
          1812  554813757          1          1      10923677 2005-04-05 09:54:53     10925720          10923677 2005-04-05 09:54:53
          1813  554813974          1          2      10925720 2005-04-05 10:55:57     10925827          10923677 2005-04-05 09:54:53
          1814  554823464          1          3      10925827 2005-04-05 10:59:34     10947409          10923677 2005-04-05 09:54:53
          1815  554828646          1          4      10947409 2005-04-05 13:37:44     10950318          10923677 2005-04-05 09:54:53
          1816  554833748          1          5      10950318 2005-04-05 15:04:06     10953123          10923677 2005-04-05 09:54:53
          1817  554833901          1          6      10953123 2005-04-05 16:29:08     10953187          10923677 2005-04-05 09:54:53
          1818  554833950          1          7      10953187 2005-04-05 16:31:41     10953213          10923677 2005-04-05 09:54:53
          1819  554834005          1          8      10953213 2005-04-05 16:32:30     10953633          10923677 2005-04-05 09:54:53
          1820  554834118          1          9      10953633 2005-04-05 16:33:25     10953726          10923677 2005-04-05 09:54:53
          1821  554834756          1          1      10953214 2005-04-05 16:42:34     10953433          10953214 2005-04-05 16:42:34
          1822  554834781          1          2      10953433 2005-04-05 16:45:56     10953445          10953214 2005-04-05 16:42:34
    
    11 rows selected.
    
    SYS AS SYSDBA on 2005-04-05 16:46:21 >shutdown immediate;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SYS AS SYSDBA on 2005-04-05 16:47:38 >exit
    Disconnected from Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - 64bit Production
    With the Partitioning, OLAP and Data Mining options
     6.再次执行恢复
     $ rman target /
    
    Recovery Manager: Release 10.1.0.2.0 - 64bit Production
    
    Copyright (c) 1995, 2004, Oracle.  All rights reserved.
    
    connected to target database (not started)
    
    RMAN> startup mount;
    
    Oracle instance started
    database mounted
    
    Total System Global Area     314572800 bytes
    
    Fixed Size                     1301704 bytes
    Variable Size                261890872 bytes
    Database Buffers              50331648 bytes
    Redo Buffers                   1048576 bytes
    
    RMAN> run {
    2> restore database;
    3> recover database;
    4> }
    
    Starting restore at 2005-04-05 16:49:54
    using target database controlfile instead of recovery catalog
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: sid=160 devtype=DISK
    
    datafile 8 not processed because file is read-only
    channel ORA_DISK_1: starting datafile backupset restore
    channel ORA_DISK_1: specifying datafile(s) to restore from backup set
    restoring datafile 00001 to /opt/oracle/oradata/eygle/system01.dbf
    restoring datafile 00002 to /opt/oracle/oradata/eygle/undotbs01.dbf
    restoring datafile 00003 to /opt/oracle/oradata/eygle/sysaux01.dbf
    restoring datafile 00006 to /opt/oracle/oradata/eygle/EYGLE/datafile/o1_mf_test_03xv34ny_.dbf
    restoring datafile 00009 to /data1/oradata/systemfile/bigtbs.dbf
    restoring datafile 00010 to /opt/oracle/oradata/eygle/dfmbrc.dbf
    channel ORA_DISK_1: restored backup piece 1
    piece handle=/data5/flash_recovery_area/EYGLE/backupset/2005_04_05/o1_mf_nnndf_TAG20050405T162921_154m33kf_.bkp tag=TAG20050405T162921
    channel ORA_DISK_1: restore complete
    channel ORA_DISK_1: starting datafile backupset restore
    channel ORA_DISK_1: specifying datafile(s) to restore from backup set
    restoring datafile 00004 to /opt/oracle/oradata/eygle/users01.dbf
    restoring datafile 00005 to /data1/oradata/systemfile/eygle01.dbf
    restoring datafile 00007 to /opt/oracle/oradata/eygle/EYGLE/datafile/o1_mf_itpub_03xv5g66_.dbf
    channel ORA_DISK_1: restored backup piece 1
    piece handle=/data5/flash_recovery_area/EYGLE/backupset/2005_04_05/o1_mf_nnndf_TAG20050405T162921_154m6dxm_.bkp tag=TAG20050405T162921
    channel ORA_DISK_1: restore complete
    channel ORA_DISK_1: starting datafile backupset restore
    channel ORA_DISK_1: specifying datafile(s) to restore from backup set
    restoring datafile 00011 to /opt/oracle/oradata/eygle/t2k01.dbf
    channel ORA_DISK_1: restored backup piece 1
    piece handle=/data5/flash_recovery_area/EYGLE/backupset/2005_04_05/o1_mf_nnndf_TAG20050405T162921_154m76kz_.bkp tag=TAG20050405T162921
    channel ORA_DISK_1: restore complete
    Finished restore at 2005-04-05 16:52:31
    
    Starting recover at 2005-04-05 16:52:32
    using channel ORA_DISK_1
    datafile 8 not processed because file is offline
    
    starting media recovery
    
    archive log thread 1 sequence 7 is already on disk as file /data5/flash_recovery_area/EYGLE/archivelog/2005_04_05/o1_mf_1_7_154m8z7k_.arc
    archive log thread 1 sequence 1 is already on disk as file /data5/flash_recovery_area/EYGLE/archivelog/2005_04_05/o1_mf_1_1_154n24v5_.arc
    archive log thread 1 sequence 2 is already on disk as file /data5/flash_recovery_area/EYGLE/archivelog/2005_04_05/o1_mf_1_2_154n2y40_.arc
    channel ORA_DISK_1: starting archive log restore to default destination
    channel ORA_DISK_1: restoring archive log
    archive log thread=1 sequence=6
    channel ORA_DISK_1: restored backup piece 1
    piece handle=/data5/flash_recovery_area/EYGLE/backupset/2005_04_05/o1_mf_annnn_TAG20050405T163142_154m7jpo_.bkp tag=TAG20050405T163142
    channel ORA_DISK_1: restore complete
    archive log filename=/data5/flash_recovery_area/EYGLE/archivelog/2005_04_05/o1_mf_1_6_154ngror_.arc thread=1 sequence=6
    channel default: deleting archive log(s)
    archive log filename=/data5/flash_recovery_area/EYGLE/archivelog/2005_04_05/o1_mf_1_6_154ngror_.arc recid=306 stamp=554835160
    archive log filename=/data5/flash_recovery_area/EYGLE/archivelog/2005_04_05/o1_mf_1_7_154m8z7k_.arc thread=1 sequence=7
    media recovery complete
    Finished recover at 2005-04-05 16:53:04
    
    RMAN> alter database open;
    
    database opened
    
    RMAN> exit
    
    
    Recovery Manager complete.
    
    7.检查数据恢复情况
    注意此次恢复跨越了resetlogs时间点
    $ sqlplus "/ as sysdba"
    
    SQL*Plus: Release 10.1.0.2.0 - Production on Tue Apr 5 16:53:56 2005
    
    Copyright (c) 1982, 2004, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - 64bit Production
    With the Partitioning, OLAP and Data Mining options
    
    SYS AS SYSDBA on 2005-04-05 16:53:56 >select count(*) from t;
    
      COUNT(*)
    ----------
         18956
    
    SYS AS SYSDBA on 2005-04-05 16:54:01 >select count(*) from tt;
    
      COUNT(*)
    ----------
            24
    
    SYS AS SYSDBA on 2005-04-05 16:54:07 >
    SYS AS SYSDBA on 2005-04-05 16:54:47 >
    
    数据恢复完成.
    

      

    魔兽就是毒瘤,大家千万不要玩。
  • 相关阅读:
    浮点数
    opencv笔记-GFTTDetector
    有向图与关联矩阵
    亚像素角点
    字符串格式化输出
    字符串表示与转换
    Bresenham算法
    罗德里格斯公式
    模型调参
    jave 逻辑运算 vs 位运算 + Python 逻辑运算 vs 位运算
  • 原文地址:https://www.cnblogs.com/tracy/p/2307677.html
Copyright © 2011-2022 走看看