因为临时要用到oracle,之前又没装过,网上找了些文章,都有这样那样的问题,根据自己实际情况
整理了一片博客,留着以后装的时候看,不过应该用不上,已经固化成docker镜像了。
版本Oracle 11.2.0.4.0
Oracle的启动步骤:1、配置数据实例 2、创建数据库实例 3、启动监听程序(1521端口) 4、启动数据库实例
1、下载 Oracle 11g
Oracle官方网站
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
下载完成后,有两个压缩文件
linux.x64_11gR2_database_1of2.zip 和 linux.x64_11gR2_database_2of2.zip
压缩文件上传到 /db/目录
2、安装依赖包
安装依赖包之前,个人建议将yum源修改为aliyun源,下载速度快些,执行如下命令即可:
cd /etc
mv yum.repos.d yum.repos.d.bak
mkdir yum.repos.d
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
修改成功后,安装如下依赖包:
yum -y install binutils \
compat-libstdc++-33 \
elfutils-libelf \
elfutils-libelf-devel \
expat \
gcc \
gcc-c++ \
glibc \
glibc-common \
glibc-devel \
glibc-headers \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
make \
pdksh \
sysstat \
unixODBC \
unixODBC-devel
使用如下命令检查依赖是否安装完整
rpm -q \
binutils \
compat-libstdc++-33 \
elfutils-libelf \
elfutils-libelf-devel \
expat \
gcc \
gcc-c++ \
glibc \
glibc-common \
glibc-devel \
glibc-headers \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
make \
pdksh \
sysstat \
unixODBC \
unixODBC-devel | grep "not installed"
发现 pdksh 没有安装
执行 yum -y install pdksh,发现CentOS 7 没有相关安装包可用
通过wget命令直接下载pdksh的rpm包,我下载到了/tmp/
wget -O /tmp/pdksh-5.2.14-37.el5_8.1.x86_64.rpm http://vault.centos.org/5.11/os/x86_64/CentOS/pdksh-5.2.14-37.el5_8.1.x86_64.rpm
下载完成后,进入 /tmp/
rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm
再次检查依赖包是否安装完整
rpm -q \
binutils \
compat-libstdc++-33 \
elfutils-libelf \
elfutils-libelf-devel \
expat \
gcc \
gcc-c++ \
glibc \
glibc-common \
glibc-devel \
glibc-headers \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
make \
pdksh \
sysstat \
unixODBC \
unixODBC-devel | grep "not installed"
到此依赖包安装完整
3、添加oracle用户组和用户
groupadd oinstall
groupadd dba
groupadd asmadmin
groupadd asmdba
useradd -g oinstall -G dba,asmdba oracle -d /home/oracle
添加完成后,查看oracle用户
id oracle
初始化oracle用户的密码
passwd oracle
配置hostname(本机IP映射)
vim /etc/hosts
192.168.154.154 centos-oracle
测试hostname
ping -c 3 centos-oracle
4、优化OS内核参数
kernel.shmmax 参数设置为物理内存的一半
vim /etc/sysctl.conf
fs.aio-max-nr=1048576
fs.file-max=6815744
kernel.shmall=2097152
kernel.shmmni=4096
kernel.shmmax = 1073741824
kernel.sem=250 32000 100 128
net.ipv4.ip_local_port_range=9000 65500
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048586
使参数生效
sysctl -p
限制oracle用户的shell权限(可以不管)
vim /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
vim /etc/pam.d/login
session required /lib64/security/pam_limits.so
session required pam_limits.so
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
5、创建oracle安装目录
mkdir -p /db/app/oracle/product/11.2.0
mkdir /db/app/oracle/oradata
mkdir /db/app/oracle/inventory
mkdir /db/app/oracle/fast_recovery_area
chown -R oracle:oinstall /db/app/oracle
chmod -R 775 /db/app/oracle
6、配置oracle用户环境变量
su - oracle
vim .bash_profile
umask 022
export ORACLE_HOSTNAME=centos-orcl
export ORACLE_BASE=/db/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/
export ORACLE_SID=ORCL
export PATH=.:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORACLE_HOME/jdk/bin:$PATH
export LC_ALL="en_US"
export LANG="en_US"
export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
以上配置完成后,执行命令使配置生效
source .bash_profile
7、安装oracle
解压oracle压缩文件到 /db
cd /db/
unzip linux.x64_11gR2_database_1of2.zip -d /db
unzip linux.x64_11gR2_database_2of2.zip -d /db
解压完成后
mkdir /db/etc/
cp /db/database/response/* /db/etc/
vim /db/etc/db_install.rsp
oracle.install.option=INSTALL_DB_SWONLY
DECLINE_SECURITY_UPDATES=true
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oracle/inventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOSTNAME=centos-oracle
ORACLE_HOME=/db/app/oracle/product/11.2.0
ORACLE_BASE=/db/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.isCustomInstall=true
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=dba
开始安装
su - oracle (一定要加-,加-在切换用户时才会加载新用户的环境变量配置)
./runInstaller -silent -ignorePrereq -responseFile /db/etc/response/db_install.rsp
安装期间可以使用tail命令监看oracle的安装日志
tail -f /db/app/oracle/inventory/logs/installActions2017-07-12_03-48-29PM.log
安装完成,提示Successfully Setup Software.
根据提示完成配置
8、配置oracle
su root
sh /db/app/oracle/inventory/orainstRoot.sh(如果安装后找不到这个文件,就到网上去下一个,是现成的脚本)
sh /db/app/oracle/product/11.2.0/root.sh
配置静默监听
su - oracle
netca /db/app/oracle/product/11.2.0/assistants/netca/netca.rsp(根据自己的路径来填,找不到就搜netca.rsp)
9、启动监听服务
(这一步才启动了对端口1521的监听)
修改 /db/app/oracle/product/11.2.0/network/admin/listener.ora 中的hostname为你的hostname
lsnrctl start
查看监听端口
netstat -tnulp | grep 1521
10、创建数据库
vi /db/app/oracle/product/11.2.0/assistants/dbca/dbca.rsp(这个是数据库的配置文件,实例名称、还有参数都在这里进行配置)
GDBNAME = "orcl"
SID = "orcl"
SYSPASSWORD = "oracle"
SYSTEMPASSWORD = "oracle"
SYSMANPASSWORD = "oracle"
DBSNMPPASSWORD = "oracle"
DATAFILEDESTINATION =/db/app/oracle/oradata
RECOVERYAREADESTINATION=/db/app/oracle/fast_recovery_area
CHARACTERSET = "AL32UTF8"
TOTALMEMORY = "1638"
创建数据库(这一步创建数据库实例)
dbca -silent -responseFile /db/app/oracle/product/11.2.0/assistants/dbca/dbca.rsp
查看oracle实例进程
ps -ef | grep ora_ | grep -v grep
查看监听状态
lsnrctl status
11、启动数据库实例
在cmd中设置set ORACLE_SID=orcl(跟刚才数据库配置文件中SID相同)
登录sqlplus,查看实例状态
sqlplus / as sysdba
startup(如果没有启动过,需要先启动服务,启动时会去加载orcl实例对应的文件/db/app/oracle/product/11.2.0/dbs/initORCL.ora,这个文件是创建数据库的时候生成的)
(如果报错:
ORA-00205: error in identifying control file, check alert log for more info,
则是因为找不到控制文件,可以查看日志/db/app/oracle/diag/rdbms/orcl/ORCL/trace中的alert*log查看具体原因,一般是控制文件找不到,就需要修改当前控制文件路径,在/db/app/oracle/product/11.2.0/dbs/initORCL.ora中修改,控制文件是在创建数据库时生成的,以ctl结尾,比如这里控制文件位置为/db/app/oracle/oradata/orcl/control01.ctl
)
12、查看数据库信息
select status from v$instance;
查看数据库编码
select userenv('language') from dual;
查看数据库版本信息
select * from v$version;
激活scott用户
alter user scott account unlock;
alter user scott identified by tiger;
select username,account_status from all_users;