快捷搜索:

用Oracle 10g在Windows/Unix服务器上创建物理后备数据

51CTO.com独家特稿Oracle 10g数据卫士是一个强大年夜切实着实保企业数据高可用、数据保护和劫难规复的对象,我已经应用网格节制台和SQL敕令在数据卫士/后备数据库上事情好几年了,我近来的经历是半年前为一个实验室信息治理系统(LIMS)使用数据卫士手动创建物理后备数据库,我天天都要掩护它,它事情得很好,我想在这里与其他DBA分享我的履历。

在这个例子中数据库的版本是10.2.0.3,主备数据库位于不合机械上,主数据库叫做PRIM,后备数据库叫做STAN,我应用了闪存规复区和OMF。

一、在你开始之前:

1、 确保主备数据库的操作系统和平台架构是相同的。

2、 在后备办事器上只安装Oracle数据库软件,不要例子数据库,假如必要补丁请利用,确保主备数据库的版本同等,Oracle home也要相同。

3、 在放入临盆情况之前,在测试情况中先测试一下后备数据库的创建。

二、在主数据库上:

1、启用主数据库的强制日志记录:

SQL> ALTER DATABASE FORCE LOGGING;

2、假如没有密码文件,先要创建它:

2.1)反省密码文件是否存在:

SQL> select * from v$pwfile_users;

2.2)假如不存在,就创建一个。

在windwos平台上:

$cd %ORACLE_HOME%\database

$orapwd file=pwdPRIM.ora password=xxxxxxxx force=y

(留意:用sys用户的密码调换这里的xxxxxxxx)

在Unix平台上:

$Cd $ORACLE_HOME/dbs

$Orapwd file=pwdPRIM.ora password=xxxxxxxx force=y

(留意:用sys用户的密码调换这里的xxxxxxxx)

3、设置设置设备摆设摆设备用重做日志

3.1)备用重做日志文件的大年夜小应与当前主数据库在线重做日志文件大年夜小匹配,应用下面的敕令找出在线重做日志文件的大年夜小:

SQL> select bytes from v$log;

BYTES

----------

52428800

52428800

52428800

3.2)应用下面的敕令确定你当前的日志文件组:

SQL> select group#, member from v$logfile;

3.3)创建备用重做日志文件组

我的主数据库原本有3个重做日志文件组,应用下面的敕令创建3个备用重做日志文件组:

SQL>ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 SIZE 50M;

SQL>ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 SIZE 50M;

SQL>ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 SIZE 50M;

3.4)应用下面的敕令反省日志组创建是否成功:

SQL>select * from v$standby_log;

4、 在主数据库上启用归档

假如你的主数据库没有事情在归档日志模式,请开启为归档日志模式:

SQL>shutdown immediate;

SQL>startup mount;

SQL>alter database archivelog;

SQL>alter database open;

SQL>archive log list;

5、 设置主数据库初始化参数

从办事器参数文件(spfile)创建一个文本初始化参数文件(pfile),添加新的主角色参数:

5.1)从spfile创建pfile

  在Windows平台上:

  SQL>create pfile=’\database\pfilePRIM.ora’ from spfile;

  (留意:用你的Oracle home路径调换‘’中的内容)

  在Unix平台上:

  SQL>create pfile=’/dbs/pfilePRIM.ora’ from spfile;

  (留意:用你的Oracle home路径调换‘’中的内容)

5.2)编辑pfilePRIM.ora文件,添加主备角色参数:(这里的路径来自Windows系统,Unix系统做相应的改动)

db_name=PRIM

db_unique_name=PRIM

LOG_ARCHIVE_CONFIG='DG_CONFIG=(PRIM,STAN)'

LOG_ARCHIVE_DEST_1=

'LOCATION=F:\Oracle\flash_recovery_area\PRIM\ARCHIVELOG

VALID_FOR=(ALL_LOGFILES,ALL_ROLES)

DB_UNIQUE_NAME=PRIM'

LOG_ARCHIVE_DEST_2=

'SERVICE=STAN LGWR ASYNC

VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)

DB_UNIQUE_NAME=STAN'

LOG_ARCHIVE_DEST_STATE_1=ENABLE

LOG_ARCHIVE_DEST_STATE_2=ENABLE

LOG_ARCHIVE_FORMAT=%t_%s_%r.arc

LOG_ARCHIVE_MAX_PROCESSES=30

remote_login_passwordfile='EXCLUSIVE'

FAL_SERVER=STAN

FAL_CLIENT=PRIM

STANDBY_FILE_MANAGEMENT=AUTO

# Specify the location of the standby DB datafiles followed by the primary location;

DB_FILE_NAME_CONVERT='E:\oracle\product\10.2.0\oradata\STAN\DATAFILE','

E:\oracle\product\10.2.0\oradata\PRIM\DATAFILE'

# Specify the location of the standby DB online redo log files followed

by the primary location LOG_FLE_NAME_CONVERT=’

E:\oracle\product\10.2.0\oradata\STAN\ONLINELOG’,’

E:\oracle\product\10.2.0\oradata\PRIM\ONLINELOG’,’

F:\Oracle\flash_recovery_area\STAN\ONLINELOG’,’

F:\Oracle\flash_recovery_area\PRIM\ONLINELOG’

6、 从pfile创建spfile,然后应用新的spfile重启主数据库

数据卫士必须应用spfile,创建spfile然后重启数据库:

在Windows平台上:

SQL> shutdown immediate;

SQL> startup nomount pfile=’\database\pfilePRIM.ora’;

SQL>create spfile from pfile=’\database\pfilePRIM.ora’;

--应用新创建的spfile启动主数据库

SQL>shutdown immediate;

SQL>Startup;

(留意:用你的Oracle home路径调换‘’中的内容)

在Unix平台上:

SQL> shutdown immediate;

SQL> startup nomount pfile=’/dbs/pfilePRIM.ora’;

SQL>create spfile from pfile=’/dbs/pfilePRIM.ora’;

--应用新创建的spfile启动主数据库

SQL>shutdown immediate;

SQL>Startup;

(留意:用你的Oracle home路径调换‘’中的内容)

三、在后备数据库上:

1、在后备数据库上创建主数据库数据文件的拷贝

在主数据库上:

SQL>shutdown immediate;

在后备数据库上(此时主数据库已经停掉落):

1.1) 创建寄放数据文件的目录,例如:在Windows上,E:\oracle\product\10.2.0\oradata\STAN\DATAFILE,在Unix上做对应的改动。

1.2) 拷贝数据文件和临时文件。

1.3) 为在线日志创建目录(多个),例如:在Windows上,E:\oracle\product\10.2.0\oradata\STAN\ONLINELOG和F:\Oracle\flash_recovery_area\STAN\ONLINELOG,在Unix上做对应的改动。

1.4) 拷贝在线日志。

2、为后备数据库创建节制文件

在主数据库上为后备数据库创建节制文件:

SQL>startup mount;

SQL>alter database create standby controlfile as ‘STAN.ctl;

SQL>ALTER DATABASE OPEN;

3、拷贝主数据库pfile文件到后备办事器,并重命名/编辑它

3.1)从主理事器拷贝pfilePRIM.ora文件到后备办事器,Windows平台就拷贝到Oracle home目录下的database文件夹,Unix平台就拷贝到Oracle home目录下的dbs目录。

3.2)将其重命名为pfileSTAN.ora,并做如下改动:(这里的路径来Windows平台,对付Unix平台请做响应改动)

*.audit_file_dest='E:\oracle\product\10.2.0\admin\STAN\adump'

*.background_dump_dest='E:\oracle\product\10.2.0\admin\STAN\bdump'

*.core_dump_dest='E:\oracle\product\10.2.0\admin\STAN\cdump'

*.user_dump_dest='E:\oracle\product\10.2.0\admin\STAN\udump'

*.compatible='10.2.0.3.0'

control_files='E:\ORACLE\PRODUCT\10.2.0\ORADATA\STAN\CONTROLFILE\STAN.CTL','

F:\ORACLE\FLASH_RECOVERY_AREA\STAN\CONTROLFILE\STAN.CTL'

db_name='PRIM'

db_unique_name=STAN

LOG_ARCHIVE_CONFIG=’DG_CONFIG=(PRIM,STAN)’

LOG_ARCHIVE_DEST_1=

‘LOCATION=F:\Oracle\flash_recovery_area\STAN\ARCHIVELOG

VALID_FOR=(ALL_LOGFILES,ALL_ROLES)

DB_UNIQUE_NAME=STAN’

LOG_ARCHIVE_DEST_2=

‘SERVICE=PRIM LGWR ASYNC

VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)

DB_UNIQUE_NAME=PRIM’

LOG_ARCHIVE_DEST_STATE_1=ENABLE

LOG_ARCHIVE_DEST_STATE_2=ENABLE

LOG_ARCHIVE_FORMAT=%t_%s_%r.arc

LOG_ARCHIVE_MAX_PROCESSES=30

FAL_SERVER=PRIM

FAL_CLIENT=STAN

remote_login_passwordfile='EXCLUSIVE'

# Specify the location of the primary DB datafiles followed by the standby location

DB_FILE_NAME_CONVERT=’E:\oracle\product\10.2.0\oradata\PRIM\DATAFILE’,’

E:\oracle\product\10.2.0\oradata\STAN\DATAFILE’

# Specify the location of the primary DB online redo log files followed

by the standby location

LOG_FILE_NAME_CONVERT=’E:\oracle\product\10.2.0\oradata\PRIM\ONLINELOG’,’

E:\oracle\product\10.2.0\oradata\STAN\ONLINELOG’,’

F:\Oracle\flash_recovery_area\PRIM\ONLINELOG’,’

F:\Oracle\flash_recovery_area\STAN\ONLINELOG’

STANDBY_FILE_MANAGEMENT=AUTO

(留意:这里并没有列出所有的参数条款)

4、在后备办事器上,为转储和日志归档目的地创建对应的目录:

创建目录adump,bdump,cdump,udump,并为归档日志目的地创建目录。

5、从主理事器拷贝后备节制文件STAN.ctl到后备目的地。

6、拷贝主密码文件到后备办事器,并重命名为pwdSTAN.ora。

在Windows平台上拷贝到\database文件夹,在Unix平台上拷贝到/dbs目录,然后重命名这个密码文件。

7、 在Windows上创建一个办事(可选的):

$oradim –NEW –SID STAN –STARTMODE manual

8、 设置设置设备摆设摆设主备数据库的 监听 器

8.1)在主系统上:应用Oracle Net Manager创建 监听 器PRIM和STAN,然后重启 监听

  $lsnrctl stop

$lsnrctl start

 8.2)在后备办事器上:应用Net Manager创建 监听 器PRIM和STAN,然后重启 监听

  $lsnrctl stop

$lsnrctl start

9、 创建Oracle收集办事名

9.1)在主系统上:应用Oracle Net Manager创建收集办事名PRIM和STAN,用tnsping反省这两个办事

  $tnsping PRIM

$tnsping STAN

10、 在后备办事器上,设置情况变量ORACLE_HOME和ORACLE_SID。

11、 启动后备数据库到nomount状态,孕育发生一个spfile文件。

在Windows平台:

SQL>startup nomount pfile=’\database\pfileSTAN.ora’;

SQL>create spfile from pfile=’\database\pfileSTAN.ora’;

应用新创建的spfile从新启动后备数据库:

SQL>shutdown immediate;

SQL>startup mount;

在Unix平台:

SQL>startup nomount pfile=’/dbs/pfileSTAN.ora’;

SQL>create spfile from pfile=’/dbs/pfileSTAN.ora’;

应用新创建的spfile从新启动后备数据库:

SQL>shutdown immediate;

SQL>startup mount;

(留意:请用你自己的ORACLE home目录调换‘’中的内容)

12、 开始利用重做日志

12.1在后备数据库上,启动重做日志利用:

SQL>alter database recover managed standby database disconnect from session;

假如你永世都不必要竣事日志利用办事:

SQL> alter database recover managed standby database cancel;

13、 校验后备数据库运转是否正常

13.1在后备数据库上履行一个查询:

SQL>select sequence#, first_time, next_time from v$archived_log;

13.2在主数据库上,强制切换日志:

SQL>alter system switch logfile;

13.3在后备数据库上,校验被利用的归档重做日志文件:

SQL>select sequence#, applied from v$archived_log order by sequence#;

14、 假如你不想等待归档当前重做日志文件就利用重做数据,必要启用实时利用:

SQL> alter database recover managed standby database using current logfile disconnect;

15、 要创建多个后备数据库,重复这些步骤即可。

四、掩护

1、常常反省主/备数据库的警告日志,监视数据卫士情况中的数据操作。

2、清除主/备数据库上的归档日志。

我每周会对全部主数据库进行热备份,并备份归档日志,然后删除主理事器上的归档日志。

在后备数据库上,我每周运行RMAN履行备份和删除归档日志。

$rman target /@STAN;

Rman>backup archivelog all delete input;

3、密码治理。

每个系统上的sys用户的密码必须同等,以便参考二.2中步骤2更新或从新创建passwd文件。

51CTO.com独家特稿,转载请注明出处和作者

相关文章

在Linux上自动启动和关闭Oracle数据库(9i/10g/11g)

Oracle 11gR1中细粒度造访收集办事

您可能还会对下面的文章感兴趣: