Oracle 12.1新特性----使用RMAN从备份中实现recover table

前端之家收集整理的这篇文章主要介绍了Oracle 12.1新特性----使用RMAN从备份中实现recover table前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在Oracle12c版本之前,使用RMAN能恢复的级别为数据库级别和表空间级别,如果只有一张表需要恢复,而在数据库级别或表空间级别做恢复,影响范围就太大了。因此12.2版本中提供了一个新特性使用RMAN在表级别做恢复,并且恢复过程中不影响数据库的正常使用。这一功能不仅可以恢复表,还可以恢复表分区。

To recover a table or table partition,you must have a full backup of undo,SYSTEM,0);line-height:1.615;background-color:transparent;padding:0px;">SYSAUX,and the tablespace that contains the table or table partition.

使用recover table的一些限制条件:

When you use theRECOVERcommand to recover tables or table partitions contained in an RMAN backup,the following limitations exist.

@H_404_13@
  • Tables and table partitions belonging toSYSschema cannot be recovered.

  • Tables and table partitions fromSYSTEMandSYSAUXtablespaces cannot be recovered.

  • Tables and table partitions on standby databases cannot be recovered.

  • Tables with namedNOT NULLconstraints cannot be recovered with theREMAPoption.

  • 下面在12.2版本上做表级别恢复的实验

    sys@ORA12C>select*fromv$version;
    
    BANNER										CON_ID
    ------------------------------------------------------------------------------------------
    OracleDatabase12cEnterpriseEditionRelease12.2.0.1.0-64bitProduction		0
    PL/sqlRelease12.2.0.1.0-Production							0
    CORE	12.2.0.1.0	Production								0
    TNSforLinux:Version12.2.0.1.0-Production						0
    NLSRTLVersion12.2.0.1.0-Production							0

    1、创建一个数据库的全备

    RMAN>backupdatabase;
    
    Startingbackupat2017072017:12:05
    usingtargetdatabasecontrolfileinsteadofrecoverycatalog
    allocatedchannel:ORA_DISK_1
    channelORA_DISK_1:SID=36devicetype=DISK
    channelORA_DISK_1:startingfulldatafilebackupset
    channelORA_DISK_1:specifyingdatafile(s)inbackupset
    inputdatafilefilenumber=00001name=+DATA/ORA12C/DATAFILE/system.256.949764433
    channelORA_DISK_1:startingpiece1at2017072017:12:07
    channelORA_DISK_1:finishedpiece1at2017072017:12:22
    piecehandle=/u01/app/oracle/product/12.2/db_home1/dbs/0vs9rar7_1_1tag=TAG20170720T171206comment=NONE
    channelORA_DISK_1:backupsetcomplete,elapsedtime:00:00:15
    channelORA_DISK_1:startingfulldatafilebackupset
    channelORA_DISK_1:specifyingdatafile(s)inbackupset
    inputdatafilefilenumber=00004name=+DATA/ORA12C/DATAFILE/users.266.949764465
    channelORA_DISK_1:startingpiece1at2017072017:12:22
    channelORA_DISK_1:finishedpiece1at2017072017:12:23
    piecehandle=/u01/app/oracle/product/12.2/db_home1/dbs/10s9rarm_1_1tag=TAG20170720T171206comment=NONE
    channelORA_DISK_1:backupsetcomplete,elapsedtime:00:00:01
    channelORA_DISK_1:startingfulldatafilebackupset
    channelORA_DISK_1:specifyingdatafile(s)inbackupset
    inputdatafilefilenumber=00002name=+DATA/ORA12C/DATAFILE/sysaux.261.949764491
    channelORA_DISK_1:startingpiece1at2017072017:12:23
    channelORA_DISK_1:finishedpiece1at2017072017:12:38
    piecehandle=/u01/app/oracle/product/12.2/db_home1/dbs/11s9rarn_1_1tag=TAG20170720T171206comment=NONE
    channelORA_DISK_1:backupsetcomplete,elapsedtime:00:00:15
    channelORA_DISK_1:startingfulldatafilebackupset
    channelORA_DISK_1:specifyingdatafile(s)inbackupset
    inputdatafilefilenumber=00005name=+DATA/ORA12C/DATAFILE/examples.265.949764515
    channelORA_DISK_1:startingpiece1at2017072017:12:38
    channelORA_DISK_1:finishedpiece1at2017072017:12:39
    piecehandle=/u01/app/oracle/product/12.2/db_home1/dbs/12s9ras6_1_1tag=TAG20170720T171206comment=NONE
    channelORA_DISK_1:backupsetcomplete,elapsedtime:00:00:01
    channelORA_DISK_1:startingfulldatafilebackupset
    channelORA_DISK_1:specifyingdatafile(s)inbackupset
    inputdatafilefilenumber=00008name=/tmp/FY_RST_DATA.DAT
    inputdatafilefilenumber=00007name=/tmp/FY_REC_DATA.DAT
    inputdatafilefilenumber=00003name=+DATA/ORA12C/DATAFILE/undotbs1.264.949764541
    inputdatafilefilenumber=00006name=+DATA/ORA12C/DATAFILE/t_move.dbf
    channelORA_DISK_1:startingpiece1at2017072017:12:40
    channelORA_DISK_1:finishedpiece1at2017072017:12:41
    piecehandle=/u01/app/oracle/product/12.2/db_home1/dbs/13s9ras8_1_1tag=TAG20170720T171206comment=NONE
    channelORA_DISK_1:backupsetcomplete,elapsedtime:00:00:01
    Finishedbackupat2017072017:12:41
    
    StartingControlFileandSPFILEAutobackupat2017072017:12:41
    piecehandle=/u01/app/oracle/product/12.2/db_home1/dbs/c-326793150-20170720-00comment=NONE
    FinishedControlFileandSPFILEAutobackupat2017072017:12:42

    2、创建测试表,插入测试数据并记录中间的scn号

    zx@ORA12C>createtablet2(idnumber,namevarchar2(10),birthdaydate);
    
    Tablecreated.
    
    zx@ORA12C>insertintot2values(1,'zx',sysdate);
    
    1rowcreated.
    
    zx@ORA12C>commit;
    
    Commitcomplete.
    
    zx@ORA12C>selectcurrent_scnfromv$database;
    
    CURRENT_SCN
    -----------
    650101
    
    zx@ORA12C>insertintot2values(2,'lx',sysdate);
    
    1rowcreated.
    
    zx@ORA12C>commit;
    
    Commitcomplete.
    
    zx@ORA12C>select*fromt2;
    
    	IDNAMEBIRTHDAY
    -------------------------------------
    	1zx	2017072017:18:52
    	2lx	2017072017:19:34

    3、执行表级别恢复,使用remap table参数不覆盖原表,恢复成t2_r表

    RMAN>recovertablezx.t2untilscn650101remaptablezx.t2:t2_rauxiliarydestination'/tmp';
    
    Startingrecoverat2017072017:23:50
    currentlogarchived
    usingchannelORA_DISK_1
    RMAN-05026:warning:presumingfollowingsetoftablespacesappliestospecifiedpoint-in-time
    
    ListoftablespacesexpectedtohaveUNDOsegments
    TablespaceSYSTEM
    TablespaceUNDOTBS1
    
    Creatingautomaticinstance,withSID='htzD'
    
    initializationparametersusedforautomaticinstance:
    db_name=ORA12C
    db_unique_name=htzD_pitr_ORA12C
    compatible=12.2.0
    db_block_size=8192
    db_files=200
    diagnostic_dest=/u01/app/oracle
    _system_trig_enabled=FALSE
    sga_target=1712M
    processes=200
    db_create_file_dest=/tmp
    log_archive_dest_1='location=/tmp'
    #Noauxiliaryparameterfileused
    
    
    startingupautomaticinstanceORA12C
    
    Oracleinstancestarted
    
    TotalSystemGlobalArea1795162112bytes
    
    FixedSize8621760bytes
    VariableSize436207936bytes
    DatabaseBuffers1342177280bytes
    RedoBuffers8155136bytes
    Automaticinstancecreated
    
    contentsofMemoryScript:
    {
    #setrequestedpointintime
    setuntilscn650101;
    #restorethecontrolfile
    restoreclonecontrolfile;
    
    #mountthecontrolfile
    sqlclone'alterdatabasemountclonedatabase';
    
    #archivecurrentonlinelog
    sql'altersystemarchivelogcurrent';
    }
    executingMemoryScript
    
    executingcommand:SETuntilclause
    
    Startingrestoreat2017072017:24:12
    allocatedchannel:ORA_AUX_DISK_1
    channelORA_AUX_DISK_1:SID=18devicetype=DISK
    
    channelORA_AUX_DISK_1:startingdatafilebackupsetrestore
    channelORA_AUX_DISK_1:restoringcontrolfile
    channelORA_AUX_DISK_1:readingfrombackuppiece/u01/app/oracle/product/12.2/db_home1/dbs/c-326793150-20170720-00
    channelORA_AUX_DISK_1:piecehandle=/u01/app/oracle/product/12.2/db_home1/dbs/c-326793150-20170720-00tag=TAG20170720T171241
    channelORA_AUX_DISK_1:restoredbackuppiece1
    channelORA_AUX_DISK_1:restorecomplete,elapsedtime:00:00:01
    outputfilename=/tmp/ORA12C/controlfile/o1_mf_dq0xoxot_.ctl
    Finishedrestoreat2017072017:24:14
    
    sqlstatement:alterdatabasemountclonedatabase
    
    sqlstatement:altersystemarchivelogcurrent
    
    contentsofMemoryScript:
    {
    #setrequestedpointintime
    setuntilscn650101;
    #setdestinationsforrecoverysetandauxiliarysetdatafiles
    setnewnameforclonedatafile1tonew;
    setnewnameforclonedatafile3tonew;
    setnewnameforclonedatafile2tonew;
    setnewnameforclonetempfile1tonew;
    #switchalltempfiles
    switchclonetempfileall;
    #restorethetablespacesintherecoverysetandtheauxiliaryset
    restoreclonedatafile1,3,2;
    
    switchclonedatafileall;
    }
    executingMemoryScript
    
    executingcommand:SETuntilclause
    
    executingcommand:SETNEWNAME
    
    executingcommand:SETNEWNAME
    
    executingcommand:SETNEWNAME
    
    executingcommand:SETNEWNAME
    
    renamedtempfile1to/tmp/ORA12C/datafile/o1_mf_temp_%u_.tmpincontrolfile
    
    Startingrestoreat2017072017:24:19
    usingchannelORA_AUX_DISK_1
    
    channelORA_AUX_DISK_1:startingdatafilebackupsetrestore
    channelORA_AUX_DISK_1:specifyingdatafile(s)torestorefrombackupset
    channelORA_AUX_DISK_1:restoringdatafile00001to/tmp/ORA12C/datafile/o1_mf_system_%u_.dbf
    channelORA_AUX_DISK_1:readingfrombackuppiece/u01/app/oracle/product/12.2/db_home1/dbs/0vs9rar7_1_1
    channelORA_AUX_DISK_1:piecehandle=/u01/app/oracle/product/12.2/db_home1/dbs/0vs9rar7_1_1tag=TAG20170720T171206
    channelORA_AUX_DISK_1:restoredbackuppiece1
    channelORA_AUX_DISK_1:restorecomplete,elapsedtime:00:00:45
    channelORA_AUX_DISK_1:startingdatafilebackupsetrestore
    channelORA_AUX_DISK_1:specifyingdatafile(s)torestorefrombackupset
    channelORA_AUX_DISK_1:restoringdatafile00002to/tmp/ORA12C/datafile/o1_mf_sysaux_%u_.dbf
    channelORA_AUX_DISK_1:readingfrombackuppiece/u01/app/oracle/product/12.2/db_home1/dbs/11s9rarn_1_1
    channelORA_AUX_DISK_1:piecehandle=/u01/app/oracle/product/12.2/db_home1/dbs/11s9rarn_1_1tag=TAG20170720T171206
    channelORA_AUX_DISK_1:restoredbackuppiece1
    channelORA_AUX_DISK_1:restorecomplete,elapsedtime:00:00:35
    channelORA_AUX_DISK_1:startingdatafilebackupsetrestore
    channelORA_AUX_DISK_1:specifyingdatafile(s)torestorefrombackupset
    channelORA_AUX_DISK_1:restoringdatafile00003to/tmp/ORA12C/datafile/o1_mf_undotbs1_%u_.dbf
    channelORA_AUX_DISK_1:readingfrombackuppiece/u01/app/oracle/product/12.2/db_home1/dbs/13s9ras8_1_1
    channelORA_AUX_DISK_1:piecehandle=/u01/app/oracle/product/12.2/db_home1/dbs/13s9ras8_1_1tag=TAG20170720T171206
    channelORA_AUX_DISK_1:restoredbackuppiece1
    channelORA_AUX_DISK_1:restorecomplete,elapsedtime:00:00:15
    Finishedrestoreat2017072017:25:55
    
    datafile1switchedtodatafilecopy
    inputdatafilecopyRECID=16STAMP=949857956filename=/tmp/ORA12C/datafile/o1_mf_system_dq0xp4jt_.dbf
    datafile3switchedtodatafilecopy
    inputdatafilecopyRECID=17STAMP=949857956filename=/tmp/ORA12C/datafile/o1_mf_undotbs1_dq0xrnq2_.dbf
    datafile2switchedtodatafilecopy
    inputdatafilecopyRECID=18STAMP=949857956filename=/tmp/ORA12C/datafile/o1_mf_sysaux_dq0xqkm0_.dbf
    
    contentsofMemoryScript:
    {
    #setrequestedpointintime
    setuntilscn650101;
    #onlinethedatafilesrestoredorswitched
    sqlclone"alterdatabasedatafile1online";
    sqlclone"alterdatabasedatafile3online";
    sqlclone"alterdatabasedatafile2online";
    #recoverandopendatabasereadonly
    recoverclonedatabasetablespace"SYSTEM","UNDOTBS1","SYSAUX";
    sqlclone'alterdatabaSEOpenreadonly';
    }
    executingMemoryScript
    
    executingcommand:SETuntilclause
    
    sqlstatement:alterdatabasedatafile1online
    
    sqlstatement:alterdatabasedatafile3online
    
    sqlstatement:alterdatabasedatafile2online
    
    Startingrecoverat2017072017:26:02
    usingchannelORA_AUX_DISK_1
    
    startingmediarecovery
    
    archivedlogforthread1withsequence2isalreadyondiskasfile/u01/app/oracle/product/12.2/db_home1/dbs/arch1_2_949077789.dbf
    archivedlogforthread1withsequence3isalreadyondiskasfile/u01/app/oracle/product/12.2/db_home1/dbs/arch1_3_949077789.dbf
    archivedlogfilename=/u01/app/oracle/product/12.2/db_home1/dbs/arch1_2_949077789.dbfthread=1sequence=2
    archivedlogfilename=/u01/app/oracle/product/12.2/db_home1/dbs/arch1_3_949077789.dbfthread=1sequence=3
    mediarecoverycomplete,elapsedtime:00:00:02
    Finishedrecoverat2017072017:26:07
    
    sqlstatement:alterdatabaSEOpenreadonly
    
    contentsofMemoryScript:
    {
    sqlclone"createspfilefrommemory";
    shutdowncloneimmediate;
    startupclonenomount;
    sqlclone"altersystemsetcontrol_files=
    ''/tmp/ORA12C/controlfile/o1_mf_dq0xoxot_.ctl''comment=
    ''RMANset''scope=spfile";
    shutdowncloneimmediate;
    startupclonenomount;
    #mountdatabase
    sqlclone'alterdatabasemountclonedatabase';
    }
    executingMemoryScript
    
    sqlstatement:createspfilefrommemory
    
    databaseclosed
    databasedismounted
    Oracleinstanceshutdown
    
    connectedtoauxiliarydatabase(notstarted)
    Oracleinstancestarted
    
    TotalSystemGlobalArea1795162112bytes
    
    FixedSize8621760bytes
    VariableSize436207936bytes
    DatabaseBuffers1342177280bytes
    RedoBuffers8155136bytes
    
    sqlstatement:altersystemsetcontrol_files=''/tmp/ORA12C/controlfile/o1_mf_dq0xoxot_.ctl''comment=''RMANset''scope=spfile
    
    Oracleinstanceshutdown
    
    connectedtoauxiliarydatabase(notstarted)
    Oracleinstancestarted
    
    TotalSystemGlobalArea1795162112bytes
    
    FixedSize8621760bytes
    VariableSize436207936bytes
    DatabaseBuffers1342177280bytes
    RedoBuffers8155136bytes
    
    sqlstatement:alterdatabasemountclonedatabase
    
    contentsofMemoryScript:
    {
    #setrequestedpointintime
    setuntilscn650101;
    #setdestinationsforrecoverysetandauxiliarysetdatafiles
    setnewnamefordatafile4tonew;
    #restorethetablespacesintherecoverysetandtheauxiliaryset
    restoreclonedatafile4;
    
    switchclonedatafileall;
    }
    executingMemoryScript
    
    executingcommand:SETuntilclause
    
    executingcommand:SETNEWNAME
    
    Startingrestoreat2017072017:27:18
    allocatedchannel:ORA_AUX_DISK_1
    channelORA_AUX_DISK_1:SID=23devicetype=DISK
    
    channelORA_AUX_DISK_1:startingdatafilebackupsetrestore
    channelORA_AUX_DISK_1:specifyingdatafile(s)torestorefrombackupset
    channelORA_AUX_DISK_1:restoringdatafile00004to/tmp/HTZD_PITR_ORA12C/datafile/o1_mf_users_%u_.dbf
    channelORA_AUX_DISK_1:readingfrombackuppiece/u01/app/oracle/product/12.2/db_home1/dbs/10s9rarm_1_1
    channelORA_AUX_DISK_1:piecehandle=/u01/app/oracle/product/12.2/db_home1/dbs/10s9rarm_1_1tag=TAG20170720T171206
    channelORA_AUX_DISK_1:restoredbackuppiece1
    channelORA_AUX_DISK_1:restorecomplete,elapsedtime:00:00:25
    Finishedrestoreat2017072017:27:44
    
    datafile4switchedtodatafilecopy
    inputdatafilecopyRECID=20STAMP=949858064filename=/tmp/HTZD_PITR_ORA12C/datafile/o1_mf_users_dq0xvq9q_.dbf
    
    contentsofMemoryScript:
    {
    #setrequestedpointintime
    setuntilscn650101;
    #onlinethedatafilesrestoredorswitched
    sqlclone"alterdatabasedatafile4online";
    #recoverandopenresetlogs
    recoverclonedatabasetablespace"USERS","SYSTEM","SYSAUX"deletearchivelog;
    alterclonedatabaSEOpenresetlogs;
    }
    executingMemoryScript
    
    executingcommand:SETuntilclause
    
    sqlstatement:alterdatabasedatafile4online
    
    Startingrecoverat2017072017:27:44
    usingchannelORA_AUX_DISK_1
    
    startingmediarecovery
    
    archivedlogforthread1withsequence2isalreadyondiskasfile/u01/app/oracle/product/12.2/db_home1/dbs/arch1_2_949077789.dbf
    archivedlogforthread1withsequence3isalreadyondiskasfile/u01/app/oracle/product/12.2/db_home1/dbs/arch1_3_949077789.dbf
    archivedlogfilename=/u01/app/oracle/product/12.2/db_home1/dbs/arch1_2_949077789.dbfthread=1sequence=2
    archivedlogfilename=/u01/app/oracle/product/12.2/db_home1/dbs/arch1_3_949077789.dbfthread=1sequence=3
    mediarecoverycomplete,elapsedtime:00:00:01
    Finishedrecoverat2017072017:27:48
    
    databaSEOpened
    
    contentsofMemoryScript:
    {
    #createdirectoryfordatapumpimport
    sql"createorreplacedirectoryTSPITR_DIROBJ_DPDIRas''
    /tmp''";
    #createdirectoryfordatapumpexport
    sqlclone"createorreplacedirectoryTSPITR_DIROBJ_DPDIRas''
    /tmp''";
    }
    executingMemoryScript
    
    sqlstatement:createorreplacedirectoryTSPITR_DIROBJ_DPDIRas''/tmp''
    
    sqlstatement:createorreplacedirectoryTSPITR_DIROBJ_DPDIRas''/tmp''
    
    Performingexportoftables...
    EXPDP>Starting"SYS"."TSPITR_EXP_htzD_mhEh":
    EXPDP>ProcessingobjecttypeTABLE_EXPORT/TABLE/TABLE_DATA
    EXPDP>ProcessingobjecttypeTABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
    EXPDP>ProcessingobjecttypeTABLE_EXPORT/TABLE/TABLE
    EXPDP>..exported"ZX"."T2"5.898KB1rows
    EXPDP>Mastertable"SYS"."TSPITR_EXP_htzD_mhEh"successfullyloaded/unloaded
    EXPDP>******************************************************************************
    EXPDP>DumpfilesetforSYS.TSPITR_EXP_htzD_mhEhis:
    EXPDP>/tmp/tspitr_htzD_98436.dmp
    EXPDP>Job"SYS"."TSPITR_EXP_htzD_mhEh"successfullycompletedatThuJul2017:29:482017elapsed000:01:05
    Exportcompleted
    
    
    contentsofMemoryScript:
    {
    #shutdownclonebeforeimport
    shutdowncloneabort
    }
    executingMemoryScript
    
    Oracleinstanceshutdown
    
    Performingimportoftables...
    IMPDP>Mastertable"SYS"."TSPITR_IMP_htzD_bhqf"successfullyloaded/unloaded
    IMPDP>Starting"SYS"."TSPITR_IMP_htzD_bhqf":
    IMPDP>ProcessingobjecttypeTABLE_EXPORT/TABLE/TABLE
    IMPDP>ProcessingobjecttypeTABLE_EXPORT/TABLE/TABLE_DATA
    IMPDP>..imported"ZX"."T2_R"5.898KB1rows
    IMPDP>ProcessingobjecttypeTABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
    IMPDP>Job"SYS"."TSPITR_IMP_htzD_bhqf"successfullycompletedatThuJul2017:30:102017elapsed000:00:10
    Importcompleted
    
    
    Removingautomaticinstance
    Automaticinstanceremoved
    auxiliaryinstancefile/tmp/ORA12C/datafile/o1_mf_temp_dq0xskvm_.tmpdeleted
    auxiliaryinstancefile/tmp/HTZD_PITR_ORA12C/onlinelog/o1_mf_3_dq0xwo3d_.logdeleted
    auxiliaryinstancefile/tmp/HTZD_PITR_ORA12C/onlinelog/o1_mf_2_dq0xwo3d_.logdeleted
    auxiliaryinstancefile/tmp/HTZD_PITR_ORA12C/onlinelog/o1_mf_1_dq0xwo0q_.logdeleted
    auxiliaryinstancefile/tmp/HTZD_PITR_ORA12C/datafile/o1_mf_users_dq0xvq9q_.dbfdeleted
    auxiliaryinstancefile/tmp/ORA12C/datafile/o1_mf_sysaux_dq0xqkm0_.dbfdeleted
    auxiliaryinstancefile/tmp/ORA12C/datafile/o1_mf_undotbs1_dq0xrnq2_.dbfdeleted
    auxiliaryinstancefile/tmp/ORA12C/datafile/o1_mf_system_dq0xp4jt_.dbfdeleted
    auxiliaryinstancefile/tmp/ORA12C/controlfile/o1_mf_dq0xoxot_.ctldeleted
    auxiliaryinstancefiletspitr_htzD_98436.dmpdeleted
    Finishedrecoverat2017072017:30:13

    4、验证结果,查询t2_r表

    zx@ORA12C>select*fromt2_r;
    
    	IDNAMEBIRTHDAY
    -------------------------------------
    	1zx	2017072017:18:52

    5、即使表t2做了DDL操作修改了表结构,也可以用这种方法进行恢复

    --表t2添加一个字段
    zx@ORA12C>altertablet2addaddressvarchar2(10);
    
    Tablealtered.
    --恢复表到t2_r2
    RMAN>recovertablezx.t2untilscn650101remaptablezx.t2:t2_r2auxiliarydestination'/tmp';
    Startingrecoverat2017072017:57:00
    usingchannelORA_DISK_1
    RMAN-05026:warning:presumingfollowingsetoftablespacesappliestospecifiedpoint-in-time
    ......
    Finishedrecoverat2017072018:02:03
    --验证表t2_r2
    zx@ORA12C>select*fromt2_r2;
    
    	IDNAMEBIRTHDAY
    -------------------------------------
    	1zx	2017072017:18:52
    	
    --恢复成功

    这一功能很大程度减小了数据恢复的影响范围。

    参考:http://docs.oracle.com/database/121/BRADV/rcmresind.htm#BRADV686

    原文链接:https://www.f2er.com/oracle/208425.html

    猜你在找的Oracle相关文章