操作系统:CentOS release 6.5 (Final) 64位
oracle版本:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit
一、下载必须安装包:
# yum -y install binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel make sysstat
# yum install libXp
# yum -y install libXp.i686
# yum -y install libXt.i686
# yum -y install libXtst.i686
二、 修改 sysctl.conf 配置文件:
# vim /etc/sysctl.conf
在文件末尾添加一下内容:
#use for Oracle
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144
立即执行修改:
# sysctl -p
三、 修改 limits.conf 配置文件. 此文件用于设置系统资源限制.
# vi /etc/security/limits.conf
在文件末尾加上以下内容:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
四、 编辑 /etc/pam.d/login 文件:
# vi /etc/pam.d/login
在文件末尾加上以下内容:
session required /lib/security/pam_limits.so
session required pam_limits.so
五、创建oraInst.loc
# vim /etc/oraInst.loc
inventory_loc=/u01/oracle/oraInventory
inst_group=oinstall
更改属组及权限
chown oracle:oinstall /etc/oraInst.loc
chmod 664 /etc/oraInst.loc
六、 创建相应的用户名和用户组:
# groupadd oinstall
# groupadd dba
# useradd -g oinstall -G dba oracle
修改密码:
# passwd oracle
七、 修改 /etc/profile 限制其他用户使用:
# vim /etc/profile
在文件末尾加入以下内容:
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
八、修改Linux 发行版本. 因为Oracle10G发行的时候, Centos6.5还没有发行. 所以必须修改:
# vim /etc/redhat-release
删除文件本身内容, 重新录入以下内容:
redhat-4
九、 创建oralce安装目录以及数据存放目录.
# mkdir -p /home/oracle/ora10g
# chown -R oracle:oinstall /home/oracle/ora10g/
# chmod -R 775 /home/oracle/ora10g/
十、 配置Oracle用户环境变量:
# vi /home/oracle/.bash_profile
在文件末尾加入以下内容:
#Oracle Settings
export TMP=/tmp;
export TMPDIR=$TMP;
export ORACLE_BASE=/home/oracle/ora10g ;
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1;
export ORACLE_SID=orcl10g;
export ORACLE_TERM=xterm;
export PATH=/usr/sbin:$PATH;
export PATH=$ORACLE_HOME/bin:$PATH;
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
十一、 使配置生效:
# source /home/oracle/.bash_profile
十二、 解压安装文件
将下载的10201_database_linux_x86_64.cpio.gz(数据库安装文件) 复制到 /home/oracle/ora10g/目录下.
# cp /usr/local/src/10201_database_linux_x86_64.cpio.gz /home/oracle/ora10g/
首先解压gz包.
# gzip -d 10201_database_linux_x86_64.cpio.gz
在使用cpio解压出文件.
# cpio -idmv < 10201_database_linux_x86_64.cpio
十三、更改解压出来的database文件件及文件的所有者和用户组为oracle和oinstall.
# chown -R oracle:oinstall /home/oracle/ora10g/database/
十四、编辑安装需要的应答文件
(1) 以root身份登录
(2) 静默模式(Silent)安装必须指定一个应答文件来完成安装过程所须的各类参数。
在Oracle安装目录的response子目录里有enterprise.rsp、standard.rsp和custom.rsp三个应答文件,分别对应企业版、标准版和定制的安装。
(3) 以enterprise.rsp为例,用任意的文本编辑器打它,修改以下这些项目的值。
配置enterprise.rsp文件
vi /home/oracle/ora10g/database/response/enterprise.rsp
修改以下值 红色为必须修改项,其他按需要
RESPONSEFILE_VERSION=2.2.1.0.0
UNIX_GROUP_NAME="oinstall"
ORACLE_HOME_NAME="OraDb10g_home1"
ORACLE_HOME="/home/oracle/ora10g/product/10.2.0/db_1"
SHOW_INSTALL_PROGRESS_PAGE= true
SHOW_END_OF_INSTALL_MSGS= true
COMPONENT_LANGUAGES={"zh_CN"} 默认en
s_nameForDBAGrp= "dba" 如设置无效组,会出现权限不够错误
s_nameForOPERGrp="dba"
INSTALL_TYPE="EE"
n_configurationOption=3 安装类型(1为在安装后创建数据库, 2为安装后创建一个自动存储管理实例, 3为只安装服务器软件),这里我选择3。
RESTART_SYSTEM=false
RESTART_REMOTE_SYSTEM=false
说明:这几项要视情况而定比如说 UNIX_GROUP_NAME="oinstall" 和s_nameForDBAGrp= "dba" s_nameForOPERGrp="dba"还有环境变量都要参照前面自己定义好的来
十五、开始安装
(1) 用oracle用户登录,然后在Oracle安装目录里执行
$ ./runInstaller -ignoreSysPrereqs -silent -responseFile <应答文件的绝对路径>
(2) 接下来就是等待安装结束了。
各安装参数的含义如下:
-ignoreSysPrereqs 让Oracle忽略系统检查,因为Oracle官方声明只支持Linux服务器产品,所以要在非服务器产品的Linux上安装就必须指定此参数。
-silent 表示以静默方式安装,不会有任何提示
-force 允许安装到一个非空目录
-noconfig 表示不运行配置助手netca
-responseFile 表示使用哪个响应文件,必需使用绝对路径
在这里我输入:
./runInstaller -silent -ignoreSysPrereqs -responseFile /home/oracle/ora10g/database/response/enterprise.rsp
十六、系统初始化
(1) 以root用户登录
(2) 运行以下两个脚本:
/home/oracle/ora10g/oraInventory/orainstRoot.sh
/home/oracle/ora10g/product/10.2.0/db_1/root.sh
十七、安装网络监听器
vi ./response/netca.rsp
(1) 以oracle登陆
(2) 没有网络监听器,客户端就无法通过网络连接Oralce服务器。要在命令行安装网络监听器,也只能使用静默模式。
(3) 编辑Oracle安装目录里response子目录下的应答文件 netca.rsp, 修改以下项目:
INSTALL_TYPE=""CUSTOM"" 安装的类型,这里我使用默认值
LISTENER_NUMBER=1 监听器数量,这里我使用默认值
LISTENER_NAMES={"LISTENER"} 监听器的名称列表,这里我使用默认值
LISTENER_PROTOCOLS={"TCP;1521"} 监听器使用的通讯协议列表,这里我使用默认值
LISTENER_START=""LISTENER"" 监听器启动的名称,这里我使用默认值
(4) 然后运行
$ORACLE_HOME/bin/netca /silent /responseFile <应答文件的绝对路径>
这里我输入的命令为:
$ORACLE_HOME/bin/netca /silent /responseFile /home/oracle/ora10g/database/response/netca.rsp
十八、修改dbstart
(1) 以oracle身份登录
(2) 打开 $ORACLE_HOME/bin/dbstart,将
ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle
改为
ORACLE_HOME_LISTNER=$ORACLE_HOME
否则网络监听器可能无法自动启动。
十九、安装数据库实例
vi ./response/dbca.rsp
OPERATION_TYPE = "createDatabase"
GDBNAME = "oracle10g"
SID = "orcl10g"
TEMPLATENAME = "General_Purpose.dbc" 如不设置会出现“静默DBCA创建数据库时遭遇模板不存在问题”
SYSPASSWORD = "oracle"
SYSTEMPASSWORD = "oracle"
CHARACTERSET = "ZHS16GBK"
运行以下命令安装实例
$ORACLE_HOME/bin/dbca -silent –responseFile /home/oracle/ora10g/database/response/dbca.rsp -cloneTemplate
二十、修改Oracle启动配置文件:/etc/oratab
(1) 以oracle用户登录
(2) 然后编辑 /etc/oratab
将
修改为ora10g:/app/oracle/10g:Y
使数据库实例能够自动启动。
二十一、 启动和关闭监听
启动监听:lsnrctl start
关闭监听:lsnrctl stop
检查监听:lsnrctl status
二十二、启动Oracle实例
su - oracle
export ORACLE_SID=orcl10g
以sysdba身份登入数据库,输入:
sqlplus '/ as sysdba'
SQL> startup
就可以正常的启动数据库了。
备注:也可以用$ORACLE_HOME/bin/dbstart启动数据库实例
二十三、关闭数据库实例
SQL> shutdown immediate
备注:也可以用 $ORACLE_HOME/bin/dbstart 启动数据库实例
二十四、创建用户
create user test identified by test account unlock;
grant resource,connect to test;
二十五、其他
#创建表空间
create TEMPORARY TABLESPACE AFINITOR_TEMP TEMPFILE '/u01/app/oracle/oradata/orcl/AFINITOR_TEMP.ORA' SIZE 32M AUTOEXTEND ON NEXT 32M MAXSIZE 2048M EXTENT MANAGEMENT LOCAL;
#创建临时表空间
create TABLESPACE AFINITOR LOGGING DATAFILE '/u01/app/oracle/oradata/orcl/AFINITOR.DBF' SIZE 32M AUTOEXTEND ON NEXT 32M MAXSIZE 2048M EXTENT MANAGEMENT LOCAL;
#创建用户
create user afinitor identified by afinitor default tablespace AFINITOR temporary tablespace AFINITOR_TEMP;
#给用户授权
grant resource,connect,EXP_FULL_DATABASE,IMP_FULL_DATABASE,CREATE SESSION to afinitor;
grant dba to afinitor;
#授权导入导出
GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,DBA,CONNECT,RESOURCE,CREATE SESSION TO afinitor;
#数据导入
cd /home
wget –c http://nadmin.haott.com/afinitor_db.dmp (此处是在另一服务器下载所需要的数据库dmp文件)
su – oracle
imp afinitor/afinitor@orcl file=/home/afinitor_data_20131206.dmp full=y ignore=y #导入命令
#监听文件
[oracle@localhost admin]$ cat listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = orcl10g)
(ORACLE_HOME = /home/oracle/ora10g/product/10.2.0/db_1)
# (PROGRAM = extproc) 要注释掉,否则会出现“ORA-28547:连接服务器失败,可能是Net8管理错误”
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
#tnsnames文件
[oracle@localhost admin]$ cat tnsnames.ora
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = oracle10g)
)
)
二十六、安装排障总结
故障一
ORA-01078: failure in processing system parameters
LRM-00123: invalid character 0 found in the input file
LRM-00109: could not open parameter file '/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora
经查:pfile目录下无参数文件,SORACLE_HOME/dbs下无密码文件,flash_recovery_area下无相关实例文件
解决:实例未创建成功,dbca重新创建实例即可,如果有实例情况下,则拷贝pfile下参数文件到dbs下并命名即可。
故障二
ORA-01031: insufficient privileges
原因一:组配置错误
[oracle@wz_oracle2 ~]$ cat enterprise.rsp | egrep -i "grp|group"
UNIX_GROUP_NAME="dba"
s_nameForDBAGrp="oracle"
s_nameForOPERGrp="oracle"
解决:
[oracle@wz_oracle2 ~]$ cat $ORACLE_HOME/rdbms/lib/config.c
/* SS_DBA_GRP defines the UNIX group ID for adminstrative access. */
/* Refer to the Installation and User's Guide for further information. */
#define SS_DBA_GRP "oracle" /* 改成 dba */
#define SS_OPER_GRP "oracle" /* 改成 dba */
char *ss_dba_grp[] = {SS_DBA_GRP, SS_OPER_GRP};
然后
[oracle@wz_oracle2 ~]$ relink all
故障三
ORA-01031: insufficient privileges
原因:system无法登陆,sys和其他普通登陆能正常登陆,经查是登陆验证问题
解决:cat /home/oracle/ora10g/product/10.2.0/db_1/network/admin/sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES 不设置即可
故障四
使用Oracle 10g的dbca.rsp文件静默创建数据库的时候遭遇模板不存在的问题
[oracle@newadm database]$ dbca -silent -responseFile /home/oracle/database/response/dbca.rsp
Template General Purpose does not exist. Please specify an existing template for database creation.
解决:更改dbca.rsp文件中的General Purpose为 General_Purpose.dbc即可
TEMPLATENAME = "General_Purpose.dbc"
故障五
ORA-27125: unable to create shared memory segment
查询了一下,发现问题和linux上的hugetbl有关。
解决方法也很简单,首先检查oracle用户的组信息:
[oracle@yans1 ~]$ id oracle
uid=500(oracle) gid=502(oinstall) groups=502(oinstall),501(dba)
[oracle@yans1 ~]$ more /proc/sys/vm/hugetlb_shm_group
0
下面用root执行下面的命令,将dba组添加到系统内核中:
# echo 501 > /proc/sys/vm/hugetlb_shm_group
然后启动数据库,问题消失。
但以上这种方式在重启操作系统后失效, /proc/sys/vm/hugetlb_shm_group又变为了0,建议采用以下方式解决:
加入vm.hugetlb_shm_group = 501 到/etc/sysctl.conf中来解决:
# vi /etc/sysctl.conf
加入如下的内容,其中501为dba组号,需要根据你实际的情况进行改变。
vm.hugetlb_shm_group = 501
# sysctl -p
故障六
远程客户端连接oracle出现错误:ORA-28547:连接服务器失败,可能是Net8管理错误
将listener.ora中的(PROGRAM = extproc)这句注释掉就可以了