SLES 10安装Oracle10gR2笔记 一、 数据库安装 1. 安装C/C++ Compiler gcc --version验证是否安装 2. 验证Service Pack版本 SPident –v 3. 修改/etc/hosts #127.0.0.1 localhost 192.168.0.123 localhost 4. 安装先决程序包 可以在安装操作系统是选择Oracle Base Server或者安装如下程序包: #rpm -ivh orarun-1.9-21.2.x86_64.rpm 5. 设置oracle用户 修改/etc/passwd的oracle用户的/bin/false为/bin/bash,或先删除用户重建。并设置oracle用户密码: # groupadd oinstall # groupadd dba # useradd oracle -g oinstall -G dba # passwd oracle 6. 设置oracle用户环境变量(/etc/profile.d/oracle.sh) PATH=$PATH:$HOME/bin LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/lib # added for install oracle10g export ORACLE_BASE=$HOME export ORACLE_HOME=$ORACLE_BASE/product/10.2/db_1 export ORACLE_SID=testdb # deleted after install oracle10g export TNS_ADMIN=$ORACLE_HOME/network/admin export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK" export PATH=$PATH:$ORACLE_HOME/bin:. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:. export DISPLAY=:0.0 unset USERNAME unset LANG 7. 设置内核参数 /usr/sbin/rcoracle start 8. 验证oracle信息 oracle@devtest:~> id uid=1001(oracle) gid=103(oinstall) groups=103(oinstall),104(dba) 9. 安装oracle 在~oracle/database/install/oraparam.ini的[Certified Versions]行加入SuSE-10后执行./ runInstaller 或者执行./runInstaller -ignoreSysPrereqs 10. 设置GUI显示 #xhost + $xhost + 并设置环境变量 export DISPLAY=:0.0 11. 新建数据库 dbca 12. 监听器配置(LISTENER) >netmgr或netca 配置Listening Locations和Database Services项。 然后重启监听程序 >lsnrctl start 13. 配置Service Naming >netca 14. 登陆测试 >sqlplus /nolog sql>conn system/oracle@testdb 15. 安装问题处理 16. emca script 错误 分析解答: 出现此类问题,一般要求检查主机名与Hosts文件对应是否吻合,特别是大小写检查经常大意导致运行dbca 创建数据库过程中报错。出现此类问题后,可以通过以下步骤解决: $ su - oracle $ emca -deconfig dbcontrol db -repos drop #删除EM资料档案库 $ emca -repos create #建 EM 资料档案库 $ emca -config dbcontrol db #置数据的 Database Control 过上述步骤后,如果正常,EM管理控制台可正常使用,运行Http://IPAdrees:1158/em 如果运行ca -repos create 后出现异常,则检查Oracle local_listener是否为空,否则清空后再运行。 二、 创建数据库 1. 新建数据库 系统数据文件目录:/oradata/system 用户归档日志目录:/oradata/logarch 用户数据文件目录:/oradata/userdata 执行dbca新建数据库 2. 数据库启动脚本startdb.sh #!/bin/sh sqlplus /nolog <<EOF connect / as sysdba; startup; EOF lsnrctl start 3. 数据库关闭脚本shutdb.sh #!/bin/sh lsnrctl stop sqlplus /nolog <<EOF connect / as sysdba; shutdown transactional; EOF 三、 Oracle Data Guard配置(10g) 1. primary数据库配置 1) 确认primary处于归档模式 SQL>archive log list; 2) 将primary设置为归档模式 SQL>alter database force logging; 3) 创建standby控制文件 SQL> alter database create standby controlfile as '/oradata/system/tzdb/standby.ctl'; 4) 查看是否存在密码文件,不存在则创建 ls $ORACLE_HOME/dbs/orapwtzdb orapwd file='orapwtzdb' password='1qaz!QAZ' entries='30' 5) 创建standby redo log SQL> alter database add standby logfile group 4 ('/oradata/system/tzdb/stdby_redo01.log') size 50m; SQL> alter database add standby logfile group 5 ('/oradata/system/tzdb/stdby_redo02.log') size 50m; SQL> alter database add standby logfile group 6 ('/oradata/system/tzdb/stdby_redo03.log') size 50m; SQL> alter database add standby logfile group 7 ('/oradata/system/tzdb/stdby_redo04.log') size 50m; 6) 创建primary数据库客户端初始化参数文件 此处需要修改多处,为了方便,先创建并修改pfile,然后通过pfile重建spfile,当然也可通过alter system set命令直接修改spfile: SQL> create pfile='/oradata/system/tzdb/inittzdb.ora' from spfile; 修改上述primary的客户端参数文件/oradata/system/tzdb/inittzdb.ora,增加如下参数: #----------------------------------------- #新增配置参数 #----------------------------------------- DB_UNIQUE_NAME=tzdba LOG_ARCHIVE_CONFIG='DG_CONFIG=(tzdba,tzdbb)' LOG_ARCHIVE_DEST_1='LOCATION=/oradata/logarch/tzdb VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=tzdba' LOG_ARCHIVE_DEST_2='SERVICE=tzdbb LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=tzdbb' LOG_ARCHIVE_DEST_STATE_1=ENABLE LOG_ARCHIVE_DEST_STATE_2=ENABLE #ARCHIVE_LAG_TARGET=300 #----------------------------------------- #配置standby角色的参数用于角色转换 #----------------------------------------- FAL_SERVER=tzdbb FAL_CLIENT=tzdba STANDBY_FILE_MANAGEMENT=AUTO 通过pfile重建spfile SQL>shutdown immediate; SQL>create spfile from pfile='/oradata/system/tzdb/inittzdb.ora'; 7) 验证listenner和service name配置并测试 lsnrctl stop lsnrctl start tnsping tzdba tnsping tzdbb 2. standby数据库配置 1) 复制primary的如下文或目录件到standby主机的相应目录 $ORACLE_HOME/admin 包括数据文件 控制文件 产生的standby控制文件 在线日志文件 密码文件 参数文件(inittzdb.ora) 2) 恢复standby的控制文件 cp standby.ctl control01.ctl cp standby.ctl control02.ctl cp standby.ctl control03.ctl 3) 修改standby主机的sqlnet.ora,增加如下参数 SQLNET.EXPIRE_TIME=2 4) 修改初始化参数文件(/oradata/system/tzdb/inittzdb.ora) 增加如下参数,注意同时修改*_dest的路径 #----------------------------------------- #新增配置参数 #----------------------------------------- DB_UNIQUE_NAME=tzdba LOG_ARCHIVE_CONFIG='DG_CONFIG=(tzdba,tzdbb)' LOG_ARCHIVE_DEST_1='LOCATION=/oradata/logarch/tzdb VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=tzdba' LOG_ARCHIVE_DEST_2='SERVICE=tzdbb LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=tzdbb' LOG_ARCHIVE_DEST_STATE_1=ENABLE LOG_ARCHIVE_DEST_STATE_2=ENABLE #ARCHIVE_LAG_TARGET=300 #----------------------------------------- #配置standby角色的参数用于角色转换 #----------------------------------------- FAL_SERVER=tzdbb FAL_CLIENT=tzdba STANDBY_FILE_MANAGEMENT=AUTO 通过该pfile创建spfile SQL> create spfile from pfile='/oradata/system/tzdb/inittzdb.ora'; 5) 启动standby到mount SQL>startup mount; 6) 启动redo应用 SQL>alter database recover managed standby database disconnect from session; 8) Oracle Data Guard测试验证 3. 查看同步情况 先连接到primary数据库,然后查看 show parameter instance_name; alter system switch logfile; select max(sequence#) from v$archived_log; 连接到standby数据库,然后查看 show parameter instance_name; select max(sequence#) from v$archived_log; 暂停redo应用,此时仍会接手归档日志,但不应用,直到恢复到应用模式。 alter database recover managed standby database cancel; 查看standby的归档日志是否已被应用到数据文件 select sequence#,applied from v$archived_log order by sequence#; 四、 Standby数据库日常维护 1. 关闭standby数据库 shutdown immediate; 2. 启动standby数据库到恢复模式 startup nomount; alter database mount standby database; alter database recover managed standby database disconnect from session; 3. 启动standby数据库到只读模式 startup nomount; alter database mount standby database; alter database open read only; 4. 将standby数据库从恢复模式切换到只读模式 alter database recover managed standby database cancel; alter database open read only; 5. 将standby数据库从只读模式切换到恢复模式 alter database recover managed standby database disconnect from session;