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)重启数据库结束