您的位置:首页 > 数据库 > Oracle

Linux静默安装Oracle

2017-03-08 16:38 471 查看
1、准备oracle 安装包 linux.x64_11gR2_database_1of2.zip 和 linux.x64_11gR2_database_2of2.zip

2、检查本机依赖包,没找到的用 yum install ****** 命令安装

rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel

3、创建所需的操作系统组和用户

groupadd oinstall

groupadd dba

useradd -g oinstall -G dba oracle

说明:

-g:指定用户所属的起始群组。

-G:指定用户所属的附加群组。

设置oracle用户密码

passwd oracle

密码:oracle123

4、修改内核参数

vi /etc/sysctl.conf 在后面追加下面配置

#Oracle

kernel.sem = 250 32000 100 128

kernel.shmmax = 2147483648(这里配置物理内存的一半,单位是字节。比如物理内存是16G,这个值就是8Gx1024x1024x1024=1073741824)

kernel.shmmni = 4096

kernel.shmall = 2097152(这里配置物理内存的四分之一,单位是k。比如物理内存是16G,这个值就是4G*1024*1024=4194304)

fs.file-max = 6815744

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 4194304

net.core.rmem_max = 8388608

net.core.wmem_default = 4194304

net.core.wmem_max = 4194304

fs.aio-max-nr = 1048576

保存后执行 /sbin/sysctl -p 命令,使修改生效。

我的配置:

#Oracle

kernel.sem = 250 32000 100 128

kernel.shmmax = 4294967296

kernel.shmmni = 4096

kernel.shmall = 2097152

fs.file-max = 6815744

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 4194304

net.core.rmem_max = 8388608

net.core.wmem_default = 4194304

net.core.wmem_max = 4194304

fs.aio-max-nr = 1048576

5、修改用户限制

vi /etc/security/limits.conf 在后面追加下面配置

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

oracle soft stack 10240

vi /etc/pam.d/login 在后面追加下面配置

session required /lib/security/pam_limits.so

session required pam_limits.so

vi /etc/profile 在配置文件结尾处(unset i 和 unset -f pathmunge 之前)追加下面配置

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 命令,使修改生效。

6、创建安装目录,并修改目录所有者

mkdir -p /data/oracle

chown -R oracle:oinstall /data/oracle

chmod -R 775 /data/oracle

7、创建/etc/oraInst.loc文件

vi /etc/oraInst.loc 在里面写入下面配置

nventory_loc=/data/oracle/oraInventory

inst_group=oinstall

保存后修改文件权限

chown oracle:oinstall /etc/oraInst.loc

chmod 664 /etc/oraInst.loc

8、设置oracle环境变量

用oracle用户登录

su - oracle

vi ~/.bash_profile 在后面追加下面配置

export ORACLE_BASE=/data/oracle

export ORACLE_SID=orcl(这里是用户自己定义的数据库名称,后面就不能再改了)

保存后执行 source /home/oracle/.bash_profile 命令,使修改生效。

执行 env 命令,检查环境变量。

9、把前面准备的数据库安装文件移动到 /home/oracle/

10、解压oracle安装文件

unzip linux.x64_11gR2_database_1of2.zip

unzip linux.x64_11gR2_database_2of2.zip

解压缩后的安装文件在 /home/oracle/database 目录

11、复制响应文件模板

创建 /home/oracle/ 目录下的 etc 目录

mkdir etc

复制响应文件

cp /home/oracle/database/response/* /home/oracle/etc/

设置响应文件权限

su - root

chmod 700 /home/oracle/etc/*.rsp

12、静默安装Oracle软件

12.1 登陆 oracle 用户

su - oracle 

12.2 vi /home/oracle/etc/db_install.rsp 修改安装Oracle软件的响应文件,这个环节其实就是图形化安装中的各种选项和“下一步”,不过静默安装要在配置文件里提前配置好。具体配置如下:

oracle.install.option=INSTALL_DB_SWONLY // 安装类型

ORACLE_HOSTNAME=oracle // 主机名称(hostname查询,这里要注意,主机名要在 /etc/hosts 文件中配置好ip对应关系,否则安装会报错)

UNIX_GROUP_NAME=oinstall // 安装组

INVENTORY_LOCATION=/data/oracle/oraInventory //INVENTORY目录(不填就是默认值)

SELECTED_LANGUAGES=en,zh_CN,zh_TW // 选择语言

ORACLE_HOME=/data/oracle/product/11.2.0/db_1 // oracle_home

ORACLE_BASE=/data/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=oinstall // oper用户组

oracle.install.db.config.starterdb.type=GENERAL_PURPOSE //数据库类型

oracle.install.db.config.starterdb.globalDBName=orcl //globalDBName(这里要和第8步配置的sid一致)

oracle.install.db.config.starterdb.SID=orcl //SID(这里要和第8步配置的sid一致)

oracle.install.db.config.starterdb.memoryLimit=81920 //自动管理内存的内存(M)

oracle.install.db.config.starterdb.password.ALL=123456//设定所有数据库用户使用同一个密码

SECURITY_UPDATES_VIA_MYORACLESUPPORT=false(手动写了false)

DECLINE_SECURITY_UPDATES=true //设置安全更新(貌似是有bug,这个一定要选true,否则会无限提醒邮件地址有问题,终止安装。PS:不管地址对不对)

system/123456

12.3 /home/oracle/database/ 目录开始静默安装。

./runInstaller -silent -ignorePrereq -responseFile /home/oracle/etc/db_install.rsp (我曾经在安装时一直报错,SEVERE: [FATAL] [INS-13013] 目标环境不满足一些必需要求。后来在请求参数里增加了 -ignorePrereq 后安装成功了 ./runInstaller -silent -ignorePrereq -responseFile /home/oracle/etc/db_install.rsp)

【补充一个异常:安装时如果提示swap空间为0M,需要做如下配置:

dd if=/dev/zero of=/home/swapfile bs=1M count=4096

mkswap /home/swapfile

swapon /home/swapfile

vi /etc/fstab

/home/swapfile swap swap defaults 0 0



安装中,如果提示[WARNING]不必理会,此时安装程序仍在进行,如果出现[FATAL],则安装程序已经停止了。

安装日志信息在 /data/oracle/oraInventory/logs/ 目录下。

installActions2016-07-14_10-49-36AM.log安装过程

oraInstall2016-07-14_10-49-36AM.err错误日志

oraInstall2016-07-14_10-49-36AM.out输出日志

12.4 当 oraInstall2016-07-14_10-49-36AM.out 文件出现下面信息,就表示安装完成了

/data/oracle/product/11.2.0/db_1/root.sh

要执行配置脚本, 请执行以下操作:

1. 打开一个终端窗口

2. 以 "root" 身份登录

3. 运行脚本

4. 返回此窗口并按 "Enter" 键继续

Successfully Setup Software.

12.5 执行 su - root 命令,用 root 用户登录

/data/oracle/product/11.2.0/db_1/root.sh

12.6 执行 su - oracle 命令,用 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

保存后执行 source /home/oracle/.bash_profile 命令,使修改生效。

执行 env 命令,检查环境变量。

13、到这里,oracle 11g 的数据库实例就算是装好了,接下来配置数据库实例的基本参数文件

cd $ORACLE_HOME/dbs (实际这个目录是/data/oracle/product/11.2.0/db_1/dbs)

这时目录下有 init.ora 文件,执行下面命令,会创建一个新的基本参数配置文件

cat init.ora | grep -V ^# | grep -V ^$ | > init$ORACLE_SID.ora

新创建的文件名是 init(sid).ora,比如我在第8步配置的是orcl,那么这个文件名就是 initorcl.ora

这个新创建的文件是个空文件,需要手动把 init.ora 里面的内容复制过来,把内容里面的

<ORACLE_BASE> 全部改成绝对地址 /data/oracle

db_name='【sid】'(这里的sid要和第8步配置的sid一致) 

audit_file_dest='/data/oracle/admin/【sid】/adump'(这里的sid要和第8步配置的sid一致) 

并用 oracle 用户手动创建 

/data/oracle/admin/【sid】/adump(这里的sid要和第8步配置的sid一致) 

/data/oracle/flash_recovery_area

/data/oracle/oradata

14、执行命令 vi /home/oracle/script.sql 编辑sql脚本文件,内容如下:

CREATE DATABASE orcl(这里要和第8步配置的sid一致)

USER SYS IDENTIFIED BY sys 

USER SYSTEM IDENTIFIED BY system 

LOGFILE 

GROUP 1 ('/data/oracle/oradata/redo01.log') SIZE 1024M, 

GROUP 2 ('/data/oracle/oradata/redo02.log') size 1024m, 

GROUP 3 ('/data/oracle/oradata/redo03.log') size 1024m, 

GROUP 4 ('/data/oracle/oradata/redo04.log') size 1024m, 

GROUP 5 ('/data/oracle/oradata/redo05.log') size 1024m

MAXLOGFILES 5 

MAXLOGMEMBERS 5 

MAXLOGHISTORY 200 

MAXDATAFILES 10000

MAXINSTANCES 1 

CHARACTER SET ZHS16GBK 

NATIONAL CHARACTER SET AL16UTF16 

datafile '/usr/oracle/oradata/system01.dbf' size 2048M  REUSE

EXTENT MANAGEMENT LOCAL

sysaux datafile '/usr/oracle/oradata/sysaux01.dbf' size 2048M REUSE

default temporary tablespace temp 

tempfile '/usr/oracle/oradata/temp01.dbf' size 2048M REUSE

undo tablespace UNDOTBS1 

datafile '/usr/oracle/oradata/undotbs01.dbf' size 4096M  REUSE

AUTOEXTEND off

default tablespace DATA

datafile '/usr/oracle/oradata/data01.dbf' size 8192M  REUSE

EXTENT MANAGEMENT LOCAL

SEGMENT SPACE MANAGEMENT AUTO;

15、执行命令 sqlplus / as sysdba 登陆 oracle 数据库

登陆成功后执行 startup nomount; 启动数据库,注意必须包含有分号,否则oracle不执行。

16、@/home/oracle/script.sql; 执行第14步配置的脚本

如果这里报错:

ERROR at line 1:

ORA-01501: CREATE DATABASE failed

ORA-00200: control file could not be created

ORA-00202: control file: '/usr/oracle/product/11.2.0/db_1/dbs/ora_control1'

ORA-27038: created file already exists

Additional information: 1

就说明此脚本之前执行过,但是失败了。删除掉 /usr/oracle/product/11.2.0/db_1/dbs/ 目录下的 ora_control1 和 ora_control2 再重新执行脚本即可。

这个脚本执行过程很长,而且没有任何提示,等显示 Database created. 就成功了。

17、创建数据字典和pl/sql包

@/data/oracle/product/11.2.0/db_1/rdbms/admin/catalog.sql;

@/data/oracle/product/11.2.0/db_1/rdbms/admin/catproc.sql;

@/data/oracle/product/11.2.0/db_1/rdbms/admin/utlrp.sql;

conn system/system;

@/data/oracle/product/11.2.0/db_1/sqlplus/admin/pupbld.sql;

前两个脚本执行过程很长。

创建完成后先执行 exit 命令退出,然后再执行 sqlplus / as sysdba 登陆数据库;

然后执行 shutdown immediate; 命令关闭数据库;

再执行 startup; 启动oracle数据库。先退出再登陆是因为conn system/system之后,当前用户就变成了system,而system没有关闭数据库权限。

18、配置监听文件

18.1、执行 vim /data/oracle/product/11.2.0/db_1/network/admin/listener.ora 命令,插入内容如下:

# listener.ora Network Configuration File: /app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

# Generated by Oracle configuration tools.

LISTENER =

 (DESCRIPTION_LIST =

   (DESCRIPTION =

     (ADDRESS = (PROTOCOL = TCP)(HOST = 【计算机名】)(PORT = 1521))(这里的HOST要填本机的计算机名)

   )

 )

ADR_BASE_LISTENER = /app/oracle

18.2、执行 vi /data/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora 命令,插入内容如下:

# tnsnames.ora Network Configuration File: /app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.

QXT =

 (DESCRIPTION =

   (ADDRESS = (PROTOCOL = TCP)(HOST = 【计算机名】)(PORT = 1521))(这里的HOST要填本机的计算机名)

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = orcl)(这里要填写第8步定义的sid)

   )

 )

# listener.ora Network Configuration File: /app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

# Generated by Oracle configuration tools.

LISTENER =

 (DESCRIPTION_LIST =

   (DESCRIPTION =

     (ADDRESS = (PROTOCOL = TCP)(HOST = 【计算机名】)(PORT = 1521))(这里的HOST要填本机的计算机名)

   )

 )

ADR_BASE_LISTENER = /app/oracle

19、启动监听

 切换帐户

# su - Oracle

执行命令 lsnrctl start 启动监听

提示 The command completed successfully 执行成功

20、创建用户

执行命令 sqlplus / as sysdba 登陆 oracle 数据库

执行下面语句,创建用户

create user zs_user identified by 123456; 

grant connect, resource to zs_user;

grant create session to zs_user;

执行下面语句,创建表空间

create tablespace zs_user_DATA datafile '/data/oracle/oradata/zs_user001.dbf' size 16G;

执行下面语句,指定表空间

alter user zs_user default tablespace zs_user_DATA temporary tablespace TEMP;

至此全部完成,用navicat链接一下,正常。最后提醒一下自己,不要忘了开放防火墙的1521端口。 

另附:

远程使用plsql工具登录sys用户,提示ORA-01031 insufficient privileges。


问题解决方法

1.首先使用本地系统用户启动数据库,使用名称查看配置参数

[sql] view
plain copy

show parameter password  

查看参数状态EXCLUSIVE则为正常状态,如果不是,则修改pfile或者是spfile的参数

[sql] view
plain copy

alter system set remote_login_passwordfile='EXCLUSIVE'  

2.查询密码文件视图

[sql] view
plain copy

select * from v$pwfile_users  

如果没有结果集返回,则说明密码文件有问题,重新配置密码文件并且给用户赋予sysdba权限。

切换到$ORACLE_HOME/dbs下。可能密码文件不存在,如果存在备份密码文件,然后使用

[sql] view
plain copy

OS命令:  

orapwd file=orapwdev password=oracle;  

命令重新新建密码文件,注意opapwdev中的dev为实例名。

这时候问题应该解决了。重新使用以下SQL查询,应该显示一条SYS记录了!

[sql] view
plain copy

select * from v$pwfile_users
 

转自: http://blog.csdn.net/sunansheng/article/details/49999353
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: