• RMAN


    原创  RMAN简明使用手册(转载) 收藏

    Technorati 标签: oracle,rman

    RMAN简明使用手册(转载)

    背景信息

    使用手册基于ORACLE 10.2

    资料参考:B14193-02

    最小使用环境

    ■ target database :备份的目标数据库

    ■ RMAN client: RMAN的客户端。它主要是负责解释备份和恢复命令,连接服务器会话执行相关命令,并在控制文件中记录备份恢复活动。

    可选组件:

    ■ flash recovery area:指定的一个磁盘上的位置。在这个位置上,数据库可以存储和管理与备份恢复相关的文件。

    ■ Media management software:介质管理软件可由第三方提供,但需要RMAN的备份接口。

    ■ recovery catalog是一个数据库上的最好是隔离开来的SCHMA,用来记录RMAN对于一个或多个数据库备份恢复的各种操作。

    RMAN Repository

    使用RMAN的LIST,REPORT, 和SHOW命令可以显示RMAN repository 中的信息。RMAN repository 主要存储在备份目标数据库的控制文件中。初始化参数:CONTROL_FILE_RECORD_KEEP_TIME用来控制备份记录被保存在控制文件中的时间。超过该时间该记录信息将被更新的备份信息所覆盖重用。

    Recovery Catalog

    可以使用recovery catalog来保存RMAN repository信息和记录。recovery catalog还可以保存RMAN的经常运行的备份脚本。

    Flash Recovery Area

    是记录磁盘的自动备份和恢复,通过在flash recovery area中管理所有的备份恢复文件,简化了磁盘空间和备份恢复文件的管理。可以使用DB_RECOVERY_FILE_DEST 和 DB_RECOVERY_FILE_DEST_SIZE参数来设置flash recovery area的位置和空间大小。同时也可指定保持策略,使得通过磁带恢复数据的时间和次数都可最小。

    Media Managers

    RMAN使用第三方的media management software. media manager 可以控制备份恢复中的设备。 管理介质的loading, labeling ,unloading和其他功能。介质管理设备也被称为SBT(system backup to tape) 设备.

    RMAN Channels

    RMAN执行所有备份恢复的活动,是在目标数据库实例上的服务器会话。每一个被RMAN使用的服务器会话叫做一个RMAN channel。一个channel可以是进行磁盘操作的disk channel, 或者是一个和介质管理的共同使用的一个sbt channel。可以使用RMAN ALLOCATE CHANNEL命令去分配 channels, 指定执行任务的服务器会话数目和影响服务器会话的设置。同样可以使用CONFIGURE 命令去配置channels ,指定RMAN的默认持久设置。如果任何channels被显示指定,那么默认的配置将被忽略。如果RMAN首次连接到目标数据库后,就会立刻产生一个disk channel ,并且只要RAMN连接着目标数据库该disk channel就一直存在。其被称为default channel, 但是其不被用来进行大数据量的传输操作,如备份或恢复数据库文件。

    开始或退出RMAN

    RMAN 必须连接到目标数据库(with SYSDBA privileges)才能进行备份和恢复。同样如果你有一个recovery catalog database,RMAN也可连接到recovery catalog database。使用CONNECT命令来连接RMAN和目标数据库。

    1.RMAN启动,连接一个目标数据库和recovery catalog:

    % rman TARGET / CATALOG cat_usr/pwd@cat_str

    2.不使用recovery catalog而直连目标数据库:

    % rman TARGET SYS/pwd@target_str

    3.仅启动RMAN:

    % rman

    RMAN命令行语法选项

    RMAN

    [ TARGET [=] connectStringSpec

    | { CATALOG [=] connectStringSpec }

    | LOG [=] ['] filename ['] [ APPEND ]

    ]...

    connectStringSpec::=

    ['] [userid] [/ [password]] [@net_service_name] [']

    以下一个例子附加了一个RMAN会话的输出文件到$ORACLE_HOME/dbs/log/msglog.log

    % rman TARGET / LOG $ORACLE_HOME/dbs/log/msglog.log APPEND

    退出RMAN客户端

    RMAN> EXIT

    配置RMAN持久设置环境

    显示所有配置信息:RMAN> SHOW ALL;

    配置磁盘设备和Channels

    如果你使用flash recovery area,除非你在BACKUP命令中指定位置否则备份将会保存在flash recovery area 。如果在都没有指定的情况下, 磁盘备份被保存在特定操作平台的默认位置。还可以通过给disk channel配置一个FORMAT,用来指定不同的备份位置。可通过命令CONFIGURE CHANNEL DEVICE TYPE DISK.来使用FORMAT子句。

    下例配置RMAN将备份写到磁盘的/tmp下:

    RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/tmp/%U';

    其中%U表示当备份时要使用唯一文件名。

    如果要恢复原磁盘备份位置的默认设置:

    RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT CLEAR;

    配置磁带设备和Channels

    当配置了你的介质管理软件后,可以通过介质管理指定对于RMAN备份默认目标位置。

    RMAN> CONFIGURE DEFAULT DEVICE TYPE TO sbt;

    有时介质管理需要一个参数字符串来配置设备信息。

    RMAN> CONFIGURE CHANNEL DEVICE TYPE sbt PARMS='ENV=mml_env_settings';

    多个channels可以被配置成运行并行备份。以下命令为RMAN备份配置了三个sbt channels:

    RMAN> CONFIGURE DEVICE TYPE sbt PARALLELISM 3;

    配置保持策略(Retention Policy

    保持策略用于管理数据库备份需要保持长时间,和可以恢复多久以前的数据库。保持策略可以按照恢复窗口(recovery window) (恢复多久以前的数据库), 或者冗余备份(redundancy value) (对于每个文件有多少备份必须保留).

    以下命令保证RMAN保持所有可恢复到某一时间点上必要的备份至少7天

    RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

    以下命令保证RMAN为每一个数据文件的备份为3个:

    RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 3;

    使用DELETE OBSOLETE可以快速删除保持策略不再需要的备份。 (但对于那些备份存储在flash recovery area中的,可以不执行这个命令。但在有空间需求时,数据库会自动删除在flash recovery area 中的过期备份,或有介质管理备份的文件)

    还可以使用BACKUP和CHANGE命令的KEEP选项,使得配置的保持策略对个别指定的备份失效。

    配置控制文件的自动备份

    在RMAN备份后可以对控制文件自动进行备份,以其保护RMAN repository。如下命令保证RMAN对控制文件的自动备份:

    RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;

    默认情况下,RMAN自动产生自动备份的控制文件的备份文件名称,并保存在在flash recovery area。如下命令配置RMAN将自动备份控制文件的备份文件写到/mybackupdir目录:

    RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/mybackupdir/cf%F';

    字符%F 代表的是一组要素的化合,其中包括DBID, day, month, year, 和 sequence number来产生一个唯一名称。注意: %F必须出现格式化名称的字符串中。

    还原配置的所有默认信息

    RMAN> CONFIGURE CHANNEL DEVICE TYPE sbt CLEAR;

    RMAN> CONFIGURE RETENTION POLICY CLEAR;

    RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK CLEAR;

    备份数据库文件

    如果我们使用BACKUP AS COPY来备份文件,RMAN将文件作为镜像拷贝(image copies)进行复制。即按照磁盘上数据库文件每比特(bit)拷贝。通过使用BACKUP AS COPY会将相关信息记录在RMAN repository中,并且RMAN可以使用其进行恢复操作。镜像拷贝不能建立在磁带上。

    以下命令建立全数据库所有数据文件的镜像拷贝:

    RMAN> BACKUP AS COPY DATABASE;

    如果你使用BACKUP AS BACKUPSET,那么RMAN存储其备份到备份集(backup sets)一个backup set包含超过一个的备份片(backup pieces), 是包含数据的物理文件是只有RMAN能够访问的格式。备份集(Backup sets)能够写在磁盘或磁带上,并且只能由RMAN写到磁带上。以下命令使用默认的channels以备份集格式,在磁带设备上建立对数据库的备份并归档日志:

    RMAN> BACKUP DEVICE TYPE sbt DATABASE PLUS ARCHIVELOG;

    以备份集格式在磁盘上备份数据文件可以节省磁盘空间和时间。因为RMAN可以跳过一些不需要备份的数据文件块。备份集一旦在磁盘上建立,仍可以使用BACKUP BACKUPSET 移动到磁带上。

    备份个别数据库文件

    RMAN还可以使用不同选项备份个别的表空间、数据文件、控制文件、SPFILE和备份集:

    RMAN> BACKUP ARCHIVELOG COMPLETION TIME BETWEEN 'SYSDATE-31' AND 'SYSDATE-7';

    RMAN> BACKUP TABLESPACE system, users, tools;

    RMAN> BACKUP AS BACKUPSET DATAFILE'ORACLE_HOME/oradata/trgt/users01.dbf',

    'ORACLE_HOME/oradata/trgt/tools01.dbf';

    RMAN> BACKUP DATAFILE 1,3,5;

    RMAN> BACKUP CURRENT CONTROLFILE TO '/backup/curr_cf.copy';

    RMAN> BACKUP SPFILE;

    RMAN> BACKUP BACKUPSET ALL;

    参数说明

    FORMAT:FORMAT '/tmp/%U'指定backup pieces和copies的位置和名字。必须使用替换变量产生唯一的文件名。

    TAG:TAG 'monday_bak' 指定一个用户定义备份的标签。如果没有指定,那么RMAN指定一个使用日期和时间的默认标签

    举例说明:

    RMAN> BACKUP FORMAT='AL_%d/%t/%s/%p' ARCHIVELOG LIKE '%arc_dest%';

    RMAN> BACKUP TAG 'weekly_full_db_bkup' DATABASE MAXSETSIZE 10M;

    RMAN> BACKUP COPIES 2 DEVICE TYPE sbt BACKUPSET ALL;

    Incremental Backups(增量备份)

    如果使用增量备份,RMAN将建立数据库的增量备份(incremental backups)。增量备份记录数据库中每一个数据块的自上次增量备份后的改变。但增量备份的开始点必须是0级增量备份。(level 0 incremental backup),即备份数据库中所有的块。然后开始日常的级别1(Level 1)的增量备份,只是记录自上次增量备份的数据块改变。该备份包括了累计(cumulative)(自上次0级备份后的所有数据块改变)和改变(differential)(自上次增量备份后的数据块改变,不管是0级还是1级备份)增量备份通常更小更快的建立全库备份。并且从一个增量备份中恢复数据库快于单独使用日志(redo logs)的方法.只要增量备份可用,RMAN就会在恢复中使用。

    备份的增量修改(Incrementally Updated Backups

    所谓备份的增量修改(incrementally updated backups)允许更多日常的可用增量备份。将一级增量备份前滚应于之前的0级别备份。这样就会产生包含一级增量备份的0级备份。使用这个修改的0级备份进行恢复会更快。

    确认备份(Validating Backups

    确认备份通过确实当前数据库的文件是否存在,文件位置,物理空间剩余和逻辑错误,来确认备份是否可用。

    RMAN> BACKUP VALIDATE DATABASE ARCHIVELOG ALL;

    恢复数据库文件

    回复(Restoring)即是从恢复操作中选择需要的备份。恢复(Recovery)是将日志和增量备份的改变应用到数据文件,使得数据文件恢复到希望的SCN号或者是指定时间点上。

    恢复整个数据库

    使用RESTORE DATABASE和RECOVER DATABASE命令恢复整个数据库

    RMAN> STARTUP FORCE MOUNT;

    RMAN> RESTORE DATABASE;

    RMAN> RECOVER DATABASE;

    RMAN> ALTER DATABASE OPEN;

    注意:当恢复整个数据库时,数据库必须不能处于打开(open)状态。

    恢复当前表空间

    当数据库打开时,使用RESTORE TABLESPACE和RECOVER TABLESPACE恢复个别表空间。首先让需要恢复的表空间下线(offline),然后在恢复(restore和recover)表空间。

    下例恢复users表空间:

    RMAN> SQL 'ALTER TABLESPACE users OFFLINE';

    RMAN> RESTORE TABLESPACE users;

    RMAN> RECOVER TABLESPACE users;

    RMAN> SQL 'ALTER TABLESPACE users ONLINE';

    恢复当前数据文件

    当数据库打开时,使用RESTORE DATAFILEheRECOVER DATAFILE命令恢复指定数据文件。首先将需要恢复的文件下线,然后在恢复(restore和recover)然后开始恢复数据文件。

    下例恢复数据文件7:

    RMAN> SQL 'ALTER DATABASE DATAFILE 7 OFFLINE';

    RMAN> RESTORE DATAFILE 7;

    RMAN> RECOVER DATAFILE 7;

    RMAN> SQL 'ALTER DATABASE DATAFILE 7 ONLINE';

    恢复个别数据块

    RMAN可以恢复数据文件中的个别块。当RMAN执行完整的需要备份的文件扫描后,任何损毁的块信息都会出现在V$DATABASE_BLOCK_CORRUPTION视图中。损毁信息通常会在告警日志(alert logs),跟踪文件和查询SQL结果中出现。

    下例使用BLOCKRECOVER修正所有的坏块:

    RMAN> BLOCKRECOVER CORRUPTION LIST;

    还可以恢复指定的数据块,如下例:

    RMAN> BLOCKRECOVER DATAFILE 7 BLOCK 233, 235 DATAFILE 4 BLOCK 101;

    确认恢复(Validating Restores

    使用RESTORE... VALIDATE操作确认恢复(restore)操作可以成功执行。

    RMAN> RESTORE DATABASE VALIDATE;

    RMAN操作报告

    RMAN的LIST和REPORT命令可以产生基于RMAN repository的多种报告。

    Backups列表

    使用LIST BACKUP和LIST COPY命令显示repository中备份和数据文件拷贝的信息。

    RMAN> LIST BACKUP OF DATABASE;

    RMAN> LIST COPY OF DATAFILE 1, 2, 3;

    RMAN> LIST BACKUP OF ARCHIVELOG FROM SEQUENCE 1437;

    RMAN> LIST CONTROLFILECOPY "/tmp/cf.cpy";

    RMAN> LIST BACKUPSET OF DATAFILE 1;

    利用特定参数,可以控制LIST命令的信息输出

    BY BACKUP:显示数据库的备份信息。(backup set 的输出信息。这是默认的表达方式.)

    BY FILE:显示备份的文件信息(显示已完成备份文件的的备份)

    SUMMARY:显示备份摘要。(显示摘要信息,默认情况下,输出的选项是VERBOSE.)

    附加选项:

    EXPIRED:

    LIST EXPIRED COPY;(显示在RMAN repository中记录的备份,但是在使用命令CROSSCHECK 已经不会出现在磁盘指定位置或者磁带上的备份。这样的备份已被RMAN删除)

    RECOVERABLE:

    LIST BACKUP RECOVERABLE;(列出可用的数据文件备份或者拷贝,并且可以被当前数据库在恢复(restored and recovered)时可用。)

    报告数据库文件和备份

    REPORT命令可以进行比LIST更多的复杂分析。

    NEED BACKUP:

    REPORT NEED BACKUP DATABASE;(显示在当前保持策略下那些文件需要备份.)

    OBSOLETE:

    REPORT OBSOLETE;( 显示在当前保持策略下已经过时的备份. )

    UNRECOVERABLE:

    REPORT UNRECOVERABLE;(显示自上次备份后,所有数据文件中被执行不可恢复(unrecoverable)操作的对象.)

    SCHEMA:

    REPORT SCHEMA;(报告当前在数据库中此时(默认)的表空间和数据文件.)

    通过V$ Views 监控RMAN

    RMAN作业执行程度和也完成的作业存储在V$RMAN_STATUS中. V$RMAN_OUTPUT保存RMAN作业的文字输出

    当一个RMAN作业工作时,使用下例sql链接显示作业对应的channel:

    SQL> SELECT s.SID, p.SPID, s.CLIENT_INFO

    FROM V$PROCESS p, V$SESSION s

    WHERE p.ADDR = s.PADDR AND CLIENT_INFO LIKE 'rman%';

    下例计算RMAN作业工作程度

    SQL> SELECT SID, SERIAL#, CONTEXT, SOFAR, TOTALWORK,

    ROUND(SOFAR/TOTALWORK*100,2) "% COMPLETE"

    FROM V$SESSION_LONGOPS

    WHERE OPNAME LIKE 'RMAN%' AND OPNAME NOT LIKE '%aggregate%'

    AND TOTALWORK != 0 AND SOFAR <> TOTALWORK;

    管理RMAN Repository

    RMAN repository 的原数据(metadata)总是存储在目标数据库的控制文件中。同时也可在另外的数据库中建立recovery catalog存储RMAN的所有记录。

    管理Control File记录

    在参数文件中设置CONTROL_FILE_RECORD_KEEP_TIME = number_of_days_to_keep参数决定记录保持的时间长度。

    多向检查备份(Crosschecking Backups)

    CROSSCHECK命令检查在repository中RMAN备份和拷贝中的文件是否仍旧可读

    RMAN> CROSSCHECK BACKUP; # 检查RMAN在配置设备上的备份

    RMAN> CROSSCHECK COPY; # 检查RMAN在配置设备上的镜像拷贝

    如果备份的存储没有配置介质管理和磁带管道,就必须在CROSSCHECK和DELETE前在磁带设备上分配一个维护管道

    RMAN> ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE sbt;

    RMAN> CROSSCHECK BACKUP;

    删除通过RMAN建立的备份

    通过使用DELETE命令,在磁盘和磁带设备上删除RMAN建立的备份和拷贝,标致在控制文件中的对象为删除,并移除在recovery catalog中的记录(如果使用了catalog)。

    RMAN> DELETE BACKUPSET 101, 102, 103;

    RMAN> DELETE CONTROLFILECOPY '/tmp/cf.cpy';

    RMAN> DELETE NOPROMPT ARCHIVELOG UNTIL SEQUENCE = 7300;

    RMAN> DELETE BACKUP OF SPFILE TABLESPACE users DEVICE TYPE sbt;

    RMAN> DELETE BACKUP OF DATABASE LIKE '/tmp%'; # pattern match

    RMAN> DELETE ARCHIVELOG ALL BACKED UP 2 TIMES TO DEVICE TYPE sbt;

    下列有用的DELETE命令选项:

    EXPIRED:

    DELETE EXPIRED;(删除通过使用CROSSCHECK 表示的过期(EXPIRED)备份或者拷贝)

    OBSOLETE:

    DELETE OBSOLETE;(删除基于保持策略的过时备份和拷贝.)

    NOPROMPT:

    DELETE NOPROMPT OBSOLETE;(对于需要删除的文件不需提示直接删除)

    编目和反编目备份和拷贝(Cataloging and Uncataloging Backups and Copies)

    CATALOG命令增加对于RMAN可用的备份信息到RMAN repository中。此命令是除RMAN外记录使用工具建立备份的信息,例如使用操作系统工具拷贝的数据文件镜像,如果你有使用RMAN建立备份但是在RMAN repository不再可显示,就可以使用这个命令使得RMAN可以使用这些备份做备份和恢复操作。

    RMAN> CATALOG DATAFILECOPY '/backup/users01.bak'; # 拷贝由系统命令CP产生的

    RMAN> CATALOG LIKE '/backup';

    如果使用操作系统命令,手工删除了备份,可以使用CHANGE ... UNCATALOG语句可以将RMAN repository 中的信息移除。

    RMAN> CHANGE CONTROLFILECOPY '/tmp/cf.cpy' UNCATALOG;

    RMAN> CHANGE BACKUPSET 121,122,127,203,300 UNCATALOG;

    重复执行任务: RMAN和脚本

    RMAN支持使用被存储的脚本和命令文件来帮助管理重复执行的任务。RMAN RUN命令提供了可控脚本。.

    使用命令文件

    一个命令文件是在客户端包含RMAN命令的文本文件。

    RMAN> @/my_dir/my_command_file.txt # runs specified command file

    任何扩展名的文件都可被使用,通过RMAN来调用命令脚本,如下

    % rman @/my_dir/my_command_file.txt

    可控脚本:RUN命令

    RUN命令可以使用一组一系列的RMAN命令。如果一个命令失败,在运行块中剩余的命令将不会被执行。

    RUN {

    BACKUP ARCHIVELOG ALL DELETE ALL INPUT;

    BACKUP INCREMENTAL LEVEL 0 TAG mon_bkup DATABASE;

    }

    如果一个或更多归档日志的备份失败,RMAN将继续备份所有的可被备份的归档日志,因为这些任务是由一个BACKUP命令所引发的。但是在BACKUP ARCHIVELOG后的BACKUP INCREMENTAL就不会被执行。命令SET, SWITCH DATAFILE,和ALLOCATE CHANNEL都可被使用在RUN的命令块中。 并且管道配置和其他的由CONFIGURE命令配置的参数在命令块中运行时被忽略

    备份和恢复相关的视图

    下列信息描述了可访问RMAN repository信息的视图。

    如果存储在控制文件中,查询的视图就使用V$开头的视图 如果使用的是Recovery Catalog,使用 RC_开头的视图

    1.V$ARCHIVED_LOG(RC_ARCHIVED_LOG):Archived and unarchived redo logs

    2.V$BACKUP_DATAFILE(RC_BACKUP_CONTROLFILE):Control files in backup sets

    3.V$BACKUP_CORRUPTION(RC_BACKUP_CORRUPTION):Corrupt block ranges in datafile backups

    4.V$BACKUP_DATAFILE(RC_BACKUP_DATAFILE):Datafiles in backup sets

    5.V$BACKUP_FILES(RC_BACKUP_FILES):RMAN backups and copies in the repository.

    6.V$BACKUP_PIECE(RC_BACKUP_PIECE):Backup pieces

    7.V$BACKUP_REDOLOG(RC_BACKUP_REDOLOG):Archived logs in backups

    8.V$BACKUP_SET(RC_BACKUP_SET):Backup sets

    9.V$BACKUP_SPFILE(RC_BACKUP_SPFILE):Server parameter files in backup sets

    10.V$DATAFILE_COPY(RC_CONTROLFILE_COPY):Control file copies on disk

    11.V$COPY_CORRUPTION(RC_COPY_CORRUPTION):Information about datafile copy corruptions

    12.V$DATABASE(RC_DATABASE):Databases registered in the recovery catalog (RC_DATABASE) or information about the currently mounted database(V$DATABASE)

    13.V$DATABASE_BLOCK_CORRUPTION(RC_DATABASE_BLOCK_CORRUPTION):Database blocks marked as corrupt in the most recent RMAN backup or copy

    14.V$DATABASE_INCARNATION(RC_DATABASE_INCARNATION):All database incarnations registered in the catalog

    15.V$DATAFILE(RC_DATAFILE):All datafiles registered in the recovery catalog

    16.V$DATAFILE_COPY(RC_DATAFILE_COPY):Datafile image copies

    17.V$LOG_HISTORY(RC_LOG_HISTORY)Historical information about online redo logs

    18.V$OFFLINE_RANGE(RC_OFFLINE_RANGE):Offline ranges for datafiles

    19.V$PROXY_ARCHIVEDLOG(RC_PROXY_ARCHIVEDLOG):Archived log backups created by proxy copy

    20.V$PROXY_CONTROLFILE(RC_PROXY_CONTROLFILE):Control file backups created by proxy copy

    21.V$PROXY_DATAFILE(RC_PROXY_DATAFILE):Datafile backups created by proxy copy

    22.V$LOG and V$LOGFILE(RC_REDO_LOG):Online redo logs for all incarnations of the database since the last catalog resynchronization

    23.V$THREAD(RC_REDO_THREAD):All redo threads for all incarnations of the database since the last catalog resynchronization

    24.n/a(RC_RESYNC):Recovery catalog resynchronizations

    25.V$RMAN_CONFIGURATION(RC_RMAN_CONFIGURATION):RMAN persistent configuration settings

    26.V$TABLESPACE(RC_TABLESPACE):All tablespaces registered in the recovery catalog, all dropped tablespaces, and tablespaces that belong to old incarnations

  • 相关阅读:
    20180604_Myeclipse下配置SVN报错问题 svn
    20180603_升级Win10后,远程连接桌面连接,出现身份验证错误!
    20180603_navicat 连接sqlserver提示要安装 sql server native client
    VB.net程序实现分页
    多线程Demo
    多线程Demo VB.net
    SQLServer数据库子结构
    SQLServer数据库常用命令
    传播路径图调查2013年初
    拾遗
  • 原文地址:https://www.cnblogs.com/lijunjie/p/1836517.html
Copyright © 2020-2023  润新知