96SEO 2026-04-23 23:50 3
搭建一套Oracle 11g的物理备库。这不仅仅是一次技术演练,geng是给你的数据上一份双重保险。

工欲善其事,必先利其器。在开始敲代码之前,我们需要先构建一个隔离的实验环境。这里我们选择VirtualBox作为虚拟化平台,因为它灵活且免费。为了模拟真实的主备通信,网络配置是重中之重。
1. 虚拟网络架构设计别让网络问题成为你DG搭建路上的拦路虎。我们需要让宿主机、主库和备库三者之间畅通无阻,同时还要保证备库Neng上外网。Zui佳实践是采用“双网卡”策略:
NAT模式: 用于上网和安装YUM源。
Host-Only模式: 专门用于主备心跳通信,这是DG的专用通道。
打开VirtualBox的管理菜单,找到“主机网络管理器”。我们要创建一个仅主机的网卡。这里有个小细节,记得把DHCP服务器关掉,我们不需要它自动分配IP,我们要的是静态的、稳定的连接。默认网段我们Ke以保持经典的 192.168.56.0/24。
Oracle是个“吃”资源的大户,Linux系统Ru果不经过调优,跑起来肯定会磕磕绊绊。无论是内核参数,还是用户限制,dou得按官方要求来不然报错Neng让你怀疑人生。
搞定内核参数。编辑 /etc/sysctl.conf,把共享内存、信号量、文件句柄这些参数调上去。特别是 kernel.shmmax 和 kernel.shmall,这直接关系到Oracle AMMNeng不Neng正常工作。Ru果你的内存是3GB,那 shmmax 设置为物理内存的一半是个稳妥的起步。别忘了执行 sysctl -p 让配置立即生效。
别忘了 /dev/shm。这个临时文件系统太小的话,数据库启动会直接报错。修改 /etc/fstab,把size挂载参数加上,比如 size=2000M,然后 mount -o remount /dev/shm 一下用 df -h 确认一下大小是否对劲。
Zui后用户资源限制。Oracle用户对 nproc和 nofile非常敏感。直接在 /etc/security/limits.conf 里把软硬限制dou调高,比如4096或者geng高。同时确保 /etc/pam.d/login 里加载了 pam_limits.so 模块,否则你的限制配置就是一纸空文。
别让缺少的RPM包浪费你的时间。挂载系统镜像,配置本地YUM源,然后一股脑把binutils、gcc、libaio、compat-libstdc++这些开发包全装上。Ru果你喜欢用 rlwrap 来增强sqlplus的体验,记得也把它装上。
创建oracle用户和oinstall、dba组是标准动作。这里有个小技巧,把oracle用户的密码统一设置好,免得后续主备拷贝文件时还要输入密码麻烦。目录结构 /u01/app/oracle 也要提前规划好,权限设为775,属主归oracle。
为了省去重复劳动,我们采用“模板机”策略。先在一台虚拟机上把所有基础软件装好,然后直接克隆出主库和备库。这比分别装两遍要高效得多,还Neng减少人为差异。
1. Oracle 11g 软件静默/图形化安装上传安装包到 /soft 目录,解压。这里我们选择“仅安装软件”模式,不创建数据库。因为数据库我们后面要手动建,这样gengNeng掌控细节。
运行 runInstaller,一路Next。记得在安装Zui后要用root用户执行那两个脚本:orainstRoot.sh 和 root.sh。这一步千万别忘,否则权限会有问题。
编辑oracle用户的 .bash_profile。这里要设置 ORACLE_BASEORACLE_HOMEORACLE_SID 等核心变量。为了方便,Ke以顺便把 sqlplus 和 rman 命令加上 rlwrap 别名,这样你的回退键就Neng正常用了体验感提升一个档次。
在关机克隆前,必须Zuo一件极其重要的事:清理网络标识。删除 /etc/udev/rules.d/70-persistent-net.rules,并把网卡配置文件里的 HWADDR 行删掉。Ru果不Zuo这一步,克隆出来的虚拟机网卡会起不来或者MAC地址冲突,到时候排查起来Neng让你头秃。
现在把模板机克隆一份出来命名为 primary。启动它,我们要开始打造我们的主库了。
修改主机名为 primary,配置IP地址。在 /etc/hosts 文件里把主备两台机器的IP和主机名dou写进去,这是为了防止DNS解析出问题导致DG通信失败。
使用 dbca 图形化工具创建实例。数据库名设为 primdb,SID也是 primdb。这里有个关键点:一定要开启归档模式!虽然DBCA里也Ke以选,但我建议建库后手动确认一下。因为DG的本质就是传输归档日志,没有归档,DG就是无源之水。
这是hen多新手容易忽略的坑。为了确保备库数据的一致性,主库必须开启强制日志模式。哪怕你用了 nologging 操作,Oracle也会强制记录日志。执行 alter database force logging;,然后用 select force_logging from v$database; 确认结果是YES。
这是主库配置的灵魂所在。我们需要修改一系列参数,告诉主库:“嘿,你有个兄弟叫standby,要把日志传给它。”
sqlplus / as sysdba
-- 1. 设置唯一标识,这是主库的身份证
alter system set db_unique_name='primdb' scope=spfile sid='*';
-- 2. 定义DG集群成员,主备dou要写进去
alter system set log_archive_config='DG_CONFIG=' scope=spfile sid='*';
-- 3. 本地归档路径,自己留一份
alter system set log_archive_dest_1='LOCATION=/u01/app/oracle/arch VALID_FOR= DB_UNIQUE_NAME=primdb' scope=both sid='*';
-- 4. 远程归档路径,发给备库!LGWR SYNC AFFIRM代表Zui大可用性/保护模式
alter system set log_archive_dest_2='SERVICE=standby LGWR SYNC AFFIRM VALID_FOR= DB_UNIQUE_NAME=standb' scope=both sid='*';
-- 5. 启用这两个路径
alter system set log_archive_dest_state_1=ENABLE scope=both sid='*';
alter system set log_archive_dest_state_2=ENABLE scope=both sid='*';
-- 6. 文件名转换,主备路径可Neng不一样,这里告诉Oracle怎么映射
alter system set db_file_name_convert='/u01/app/oracle/oradata/standb','/u01/app/oracle/oradata/primdb' scope=spfile sid='*';
alter system set log_file_name_convert='/u01/app/oracle/oradata/standb','/u01/app/oracle/oradata/primdb' scope=spfile sid='*';
-- 7. 开启备库文件自动管理,省心
alter system set standby_file_management=AUTO scope=spfile sid='*';
-- 8. FAL配置,Ru果备库缺日志,找谁要?
alter system set fal_client='primary' scope=both sid='*';
alter system set fal_server='standby' scope=both sid='*';
-- 9. 密码文件模式,EXCLUSIVE是必须的
alter system set remote_login_passwordfile='EXCLUSIVE' scope=spfile sid='*';
改完这些,记得重启数据库:shutdown immediate; startup;。然后用 show parameter 命令把上面的参数dou过一遍,确保dou生效了。
主库的监听配置相对简单,用 netca 把默认的1521端口监听起起来就行。但是为了方便RMAN连接,我们需要配置 tnsnames.ora。
primary =
(DESCRIPTION =
(ADDRESS_LIST =
)
)
(CONNECT_DATA =
)
)
standby =
(DESCRIPTION =
(ADDRESS_LIST =
)
)
(CONNECT_DATA =
)
)
注意kan,备库的 SERVICE_NAME 写的依然是主库的 primdb,而不是备库的 db_unique_name。这个细节搞错了RMAN duplicate的时候会连不上。
主库准备好了现在轮到备库登场。
利用模板机克隆一份,命名为 standby。
启动备库,修改主机名为 standby,IP改为 192.168.56.11。同样检查 /etc/hosts 文件。确保 ping primary 和 ping standby dou是通的。
修改oracle用户的 .bash_profile,把 ORACLE_HOSTNAMEORACLE_UNQNAMEORACLE_SID dou改成备库的名字。
创建备库特有的目录,比如 /u01/app/oracle/oradata/standb 和 /u01/app/oracle/admin/standb/adump。别忘了改权限。
这是个大坑!主备库的sys密码必须一致,而且密码文件要同步。Zui简单的办法是在主库把密码文件拷贝过去:
# 主库执行
scp orapwprimdb oracle@standby:$ORACLE_HOME/dbs/
# 备库执行
cd $ORACLE_HOME/dbs
mv orapwprimdb orapwstandb
ls -l orapwstandb
4. 备库参数文件与静态监听
备库现在还没有数据文件,所以我们不Neng直接启动,只Neng启动到 nomount 状态。这需要一个专门的参数文件。
我们Ke以从主库 create pfile from spfile 拷一个过来改,或者手写一个精简版 initstandb.ora。核心是把 db_unique_name 改成 standb,把 db_file_name_convert 和 log_file_name_convert 的路径对调。当然控制文件路径也要指向备库的目录。
然后用 create spfile from pfile 创建服务器参数文件,执行 startup nomount。
因为备库在nomount阶段,PMON进程还无法注册监听,所以必须配置静态监听。在 listener.ora 里加上 SID_LIST_LISTENER 部分,明确指明 SID_NAME = standb 和 ORACLE_HOME 路径。配置完记得 lsnrctl reload。
一切准备就绪,现在我们利用Oracle 11g强大的 from active database 功Neng,直接通过网络把主库“克隆”到备库。这比以前先备份再传输要快得多,也爽得多。
在主库上执行RMAN命令:
rman target sys/oracle@primary auxiliary sys/oracle@standby nocatalog
连接成功后在RMAN提示符下敲下这条神级命令:
RMAN> duplicate target database for standby from active database nofilenamecheck;
去喝杯咖啡吧,这取决于你的数据量和网络速度。命令执行期间,RMAN会自动把主库的数据文件、控制文件拷过去,并在备库上启动到mount状态。Ru果kan到 finished standby duplicate 的字样,恭喜你,99%的工作Yi经完成了!
现在备库虽然起来了但还在那里傻傻地等着日志。我们要让它动起来而且要开启ADG,这样备库不仅NengZuo容灾,还Neng跑报表查询,实现读写分离。
1. 添加Standby Redo Log为了实现实时应用,强烈建议添加Standby Redo Log。原则是:组数 = 在线日志组数 + 1。大小和在线日志一致。主备库dou要加。
-- 主库执行
alter database add standby logfile group 4 '/u01/app/oracle/oradata/primdb/stredo04.log' size 50M;
-- ...以此类推加到组7
-- 备库执行
alter database add standby logfile group 4 '/u01/app/oracle/oradata/standb/stredo04.log' size 50M;
-- ...以此类推
2. 开启实时应用
在备库上执行:
alter database open read only;
alter database recover managed standby database using current logfile disconnect from session;
第一条命令把备库打开成只读模式,第二条命令启动MRP进程,开始实时应用日志。注意 using current logfile 这几个字,它意味着RFS进程收到日志后立马应用,延迟几乎为零。
这是Zui激动人心的时刻。在主库建个表,插点数据:
create table test_dg);
insert into test_dg values;
commit;
alter system archive log current;
然后立马切到备库查询:
select * from test_dg;
Ru果你kan到了那条记录,那种成就感是无与伦比的!还Ke以查一下 v$managed_standby,kanMRP进程是不是显示 APPLYING_LOG,或者查 v$dataguard_stats,确认 apply lag 是 +00 00:00:00。
搭建好只是开始,维护才是日常。DGZui强大的功Neng在于主备切换。
1. Switchover比如要升级主库硬件,我们Ke以把主库切到备库,无损切换。步骤是:主库先切为备库 -> 重启备库为新主库 -> 开启实时同步。这就像换岗一样,秩序井然。
2. FailoverRu果主库真的炸了起不来了那就只NengFailover。这是破釜沉舟的一招,把备库强行提升为主库。注意,Failover之后原主库就废弃了无法直接回退。
3. DG BrokerRu果你觉得命令行太繁琐,Ke以开启DG Broker。通过 dgmgrl 工具,一条 switchover to 'standb' 就Neng搞定所有复杂的步骤。配置Broker需要在 listener.ora 里加个静态服务 primdb_DGMGRL,然后 create configuration 即可。
至此,一套完整的Oracle 11g Data Guard物理备库就搭建完毕了。从网络规划、系统调优,到参数配置、RMAN复制,再到Zui后的ADG验证,每一步dou暗藏玄机。虽然过程有些曲折,但当kan到主备库数据同步的那一刻,你会觉得一切辛苦dou是值得的。这不仅是技术的提升,geng是对数据安全的一份庄严承诺。希望这篇笔记Neng成为你运维路上的得力助手,下次遇到数据危机时你Neng从容应对,笑kan风云。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback