2、创建所需的操作系统组和用户
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
设置oracle用户密码
passwd oracle (建议使用oracle)
3、修改内核参数
在/sbin/sysctl.conf 文件中,使用文本编辑器或vi命令增加或修改以下参数
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
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
修改后,使设置生效
/sbin/sysctl -p
在/etc/sysctl.conf 文件中
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 = 9000 65000
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144
4、修改用户限制
在/etc/security/limits.conf 文件中,使用文本编辑器或vi命令增加或修改以下参数
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
在/etc/pam.d/login 文件中,使用文本编辑器或vi命令增加或修改以下内容
session required /lib/security/pam_limits.so
session required pam_limits.so
在/etc/profile 文件中,使用文本编辑器或vi命令增加或修改以下内容
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
5、创建安装目录(可根据情况,选择比较多空间的目录创建 soft目录下)
mkdir -p /soft/u01/app/ (这个目录只是百度的,具体看你喜好)
chown -R oracle:oinstall /soft/u01
chown -R oracle:oinstall /soft/u01/app/
chmod -R 775 /soft/u01/app/
6、创建/etc/oraInst.loc文件,内容如
inventory_loc=/soft/u01/app/oracle/oraInventory
inst_group=oinstall
更改文件的权限
chown oracle:oinstall /etc/oraInst.loc
chmod 664 /etc/oraInst.loc
7、设置oracle环境变量
su - oracle
vi ~/.bash_profile
在最后加上以下内容
export ORACLE_BASE=/soft/u01/app/oracle
export ORACLE_SID=orcl
注意,除了ORACLE_BASE和ORACLE_SID,( /etc/profile和.bash_profile中)不设置任何oracle相关环境变量(ORACLE_HOME, PATH, LD_LIBRARY_PATH等)。
使设置生效
source /home/oracle/.bash_profile
检查环境变量:
env
8、解压oracle安装文件
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
9、复制响应文件模板(只针对11G,其他的版本请百度)
mkdir etc
cp /home/oracle/database/response/* /home/oracle/etc/
设置响应文件权限
su - root
chmod 700 /home/oracle/etc/*.rsp
10、静默安装Oracle软件
su - oracle
修改安装Oracle软件的响应文件/home/oracle/etc/db_install.rsp
oracle.install.option=INSTALL_DB_SWONLY //29 行 安装类型
ORACLE_HOSTNAME=java-linux-test //37 行 主机名称(自己对应的主机名称,可利用hostname查看)
UNIX_GROUP_NAME=oinstall //42 行 安装组
INVENTORY_LOCATION=/soft/u01/oraInventory //47 行 INVENTORY目录 必须在ORACLE_BASE路径以外
SELECTED_LANGUAGES=en,zh_CN,zh_TW //78 行 选择语言
ORACLE_HOME=/soft/u01/app/oracle/product/11.2.0/db_1 //83 行 oracle_home
ORACLE_BASE=/soft/u01/app/oracle //88 行 oracle_base
oracle.install.db.InstallEdition=EE //99 行 oracle版本
oracle.install.db.isCustomInstall=true //108行 自定义安装
oracle.install.db.DBA_GROUP=dba //142行 dba用户组
oracle.install.db.OPER_GROUP=oinstall //147行 oper用户组
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE //160行 数据库类型
oracle.install.db.config.starterdb.globalDBName=orcl //165行 globalDBName
oracle.install.db.config.starterdb.SID=orcl //170行 SID
oracle.install.db.config.starterdb.memoryLimit=512 //192行 自动管理内存的最小内存(M)(200行)
oracle.install.db.config.starterdb.password.ALL=oracle //233行 设定所有数据库用户使用同一个密码
DECLINE_SECURITY_UPDATES=true //385行 设置安全更新
具体可查看db_install.rsp文件
进行静默安装Oracle软件
cd database
./runInstaller -silent -force -responseFile /home/oracle/etc/db_install.rsp
如果出现:
$ Exception in thread "main" java.lang.NoClassDefFoundError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at java.awt.Toolkit$2.run(Toolkit.java:821) ...
这些错误提示,可能是环境变量还没有完全变为oracle下的,那么最好断开与主机的连接,然后重新使用oracle 身份连接:ssh oracle@192.168.122.70;
如果出现:
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2015-07-29_03-58-41PM. Please wait ... [oracle@localhost database]$You can find the log of this install session at: //则表示安装顺利
如果出现:
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2015-07-29_03-58-41PM. Please wait ... [oracle@localhost database]$ //之后就没有反应
或者报错[FATAL] [INS-13013] Target environment do not meet some mandatory requirements
则需要按下面步骤进行:
安装命令中加入选项-ignorePrereq, 详情请见安装中,如果提示 [WARNING] 不必理会,此时安装程序仍在进行,如果出现[FATAL],则安装程序已经停止了。
大约需要五分钟左右......
如果需要查看安装日志信息了解安装进度,可以:
cd $ORACLE_BASE/oraInventory/logs
tail -100f installActions*.log
出现类似如下提示表示安装完成:
#-------------------------------------------------------------------
...
/soft/u01/app/oracle/product/11.2.0/db_1/root.sh
To execute the configuration scripts:
1. Open a terminal window
2. Log in as "root"
3. Run the scripts
4. Return to this window and hit "Enter" key to continue
Successfully Setup Software.
#-------------------------------------------------------------------
使用root用户执行root.sh
su root
/soft/u01/app/oracle/product/11.2.0/db_1/root.sh
增加oracle环境变量
su - oracle
vi ~/.bash_profile
在最后加上以下内容
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/JRE/lib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export LIBPATH=${CLASSPATH}:$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib
export ORACLE_OWNER=oracle
export SPFILE_PATH=$ORACLE_HOME/dbs
export ORA_NLS10=$ORACLE_HOME/nls/data
export DISPLAY=127.0.0.1:0.0
使设置生效
source /home/oracle/.bash_profile
11、静默配置网络
$ORACLE_HOME/bin/netca /silent /responseFile /home/oracle/etc/netca.rsp
可能会出现以下错误:
UnsatisfiedLinkError exception loading native library: njni11
java.lang.UnsatisfiedLinkError: /soft/u01/app/oracle/product/11.2.0/db_1/lib/libnjni11.so: libclntsh.so.11.1: cannot open shared object file: No such file or directory
可能是有些oracle依赖包没有安装:
检查以下RPM包是否安装(官方推荐必装包):
binutils-2.20.51.0.2-5.11.el6 (x86_64)
compat-libcap1-1.10-1 (x86_64)
compat-libstdc++-33-3.2.3-69.el6 (x86_64)
compat-libstdc++-33-3.2.3-69.el6.i686
gcc-4.4.4-13.el6 (x86_64)
gcc-c++-4.4.4-13.el6 (x86_64)
glibc-2.12-1.7.el6 (i686)
glibc-2.12-1.7.el6 (x86_64)
glibc-devel-2.12-1.7.el6 (x86_64)
glibc-devel-2.12-1.7.el6.i686 ksh
libgcc-4.4.4-13.el6 (i686)
libgcc-4.4.4-13.el6 (x86_64)
libstdc++-4.4.4-13.el6 (x86_64)
libstdc++-4.4.4-13.el6.i686
libstdc++-devel-4.4.4-13.el6 (x86_64)
libstdc++-devel-4.4.4-13.el6.i686
libaio-0.3.107-10.el6 (x86_64)
libaio-0.3.107-10.el6.i686
libaio-devel-0.3.107-10.el6 (x86_64)
libaio-devel-0.3.107-10.el6.i686
make-3.81-19.el6
sysstat-9.0.4-11.el6 (x86_64)
使用rpm -qa|grep XX 查看是否安这些依赖包,这些依赖包缺一不可
yum -y install binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel make sysstat unixODBC unixODBC-devel
如果没有直接在google搜索,下载对应版本就可以了最后别忘了:
$ORACLE_HOME/bin/relink all
然后重新执行网络配置
12、静默安装数据库
修改仅安装数据库的响应文件/home/oracle/etc/dbca.rsp
GDBNAME="orcl.java-linux-test" //78 行 全局数据库的名字=SID+主机域名
SID="orcl" //149行 SID
CHARACTERSET="AL32UTF8" //415行 数据库字符集编码,注意将前面的#号去掉(改为ZHS16GBK待测试)
NATIONALCHARACTERSET="UTF8" //425行 编码
SYSPASSWORD="sys"//190行 密码可自己设置
SYSTEMPASSWORE="system"//200行 密码可自己设置
具体可查看dbca.rsp文件
进行静默安装数据库
$ORACLE_HOME/bin/dbca -silent -responseFile /home/oracle/etc/dbca.rsp
[oracle@localhost ~]$ $ORACLE_HOME/bin/dbca -silent -responseFile /home/oracle/e tc/dbca.rsp
Copying database files
1% complete
3% complete
11% complete
18% complete
26% complete
37% complete
Creating and starting Oracle instance
40% complete
45% complete
50% complete
55% complete
56% complete
60% complete
62% complete
Completing Database Creation
66% complete
70% complete
73% complete
85% complete
96% complete
100% complete
Look at the log file "/soft/u01/app/oracle/cfgtoollogs/dbca/orcl/orcl.log" for further details.
建库后实例检查:
ps -ef | grep ora_ | grep -v grep | wc -l21
ps -ef | grep ora_ | grep -v grep
oracle 6637 1 0 16:46 ? 00:00:00 ora_pmon_orcl
oracle 6639 1 0 16:46 ? 00:00:00 ora_vktm_orcl
oracle 6643 1 0 16:46 ? 00:00:00 ora_gen0_orcl
oracle 6645 1 0 16:46 ? 00:00:00 ora_diag_orcl
oracle 6647 1 0 16:46 ? 00:00:00 ora_dbrm_orcl
oracle 6649 1 0 16:46 ? 00:00:00 ora_psp0_orcl
oracle 6651 1 0 16:46 ? 00:00:00 ora_dia0_orcl
oracle 6653 1 0 16:46 ? 00:00:00 ora_mman_orcl
oracle 6655 1 0 16:46 ? 00:00:00 ora_dbw0_orcl
oracle 6657 1 0 16:46 ? 00:00:00 ora_lgwr_orcl
oracle 6659 1 0 16:46 ? 00:00:00 ora_ckpt_orcl
oracle 6661 1 0 16:46 ? 00:00:00 ora_smon_orcl
oracle 6663 1 0 16:46 ? 00:00:00 ora_reco_orcl
oracle 6665 1 0 16:46 ? 00:00:00 ora_mmon_orcl
oracle 6667 1 0 16:46 ? 00:00:00 ora_mmnl_orcl
oracle 6669 1 0 16:46 ? 00:00:00 ora_d000_orcl
oracle 6671 1 0 16:46 ? 00:00:00 ora_s000_orcl
oracle 6761 1 0 16:46 ? 00:00:00 ora_qmnc_orcl
oracle 6776 1 0 16:46 ? 00:00:00 ora_cjq0_orcl
oracle 6778 1 0 16:46 ? 00:00:00 ora_q000_orcl
oracle 6780 1 0 16:46 ? 00:00:00 ora_q001_orcl
建库后监听检查
lsnrctl status
如果出现以下错误
lsnrctl: error while loading shared libraries: /u01/app/oracle/product/11.2.0/db_1/lib/libclntsh.so.11.1: cannotrestore segment prot after reloc: Permission denied
或者
ORA-12547: TNS:lost contact
解决办法:在root用户下执行以下命令
su - root
setenforce 0 不需要重启
修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,需要重启
注意:如果在没有将依赖包全部安装完成后强行安装数据库,那么登录数据库时将会出现:ORA-12547: TNS:lost contact错误,出现这个错误,就重新安装吧
13、修改oracle启动配置文件
su - oracle
vi /etc/oratab
orcl:/soft/u01/app/oracle/product/11.2.0/db_1:Y //把“N”改成“Y”
这样就可以通过dbstart 启动此实例,监听器。
dbstart $ORACLE_HOME
此时所有oracle的进程关闭,监听器也停止。
dbshut $ORACLE_HOME
再次查看监听器状态。
lsnrctl status
如果使用归档日志
sqlplus / as sysdba
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database flashback on; (如果要启用数据库闪回功能则执行)
SQL> alter database open;
SQL> execute utl_recomp.recomp_serial(); (重新编译所有可能失效对象)
SQL> alter system archive log current; (手工归档测试)
默认安装的数据库用户检查
SQL> set lines 256 pages 500
SQL> select USER_ID,USERNAME,ACCOUNT_STATUS,DEFAULT_TABLESPACE from dba_users order by
具体请看http://www.2cto.com/database/201307/229218.html
四、修改linux数据库字符集以及客户端相关问题
如果linux能够利用sqlplus / as sysdba 显示SQL> 表示数据库已经安装成功,但是由于安装的时候使用的是 AL32UTF8需要改为ZHS16GBK
SQL> conn /as sysdba (sqlplus / as sysdba)
SQL> shutdown immediate; (如果无反应 shutdown abort)
SQL> startup mount
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL> alter database open;
SQL> ALTER DATABASE CHARACTER SET AL32UTF8;
ORA-12712: new character set must be a superset of old character set
提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改:
SQL> ALTER DATABASE character set INTERNAL_USE AL32UTF8;
--我们看到这个过程和之前ALTER DATABASE CHARACTER SET操作的内部过程是完全相同的,也就是说 INTERNAL_USE提供的帮助就是使Oracle数据库绕过了子集与超集的校验.
SQL> shutdown immediate;
SQL> startup
以后安装oracle的时候记得选择自定义安装,把这个字符集的事情事先弄好。
涉及三方面的字符集,
1. oracel server端的字符集;
2. oracle client端的字符集;
3. dmp文件的字符集。
在做数据导入的时候,需要这三个字符集都一致才能正确导入。
查询oracle server端的字符集
SQL> select userenv('language') from dual;
客户端添加环境变量NLS_LANG。
AMERICAN_AMERICA.ZHS16GBK
五、导入数据
六、配置监听
若PLSQL无法远程连接数据库,可修改监听文件,
oracle账户下,修改监听文件 /soft/u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
HOST="192.168.118.118" //第8行,HOST默认是主机名,改为本机的ip地址
然后增加以下内容:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = orcl)
(ORACLE_HOME = /soft/u01/app/oracle/product/11.2.0/db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBANAME = orcl)
(ORACLE_HOME = /soft/u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = orcl)
)
)
oracle账户下,继续修改文件/soft/u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
HOST="192.168.118.118" // 第六行,同上将HOST主机名该为本机的IP地址
具体查看listener.ora和tnsnames.ora两个文件。