Linux下静默安装Oracle11g

Linux下静默安装Oracle11g

linux环境下oracle 11g 静默安装

 

1、编写目的

运维人士经常需要干一些环境搭建的事,对于linux下安装oracle,虽然说可以使用带图形界面的安装,只需要设置oracle的安装目录,设置sid名称,db_name实例名称,下一步下一步式的安装,涉及到的磁盘空间检查及相关依赖,如果不符合条件,图形界面都会给予相应提示,好处莫过于方便简单。但是运维的人碰到远程机器没有图形界面的linux系统,很有必要学会oracle的静默安装方式,掌握了此方法,不管是否有图形界面都可以安装成功,以达到一石二鸟的效果。

2、安装环境

Linux服务器:oracle linux 6.6 64位

Oracle服务器:Oracle11gR2 64位

3、系统要求

内存:必须高于1G的物理内存

交换空间:一般为内存的2倍,例如:1G的内存可以设置swap 分区为3G大小

硬盘:5G以上

4、正式安装

1)修改用户的SHELL的限制,修改/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 文件,将以下内容加入该文件。

注意,如果是linux64位,应该将lib改成lib64,否则重启linux系统的时候会报module is unknown错误,导致系统都登录不了,解决方法可查看博文https://blog.csdn.net/huangbaokang/article/details/82778629

session required /lib64/security/pam_limits.so

session required pam_limits.so

 

3)修改linux内核/etc/sysctl.conf文件,将以下内容加入该文件。

fs.file-max = 6815744

fs.aio-max-nr = 1048576

kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 4194304

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

要使该文件修改立即生效,要执行sysctl -p命令

4)修改/etc/profile文件,设置oracle用户的的最大进程数

if [ $USER = “oracle” ]; then

if [ $SHELL = “/bin/ksh” ]; then

ulimit -p 16384

ulimit -n 65536

else

ulimit -u 16384 -n 65536

fi

fi

 

5)建立oracle用户及用户组,oracle产品规定,必须以oracle用户的身份进行安装。

创建用户,输入命令:

groupadd oinstall

groupadd dba

创建Oracle用户和密码,输入命令:

useradd -g oinstall -g dba -m oracle

passwd oracle

然后会让你输入密码,密码任意输入2次,但必须保持一致,回车确认

5)(还是root用户下操作)创建oracle安装目录,及数据文件存放目录位置,这里可自定义。在这里举例安装放在/u01/app/oracle目录

mkdir -p /u01/app/oracle

 

mkdir -p /u01/app/oraInventory

 

6)设置目录所属主为oracle所有。

chown -R oracle:oinstall /u01/app/oracle

chown -R oracle:oinstall /u01/app/oraInventory

7)安装依赖检查

yum install binutils compat-libstdc+±33 elfutils-libelf elfutils-libelf-devel expat gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers libaio libaio-devel libgcc libstdc++ libstdc+±devel make pdksh sysstat unixODBC unixODBC-devel

 

由于pdksh软件包貌似在yum源里没有了,在我安装的时候独立在网上下载了pdksh的rpm包,然后使用rpm -ivh 包名安装,下载地址:http://vault.centos.org/5.11/os/x86_64/CentOS/pdksh-5.2.14-37.el5_8.1.x86_64.rpm。(随便把包放入一个路径,当前路径执行 rpm -ivh 包名安装)如果没有出现我这个问题,可以略过这个独立安装。

8)配置oracle的环境变量,先切换oracle用户

输入:su - oracle

然后输入vi .bash_profile追加以下内容

export ORACLE_BASE=/u01/app/oracle
export ORACLE_SID= orcl
export ROACLE_PID=ora11g
#export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
 
export PATH=$PATH:$ORACLE_HOME/bin
 
export LANG="zh_CN.UTF-8"
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'

 

解释:ORACLE_BASE环境变量为安装根目录,安装完之后会在ORACLE_HOME目录生成好多文件,ORACLE_SID为实例sid,可自定义。

 

注意:修改主机名

命令:hostnamectl set-hostname dbserver

然后在/etc/hosts 文件中添加域名

172.20.96.40 dbserver

 

9)开始安装

官网上下载linux版本的oracle11gR2,一共两个包linux.x64_11gR2_database_1of2.zip,linux.x64_11gR2_database_2of2.zip,使用ftp等方式上传到/home/oracle目录,并使用unzip命令进行解压。

解压完之后会生成database目录。(检查下database的所属用户信息 ll  /home/oracle,一定要是oracle:oinstall,不是的话,使用如下命令修改chown -R oracle:oinstall /home/oracle/database)

 

构建静默安装的rsp响应文件,

 

[oracle@localhost ~]$ cd /home/oracle/database/response/

[oracle@localhost response]$ ls

dbca.rsp dbca.rsp.bak db_install.rsp db_install.rsp.bak netca.rsp netca.rsp.bak

 

我上面把之前的响应文件做了备份。

db_install.rsp文件内容如下:为节省篇幅,我把所有的注释删除了。

注意的地方:INVENTORY_LOCATION为你要安装的目录(前提条件要创建好,之前步骤已创建好该目录),并设置好ORACLE_HOME和ORACLE_BASE,及oracle.install.db.config.starterdb.SID,主要是这几个配置是自定义的。

 

oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0

oracle.install.option=INSTALL_DB_SWONLY

ORACLE_HOSTNAME=dbserver

UNIX_GROUP_NAME=dba

INVENTORY_LOCATION=/u01/app/oraInventory

SELECTED_LANGUAGES=en,zh_CN

ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1

ORACLE_BASE=/u01/app/oracle

oracle.install.db.InstallEdition=EE

oracle.install.db.isCustomInstall=false

oracle.install.db.customComponents=oracle.server:11.2.0.1.0,oracle.sysman.ccr:10.2.7.0.0,oracle.xdk:11.2.0.1.0,oracle.rdbms.oci:11.2.0.1.0,oracle.network:11.2.0.1.0,oracle.network.listener:11.2.0.1.0,oracle.rdbms:11.2.0.1.0,oracle.options:11.2.0.1.0,oracle.rdbms.partitioning:11.2.0.1.0,oracle.oraolap:11.2.0.1.0,oracle.rdbms.dm:11.2.0.1.0,oracle.rdbms.dv:11.2.0.1.0,orcle.rdbms.lbac:11.2.0.1.0,oracle.rdbms.rat:11.2.0.1.0

oracle.install.db.DBA_GROUP=dba

oracle.install.db.OPER_GROUP=dba

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=orcl

oracle.install.db.config.starterdb.characterSet=AL32UTF8

oracle.install.db.config.starterdb.memoryOption=true

oracle.install.db.config.starterdb.memoryLimit=

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=

DECLINE_SECURITY_UPDATES=true

PROXY_HOST=

PROXY_PORT=

PROXY_USER=

PROXY_PWD=

 

然后执行静默安装的如下命令(oracle身份)

[oracle@localhost ~]$ cd /home/oracle/database

 

./runInstaller -silent -force -noconfig -ignorePrereq -responseFile /home/oracle/database/response/db_install.rsp

 

以上命令会自动检查系统是否满足oracle11gR2的安装要求,如交换空间是否够,硬盘,内存等等。执行的时间会比较久,可以先去喝杯咖啡再听首音乐,如不出意外的情况下,会输出如下信息。

Execute Root Scripts in progress.

As a root user, execute the following script(s):

1. /u01/app/oracle/oraInventory/orainstRoot.sh

2. /u01/app/oracle/product/11.2.0.1/db_1/root.sh

 

根据要求,新开一个窗口,以root身份分别执行这两个脚本即可。

1. /u01/app/oracle/oraInventory/orainstRoot.sh

2. /u01/app/oracle/product/11.2.0.1/db_1/root.sh

 

 

最后一步配置监听listener

netca /silent /responsefile /home/oracle/database/response/netca.rsp

启动监听程序:

[oracle@docker ~]$ lsnrctl start

 

如果用工具连接数据库连接不上的问题看下防火墙是不是开启如果开启则需要关闭

查看防火墙状态:firewall-cmd --state

 

关闭防火墙:systemctl stop firewalld

 

 

静默dbca建库,编辑应答文件

 

[oracle@docker ~]$ vi /home/oracle/database/response/dbca.rsp

[GENERAL]

RESPONSEFILE_VERSION = "11.2.0"

OPERATION_TYPE = "createDatabase"

[CREATEDATABASE]

GDBNAME = "orcl"

SID = "orcl"

TEMPLATENAME = "General_Purpose.dbc"

CHARACTERSET = "AL32UTF8"

 

 建库

[oracle@docker ~]$ dbca -silent -responseFile /home/oracle/database/ response /dbca.rsp

 

 

5、数据库验证

 

su - oracle 切换oracle用户

sqlplus / as sysdba 登录sqlplus

startup 启动oracle

建用户和表空间命令

/临时表空间/

 

创建表空间

查询用户表空间文件的路径

select name from v$datafile;
CREATE TABLESPACE customerchat LOGGING DATAFILE '/database/app/oracle/oradata/ccorcl/customerchat.dbf' SIZE 100M AUTOEXTEND ON NEXT 32M MAXSIZE 500M EXTENT MANAGEMENT LOCAL;

 

 

4、创建临时表空间

select name from v$tempfile;
create temporary tablespace customerchat_temp tempfile 
'/database/app/oracle/oradata/ccorcl/customerchat_temp.dbf' 
size 100m autoextend on next 32m maxsize 500m extent management local;

 

5、创建用户密码与上面创建的文件形成映射关系

create user customerchat identified by customerchat default tablespace 
customerchat temporary tablespace customerchat_temp;

 

6、为用户添加权限

初始建立的用户没有任何权限,不能执行任何数据库操作,因此必须为用户设置权限或者角色。被赋予了某个角色的用户将拥有该角色所具备的权限,常被用到的系统预定义角色:CONNECT、RESOURCE、DBA、EXP_FULL_DATABASE、IMP_FULL_DATABASE。其中,CONNECT、RESOURCE、DBA主要用于数据库管理,数据库管理员需要被授予这三个角色。一般的数据库开发人员,需要被授予CONNECT、RESOURCE角色即可。EXP_FULL_DATABASE、IMP_FULL_DATABASE角色分别用于操作数据库导出、导入相关的操作。为用户授予角色:

grant connect,resource to customerchat;

 

到这就可以用数据库客户端 customerchat/customerchat登入数据库了 这个服务名为orcl

 

7、查询已创建的用户

select username from dba_users;

8、修改用户密码:

--将用户的密码设置为123456
alter user customerchat identified by 123456;

有时用户会处于锁定状态,解锁用户:

alter user customerchat account unlock;

9除用户语句:

drop user 用户名 cascade;
--删除空的表空间,但是不包含物理文件
drop tablespace tablespace_name;
--删除非空表空间,但是不包含物理文件
drop tablespace tablespace_name including contents;
--删除空表空间,包含物理文件
drop tablespace tablespace_name including datafiles; 
--删除非空表空间,包含物理文件
drop tablespace tablespace_name including contents and datafiles;
--如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上CASCADE CONSTRAINTS
drop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;

10、登录

sqlplus usernmae/password

报错:

ERROR:
ORA-01045: user CUSTOMERCHAT lacks CREATE SESSION privilege; logon denied

 

这是因为没有创建会话的权限,可以重新赋创建会话的权限

grant create session to customerchat;

11、查询用户下所有表

SELECT * FROM ALL_TABLES WHERE OWNER= 'CUSTOMERCHAT';

其中用户名必须大写

select * from all_tab_comments 
-- 查询所有用户的表,视图等
select * from user_tab_comments   
-- 查询本用户的表,视图等
select * from all_col_comments 
--查询所有用户的表的列名和注释.
select * from user_col_comments 
-- 查询本用户的表的列名和注释
select * from all_tab_columns 
--查询所有用户的表的列名等信息(详细但是没有备注).
select * from user_tab_columns 
--查询本用户的表的列名等信息(详细但是没有备注).

12、Linux使用sqlplus退格

使用Ctrl+Backspace

13、登录新建的customerchat用户导入sql文件

--sqlplus登录:
sqlplus customerchat/customerchat

导入sql文件:@路径名/文件名

报如下错误:

ORA-01031: insufficient privileges

这是因为没有建表的权限

登录dba用户导入

sqlplus / as sysdba

导入sql文件报如下错误:

ORA-01950: no privileges on tablespace 'CUSTOMERCHAT'

这是由于创建表空间时设置了有限的大小,两种方法:

方法1: 授予用户对该表空间的UNLIMITED配额

ALTER USER CUSTOMERCHAT  QUOTA UNLIMITED ON customerchat;

方法2: 重新授权resource角色给用户之后,便可以创建表

GRANT RESOURCE TO CUSTOMERCHAT;

 

exit 退出sqlplus

lsnrctl start命令启动监听

 

查看系统ip,使用ifconfig命令,用oracle sql developer等客户端进行连接验证,并注意防火墙问题。

 

 

数据库启动:

(1) 以oracle身份登录数据库,命令:su – oracle  
(2) 以系统管理员登录,命令:sqlplus / as sysdba  
(3) 启动数据库,命令:startup  
(4) 如果是关闭数据库,命令:shutdown immediate  
(5) 退出sqlplus控制台,命令:exit  
(6) 进入监听器控制台,命令:lsnrctl  
(7) 启动监听器,命令:start  
(8) 退出监听器控制台,命令:exit  
(9)重启数据库结束

 

你可能感兴趣的:(Linux)