centos6.5上静默安装oracle11g
通过SSH远程连接oracle服务器主机,上传oracle11g安装包,在centos6.5上无图形化界面静默安装oracle11g。
一、 环境要求
1.1. 涉及工具及环境
1) 本地环境windows7+ssh远程连接工具xShell、WinSCP
2) 远程虚拟机CentOS6.5 64位系统
3) 安装包文件
linux.x64_11gR2_database_1of2.zip、linux.x64_11gR2_database_2of2.zip
1.2. Oracle服务器要求
1) 最小内存1G,推荐2G或2G以上
2) 1GB跟2GB物理内存之间的,设定swap大小为物理内存的1.5倍
2GB跟16GB物理内存之间的,设置swap大小与物理内存相等
16GB物理内存以上的,设置swap大小为16GB
3) 硬盘要求空间至少5-6GB
硬件检测:
cat /etc/issue
uname -r (版本)
grep MemTotal /proc/meminfo (内存大小)
grep SwapTotal /proc/meminfo (交换区大小)
grep "model name" /proc/cpuinfo (CPU信息)
free (可用内存)
二、 准备工作
2.1 上传oracle 11g安装文件到服务器并解压
安装包上传到/home目录下,并解压
cd /home
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
待解压完毕后会生成文件夹/home/database,里面是解压后的所有oracle安装文件。
2.2 在/etc/hosts文件中增加主机名
(通过hostname获得)
vi /etc/hosts在文件尾部添加如下信息:
172.16.1.26 qa26
2.3 关闭selinux
vim /etc/selinux/config 设置SELINUX=disabled
setenforce 0 //关闭selinux
2.4 关闭防火墙
service iptables stop //临时关闭防火墙
chkconfig iptables off //永久关闭防火墙
三、 安装步骤
3.1 安装依赖包
yum -y install binutils compat-libstdc++-33 compat-libstdc++-33.i686elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686libstdc++-devel make sysstat unixODBC unixODBC-devel
3.2 添加oracle用户和用户组
groupadd oinstall //创建oinstall组
groupadd dba //创建dba组
useradd -g oinstall -G dba oracle //将oracle用户加入组
passwd oracle //修改并设定oracle用户密码 (密码为123456)
3.3 修改内核参数配置文件
1) vi /etc/sysctl.conf 配置文件内加入修改以下参数,如果没有可以自己添加,如果默认值比参考值大,则不需要修改。
fs.file-max= 6815744
fs.aio-max-nr=1048576
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= 1048576
kernel.sem= 250 32000 100 128
2) 执行命令sysctl使其自检并生效 sysctl -p
3.4 修改用户的限制文件
1) 修改进程数和最大会话数
执行如下命令,修改配置文件/etc/security/limits.conf
vi /etc/security/limits.conf在文件尾部添加如下信息:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
2) 设置关联信息
执行如下命令,修改关联文件/etc/pam.d/login
vi /etc/pam.d/login
在文件尾部添加如下信息:
session required /lib64/security/pam_limits.so
session required pam_limits.so
备注:64位系统时,千万别写成/lib/security/pam_limits.so,否则导致无法登录
3) 修改系统启动环境参数
执行如下命令,修改系统启动环境参数文件/etc/ profile
vi /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
3.5 创建安装目录和设置文件权限
1) 创建安装目录
mkdir /usr/local/oracle //数据库系统安装目录
mkdir /usr/local/oradata //数据库数据安装目录
mkdir /usr/local/oradata_back //数据备份目录
mkdir /usr/local/oraInventory //清单目录
2) 赋予组用户及权限
chown -R oracle:oinstall /usr/local/oracle /usr/local/oraInventory/usr/local/oradata/
chmod -R 775 /usr/local/oracle /usr/local/oraInventory/usr/local/oradata/
3.6 配置oracle用户环境变量
vi /home/oracle/.bash_profile 文件内加入并修改至以下内容
export ORACLE_BASE=/usr/local/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin
保存退出后执行source命令立即生效:source .bash_profile
3.7 编辑静默安装响应文件
首先进入oracle用户:su - oracle
1) 复制一份模板
cp -R /home/database/response /usr/local/oracle
该文件默认存放在解压后的安装包内,也就是本例中/home/database/response下,将oracle静默安装所需应答文件全部拷贝至 /usr/local/oracle文件夹下
2) 修改安装所需的所有响应文件的所属组及权限
cd /usr/local/oracle/response
chown oracle:oinstall/usr/local/oracle/response/*.rsp
chmod 755 /usr/local/oracle/response/*.rsp
3) 配置db_install.rsp文件
vi /usr/local/oracle/response/db_install.rsp
文件内需要修改相应的参数配置如下:
oracle.install.option=INSTALL_DB_SWONLY #安装类型,只装数据库软件
ORACLE_HOSTNAME=qa26 #主机名称(命令hostname查询)
UNIX_GROUP_NAME=oinstall # 安装组
INVENTORY_LOCATION=/usr/local/oraInventory #INVENTORY目录(**不填就是默认值,本例此处需修改,因个人创建安装目录而定)
SELECTED_LANGUAGES=en,zh_CN # 选择语言
ORACLE_HOME=/usr/local/oracle/product/11.2.0/db_1 # oracle_home *路径根据目录情况注意修改 本例安装路径/usr/local/oracle
ORACLE_BASE=/usr/local/oracle # oracle_base *注意修改
oracle.install.db.InstallEdition=EE # oracle版本
oracle.install.db.isCustomInstall=false #自定义安装,否,使用默认组件
oracle.install.db.DBA_GROUP=dba #dba用户组
oracle.install.db.OPER_GROUP=dba #oper用户组(不明白) oracle.install.db.config.starterdb.type=GENERAL_PURPOSE //数据库类型
oracle.install.db.config.starterdb.globalDBName=orcl #globalDBName
oracle.install.db.config.starterdb.SID=orcl #SID(**此处注意与环境变量内配置SID一致)
oracle.install.db.config.starterdb.memoryLimit=81920 #自动管理内存的内存(M)
oracle.install.db.config.starterdb.password.ALL=oracle #设定所有数据库用户使用同一个密码
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false #(手动写了false)
oracle.install.db.config.starterdb.password.SYS=123456
oracle.install.db.config.starterdb.password.SYSTEM=123456
DECLINE_SECURITY_UPDATES=true # **注意此参数 设定一定要为true
备注:黄色部分可以注释掉
3.8 根据响应文件安装oracle
在oracle用户下安装 su - oracle
$ cd /home/database/
$./runInstaller -silent -responseFile/usr/local/oracle/response/db_install.rsp -ignorePrereq
参数说明:
/home/database是安装包解压后的路径,此处根据安装包解压所在位置做修改,因人而异。
runInstaller 是主要安装脚本
-silent 静默模式
-force 强制安装
-ignorePrereq忽略warning直接安装。
-responseFile读取安装应答文件。
安装过程中,如果提示[WARNING]不必理会,此时安装程序仍在进行,如果出现[FATAL],则安装程序已经停止了。打开另一个终端,
执行tail-100f /usr/local/oraInventory/logs/installActions*.log
当出现以下界面时, 表示安装成功了,按照其提示操作。
在新创建的root窗口内执行以下提示的脚本:
#/usr/local /oraInventory/orainstRoot.sh
#/usr/local/oracle/product/11.2.0/db_1/root.sh
3.9 编辑静默建库响应文件
$cd /usr/local/oracle/response
$mv dbca.rspdbca_orcl.rsp #改名为dbca_数据库名.rsp
3.10静默配置监听(网络)
通过response文件运行netca, 生成sqlnet.ora和listener.ora文件, 位于$ORACLE_HOME/network/admin目录下:
# su - oracle
$netca /silent /responsefile /usr/local/oracle/response/netca.rsp
$ ll $ORACLE_HOME/network/admin/*.ora
成功运行后,在/user/local/oracle/product/11.2.0/db_1/network/admin目录下生成sqlnet.ora和listener.ora两个文件。
启动监听
$/user/local/oracle/product/11.2.0/db_1/bin/lsnrctlstart LISTENER
通过netstat-tlnp命令,看到
tcp 0 0 :::1521 :::* LISTEN 5477/tnslsnr
说明监听器已经在1521端口上开始工作了。
3.11静默安装数据库(同时也建立一个对应的实例)
1) 修改/usr/local/oracle/response/dbca_orcl.rsp,设置如下:
RESPONSEFILE_VERSION = "11.2.0" #不能更改
OPERATION_TYPE = "createDatabase" #不能更改
GDBNAME="orcl "#78 行全局数据库的名字=SID+主机域名
SID="orcl" //149行 SID对应的实例名字
TEMPLATENAME = "General_Purpose.dbc" #建库用的模板文件
SYSPASSWORD="123456" #SYS管理员密码
SYSTEMPASSWORE="123456"#200行//SYSTEM管理员密码
DATAFILEDESTINATION= /usr/local/oradata /数据文件存放目录
RECOVERYAREADESTINATION=/usr/local/oradata_back#恢复数据存放目录
CHARACTERSET="AL32UTF8"#字符集,重要!!!建库后一般不能更改,所以建库前要确定清楚
TOTALMEMORY= "5120" #oracle内存5120MB,建议为物理内存70%~85%
2) 静默建库命令如下
$dbca -silent -responseFile /usr/local/oracle/response/dbca_orcl.rsp
3) 查看日志文件:
$ cat /opt/oracle/cfgtoollogs/dbca/hello/hello.log
4) 建库后实例检查
$ps -ef | grep ora_ | grep -v grep| wc –l
21
$ps -ef | grep ora_ | grep -v grep
5) 建库后监听检查
$lsnrctl status
如果出现以下错误:
lsnrctl: error while loading sharedlibraries: /u01/app/oracle/product/11.2.0/db_1/lib/libclntsh.so.11.1: cannotrestore segment prot after reloc: Permission denied
解决办法:在root用户下执行以下命令
su - root
setenforce 0
3.12修改数据库为归档模式(归档模式才能热备份,增量备份)
$export ORACLE_SID=orcl
$sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Thu Apr 20 16:12:49 2017
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bitProduction
With the Partitioning, OLAP, Data Mining and Real ApplicationTesting options
SQL> shutdownimmediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 1603411968 bytes
Fixed Size 2213776 bytes
Variable Size 939526256 bytes
Database Buffers 654311424 bytes
Redo Buffers 7360512 bytes
Database mounted.
SQL> alter databasearchivelog;
Database altered.
SQL> alter databaseflashback on;
Database altered.
SQL> alter databaseopen;
Database altered.
SQL> executeutl_recomp.recomp_serial();
PL/SQL procedure successfully completed.
SQL> alter systemarchive log current;
System altered.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real ApplicationTesting options
3.13修改oracle启动配置文件
su – oracle
$vi/etc/oratab
orcl:/usr/oracle/product/11.2.0/db_1:Y //把“N”改成“Y”
这样就可以通过dbstart启动此实例,监听器。
$dbshut$ORACLE_HOME
Processing Database instance"orcl": log file /usr/local/oracle/product/11.2.0/db_1/shutdown.log
此时所有oracle的进程关闭,监听器也停止。
$dbstart$ORACLE_HOME
Processing Database instance"orcl": log file /usr/local/oracle/product/11.2.0/db_1/startup.log
此时监听器工作,orcl实例运行,再次查看监听器状态。
$lsnrctl status
四、Linux下oracle数据库启动和关闭操作
4.1 启动oracle的步骤
Linux下启动Oracle分为以下两步:
n 启动数据库实例
n 启动lsnrctl监听
1) 启动oracle数据库实例
1) 以system用户身份登陆oracle
在oracle用户下,输入 sqlplus/nolog
2) 使用管理员权限
connect/as sysdba
3) 启动/关闭服务
startup参数 :
不带参数,启动数据库实例并打开数据库,以便用户使用数据库,在多数情况下,使用这种方式!
nomount,只启动数据库实例,但不打开数据库,在你希望创建一个新的数据库时使用,或者在你需要这样的时候使用!
mount,在进行数据库更名的时候采用。这个时候数据库就打开并可以使用了!
2) 启动oracle监听
数据库实例启动之后,需启动监听器,才能让远程用户建立连接。可使用如下命令启动监听器:
1) 登陆
root登陆之后切换到oracle用户上,输入 su - oracle
2) 检查oracle监听器运行状态
通过lsnrctl status命令查看
上述反馈的结果即为oracle监听没有启动
3) 启动监听,通过命令lsnrctl start
至此,oracle监听器启动成功!
4.2 关闭oracle
通过shutdown命令关闭oracle实例。
shutdown的参数
Normal 需要等待所有的用户断开连接
Immediate 等待用户完成当前的语句
Transactional 等待用户完成当前的事务
Abort 不做任何等待,直接关闭数据库
normal需要在所有连接用户断开后才执行关闭数据库任务,所以有的时候看起来好象命令没有运行一样!在执行这个命令后不允许新的连接
immediate在用户执行完正在执行的语句后就断开用户连接,并不允许新用户连接。
transactional 在拥护执行完当前事物后断开连接,并不允许新的用户连接数据库。
abort 执行强行断开连接并直接关闭数据库。
4.3 查看oracle服务是否已经启动
l ps aux | grep ora_ #若无ora_**_**相关的进程,则oracle数据库实例未启动
l netstat -tlnup | grep 1521 #若无任何显示,则监听器未启动
l lsnrctl status #查看监听器状态
l netstat -tlnup | grep 1158 #若无任何显示,则EM未启动
l emctl status dbconsole #查看EM状态
4.4 启动网页版管理器
Oracle还提供网页版的管理器,要使用该管理器需启动相关服务,使用如下命令启动:
emctl start dbconsole
至此,可在web浏览器中输入:https://{主机IP 或 主机名 或 本地localhost}:1158/em,打开管理器,使用相关帐号登录进行数据库查看和管理。
五、Linux下建立Oracle服务及其开机自启动
如果每次重启操作系统都要进行以上操作好麻烦,那么如何让Oracle作为系统服务在开机的时候自动启动呢?
以root身份建立开机启动oracle服务的脚本:vi/etc/init.d/oracle,添加如下脚本:
#!/bin/sh
#chkconfig: 234520 80
#description: Oracledbstart / dbshut
#以上两行为chkconfig所需
ORA_HOME=/usr/local/oracle/product/11.2.0/db_1
ORA_OWNER=oracle
LOGFILE=/var/log/oracle.log
echo"#################################" >> ${LOGFILE}
date +"### %T%a %D: Run Oracle" >> ${LOGFILE}
if [ ! -f${ORA_HOME}/bin/dbstart ] || [ ! -f ${ORA_HOME}/bin/dbshut ]; then
echo "Error: Missing the script file${ORA_HOME}/bin/dbstart or ${ORA_HOME}/bin/dbshut!" >> ${LOGFILE}
echo"#################################" >> ${LOGFILE}
exit
fi
start(){
echo "###Startup Database..."
su - ${ORA_OWNER} -c"${ORA_HOME}/bin/dbstart ${ORA_HOME}"
echo "###Done."
echo "###Run database control..."
su - ${ORA_OWNER} -c"${ORA_HOME}/bin/emctl start dbconsole"
echo "###Done."
}
stop(){
echo "###Stop databasecontrol..."
su - ${ORA_OWNER} -c"${ORA_HOME}/bin/emctl stop dbconsole"
echo "###Done."
echo "###Shutdown Database..."
su - ${ORA_OWNER} -c"${ORA_HOME}/bin/dbshut ${ORA_HOME}"
echo "###Done."
}
case"$1" in
'start')
start >> ${LOGFILE}
;;
'stop')
stop >> ${LOGFILE}
;;
'restart')
stop >> ${LOGFILE}
start >> ${LOGFILE}
;;
esac
date +"### %T%a %D: Finished." >> ${LOGFILE}
echo"#################################" >> ${LOGFILE}
echo ""
使用如下命令将/etc/init.d/oracle 置为可执行文件:
chmod a+x/etc/init.d/oracle
至此,可使用如下命令对oracle进行启动和关闭
/etc/init.d/oraclestart #启动oracle(包括数据库实例、监听器、EM)
/etc/init.d/oraclestop #关闭oracle
/etc/init.d/oraclerestart #重启oracle
将 oracle 添加到 chkconfig中:
chkconfig --addoracle
可使用如下命令查看和设置oracle服务的开机启动级别:
chkconfig | greporacle #查看oracle服务的开机启动级别
chkconfig --level24 oracle off #修改oracle服务的开机启动级别
chkconfig --level35 oracle on
至此可使用如下命令对oracle的启动或关闭进行管理
service oraclestart #启动
service oraclestop #关闭
service oraclerestart #重启
建立连接:
ln -s/etc/init.d/oracle /etc/rc0.d/K01oracle #关机执行
ln -s/etc/init.d/oracle /etc/rc6.d/K01oracle #重启执行
六、 建立表空间和用户
$ export ORACLE_SID=orcl; sqlplus / assysdba
进入SQL>后
l 创建临时表空间
create temporary tablespace user_temptempfile ‘/usr/local/oradata/orcl/user_temp.dbf' size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
l 创建数据表空间
create tablespace xtjg
logging
datafile '/opt/oracle/oradata/ orcl /xtjg.dbf'
size 50m
autoextend on;
l 创建用户并指定表空间
create user xtjg_user identified by 123456
default tablespace xtjg
temporary tablespace user_temp;
l 给用户授予权限
grant resource,connect,dba to xtjg_user;
此时在其他机器上可以远程登录这个用户.
七、 Oracle数据库导入与导出
Oracle数据库导出有4种模式:full(全库导出),owner(用户导出),table(表导出),tablespace(表空间导出)。
1、数据常用导出命令
①将数据库TEST完全导出,用户名system密码manager,导出到/tmp/daochu.dmp中
exp system/manager@TEST file=/tmp/daochu.dmp full=y (全库导出)
exp xtjg_user/123456@ORCL file=/tmp/XTJG.dmp 默认导出连接数据库的用户数据库对象
②将数据库中system用户和sys用户的表导出
exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
③将数据库中的表table1 、table2导出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)
④将数据库中的表table1中的字段filed1以"00"打头的数据导出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1)query=\" where filed1 like '00%'\"
2、导入dmp命令
在导入dmp文件时候,通常我们需要新建一个用户来导入,新用户需要一个表空间和一个临时表空间。
表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都存放在指定的表空间中。但主要存放的是表,所以称作表空间。Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间,可自动释放;而表空间中存储表数据、函数、过程、序列等。是随数据库永久存在的。
新建临时表空间:
create temporary tablespace user_temp
tempfile'/usr/local/oradata/orcl/user_temp.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
新建表空间:
create tablespace xtjg
logging
datafile '/usr/local/oradata/orcl/xtjg.dbf'
size 50m
autoextend on ;
新建用户:
create user xtjg_user identified by123456
default tablespace xtjg
temporary tablespace user_temp;
授权新用户:
grant connect,resource to user_name;
grand dba to user_name;
导入dmp文件:
imp user_name/user_password@SIDfile=F:\xxx.dmp full=y;
如:imp xtjg_user/123456@orcl file=/home/software/XTJG.dmp full=y;
备注:
1、关于full=y 参数
①oracle exp命令中的full参数
full=y( 全库导出): 导出除ORDSYS,MDSYS,CTXSYS,ORDPLUGINS,LBACSYS 这些系统用户之外的所有用户的数据.
full=n或不加full: 默认导出连接数据库的用户数据库对象.
②oracle imp命令中的full参数
Full=y 导入一个完整的数据库
2、删除命令
删除用户:
drop user user_name cascade;
删除表空间和临时表空间:
drop tablespace tablespace_name includingcontents;