数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

在单机上创建物理Oracle数据库9istandby


发布日期:2018年01月09日
 
在单机上创建物理Oracle数据库9istandby

说明Oraclei 数据库的 Data Guard 特性确保对数据进行完整的保护是 Oracle i 的一个关键特性之一Data Guard 可以创建物理的 Standby 数据库也可以创建逻辑的Standby数据库还可以混合使用灵活性比较强.如果对Standby机制的了解有更高的期望或者想得到关于Oracle数据库的data guard 和Standby的更多信息请参考官方的文档

现有的数据库实例 (Primary)名字orcl

预创建的Standby数据库实例名字orcl

数据库版本信息 SQL> SELECT * FROM v$version;

BANNER

Oraclei Enterprise Edition Release Production

PL/SQL Release Production

CORE Production

TNS for bit Windows: Version Production

NLSRTL Version Production

准备工作:

首先确认Primary数据库是否在归档模式下 SQL> SHOW user

USER is SYS

SQL>

SQL> ARCHIVE log list

Database log mode Archive ModeAutomatic archival EnabledArchive destination D:\oracle\arcOldest online log sequence Next log sequence to archive Current log sequence 如果不在归档模式下调整数据库首先提交命令修改SPfile

SQL>ALTER SYSTEM SET log_archive_start=TRUE SCOPE=SPFILE;

然后关闭数据库实例 SQL>SHUTDOWN immediate;

备份数据库 SQL>STARTUP MOUNT

SQL>ALTER DATABASE ARCHIVELOG;

SQL>ALTER DATABASE OPEN;

SQL>SHUTDOWN IMMEDIATE

备份

Primary Database 需要做的准备工作

激活 Forced Logging SQL> ALTER DATABASE FORCE LOGGING;

设置本地归档目标 SQL> ALTER SYSTEM SET log_archive_dest_=LOCATION=D:\oracle\arc SCOPE=BOTH;

此操作直接生效

创建物理的Standby数据库

标记出Primary数据库的数据文件 SQL> SELECT NAME FROM v$datafile;

NAME

D:\ORACLE\ORADATA\ORCL\SYSTEMDBFD:\ORACLE\ORADATA\ORCL\UNDOTBSDBFD:\ORACLE\ORADATA\ORCL\DRSYSDBFD:\ORACLE\ORADATA\ORCL\INDXDBFD:\ORACLE\ORADATA\ORCL\TOOLSDBFD:\ORACLE\ORADATA\ORCL\USERSDBFD:\ORACLE\ORADATA\ORCL\XDBDBF

关闭Instance 拷贝数据文件到既定目的地 SQL> SHUTDOWN IMMEDIATE;

为Standby 数据库创建控制文件 SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE

AS E:\oracle\oradata\orcl\STANDBYCTL;

要注意这个控制文件的名字不要和Primary的控制文件名字重复

为Standby数据库准备初始化参数文件名字 SQL> CREATE PFILE=E:\oracle\admin\orcl\pfile\initorclora FROM SPFILE;

设定初始化Physical Standby Database参数 *aq_tm_processes=

*background_dump_dest=E:\oracle\admin\orcl\bdump

patible=

ntrol_files=E:\oracle\oradata\orcl\STANDBYCTL

re_dump_dest=E:\oracle\admin\orcl\cdump

*db_block_size=

*db_cache_size=

*db_domain=

*db_file_multiblock_read_count=

*db_name=orcl

*dispatchers=(PROTOCOL=TCP) (SERVICE=DEMOXDB)

*fast_start_mttr_target=

*hash_area_size=

*hash_join_enabled=TRUE

*instance_name=orcl

*java_pool_size=

*job_queue_processes=

*large_pool_size=

*log_archive_dest_=location=E:\oracle\arc

*log_archive_start=TRUE

*open_cursors=

*optimizer_mode=FIRST_ROWS

*pga_aggregate_target=

*processes=

*query_rewrite_enabled=TRUE

*remote_login_passwordfile=EXCLUSIVE

*shared_pool_size=

*sort_area_size=

*star_transformation_enabled=TRUE

*timed_statistics=TRUE

*undo_management=AUTO

*undo_retention=

*undo_tablespace=UNDOTBS

*user_dump_dest=E:\oracle\admin\orcl\udump

lock_name_space=orcl

standby_file_management=AUTO

remote_archive_enable=TRUE

standby_archive_dest=E:\oracle\standbyarc

db_file_name_convert=(D:\oracle\oradata\orcl E:\oracle\oradata\orcl)

log_file_name_convert=(D:\oracle\oradata\orcl E:\oracle\oradata\orcl)

log_archive_dest_=(LOCATION=E:\oracle\standbyarc)

整个操作的过程中容易出现错误的地方几乎都集中在此处必须认真仔细的对待这个文件标记为黑色的地方是需要进行修改的

创建一个Windows服务

WINNT> oradim NEW SID orcl STARTMODE manual

Create a Server Parameter File for the Standby Database

可参考执行如下操作 C:\>SET oracle_sid=orcl

C:\>SQLPLUS /nolog

SQL> CONNECT / as sysdba

SQL> CREATE SPFILE FROM PFILE=E:\oracle\admin\orcl\pfile\initorclora;

启动物理Standby数据库 C:\>set oracle_sid=orcl

C:\>sqlplus /nolog

SQL> connect / as sysdba

SQL> STARTUP NOMOUNT;

SQL> ALTER DATABASE MOUNT STANDBY DATABASE;

在Standby数据库上初始化Log Apply 服务 SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

激活到物理Standby数据库的归档 SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_=SERVICE=orcl SCOPE=BOTH;

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_=ENABLE SCOPE=BOTH;

启动远程归档 SQL> ALTER SYSTEM ARCHIVE LOG CURRENT; 在primary database上执行

安装完的的验证

在Primary database上 alter system set standby_archive_dest=E:\oracle\standbyarc scope=both;

在database查询V$ARCHIVED_LOG

(其实也可以直接到相关目录下查看Log是否创建): SQL> SELECT SEQUENCE# FIRST_TIME NEXT_TIME

FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

SEQUENCE# FIRST_TIM NEXT_TIME JAN JAN JAN JAN 在Primary数据库上归档当前的Log

SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;

验证是否收到 SQL> SELECT SEQUENCE# FIRST_TIME NEXT_TIME

FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

SEQUENCE# FIRST_TIM NEXT_TIME JAN JAN JAN JAN JAN JAN

验证是否新的归档Redo日志已经被应用 SQL> SELECT sequence# applied FROM v$archived_log ORDER BY sequence#;

SEQUENCE# APP YES YES YESOK表明我们还是成功的

附加内容:

primary数据库的Pfile内容

*aq_tm_processes=

*background_dump_dest=D:\oracle\admin\orcl\bdump

patible=

ntrol_files=D:\oracle\oradata\orcl\controlctlD:\oracle\oradata\orcl\controlctlD:\oracle\oradata\orcl\controlctl

re_dump_dest=D:\oracle\admin\orcl\cdump

*db_block_size=

*db_cache_size=

*db_domain=

*db_file_multiblock_read_count=

*db_name=orcl

*dispatchers=(PROTOCOL=TCP)

*fast_start_mttr_target=

*hash_join_enabled=TRUE

*instance_name=orcl

*java_pool_size=

*job_queue_processes=

*large_pool_size=

*log_archive_dest_=LOCATION=D:\oracle\arc

*log_archive_start=TRUE

*open_cursors=

*pga_aggregate_target=

*processes=

*query_rewrite_enabled=FALSE

*remote_login_passwordfile=EXCLUSIVE

*shared_pool_size=

*sort_area_size=

*star_transformation_enabled=FALSE

*timed_statistics=TRUE

*undo_management=AUTO

*undo_retention=

*undo_tablespace=UNDOTBS

*user_dump_dest=D:\oracle\admin\orcl\udump

*standby_archive_dest=E:\oracle\standbyarc

*remote_archive_enable=true

上一篇:oracle体系结构必须先了解的两个基本的概念

下一篇:JDBC+Hibernate将Blob数据写入Oracle