准备工作
关闭SELINUX
vim /etc/selinux/config
SELINUX=disabled
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
安装iptables
yum -y install iptables-services
systemctl restart iptables.service
systemctl enable iptables.service
创建新用户和组
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba -m oracle
passwd oracle
配置相关依赖
解压压缩文件
mkdir -p /ora/oracle
mkdir -p /ora/oraInventory
unzip -d /ora/ linux.x64_11gR2_database_1of2.zip
unzip -d /ora/ linux.x64_11gR2_database_2of2.zip
chown -R oracle:oinstall /ora
chmod 755 -R /ora
安装依赖的桌面组件
yum -y install binutils compat compat-libstdc gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel
yum -y groupinstall "GNOME Desktop" "Graphical Administration Tools"
网络上的参考文献称需要修改系统内核配置,我的机器配置大致符合要求,暂时先不做修改,若修改时务必提前备份一份文件,以防修改错误以后恢复。
添加环境变量
vim /etc/profile
#oracle
export ORACLE_HOME=/ora/oracle/product/11.2.0/db_1
export ORACLE_SID=orcl
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
source /etc/profile
vim /home/oracle/.bash_profile
#oracle
export ORACLE_BASE=/ora/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export ORACLE_TERM=xterm
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
source /home/oracle/.bash_profile
准备模板文件
cd /ora/database/
cp response/* /ora/oracle/
cd /ora/oracle/
vim db_install.rsp
#修改文件中一下内容
//安装类型,只装数据库软件
oracle.install.option=INSTALL_DB_SWONLY
//主机名称(命令hostname查询)
ORACLE_HOSTNAME=cdh00
// 安装组
UNIX_GROUP_NAME=oinstall
//INVENTORY目录(**不填就是默认值,本例此处需修改,因个人创建安装目录而定)
INVENTORY_LOCATION=/ora/oraInventory
// 选择语言
SELECTED_LANGUAGES=en,zh_CN
// oracle_home *路径根据目录情况注意修改 本例安装路径/ora/oracle
ORACLE_HOME=/ora/oracle/product/11.2.0/db_1
// oracle_base *注意修改
ORACLE_BASE=/ora/oracle
// oracle版本
oracle.install.db.InstallEdition=EE
//自定义安装,否,使用默认组件
oracle.install.db.isCustomInstall=false
//dba用户组
oracle.install.db.DBA_GROUP=dba
//oper用户组
oracle.install.db.OPER_GROUP=dba
// **注意此参数 设定一定要为true
DECLINE_SECURITY_UPDATES=true
安装oracle
注意在安装的过程中,务必将所有的路径都放在你刚刚处理好权限的/ora/oracle中,即使你想要自定义路径,也要控制好权限。因为oracle的安装要求必须是oracle:oinstall 755权限用户,如果放在其他目录下,会出现很多权限不足的问题,报错了还好说,可以马上修改。有的时候不报错安装后发现没法用,维护都不知道怎么维护。
cd /ora/database
su oracle
./runInstaller -silent -ignorePrereq -responseFile /ora/oracle/db_install.rsp
# runInstaller 是主要安装脚本
# -silent 静默模式
# -force 强制安装
# -ignorePrereq忽略warning直接安装。
# -responseFile读取安装应答文件。
注意这里前两行Checking Temp 和Checking swap就是在检查系统配置,如果不满足需求需要修改。
至此安装完成。
启动oracle
先切换回root用户
su
cd /ora/oraInventory
./orainstRoot.sh
cd /ora/oracle/product/11.2.0/db_1
./root.sh
lsnrctl start
su oracle
netca /silent /responseFile /ora/oracle/netca.rsp
#查看1521端口是否成功被监听
netstat -tnulp | grep 1521
vim /ora/oracle/dbca.rsp
配置文件内容。
GDBNAME= "infoyb1"
SID =" infoyb1"
SYSPASSWORD= "[your password]"
SYSTEMPASSWORD= "[your password]"
SYSMANPASSWORD= "[your password]"
DBSNMPPASSWORD= "[your password]"
DATAFILEDESTINATION=/ora/oracle/oradata
RECOVERYAREADESTINATION=/ora/oracle/fast_recovery_area
CHARACTERSET= "AL32UTF8"
TOTALMEMORY= "6553"
#其中TOTALMEMORY ="6553" 为6553MB,物理内存8G*80%。
根据配置文件创建数据库以及对应的实例。
dbca -silent -responseFile /ora/oracle/dbca.rsp
如果报有权限问题,则需要授权oracle用户权限
chown -R oracle:oinstall /ora
chmod 755 -R /ora
sqlplus / as sysdba
#SQL>select status from v$instance;
报错解决
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
这个问题大概就是oracle数据库没有启动或者启动失败。SQL>startup启动oracle服务。然后在startup的时候遇到了另一个报错。
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/ora/oracle/product/11.2.0/db_1/dbs/initorcl.ora'
这个问题是找不到initorcl.ora文件,没关系我们去复制一个。
cd /ora/oracle/admin/infoyb1/pfile
#这里infoyb1是你的数据库实例名,目录下有个init.ora.[random]的文件,复制他。
cp init.ora.9202020181058 /ora/oracle/product/11.2.0/db_1/dbs/initorcl.ora
然后再startup就可以了。
startup
alter database mount
alter database open
ORA-01102: cannot mount database in EXCLUSIVE mode
ORA-00205: error in identifying control file, check alert log for more info
这个问题有很多种,需要查看alter日志。根据数据库名称不同,选择不同的目录。日志行数比较多,shift+g跳转到文件末尾。
vim /ora/oracle/diag/rdbms/infoyb1/orcl/trace/alert_orcl.log
#这里是我的报错,每个人情况可能不同
ORA-00202: control file: '/ora/oracle/flash_recovery_area/infoyb1/control02.ctl'
ORA-27086: unable to lock file - already in use
既然是控制文件被占用那就结束控制文件进程就可以。
lsof /ora/oracle/oradata/infoyb1/control0*
kill -9 [进程号]
创建实例
create tablespace infoyb logging datafile'/ora/oracle/oradata/infoyb/infoyb.dbf' size 1024m autoextend on next 100m maxsize 10240m extent management local;
create user infoyb identified by infoyb default tablespace infoyb;
grant dba to infoyb;
此时就可以通过外部的ojdbc访问oracle了,查看一下你的监听端口,默认为1521.
cd /ora/oracle/product/11.2.0/db_1/network/admin
vim tnsnames.ora
我这里是1522端口,不知道哪里出了问题,问题不大换个端口而已。
ojdbc的驱动类位置在,maven上貌似没有对应的ojdbc,但是oracle官网提供的ojdbc版本非常全,也可以从官网下载。
cd /ora/oracle/product/11.2.0/db_1/jdbc/lib
cd /ora/oracle/product/11.2.0/db_1/network/admin
vim tnsnames.ora
我这里是1522端口,不知道哪里出了问题,问题不大换个端口而已。
ojdbc的驱动类位置在,maven上貌似没有对应的ojdbc,但是oracle官网提供的ojdbc版本非常全,也可以从官网下载。
cd /ora/oracle/product/11.2.0/db_1/jdbc/lib