Linux 命令符下安装Oracle
之前都是使用脚本直接安装,这样很容易出现出现问题 不知道排错, 于是尝试在linux 下手动分步安装, 内部有些原理并不是很懂, 待慢慢完善, 最好是多安装几次图形化安装,理解原理。
一、准备安装的环境:
1.硬件: centos 6.5
Oracle database 11g
/db 分区大于10G
/free 内存大于2G
2.Oracle 的安装的两个软件包:
linux.x64_11gR2_database_2of2.zip
linux.x64_11gR2_database_1of2.zip
下载地址:wget http://v.yingsun.net/cobra/download/linux.x64_11gR2_database_2of2.zip
--http-user=$usr --http-password=$code
wgethttp://v.yingsun.net/cobra/download/linux.x64_11gR2_database_1of2.zip
--http-user=$usr --http-password=$code
注意: 这里提供一个下载的地址是本公司的软件下载地址,也可以去oracle 官网上下
64 位的11g 版本的。
3.安装oracle 的必须依赖包(必须检查,否则安装后会报错):
检查所有依赖包是否有安装
rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers libaio libaio-devel libgcc ksh libstdc++-devel libstdc++ make numactl-devel sysstat compat-gcc-34 compat-gcc-34-c++ gcc libXp openmotif compat-db glibc.i686
使用rpm 检查”not“ 没有安装的,使用yum -y install 安装即可, 安装完之后最好
使用rpm 再检查一下。
4. 填写hosts 文件及主机名, 因为oracle 会根据hosts 进行绑定,不填好会报错,创
建不了参数及实例,如下:
5. 关闭iptables 和selinux
二 、 进入安装
1. 建立oracle 的用户, Oracle 需要有自己的用户操作:
groupadd oinstall
groupadd dba
useradd -d /home/oracle -g oinstall -G dba -m oracle
2. 建立数据库的目录db, 如果业务用,需要足够的空间,最好的单独的分区。
mkdir -p /db/oracle11g/product/11.2.0/db
chmod -R 775 /db
chown -R oracle:oinstall /db
3. 修改内核参数,以便支持oracle
1)在/etc/sysctl.conf 文件中, 使用vim进行编辑, 省事,直接在最后增加上就行,
参数如下:
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.rmem_max=262144
net.core.wmem_default=262144
net.core.wmem_max=262144
如下:
是更改的内核生效:
/sbin/sysctl -p
2) 修改用户的限制:
修改 /etc/security/limits.conf 文件, 直接在最后面增加就行:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
再在/etc/pam.d/login 的文件中修改,直接在最后面增加就行:
session required /lib64/security/pam_limits.so
session required pam_limits.so
最后在/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
使之生效
Source /etc/profile
4. 设置oracle 用户的环境变量,这里要小心特别注意,一个没注意就会导致没有权限
安装。如下:
Vi /home/oracle/.bash_profile
export ORACLE_BASE=/db/oracle11g #这个是声明数据库的目录
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db # 这个是数据库的家
目录
export ORACLE_SID="benguo" #这个是指安装oracle 的实例名字,可随你业务
名字写或者公司, 如果你需要一次性将实例也
安装上, 可以在这里添加sid , 否则你后面
也要写, 如果忘写了就可能会出错。
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin #这个在环境,oracle 家目录
的变量,否则在安装数据库
的时候就会找不sqlplus ,
造成安装不成功。
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib #这个是指oracle 的库,也
需要指明,否则造成依赖库找不到
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK #字符集
export
注意: 添加完oracle 的环境变量就需要进行生效,命令如下:
Source /home/oracle/.bash_profile
实验如下图:
5. 解压oracle 的安装文件包,如下:
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
提醒: 在这里我说明一下我的软件包安装的路径, 因为这个解压后的安装包,在后面
还需要被用上, 所以也需要特别的注意权限的问题。我的环境如下:
我在/db 下创建了一个soft 目录,并给oracle 用户递归的所有权限, 将两个安装的软件包放在soft 下,进行加压得到database 目录。
Mkdir -p /db/soft
Chown -R Oracle:oinstall /db/soft
Chmod -R 755 /db/soft
6. 静默安装数据库软件:
1) 静默安装需要相应文件模板的文件, 在解压后的安装软件包的database 的目录下有一个response响应目录下的db_install.rsp , 修改步骤如下:
Su - oracle
Vim /db/soft/database/response/db_install.rsp 修改响应安装数据库的模块,如下:
[root@server161 response]# egrep -v "#|^$" db_install.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
oracle.install.option=INSTALL_DB_SWONLY #安装数据库的类型
ORACLE_HOSTNAME=localhost.localdomain #主机的名称(hostname)查询
UNIX_GROUP_NAME=oinstall #安装组
INVENTORY_LOCATION=/db/oraInventory #可以是默认值, inventory 目录
SELECTED_LANGUAGES=en #选择安装的语言
ORACLE_HOME=/db/oracle11g/product/11.2.0/db #oracle 的家目录,你设置的oracle 环境
中是多少就写多少
ORACLE_BASE=/db/oracle11g #Oracle安装目录
oracle.install.db.InstallEdition=EE
oracle.install.db.isCustomInstall=false
oracle.install.db.customComponents=
oracle.install.db.DBA_GROUP=dba #dba 用户组
oracle.install.db.OPER_GROUP=oinstall #oper 用户组
oracle.install.db.CLUSTER_NODES=
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=
oracle.install.db.config.starterdb.SID=
oracle.install.db.config.starterdb.characterSet=
oracle.install.db.config.starterdb.memoryLimit=
oracle.install.db.config.starterdb.memoryOption=false
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.enableSecuritySettings=true
oracle.install.db.config.starterdb.password.ALL=
oracle.install.db.config.starterdb.password.SYS=
oracle.install.db.config.starterdb.password.SYSTEM=
oracle.install.db.config.starterdb.password.SYSMAN=
oracle.install.db.config.starterdb.password.DBSNMP=
oracle.install.db.config.starterdb.control=DB_CONTROL
oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=
oracle.install.db.config.starterdb.dbcontrol.enableEmailNotification=false
oracle.install.db.config.starterdb.dbcontrol.emailAddress=
oracle.install.db.config.starterdb.dbcontrol.SMTPServer=
oracle.install.db.config.starterdb.automatedBackup.enable=false
oracle.install.db.config.starterdb.automatedBackup.osuid=
oracle.install.db.config.starterdb.automatedBackup.ospwd=
oracle.install.db.config.starterdb.storageType=
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=
oracle.install.db.config.asm.diskGroup=
oracle.install.db.config.asm.ASMSNMPPassword=
MYORACLESUPPORT_USERNAME=
MYORACLESUPPORT_PASSWORD=
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false #手动写了false
DECLINE_SECURITY_UPDATES=true #设置安全更新(貌似是有bug,这个一定
要选true ,否则会无限制提醒邮件地址有问题,
终止安装,)
PROXY_HOST=
PROXY_PORT=
以上未写的可以空着。
开始静默安装
Cd /db/soft/database
./runInstaller -ignorePrereq -silent -responseFile /db/soft/database/response/db_install.rsp -force
安装的时候有出现一些info waring 的信息, 不用再意,主要注意error 的信息,出现以下信息是安装完毕。如下:
注意: 如果没有安装终止了,则根据静默安装的日志进行查看解决。
注:安装完数据库库之后则需要测试能否能进数据库, sqlplus / as sysdba 如果提示sqlplus 命令找不到,可以在oracle 用户命令下进行查看$PATH,看是否有路径,如果没有,则需要查看以下oracle 用户的环境变化ORACLE_HOME 变量是否被加入到PATH 中, 如下:
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
2) 安装完数据库之后则需要进行更改以下配置, 在这里只需要使用root 用户去执行自带的脚本就可以,如以下两个脚本:
/db/oraInventory/orainstRoot.sh
以上这个脚本是自动去配置系统安装配置文件/etc/oralnst.loc ,并给予权限的。 注意如果在安装数据之前就进行了配置这个文件, 安装的数据库的时候不会生成这个脚本和自带的默认脚本。具体的配置如下:
Vim /etc/oraInst.loc
Nventory_loc=/db/oraInventory #这个路径指的是数据库放inventory 的路径。
inst_group=oinstall #这个是安装组
注意 在这里需要进行查看权限,
Chown oracle:oiinstall /etc/oraInst.loc
Chmod 644 /etc/oraInst.loc
Sh /db/oracle11g/product/11.2.0/db/root.sh (使用root 下进行执行)
这个脚本是具体关于一些更改参数的设置,具体可以自己打开看。
7、 进行静默配置网络监听
$ORACLE_HOME/bin/netca /silent /responseFile /db/soft/database/response/netca.rsp
注意: 这个模板使用默认的就可以,oracle 的监听文件在安装完实例之后进行配置添加。
在这个安装完之后在/db/oracle11g/product/11.2.0/db/network/admin/ 下会出现一些监听的文件,如下:
[root@server161 ~]# ll /db/oracle11g/product/11.2.0/db/network/admin/
总用量 16
-rw-r--r--. 1 oracle oinstall 536 4月 7 15:46 listener.ora
drwxr-xr-x. 2 oracle oinstall 4096 4月 7 11:03 samples
-rw-r--r--. 1 oracle oinstall 187 5月 7 2007 shrept.lst
-rw-r--r--. 1 oracle oinstall 213 4月 7 15:37 sqlnet.ora
8. 静默安装数据库实例 (在oracle 用户安装)
在这里需要配置静默安装数据库响应的模板文件,也是在安装软件包中解压在database下的response 目录下的 dbca_rsp 文件,具体配置如下:
[root@spider101 ~]# egrep -v "#|^$" /vol/ora11g/dbca_benguo.rsp
[GENERAL]
RESPONSEFILE_VERSION = "11.2.0"
OPERATION_TYPE = "createDatabase"
[CREATEDATABASE]
GDBNAME = "benguo" #全局数据库的名字
SID = "benguo" # 数据库实例,根据上面的你写的SID 一样的,随便写。
TEMPLATENAME = "benguo.dbc" # 这个可以是默认的模板,不会写默认的,最好是默认,
这里是我们dba 写的,所以就用上了。
SYSPASSWORD = "2011@oracle"
SYSTEMPASSWORD = "2011@oracle"
SYSMANPASSWORD = "2011@oracle"
DBSNMPPASSWORD = "2011@oracle" # 前面这四个都可以不管,默认就行
CHARACTERSET = "ZHS16GBK" #编码
NATIONALCHARACTERSET=“UTF8” #编码
[createTemplateFromDB]
SOURCEDB = "myhost:1521:orcl"
SYSDBAUSERNAME = "system"
TEMPLATENAME = "My Copy TEMPLATE"
[createCloneTemplate]
SOURCEDB = "orcl"
TEMPLATENAME = "My Clone TEMPLATE"
[DELETEDATABASE]
SOURCEDB = "orcl"
[generateScripts]
TEMPLATENAME = "New Database"
GDBNAME = "orcl11.us.oracle.com"
[CONFIGUREDATABASE]
[ADDINSTANCE]
DB_UNIQUE_NAME = "orcl11g.us.oracle.com"
NODELIST=
SYSDBAUSERNAME = "sys"
[DELETEINSTANCE]
DB_UNIQUE_NAME = "orcl11g.us.oracle.com"
INSTANCENAME = "orcl11g"
SYSDBAUSERNAME = "sys"
配置完模板之后,进行静默安装数据库
$ORACLE_HOME/bin/dbca -silent -responseFile /db/soft/database/response/dbca.rsp
等到100%安装完成之后就是安装了。
9. 安装数据库的实例之后,进行配置数据库实例启动以及监听文件。
1)修改监听文件,添加命令如下:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = benguo)
(ORACLE_HOME = /db/oracle11g/product/11.2.0/db)
(SID_NAME = benguo)
)
)
实验如下图:
2)修改实例启动配置文件,如下图,将”N”改成”Y”就好了。这样就可以通过dbstart 启动实例,监听器。
Su - oracle
10 。安装到这一步的时候就算是安装成功了, 可以进行netstat 进行查看oracle 的监听程序是否已经启动, 默认情况下,安装完实例就是启动的状态。
或者是进入数据库内进行查看数据库的状态:
Su - oracle
Sqlplus / as sysdba
Select status from v$instance;
如是open的状态即是正常启动的,如图:
在这里你的数据库就是正常的安装了,并且还正常可以运行。
三 数据库的一些功能的使用。
1. 设置数据库自启动,在/etc/rc.d/init.d/oracle 下
#!/bin/bash
#
# oracle Starts Oracle Database Server
#
#
# chkconfig: 345 80 20
# description: Oracle Database Server
### BEGIN INIT INFO
# Provides: $oracle
### END INIT INFO
case "$1" in
start)
echo -n "Starting Oracle Databases: "
echo "----------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Starting Oracle Databases as part of system up." >> /var/log/oracle
echo "----------------------------------------------------" >> /var/log/oracle
su - oracle -c dbstart >> /var/log/oracle
echo "Done."
echo -n "Starting Oracle Listeners: "
su - oracle -c "lsnrctl start" >> /var/log/oracle
echo "Done."
echo ""
echo "----------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Finished." >> /var/log/oracle
echo "----------------------------------------------------" >> /var/log/oracle
touch /var/lock/subsys/oracle
;;
stop)
echo -n "Shutting Down Oracle Listeners: "
echo "----------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Shutting Down Oracle Databases as part of system down." >> /var/log/oracle
echo "----------------------------------------------------" >> /var/log/oracle
su - oracle -c "lsnrctl stop" >> /var/log/oracle
echo "Done."
rm -f /var/lock/subsys/oracle
echo -n "Shutting Down Oracle Databases: "
su - oracle -c dbshut >> /var/log/oracle
echo "Done."
echo ""
echo "----------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Finished." >> /var/log/oracle
echo "----------------------------------------------------" >> /var/log/oracle
;;
restart)
echo -n "Restarting Oracle Databases: "
echo "----------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Restarting Oracle Databases as part of system up." >> /var/log/oracle
echo "----------------------------------------------------" >> /var/log/oracle
su - oracle -c dbshut >> /var/log/oracle
su - oracle -c dbstart >> /var/log/oracle
echo "Done."
echo -n "Restarting Oracle Listeners: "
su - oracle -c "lsnrctl stop" >> /var/log/oracle
su - oracle -c "lsnrctl start" >> /var/log/oracle
echo "Done."
echo ""
echo "----------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Finished." >> /var/log/oracle
echo "----------------------------------------------------" >> /var/log/oracle
touch /var/lock/subsys/oracle
;;
*)
echo "Usage: oracle {start|stop|restart}"
exit 1
Esac
Chmod 755 /etc/rc.d/init.d/oracle
ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc2.d/S99oracle
ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc3.d/S99oracle
ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc5.d/S99oracle
ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc0.d/K01oracle
ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc6.d/K01oracle
2. 安装数据库之后, 需要创建表空间才能正能使用。
注意: 在创建表空间之前,首先创建表空间名字存放的数据文件目录,如下:
Mkdir -p /db/oracle11g/oradata/zebra
并设置权限,如下:
Chown orale:oinstall /db/oracle11g/oradata/zebra
实验如下图:
创建表空间
create tablespace tyfo datafile '/db/oracle11g/oradata/tyfo/tyfo01.dbf' size 500m autoextend on next 500m maxsize 31g logging online permanent extent management local;
创建用户
create user zebra identified by zebra default tablespace zebra temporary tablespace temp;
设置权限
grant dba,connect, create session, resource to zebra;
创建备份文件,设置权限
CREATE DIRECTORY back AS '/home/oracle';
GRANT READ,WRITE ON DIRECTORY back to zebra;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
alter system set audit_trail=false scope=spfile;
shutdown abort;
startup;
今天就写到这为止, 有新的需求在再写。