ORACLE数据库安装
分为两种:
1.图形安装
2.静默安装
图形安装:百度一堆
这个博文写的具详细:https://www.cnblogs.com/ios9/p/8030013.html
这个博文也是可以的:http://www.mamicode.com/info-detail-2369544.html
静默安装:个人爱好
一、准备Oracle 12c的安装条件
此步骤为安装及运行Oracle 12c的必要条件,与图形化安装并无差异。
详细请参考database/welcome.html页面的Database Quick Installation Guide 。
去官方网站下载http://www.oracle.com/cn/downloads/index.html 安装包,有2个包,大约2GB左右
1. 系统配置要求
1)物理内存1GB以上,交换空间大约为物理内存的2倍。
2)安装目录(/data/oracle)建议有8GB以上、/tmp目录建议有1GB以上可用空间。
3)提前配置好主机名、IP地址,完成安装以后不要再改主机名。
检查内存大小,大概有2G,满足要求
[root@ns1 bin]# free -m
total used free shared buffers cached
Mem: 1876 1808 68 0 12 1486
-/+ buffers/cache: 308 1567
Swap: 1023 10 1013
检测swap和/data目录,也是满足要求的
[root@ns1 bin]# df -hT
文件系统 类型 容量 已用 可用 已用%% 挂载点
/dev/sda3 ext4 19G 9.7G 8.0G 55% /
tmpfs tmpfs 939M 444M 495M 48% /dev/shm
/dev/sda1 ext4 194M 27M 158M 15% /boot
/dev/sdb1 ext4 20G 6.0G 13G 33% /data
修改交换分区配置,将原来的一行注释掉,新加一行。不然的话
会提示ORA-00845: MEMORY_TARGET not supported on this system错误
vi /etc/fstab
#tmpfs /dev/shm tmpfs defaults 0 0
tmpfs /dev/shm tmpfs defaults,size=1024m 0 0
必须重启系统,mount -a 无效
reboot
2. 需要的软件环境
yum -y install binutils compat-libstdc++ compat-libstdc++-33 elfutils-libelf-devel gcc gcc-c++ glibc-devel glibc-headers ksh libaio-devel libstdc++-devel make sysstat unixODBC-devel binutils-* compat-libstdc++* elfutils-libelf* glibc* gcc-* libaio* libgcc* libstdc++* make* sysstat* unixODBC* wget unzip
yum install binutils*.i686 compat-libstdc++-33*.i686 elfutils-libelf elfutils-libelf-devel*.i686 elfutils-libelf-devel-static*.i686 gcc gcc-c++ glibc*.i686 glibc-common*.i686 glibc-devel*.i686 glibc-headers*.i686 kernel-headers*.i686 ksh libaio*.i686 libaio-devel*.i686 libgcc*.i686 libgomp*.i686 libstdc++*.i686 libstdc++-devel*.i686 make sysstat*.i686 unixODBC*.i686 unixODBC-devel*.i686 -y
yum clean all
卸载ksh,满足兼容要求,改装RHEL5中的pdksh
rpm -e ksh
wget ftp://ftp.pbone.net/mirror/ftp.scientificlinux.org/linux/scientific/55/i386/SL/pdksh-5.2.14-36.el5.i386.rpm
安装pdksh必须要有编译环境,否则报错
rpm -ivh pdksh-5.2.14-36.el5.i386.rpm
报错就添加 --nodeps --force
3. 内核参数调整(不低于以下值)
vim /etc/sysctl.conf
最后一行添加
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmni = 4096
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 = 1048576
#kernel.shmall = 2097152 //此行默认已有,确认不低于此数即可
#kernel.shmmax = 536870912 //此行默认已有,确认不低于此数即可
加载参数
sysctl -p
运行 #sysctl -p 命令报错
error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
error: "net.bridge.bridge-nf-call-iptables" is an unknown key
error: "net.bridge.bridge-nf-call-arptables" is an unknown key
解决方法,执行如下命令:
modprobe bridge
lsmod | grep bridge
sysctl -p
4. 用户环境要求
1)创建相关用户、组账号
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle --stdin
2)调整用户变量
vim /home/oracle/.bash_profile
最后一行添加
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/12.1.0
ORACLE_SID=orcl
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH
source /home/oracle/.bash_profile
vim /etc/profile
最后一行添加
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/12.1.0
ORACLE_SID=orcl
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH
更新系统环境
source /etc/profile
3)调整会话限制
vim /etc/pam.d/login
最后一行添加
session required pam_limits.so
vim /etc/security/limits.conf
最后一行添加
oracle soft nproc 8192
oracle hard nproc 16384
oracle soft nofile 32768
oracle hard nofile 65536
5. 安装目录准备
创建基本目录
mkdir -p /u01/app/oracle
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/app/oracle
若应答文件内已配置,此文件貌似可无
vim /etc/oraInst.loc
------------------------------------------------------------------
inventory_loc=/u01/app/oracle/oraInventory
inst_group=oinstall
------------------------------------------------------------------
6.正式安装
关于应答文件,我是通过图形化安装时,
在倒数第3步也就是概要这一步时,后边有一个选项,保存响应文件,也就是db.rsp
将这个文件上传到其他linux服务器的oracle用户宿主目录里面
将oracle软件包上传到/opt目录
解压软件包
unzip linuxamd64_12102_database_1of2.zip
unzip linuxamd64_12102_database_2of2.zip
chmod 755 database -R
chown -R oracle:oinstall database
mv database /home/oracle
su - oracle
cd database
静默安装数据库软件
--------------------------------------------------------------------------------------------------------------------------------------
配置response file参数
[oracle@node1 database]$ sed -n '/^[^#]/p' response/db_install.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.1.0 //不用改
oracle.install.option=INSTALL_DB_SWONLY //选择安装类型:1.只装数据库软件
ORACLE_HOSTNAME=主机名
UNIX_GROUP_NAME=oinstall //工作组
INVENTORY_LOCATION=/u01/app/oracle/oraInventory //指定产品清单oracle inventory目录的路径
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/u01/app/oracle/product/12.1.0 //oracle的家目录
ORACLE_BASE=/u01/app/oracle //oracle的安装目录
oracle.install.db.InstallEdition=EE
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=dba
oracle.install.db.BACKUPDBA_GROUP=dba
oracle.install.db.DGDBA_GROUP=dba
oracle.install.db.KMDBA_GROUP=dba
oracle.install.db.config.starterdb.password.ALL=oracle //所有用户使用一个密码,省得在配
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true //这里必须为true,否则安装不成功
oracle.installer.autoupdates.option=SKIP_UPDATES //这一行没有,添加这一行
执行静默安装数据库
--------------------------------
注意上面的响应文件使用了相对路径,结果是报错的,也就是说响应文件不能使用相对路径。
安装过程中,如果提示[WARNING]不必理会,此时安装程序仍在进行,如果出现[FATAL],则安装程序已经停止了。
[root@node1 ~]# su - oracle
[oracle@node1 ~]$ cd database/
[oracle@node1 ~]$ ./runInstaller -silent -ignoreSysPrereqs -ignorePrereq -responseFile /home/oracle/database/response/db_install.rsp
------------------------------------------------------------------------------------------------------------------------------------------------------------
Starting Oracle Universal Installer...
Checking Temp space: must be greater than 500 MB. Actual 34033 MB Passed
Checking swap space: must be greater than 150 MB. Actual 499 MB Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2015-04-09_10-35-02AM. Please wait ...
[oracle@node1 database]$ You can find the log of this install session at:
/u01/app/oracle/oraInventory/logs/installActions2015-04-09_10-35-02AM.log
[oracle@node1 database]$ 如果回到此主命令行,不要手欠,不用管等着就行
同时在安装时,可以再开一个窗口,观察安装进度
tail -f /u01/app/oracle/oraInventory/logs/installActions2015-04-09_10-35-02AM.log
等待大约20分钟左右,就提示安装完成
日志也提示安装完成
出现上面 Unloading Setup Driver数据库安装OK没有问题
返回安装终端,可以看到让你执行脚 本
-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
打开另一个终端,以root用户运行root.sh,上面操作不要断开,执行完下面操作后,回到上面终端,回车一下就OK了
----------------------------------------------------------------------------------------------------------------------
[root@node1 Desktop]# /u01/app/oracle/oraInventory/orainstRoot.sh
[root@node1 Desktop]# /u01/app/oracle/product/12.1.0/root.sh
Check /u01/app/oracle/product/12.1.0/install/root_node1.wml.com_2015-04-10_14-59-37.log for the output of root script
自动配置监听
----------------------------------------------------------------------------------------------------------------------
浏览netca response file参数
[oracle@node1 ~]$ sed -n '/^[^#]/p' response/netca.rsp
[GENERAL]
RESPONSEFILE_VERSION="12.1"
CREATE_TYPE="CUSTOM"
[oracle.net.ca]
INSTALLED_COMPONENTS={"server","net8","javavm"}
INSTALL_TYPE=""typical""
LISTENER_NUMBER=1
LISTENER_NAMES={"LISTENER"}
LISTENER_PROTOCOLS={"TCP;1521"}
LISTENER_START=""LISTENER""
NAMING_METHODS={"TNSNAMES","ONAMES","HOSTNAME"}
NSN_NUMBER=1
NSN_NAMES={"EXTPROC_CONNECTION_DATA"}
NSN_SERVICE={"PLSExtProc"}
NSN_PROTOCOLS={"TCP;HOSTNAME;1521"}
编辑netca response file参数
[oracle@node1 ~]$ cat /home/oracle/database/response/netca.rsp
[GENERAL]
RESPONSEFILE_VERSION="12.1"
CREATE_TYPE="CUSTOM" // Note, 设置为定制的,否则默认的是LISTENER, 1525
[oracle.net.ca]
INSTALLED_COMPONENTS={"server","net8","javavm"}
INSTALL_TYPE=""custom"" #记住此处必须是这个参数
LISTENER_NUMBER=1
LISTENER_NAMES={"LISTENER_ST12C"}
LISTENER_PROTOCOLS={"TCP;1551"}
LISTENER_START=""LISTENER_ST12C""
NAMING_METHODS={"TNSNAMES","ONAMES","HOSTNAME"}
NSN_NUMBER=1
NSN_NAMES={"EXTPROC_CONNECTION_DATA"}
NSN_SERVICE={"PLSExtProc"}
NSN_PROTOCOLS={"TCP;HOSTNAME;1551"}
启动监听,第一次运行会报错,会生成listener.ora文件
su - oracle
netca /silent /responsefile /home/oracle/database/response/netca.rsp #一定要加全路径,否则不成功
正在对命令行参数进行语法分析:
参数"silent" = true
参数"responsefile" = /opt/database/response/netca.rsp
完成对命令行参数进行语法分析。
Oracle Net Services 配置:
完成概要文件配置。
Oracle Net 监听程序启动:
为该监听程序提供的信息正由此计算机上的其他软件使用。
未能启动监听程序。
有关详细信息, 请查看跟踪文件: /data/oracle/cfgtoollogs/netca/trace_OraDB12Home1-1412044上午3026.log
Oracle Net Services 配置失败。退出代码是1
编辑监听文件
vim $ORACLE_HOME/network/admin/listener.ora
将180.168.41.175改成自己的主机名,端口改成1521
例如:
(ADDRESS = (PROTOCOL = TCP)(HOST = node1.wml.com)(PORT = 1521))
再次运行
netca /silent /responsefile /home/oracle/database/response/netca.rsp
正在对命令行参数进行语法分析:
参数"silent" = true
参数"responsefile" = /opt/database/response/netca.rsp
完成对命令行参数进行语法分析。
Oracle Net Services 配置:
完成概要文件配置。
监听程序 "LISTENER" 已存在。
成功完成 Oracle Net Services 配置。退出代码是0
启动服务
lsnrctl start
查看状态
lsnrctl status
查看监听端口
[oracle@node1 ~]$ netstat -anptul | grep 1521
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 :::1521 :::* LISTEN 4898/tnslsnr
执行完后, 监听就已经启动了, 默认端口是1521, 默认是动态监听, 只要实例启动了就会监听到.
静默建立新库
cd /home/oracle/database/response/
vim dbca.rsp
------------------------------------------------------------------------------------------------------------------
[GENERAL]
RESPONSEFILE_VERSION = "12.1.0" //不能更改
GDBNAME = "orcl" //数据库的名字
SID = "orcl" //对应的实例名字
TEMPLATENAME = "General_Purpose.dbc" //建库用的模板文件,不用改
SYSPASSWORD = "oracle" //SYS管理员密码
SYSTEMPASSWORD = "oracle" //SYSTEM管理员密码
DATAFILEDESTINATION = /u01/app/oracle/oradata //数据文件存放目录
RECOVERYAREADESTINATION=/u01/app/oracle/fast_recovery_area //恢复数据存放目录
CHARACTERSET = "ZHS16GBK" // 字符集,重要!!! 建库后一般不能更改,所以建库前要确定清楚。
TOTALMEMORY = "3276" // Oracle 内存使用-3276MB(全部内存*80%) 这要根据系统情况而定
------------------------------------------------------------------------------------------------------------------
执行建库
[oracle@node1 ~]$ dbca -silent -responseFile /home/oracle/database/response/dbca.rsp
Enter SYS user password: 输入密码,如果文件里设置了,就没有此行
Enter SYSTEM user password:输入密码,如果文件里设置了,就没有此行
复制数据库文件
1% 已完成
3% 已完成
11% 已完成
18% 已完成
26% 已完成
33% 已完成
37% 已完成
正在创建并启动 Oracle 实例
40% 已完成
45% 已完成
50% 已完成
55% 已完成
56% 已完成
60% 已完成
62% 已完成
正在进行数据库创建
66% 已完成
70% 已完成
73% 已完成
85% 已完成
96% 已完成
100% 已完成
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/orcl/orcl.log" for further details.
Oracle用户密码有效期问题
------------------------------------------------------------------------------------------------------------------
查看当前有效期,默认是180天
[oracle@node1 database]$ sqlplus / as sysdba
SQL> SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
PROFILE
--------------------------------------------------------------------------------
RESOURCE_NAME RESOURCE
-------------------------------- --------
LIMIT
--------------------------------------------------------------------------------
COM
---
DEFAULT
PASSWORD_LIFE_TIME PASSWORD
180
NO
修改为无限期
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
再次查看
SQL> SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
发现已经是无限期了
DEFAULT
PASSWORD_LIFE_TIME PASSWORD
UNLIMITED
NO
修改数据库为归档模式(归档模式才能热备份,增量备份)
------------------------------------------------------------------------------------------------------------------
[oracle@node1 database]$sqlplus / as sysdba
SQL> shutdown immediate;
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 402655344 bytes
Database Buffers 1191182336 bytes
Redo Buffers 7360512 bytes
Database mounted.
SQL> alter database archivelog;
Database altered.
SQL> alter database flashback on;
Database altered.
SQL> alter database open;
Database altered.
SQL> execute utl_recomp.recomp_serial();
PL/SQL procedure successfully completed.
SQL> alter system archive log current;
System altered.
SQL> exit
修改oracle启动配置文件
------------------------------------------------------------------------------------------------------------------
设置oracle的启动/停止
=====================
这样就可以通过dbstart 启动此实例,也可以通过dbshut关闭此实例了。
[oracle@node1 database]$ vim /etc/oratab
ora11:/u01/app/oracle/product/12.1.0:Y
此时所有oracle的进程关闭,监听器也停止。
[oracle@node1 database]$dbshut /u01/app/oracle/product/12.10
Processing Database instance "orcl": log file /u01/app/oracle/product/12.10/shutdown.log
此时监听器工作,hello实例运行,再次查看监听器状态。
[oracle@node1 database]$dbstart /u01/app/oracle/product/12.1.0
Processing Database instance "orcl": log file /u01/app/oracle/product/12.1.0/startup.log
查看一下监听
$ lsnrctl status
开机启动方法:
==============
方法1:要想让oracle服务随着系统启动而自动启动,需要在/etc/rc.local文件中增加如下:
[oracle@node1 ~ ]$ su - oracle -c "/u01/app/oracle/product/12.1.0/bin/dbstart /u01/app/oracle/product/12.1.0"
方法2:建立启动脚本
[oracle@node1 database]$ su - root
[root@node1 Desktop]# vim /etc/rc.d/init.d/oracle
------------------------------------------------------------------------------------------------------------------------
#!/bin/bash
# oracle: Start/Stop Oracle Database 11g R2
#
# chkconfig: 345 90 10
# description: The Oracle Database is an Object-Relational Database Management System.
#
# processname: oracle
. /etc/rc.d/init.d/functions
LOCKFILE=/var/lock/subsys/oracle
ORACLE_HOME=/u01/app/oracle/product/12.1.0
ORACLE_USER=oracle
case "$1" in
'start')
if [ -f $LOCKFILE ]; then
echo $0 already running.
exit 1
fi
echo -n $"Starting Oracle Database:"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl start"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
touch $LOCKFILE
;;
'stop')
if [ ! -f $LOCKFILE ]; then
echo $0 already stopping.
exit 1
fi
echo -n $"Stopping Oracle Database:"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl stop"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbshut"
rm -f $LOCKFILE
;;
'restart')
$0 stop
$0 start
;;
'status')
if [ -f $LOCKFILE ]; then
echo $0 started.
else
echo $0 stopped.
fi
;;
*)
echo "Usage: $0 [start|stop|status]"
exit 1
esac
exit 0
-------------------------------------------------------------------------------------------------------------------------------------
chmod +x /etc/rc.d/init.d/oracle
chkconfig --add oracle
chkconfig oracle on
service oracle start
如果上面启动时,报如下错误,解决方法
执行dbtest或dbshut报错误:ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener的原因和解决方法错误描述安装好Oracle数据库后: 执行 dbstart和dbshut会提示:[oracle@oracle11g ~]$ dbstartORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net ListenerUsage: /u01/app/oracle/product/12.1.0/bin/dbstart ORACLE_HOME错误原因dbstart和dbshut脚本文件中ORACLE_HOME_LISTNER的设置有问题解决方法分别打开两个文件找到:ORACLE_HOME_LISTNER=$1,修改为ORACLE_HOME_LISTNER=$ORACLE_HOME,命令如下:[oracle@oracle11g ~]$ vi $ORACLE_HOME/bin/dbstart[oracle@oracle11g ~]$ vi $ORACLE_HOME/bin/dbshut修改后保存退出,问题解决
配置WEB-OEM
------------------------------------------------------------------------------------------------------------------------------------------------------------
[root@localhost ~ ]# su - oracle
[oracle@localhost ~]$ cd $ORACLE_HOME/network/admin
[oracle@localhost admin]$ vim listener.ora //这是我的环境的监听文件,与你的不同,你对照自已的配
-------------------------------------------------------------------------------------------------------------
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/12.1.0)
(SID_NAME = orcl)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle.wml.com)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) // IPC的意思是进程间通信,KEY就是进程间通信的钥匙,一般不加
)
)
---------------------------------------------------------------------------------------------------------------
[oracle@localhost admin]$ vim tnsnames.ora //监听客户端配置,也是与你的不同
---------------------------------------------------------------------------------------------------------------
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle.wml.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
---------------------------------------------------------------------------------------------------------------
[oracle@localhost ~]$ lsnrctl start
oracle12c-EM登陆方法(与10g & 11g不相同)
------------------------------------------------------------------------------------------------------------------------------------------------------------
oracle12c的EM经过精简,比11g的EM小了很多,登陆方法也有所变化,需要使用到XDB,需要设置一下端口。
[oracle@localhost ~]$ sqlplus "/as sysdba"
SQL> show parameter dispatchers
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dispatchers string (PROTOCOL=TCP) (SERVICE=orclXD
B)
max_dispatchers integer
SQL> exec DBMS_XDB_CONFIG.setHTTPPort(8080);
PL/SQL procedure successfully completed.
SQL> exit
[oracle@localhost ~]$ lsnrctl status
LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 10-APR-2015 16:02:43
Copyright (c) 1991, 2014, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=node1.wml.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 12.1.0.2.0 - Production
Start Date 10-APR-2015 15:43:50
Uptime 0 days 0 hr. 18 min. 53 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/12.1.0/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/node1/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=node1.wml.com)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=node1.wml.com)(PORT=8080))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "orcl" has 2 instance(s).
Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
访问方法:
http://localhost:8080/em //记住http后面没有s,这与10g & 11g 不同