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;