Oracle 9i Logical Standby Database

本文介绍Oracle9i环境下搭建逻辑备库的详细步骤,包括环境准备、主库配置调整、从库初始化参数设置及启动流程等关键技术点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Oracle 9i Logical Standby Database

1. 环境准备

1. 准备至少2台主机,其中一台已经安装了Oracle9R2的版本数据库,并创建了实例,另外一台为从库需要安装Oracle数据库软件;

我们定义:有实例的为主库;另外一个standby的环境为从库;

2. 准备好存储,建议使用和环境相同的存储;

3.需要拥有2个角色的用户LOGSTDBY_ADMINISTRATOR roleSELECT_CATALOG_ROLE;

2. 主库需要进行的操作

1. 必须在主库端强制生成log,因为如果在主、从库是通过redolog进行信息同步的,如果主库端进行了nologging的强制的话,那么信息将无法传递给从库导致两库环境的不统一;

SQL> ALTER DATABASE FORCE LOGGING;

2. 主库端必须要开启归档日志,并定义好归档的目录;

SQL> alter system set log_archive_dest_1='location=/u01/oracle/arch MANDATORY ' scope=both;

这里如何开归档就不再详细描述了,如果不会开可以参考一下Oracle的官方文档;

3. 在主库端允许日志的并行即SET LOG_PARALLELISM=1

SQL> alter system set log_parallelism=1 scope=spfile;

System altered.

SQL> shutdown

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORACLE instance started.

Total System Global Area 1561401968 bytes

Fixed Size 453232 bytes

Variable Size 486539264 bytes

Database Buffers 1073741824 bytes

Redo Buffers 667648 bytes

Database mounted.

Database opened.

SQL>

4. 明确主从两个数据库之间可以同步的数据类型和表的类型,对于有些数据类型和表是可以同步的,但是有些数据类型和表是无法通过DataGuard进行同步的:

可以同步的数据类型

可以同步的表类型

CHAR

NCHAR

VARCHAR2 and VARCHAR

NVARCHAR2

NUMBER

DATE

TIMESTAMP

TIMESTAMP WITH TIME ZONE

TIMESTAMP WITH LOCAL TIME ZONE

INTERVAL YEAR TO MONTH

INTERVAL DAY TO SECOND

RAW

CLOB

BLOB

不能同步的数据类型

不支持的表类型

NCLOB

LONG

LONG RAW

BFILE

ROWID

UROWID

user-defined types

object types REFs

varrays

nested tables

User-defined tables and sequences in the SYS schema

Tables with unsupported datatypes

Tables using data segment compression

Index-organized tables

5. 明确在当前的主库中哪些表是可以同步哪些表是不能同步的,可以通过下列语句查询:

 
 
BAD_COLUMNYN
 
 
       Y- 
CLOB or BLOB2
        N-
          
 
 

6. 确认在主库上追加日志的功能必须打开,可以用以下的语句来确认是否已经打开了此功能:

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

7. 创建一个主从库转换用的表空间:

 
 
 
 

3. 生成从库

步骤

内容

操作库

1

确认主库上的数据文件和日志文件

Primary

2

生成一份主库的备份

Primary

3

生成一份初始化参数文件并拷贝到从库端

Primary

4

把主库的文件副本复制到从库上

Primary

5

设置从库端的初始化参数文件

Standby

6

如果从库安装在Windowns环境,创建一个Windowns服务

Standby

7

配置两个数据库的监听

Primary and Standby

8

开启死进程监控系统

Standby

9

配置主库和从库的server_name文件

Primary and Standby

10

从库启动到mount状态

Standby

11

修改数据文件的名称

Standby

12

修改redolog的名称

Standby

13

开启DatabaseGuard功能

Standby

14

为逻辑从库修改sid名称

Standby

15

在参数文件里修改DB-name

Standby

16

为从库创建临时文件

Standby

17

注册归档日志,开始sql同步功能

Standby

18

从库开启归档功能

Primary

1. 确认主库上的数据文件和日志文件

数据文件:

 
 

NAME

--------------------------------------------------------------------------------

/u01/oracle/oradata/report/system01.dbf

/u01/oracle/oradata/report/undotbs01.dbf

/u01/oracle/oradata/report/users01.dbf

/u01/oracle/oradata/report/report_tab01.dbf

/u01/oracle/oradata/report/report_ind02.dbf

/u01/oracle/oradata/report/logmnrts.dbf

日志文件:

SQL> select MEMBER FROM V$LOGFILE;

MEMBER

----------------------------------------------------------------------------------

/u01/oracle/oradata/report/redo01.log

/u01/oracle/oradata/report/redo02.log

/u01/oracle/oradata/report/redo03.log

2. 生成一份主库的备份

第一步:shutdow 主库

第二步:把主库的数据文件copy到一个临时的目录里:

cp /u01/oracle/oradata/report/system01.dbf /u01/oracle/oradata/standby/system01.dbf cp /u01/oracle/oradata/report/undotbs01.dbf /u01/oracle/oradata/standby/undotbs01.dbf

cp /u01/oracle/oradata/report/users01.dbf /u01/oracle/oradata/standby/users01.dbf

cp /u01/oracle/oradata/report/report_tab01.dbf /u01/oracle/oradata/standby/report_tab01.dbf

cp /u01/oracle/oradata/report/report_ind02.dbf /u01/oracle/oradata/standby/report_ind02.dbf

cp /u01/oracle/oradata/report/logmnrts.dbf /u01/oracle/oradata/standby/logmnrts.dbf

第三步:启动主库到mount状态:

SQL> startup mount;

第四步:生成一个从库使用的controlfile

ALTER DATABASE BACKUP CONTROLFILE TO '/u01/oracle/oradata/standby/std.ctl';

第五步:开启主库的DMLDDL的限制:

 
 

第六步:生成LogMiner的数据字典:

 
 

第七步:开启数据库的DMLDDL功能:

 
 

3. 为从库准备初始化参数文件:

SQL> CREATE PFILE='/u01/oracle/oradata/standby/initstdreport.ora' FROM SPFILE;

4. 把从库的文件copy到主库上:

[oracle@s22028 oradata]$ scp -r standby oracle@10.4.120.218:/u01/oracle/oradata

oracle@10.4.120.218's password:

system01.dbf 100% 1024MB 6.9MB/s 02:28

users01.dbf 100% 500MB 6.8MB/s 01:14

report_tab01.dbf 100% 1024MB 8.1MB/s 02:06

logmnrts.dbf 100% 25MB 8.3MB/s 00:03

report_ind02.dbf 100% 512MB 8.0MB/s 01:04

initstdreport.ora 100% 1154 1.1KB/s 00:00

undotbs01.dbf 100% 2048MB 7.9MB/s 04:21

std.ctl 100% 1592KB 1.6MB/s 00:00

5. 修改从库的配置文件:

修改之前:

*.aq_tm_processes=1

*.background_dump_dest='/u01/oracle/admin/report/bdump'

*.compatible='9.2.0.0.0'

*.control_files='/u01/oracle/oradata/report/control01.ctl','/u01/oracle/oradata/report/control02.ctl','/u01/oracle/oradata/report/control03.ctl'

*.core_dump_dest='/u01/oracle/admin/report/cdump'

*.db_block_size=8192

*.db_cache_size=1073741824

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_name='report'

*.fast_start_mttr_target=300

*.hash_join_enabled=TRUE

*.instance_name='report'

*.java_pool_size=200

*.job_queue_processes=10

*.large_pool_size=209715200

*.log_archive_dest_1='location=/u01/oracle/arch MANDATORY'

*.log_archive_dest_2=''

*.log_archive_start=TRUE

*.log_parallelism=1

*.open_cursors=300

*.pga_aggregate_target=209715200

*.processes=150

*.query_rewrite_enabled='FALSE'

*.remote_login_passwordfile='EXCLUSIVE'

*.shared_pool_size=209715200

*.sort_area_size=524288

*.standby_archive_dest='/u01/oracle/stdarch'

*.standby_file_management='AUTO'

*.star_transformation_enabled='FALSE'

*.timed_statistics=TRUE

*.undo_management='AUTO'

*.undo_retention=10800

*.undo_tablespace='UNDOTBS1'

*.user_dump_dest='/u01/oracle/admin/report/udump'

修改之后:

*.aq_tm_processes=1

*.background_dump_dest='/u01/oracle/admin/report/bdump'

*.compatible='9.2.0.0.0'

*.control_files='/u01/oracle/oradata/standby/std.ctl'

*.core_dump_dest='/u01/oracle/admin/report/cdump'

*.db_block_size=8192

*.db_cache_size=1073741824

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_name='report'

*.fast_start_mttr_target=300

*.hash_join_enabled=TRUE

*.instance_name='stdrep'

*.java_pool_size=200

*.job_queue_processes=10

*.large_pool_size=209715200

*.log_archive_dest_1='location=/u01/oracle/arch'

*.log_archive_dest_2=''

*.log_archive_start=TRUE

*.log_parallelism=1

*.open_cursors=300

*.pga_aggregate_target=209715200

*.processes=150

*.query_rewrite_enabled='FALSE'

*.remote_login_passwordfile='EXCLUSIVE'

*.shared_pool_size=209715200

*.sort_area_size=524288

*.standby_archive_dest='/u01/oracle/stdarch'

*.standby_file_management='AUTO'

*.star_transformation_enabled='FALSE'

*.timed_statistics=TRUE

*.undo_management='AUTO'

*.undo_retention=10800

*.undo_tablespace='UNDOTBS1'

*.user_dump_dest='/u01/oracle/admin/report/udump'

*.lock_name_space=stdrep

注意一点:lock_name_space的名称不能超过8个字符,否则启动的时候会提示错误

6. 如果是windows环境需要创建windows service,我们这里就不介绍了

7. 配置两个数据库的监听文件

从库的监听:

#LISTENER.ORA-Network-Configuration-File: /u01/oracle/product/9207/network/admin/listener.ora

# Generated by Oracle configuration tools.

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST =10.4.120.218)(PORT = 1521))

)

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))

)

)

)

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = PLSExtProc)

(ORACLE_HOME = /u01/oracle/product/9207)

(PROGRAM = extproc)

)

)

主库的监听:

#LISTENER.ORA-Network-Configuration-File: /u01/oracle/product/9207/network/admin/listener.ora

# Generated by Oracle configuration tools.

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST =10.4.120.38)(PORT = 1521))

)

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))

)

)

)

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = PLSExtProc)

(ORACLE_HOME = /u01/oracle/product/9207)

(PROGRAM = extproc)

)

)

8. 打开Dead Connect 配置:

文件内容如下:

cat sqlnet.ora

SQLNET.EXPIRE_TIME=2

9. 配置netservicename

这个使用过Oracle的人都知道怎么配置,就不多说了;

10. 把从库启动到mount状态:

SQL> startup mount pfile ='/u01/oracle/oradata/standby/initstdreport.ora'

ORACLE instance started.

Total System Global Area 1561926256 bytes

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/598601/viewspace-1013372/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/598601/viewspace-1013372/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值