• 列出创建副本数据库的目的
• 选择用于复制数据库的方法
• 使用RMAN 复制数据库
• 使用RMAN 备份复制数据库
• 基于正在运行的实例复制数据库
  • 使用副本数据库
• 使用副本数据库可执行以下任务:
– 测试备份和恢复过程
– 测试升级到新版本的Oracle数据库

– 测试应用程序的变化对数据库性能的影响
– 通过创建导出文件并将对象导入生产数据库来恢复对象
• 创建副本数据库:
– 使用RMAN 的DUPLICATE命令
– 在同一主机上或在不同的主机上
– 包含与源相同的内容或源的子集
– 对于基于备份的复制,是通过辅助通道执行的
– 对于活动的数据库复制,是通过目标通道执行的

使用副本数据库
副本数据库是你的目标数据库的副本,它具有一个新的唯一数据库标识符(DBID)。通过
独立运行副本数据库(不依赖目标数据库)可执行以下任务:
• 测试备份和恢复过程。
•测试升级到新版本的Oracle数据库。

•测试应用程序的变化对数据库性能的影响。

• 创建包含副本数据库中对象的导出文件并将这些对象导入生产数据库,恢复不小心从
目标数据库中删除的对象。尽管你可能发现闪回查询、闪回删除和闪回表是用来恢复
对象的更简单快速的解决方案。
创建副本数据库:
• 可以使用RMAN 的DUPLICATE命令在同一主机上或不同的主机上创建副本数据库。
• 副本数据库可包含与源数据库相同的内容或仅包含源数据库的子集
• 复制的主要工作是由
辅助通道执行的。对于基于备份的复制,这些通道对应于目标主
机上的辅助实例上的服务器会话。
• 对于活动数据库复制,由
目标通道执行将数据文件副本推入到辅助实例的工作。

  • 选择数据库复制方法
选择复制数据库的方法 - 始终连接到辅助实例:

可将源数据库复制到位于同一计算机或其它计算机上的目标数据库。与副本数据库关联的
数据库实例称为辅助实例。所有复制方法都需要连接到辅助实例。此图表显示了以下数据
库复制方法:
• 从活动数据库,连接到目标实例和辅助实例
• 从备份,连接到目标实例和辅助实例
• 从备份,连接到辅助实例,不连接到目标实例,但具有恢复目录连接
• 从备份,连接到辅助实例,不连接到目标实例和恢复目录

  • 复制活动数据库
• 使用网络(不需要备份)
• 包括自定义SPFILE
• 通过Oracle Enterprise Manager 或RMAN 命令行

复制活动数据库
通过使用Oracle Enterprise Manager 或RMAN DUPLICATE命令的FROM ACTIVE 
DATABASE子句,可以指示源数据库直接将映像副本和归档日志副本复制到辅助实例。
此操作不需要使用备份。RMAN 作为TARGET连接到源数据库实例并作为AUXILIARY
连接到辅助实例。
通过实例间的网络连接将数据库文件从源数据库复制到目标数据库或辅助实例。RMAN 
随后使用“内存脚本”(仅包含在内存中)完成恢复并打开数据库。

  • 通过目标连接复制数据库
• 连接到目标数据库(源数据库)
• 连接到辅助实例
• 可选,连接到恢复目录(或使用目标控制文件)

通过目标连接复制数据库
当通过目标数据库连接复制数据库时,RMAN 可从目标数据库控制文件或从恢复目录获
取有关备份的元数据。
此图表描述了通过目标连接执行的
基于备份的复制。RMAN 连接到源数据库实例和辅助
实例。此外,RMAN 还可以连接到恢复目录数据库(图中未显示)。目标主机必须具有
对创建副本数据库所需的RMAN 备份的访问权限。 

  • 在具有恢复目录但没有目标连接的情况下复制数据库
• 连接到备份元数据的恢复目录
• 连接到辅助实例,该实例必须具有对RMAN 备份的
访问权限

在没有目标连接的情况下复制数据库
如果在复制数据库时没有连接到目标数据库,但具有恢复目录,则RMAN 将使用恢复目
录获取有关备份的元数据。
此图表描述了没有目标连接时基于备份的复制。RMAN 连接到恢复目录数据库实例和辅
助实例。目标主机必须具有对创建副本数据库所需的RMAN 备份的访问权限。

  • 在没有恢复目录或目标连接的情况下复制数据库
连接到辅助实例,该实例必须具有对磁盘备份位置的访问
权限

在没有恢复目录或目标连接的情况下复制数据库
如果在没有目标数据库连接且没有恢复目录的情况下复制数据库,则RMAN 将使用所有
必需的备份和副本所在的备份位置。
此图表描述了在没有连接到目标数据库实例或恢复目录数据库实例的情况下执行的基于
备份的复制。包含复制所需的所有备份或副本的磁盘备份位置必须可供目标主机使用。

  • 创建基于备份的副本数据库
1. 创建辅助实例的Oracle 口令文件。
2. 建立到辅助实例的Oracle Net 连接。
3. 创建辅助实例的初始化参数文件。
4. 在NOMOUNT模式下启动辅助实例。
5. 装载或打开目标数据库。
6. 确保备份和归档重做日志文件可用。
7. 根据需要分配辅助通道。
8. 执行DUPLICATE命令。


了解以上基本步骤和RMAN 数据库复制过程非常重要。
如果你使用的是Oracle Enterprise Manager 界面,向导可帮助你执行大部分步骤。如果你
使用命令行界面创建副本数据库,则需要手动执行这些步骤。你还可将EM 界面用作测试
或示例,并以输出日志为基础编写自己的数据库复制脚本。
本示例中概括了创建副本数据库的基本步骤。

  • 创建辅助实例的初始化参数文件
请按如下方式指定参数:
• DB_NAME
– 如果副本数据库和目标数据库在同一Oracle 主目录中,
则它们的名称必须不同。
– 在DUPLICATE命令中使用相同的值。
• DB_BLOCK_SIZE
– 指定的值应与为目标数据库设置的值相同。

创建辅助实例的初始化参数文件
你必须为辅助实例创建文本初始化参数文件。文本初始化参数文件驻留的主机必须与用来
执行DUPLICATE命令的RMAN 客户机驻留的主机是同一主机。
请注意下列每个参数的要求:
• DB_NAME:如果目标数据库和副本数据库在同一Oracle 主目录中,则必须将
DB_NAME设置为不同的名称。如果它们在不同的Oracle 主目录中,则必须确保副本
数据库名称不同于其Oracle 主目录中的其它名称。请确保执行DUPLICATE命令时使
用的数据库名称与为此参数设置的名称相同。
• DB_BLOCK_SIZE:辅助数据库的块大小必须与目标数据库的块大小匹配。辅助数据
库初始化参数文件中指定的值必须与目标数据库初始化参数文件中设置的值相同。如
果没有在目标数据库的初始化参数文件中设置此参数,在辅助实例初始化参数文件中
也不要设置它。
另外,请务必验证指定路径名的所有初始化参数的设置。请确认在副本数据库主机上可以
访问所有指定的路径。

  • 为目标指定新名称
可用的方法:
• SET NEWNAME命令
• CONFIGURE AUXNAME命令(对恢复集数据文件已弃用)
• 在DUPLICATE命令中指定DB_FILE_NAME_CONVERT
参数
为目标指定新名称
可以使用下列方法指定数据文件的新名称:
• 将SET NEWNAME FOR DATAFILE命令包含在RUN块中来指定数据文件的新名称。
• 使用CONFIGURE AUXNAME命令。CONFIGURE AUXNAME是SET NEWNAME的
一种替代方法。区别是首次配置辅助名称后,其它DUPLICATE命令将重用所配置的
设置。相对而言,每次执行DUPLICATE命令时必须重新发出SET NEWNAME。
注:对于恢复集数据文件,使用SET NEWNAME替换CONFIGURE AUXNAME。
• 随DUPLICATE命令指定DB_FILE_NAME_CONVERT参数。

  • 使用SET NEWNAME子句
• SET NEWNAME子句用于为数据库或命名表空间中的所
有文件指定默认名称格式。
• 默认名称用于RUN块中的DUPLICATE、RESTORE和
SWITCH命令。
• 它使得你可以通过单个命令设置文件名称,而无需分别
设置每个文件名称。
SET NEWNAME FOR
 
DATABASE
TO {NEW|'formatSpec'};

使用SET NEWNAME子句
你可以使用SET NEWNAME为命名表空间中的所有数据文件和数据库中的所有数据文件
指定默认名称格式。
SET NEWNAME命令的优先顺序如下所示:
1.SET NEWNAME FOR DATAFILE和SET NEWNAME FOR TEMPFILE
2.SET NEWNAME FOR TABLESPACE
3.SET NEWNAME FOR DATABASE
示例:
RUN
{
SET NEWNAME FOR DATABASE TO '/u01/app/oracle/oradata/dupldb/%b';
DUPLICATE TARGET DATABASE TO dupldb
LOGFILE
GROUP 1 ('/u01/app/oracle/oradata/dupldb/redo01a.log',
'/u01/app/oracle/oradata/dupldb/redo01b.log') SIZE 50M REUSE,
GROUP 2 ('/u01/app/oracle/oradata/dupldb/redo02a.log',
'/u01/app/oracle/oradata/dupldb/redo02b.log') SIZE 50M REUSE,
GROUP 3 ('/u01/app/oracle/oradata/dupldb/redo03a.log',
'/u01/app/oracle/oradata/dupldb/redo03b.log') SIZE 50M REUSE;
}

  • SET NEWNAME的替代变量
SET NEWNAME的替代变量
发出SET NEWNAME FOR DATABASE或SET NEWNAME FOR TABLESPACE时,必须
在TO <filename>子句中指定替代变量以避免名称冲突。请至少指定以下替代变量中
的一种:%b、%f和%U。%I和%N是可选变量。

  • 指定用于文件命名的参数
或者指定下列参数来显式控制辅助数据库的文件命名:
• CONTROL_FILES
• DB_FILE_NAME_CONVERT
• LOG_FILE_NAME_CONVERT
CONTROL_FILES='/u01/app/oracle/oradata/aux/control01.ctl', 
'/u01/app/oracle/oradata/aux/control02.ctl',
'/u01/app/oracle/oradata/aux/control03.ctl'
DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/orcl',
'/u01/app/oracle/oradata/aux'
LOG_FILE_NAME_CONVERT='/u01/app/oracle/oradata/orcl',
'/u01/app/oracle/oradata/aux'

指定用于文件命名的参数
执行DUPLICATE命令时,RMAN 会生成必需的数据库文件的名称。通过在辅助实例初
始化参数文件中指定下列初始化参数,可以控制这些文件的命名:
• CONTROL_FILES:可以使用此参数指定控制文件的名称。如果未使用此参数设置名
称,Oracle Server 会在默认控制目标中创建Oracle 管理的控制文件。有关具体的信息,

• DB_FILE_NAME_CONVERT:此参数用于指定辅助数据库的数据文件名。其格式为
DB_FILE_NAME_CONVERT = 'string1', 'string2',其中string1是目标
数据库文件名的模式,string2是辅助数据库文件名的模式。还可以指定
DB_FILE_NAME_CONVERT参数作为DUPLICATE DATABASE命令的选项。
• LOG_FILE_NAME_CONVERT:此参数用于指定辅助数据库的重做日志文件名。其格
式为LOG_FILE_NAME_CONVERT = 'string1', 'string2',其中string1
是目标数据库文件名的模式,string2是辅助数据库文件名的模式。还可以使用
DUPLICATE DATABASE命令的LOGFILE子句来指定重做日志文件名。

除了使用初始化参数控制文件命名之外,还可以使用下列方法重命名重做日志文件:
• 使用DUPLICATE命令的LOGFILE子句。
• 设置Oracle Managed Files 的初始化参数:DB_CREATE_FILE_DEST、
DB_CREATE_ONLINE_DEST_n或DB_RECOVERY_FILE_DEST。

  • 在NOMOUNT模式下启动实例
• 在NOMOUNT模式下启动辅助实例。
• 根据用来启动实例的文本初始化参数文件创建服务器
参数文件(SPFILE)。
SQL> startup nomount pfile='$HOME/auxinstance/initAUX.ora'
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 92276304 bytes
Database Buffers 188743680 bytes
Redo Buffers 2973696 bytes
SQL> create spfile
2 from pfile='$HOME/auxinstance/initAUX.ora';
File created.

在NOMOUNT模式下启动实例
创建文本初始化参数文件后,通过调用SQL*Plus 可在NOMOUNT模式下启动辅助实例。
调用SQL*Plus 后,就会根据文本初始化参数文件创建服务器参数文件(SPFILE)。可以在
启动实例前后执行CREATE SPFILE。应该在默认位置创建SPFILE,这样不需要在
DUPLICATE命令中指定PFILE选项。RMAN 在复制过程中会关闭辅助实例,然后再重
新启动它。因此,如果不使用SPFILE,就必须指定PFILE选项。 

  • 确保备份和归档重做日志文件可用
• 在副本主机上必须能访问所有目标数据库数据文件的
备份。
• 备份可以是完全备份和增量备份的组合。
• 在副本主机上必须能访问恢复副本数据库所需的归档
重做日志文件。
• 归档重做日志文件可以是:
– 介质管理器上的备份
– 映像副本
– 实际的归档重做日志文件

确保备份和归档重做日志文件可用
在副本主机上必须能访问还原数据文件所需的备份。你并不需要完整的数据库备份。
RMAN 在复制过程中可使用单个数据文件的完全备份和增量备份的组合。
另外,还必须能访问将副本数据库恢复到期望的时间点所需的归档重做日志。这些归档重
做日志文件可以是备份、映像副本或实际的归档重做日志。备份或副本可传送到副本数据
库节点的本地磁盘上,或者通过网络文件系统(NFS) 之类的某种方式通过网络进行装载。 

  • 分配辅助通道
• 辅助通道指定RMAN 和辅助数据库实例之间的连接。
• 如果未配置自动通道,请分配辅助通道:
– 启动RMAN 时连接到目标数据库实例、辅助实例和恢复
目录(如果适用)。
– 在RUN块中分配至少一个辅助通道。

$ rman target sys/oracle_4U@trgt auxiliary 
sys/oracle_4U@auxdb
RMAN> RUN
{
ALLOCATE AUXILIARY CHANNEL
 aux1 DEVICE TYPE DISK;
ALLOCATE AUXILIARY CHANNEL aux2 DEVICE TYPE DISK;
DUPLICATE TARGET DATABASE to auxdb; . . .

分配辅助通道
如果未配置自动通道,请在发出DUPLICATE命令之前,至少手动分配一个辅助通道。
ALLOCATE AUXILIARY CHANNEL命令必须与DUPLICATE命令位于同一RUN块中。
ALLOCATE AUXILIARY CHANNEL命令中指定的通道类型必须与目标数据库备份所在
的介质相匹配。
• 如果备份驻留在磁盘上,则可分配多个通道以减少复制过程所花费的时间。
• 对于磁带备份,可以指定与可用设备数相对应的通道数。
必须使用NOMOUNT选项启动辅助实例,且目标数据库必须已装载或已打开。

  • 了解RMAN 复制操作
当你执行DUPLICATE命令时,RMAN 会执行下列操作:
1A.为辅助实例创建服务器参数文件(对于活动数
据库和使用目标连接执行的基本备份的复制),或:
1B.从备份中还原(对于备用数据库和没有目标连接的基于
备份的复制)
2. 装载备份控制文件
3. 对于基于备份的复制:选择用于将数据文件还原到辅助
实例的备份
4. 将目标数据文件还原到副本数据库
5. 使用所有可用的增量备份和归档重做日志文件执行不完
全恢复
6. 关闭辅助实例并以NOMOUNT模式重新启动它
7. 新建一个控制文件,然后控制文件在数据文件中创建并
存储新的DBID
8. 通过RESETLOGS选项打开副本数据库
9. 为副本数据库创建联机重做日志文件
注:数据库复制过程在重新执行时尝试从故障点继续。


了解RMAN 复制操作
执行DUPLICATE命令时,RMAN 将执行示例中列出的操作。
1A.如果满足以下条件,RMAN 将为辅助实例创建默认服务器参数文件:
- 复制不涉及备用数据库。
- 不对服务器参数文件进行复制。
- 辅助实例不是使用服务器参数文件启动的。
1B. RMAN 从备份中还原-对于备用数据库和没有目标连接的基于备份的复制,始终
如此。
2. RMAN 从活动数据库装载已还原或复制的备份控制文件。
3.对于基于备份的复制:RMAN 使用RMAN 资料档案库选择用于将数据文件还原到辅
助实例的备份。
4. RMAN 还原并复制数据文件副本。
5. RMAN 使用增量备份和归档重做日志文件将数据文件恢复到非当前时间点。RMAN 
必须执行数据库时间点恢复,即使不为复制提供显式时间点也是如此。因为源数据库
中的联机重做日志文件未备份且无法应用于副本数据库,所以时间点恢复是必需的。
副本数据库的最远恢复点是由源数据库归档的最近重做日志文件。
6. RMAN 关闭数据库实例并以NOMOUNT 模式重新启动它。
7. RMAN 新建一个控制文件,该控制文件然后在副本数据库的数据文件中创建并存储
新的唯一数据库标识符DBID。
8. RMAN 通过RESETLOGS选项打开副本数据库。
9. RMAN 为副本数据库创建联机重做日志文件。
注:如果DUPLICATE DATABASE命令失败,可重新执行DUPLICATE DATABASE命令,
复制过程尝试从故障点继续执行。

  • 指定DUPLICATE命令的选项
可以在DUPLICATE命令中指定下列选项:
指定DUPLICATE命令的选项
在执行DUPLICATE命令时根据需要指定其它选项。
SKIP READONLY:用于排除只读表空间数据文件。
SKIP TABLESPACE:用于从目标数据库中排除表空间。不能排除SYSTEM表空间或包含
还原段或回退段的表空间。
TABLESPACE:用来包括目标数据库中的表空间。
NOFILENAMECHECK:用于防止RMAN 检查目标数据库数据文件是否与正在使用的副本
数据库数据文件同名。当目标数据库和副本数据库的数据文件和重做日志文件使用相同的
名称时,必须指定此选项。当创建副本数据库的主机具有与目标数据库主机一样的磁盘配
置、目录结构和文件名时,通常使用此选项。如果这种情况下未指定NOFILENAMECHECK,
RMAN 会返回错误。
OPEN RESTRICTED:用于在数据库打开之后自动启用RESTRICTED SESSION。

  • 使用其它DUPLICATE命令选项

使用其它DUPLICATE命令选项
Oracle Database 11g发行版2 中引入了DUPLICATE命令的以下其它选项:
• NOREDO:NOREDO选项用于向RMAN 发出信号,指出在复制操作的恢复阶段不应用
重做日志。在下列情况下应指定此选项:在备份时数据库处于NOARCHIVELOG模式,
或者在复制操作过程中归档重做日志文件不可用。如果当前处于ARCHIVELOG模式
的数据库正被复制到它在NOARCHIVELOG模式时的一个时间点,使用此选项非常
合适。
如果正在执行无目标DUPLICATE,且该数据库处于NOARCHIVELOG模式,则必须
使用此选项将数据库模式告知RMAN。如果未连接到目标数据库,RMAN 将无法确
定模式。
• UNDO TABLESPACE:在非整体数据库复制过程中,RMAN 会检查所复制的所有表
空间以确认不存在属于SYS用户的对象。SYSTEM、SYSAUX和还原段表空间不在此
检查的范围内。但是,如果复制过程中未打开目标数据库,且未使用恢复目录,
RMAN 将无法获取还原表空间的名称。所以必须使用UNDO TABLESPACE选项提供
还原段表空间的名称。

  • 使用EM 克隆数据库
使用EM 克隆数据库
还可以使用Oracle Enterprise Manager (EM) 创建副本(克隆)数据库。从EM 主页,导航
到Data Movement > Clone database(数据移动> 克隆数据库)。屏幕快照将显示“Clone 
Database: Source Type(克隆数据库: 源类型)”页面。
可以选择下列位置来执行克隆操作:
• 正在运行的实例:可以指定克隆一个正在运行的实例。
• 登台区:在源主机和目标主机上指定的磁盘区。在此处创建并存储备份,然后将其放
入目标登台区,并对该目标主机进行读取以创建克隆数据库。
• 现有备份:如果已有备份反映了要克隆的数据库所处的状态,则可以使用该位置。


  • 小结

• 列出创建副本数据库的目的
• 选择用于复制数据库的方法
• 使用RMAN 复制数据库
• 使用RMAN 备份复制数据库
• 基于正在运行的实例复制数据库

Oracle DB 复制数据库的更多相关文章

  1. Oracle DB 管理数据库的空间

    • 描述4 KB 扇区磁盘的概念及使用 • 使用可移动表空间 • 描述可移动表空间的概念 数据库存储 数据库存储 数据库包括物理结构和逻辑结构.由于物理结构和逻辑结构是分开的,因此管理数据的物 理存储 ...

  2. oracle RMAN复制数据库

    列出创建副本数据库的目的 • 选择用于复制数据库的方法 • 使用RMAN 复制数据库 • 使用RMAN 备份复制数据库 • 基于正在运行的实例复制数据库   使用副本数据库 • 使用副本数据库可执行以 ...

  3. Oracle DB 使用调度程序自动执行任务

    • 使用调度程序来简化管理任务 • 创建作业.程序和调度 • 监视作业执行 • 使用基于时间或基于事件的调度来执行调度程序作业 • 描述窗口.窗口组.作业类和使用者组的用途 • 使用电子邮件通知 • ...

  4. Oracle 11gR2使用RMAN duplicate复制数据库

    11g的RMAN duplicate 个人感觉比10g的先进了很多,10g需在rman备份的基础上进行复制,使用RMAN duplicate创建一个数据完全相同但DBID不同的数据库.而11g的RMA ...

  5. Oracle 11gR2 使用RMAN Duplicate复制数据库

    Oracle 11gR2 使用RMAN Duplicate复制数据库     前言:     上周刚做完一个项目,用户要求RAC的数据库可以自己主动备份到另外一个单节点上,单节点可以正常拿起来就能用. ...

  6. 在silverlight中通过WCF连接ORACLE DB数据库(转)

    转自 http://hi.baidu.com/qianlihanse/item/458aa7c8d93d4e0cac092ff4 这不是我的原创,我也是上网学习的~ How to get data f ...

  7. ORACLE用户管理方式下备份数据和复制数据库

    首先要明确的是,oracle数据库的备份可以分为逻辑备份和物理备份.           逻辑备份的是通过数据导出对数据进行备份,主要方式有老式的IMP/EXP和数据泵灯方式.适合变化较少的数据库,而 ...

  8. ORACLE复制数据库【weber出品】

    一.概述 在公司中,我们会经常面临着一种情况.我们制定了对数据库的操作方案后,还不可以在真正的数据库上执行,需要在备用数据库进行测试,这个时候就需要备用数据上的数据和真正数据库的数据是一模一样的.我们 ...

  9. 使用RMAN创建复制数据库

    我的实验环境: - 源数据库A机: RHEL6.4 + Oracle 11.2.0.4 IP地址:192.168.99.159 db_name=oradb 数据库已正常运行 - 复制数据库B机: RH ...

随机推荐

  1. android intent 传递 二进制数据

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 实现序列化.

  2. POJ3450 Corporate Identity

    后缀数组. 解决多个字符串的最长公共子串. 采用对长度的二分,将子串按height分组,每次判断是否在每个字符串中都出现过. 复杂度O(NlogN) By:大奕哥 #include<cstrin ...

  3. HDU 5514 Frogs(容斥原理)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5514 [题目大意] m个石子围成一圈,标号为0~m-1,现在有n只青蛙,每只每次跳a[i]个石子, ...

  4. 【贪心+Treap】BZOJ1691-[Usaco2007 Dec]挑剔的美食家

    [题目大意] 有n头奶牛m种牧草,每种牧草有它的价格和鲜嫩度.每头奶牛要求它的牧草的鲜嫩度要不低于一个值,价格也不低于一个值.每种牧草只会被一头牛选择.问最少要多少钱? [思路] 显然的贪心,把奶牛和 ...

  5. bzoj 1776

    收获: 树上直径一定包含深度最深的点. 然后O(nlogn) 暴力. /************************************************************** P ...

  6. Java泛型应用总结

    一.泛型的引入原因 在操作集合的时候,之前方法的定义都是Object类型,向集合中添加对象,都自动向上转型,加入的元素可以是任何类型 但是,在取出元素的时候,通常想要使用对象的特有功能,就必须向下转型 ...

  7. Codeforces Beta Round #4 (Div. 2 Only) A. Watermelon 水题

    A. Watermelon 题目连接: http://www.codeforces.com/contest/4/problem/A Description One hot summer day Pet ...

  8. Backbone.js 的最佳应用场景有哪些?#zhihu#

    这段时间,想再次了解下backbone js的相关知识,就把一些认为不错的拿过来了: 新版的有道笔记 Web 版(http://note.youdao.com)也使用了 Backbone.就像其他答案 ...

  9. java 高并发 订单编号递增(解决方案)

    业务描述: 首先从数据中查找最近的一条订单数据,然后将之前的订单号码+1作为新的订单号码,插入到数据库当中.(需求不能改变) 当出现并发操作时,A从数据库中获取最近一条订单的订单号为N,这是A还没有完 ...

  10. ubuntu下从源码编译安装cherokee

    apt-get install automake autoconf libtool rrdtool libpam0g-dev libssl-dev libgeoip-dev libldap2-dev ...