ORALCE 数据库静默安装教程(Center OS 7) --用于个人理解

ORALCE 数据库静默安装教程(Center OS 7) --用于个人理解

  • 一、安装前准备工作
    • 1.安装依赖包
    • 2.建立用户组和用户
    • 3.在/etc/hosts文件内容的最底下添加主机名(注掉原来的,然后添加自己的)
    • 4.将oracle使用者加入到sudo群组 (为的是让oracle能够执行一些root命令,不需要频繁的切换用户)
    • 提示:无论安装什么版本的oracle,在安装之前,都需要配置 /etc/pam.d/login /etc/profile /etc/security/limits.conf这三个文件
    • 5.首先需要编辑/etc/security/limits.conf文件(用户限制配置文件)
    • 6.然后编辑/etc/pam.d/login文件 (将配置文件加入到登录验证模块)
    • 7.修改linux内核,修改/etc/sysctl.conf文件,输入命令: vi /etc/sysctl.conf ,按i键进入编辑模式,将下列内容加入该文件
    • 8.最后编辑/etc/profile文件(环境变量文件),在末尾插入:
    • 9.创建数据库软件目录和数据文件存放目录,目录的位置,根据自己的情况来定,注意磁盘空间即可,例如:
    • 10.更改目录属主为Oracle用户所有,输入命令
    • 11.配置oracle用户的环境变量,前提是需要将用户切换到oracle用户下:su - oracle
    • 12.关闭防火墙
    • 13.关闭selinux(需重启生效,#为啥要关闭selinux?因为selinux太高深,非专业人士搞不懂~~)
  • 二 、开始安装
    • 1.解压oracle1数据库安装包
    • 2.编辑oracle数据库安装应答文件(在解压路径下的/database/response下)
    • 3.安装
    • 4.安装后的操作(安装完成时,安装日志中会提醒路径)
    • 5.配置监听(更多详细文件解读可看该文件同目录下的:netca.rsp参数解读文件,监听模板文件最好默认,改了容易出错)
    • 6.修改监听信息配置文件 (在oracle用户)
    • 7.添加数据库实例(root用户下)(以下文件参数可能有被引掉的,更多详细文件解读可看该文件同目录下的:dbca.rsp参数解读文件)
    • 8.安装/创建实例
    • 9.确保监听启动了
    • 10.修改配置文件
    • 11.进入数据库测试
    • 12.收尾检查
    • 13.可能会用到的语句

一、安装前准备工作

1.安装依赖包

yum -y install binutils compat-libstdc+±33 compat-libstdc+±33.i686 psmisc 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 unzip glibc-.i686 glibc-devel-.i386

2.建立用户组和用户

groupadd oinstall  #创建用户组oinstall
groupadd dba  #创建用户组dba
useradd -g oinstall -G dba oracle  #创建oracle用户,并加入到oinstall和dba用户组

理论上单例按照需要3种用户组,实际只建两个oinstall和dba,后面再安装oracle数据库的时候把OSOPER组也设置是dba组。 
a.oracle 清单组(一般为oinstall): 
  OINSTALL 组的成员被视为 Oracle 软件的“所有者”,拥有对 Oracle 中央清单 (oraInventory) 的写入权限。在一个 Linux 系统上首次安装 Oracle 软件时, 
  OUI 会创建 /etc/oraInst.loc 文件。该文件指定 Oracle 清单组的名称(默认为 oinstall)以及 Oracle 中央清单目录的路径。 
b.数据库管理员(OSDBA,一般为 dba): 
  OSDBA 组的成员可通过操作系统身份验证使用 SQL 以 SYSDBA 身份连接到一个 Oracle 实例。该组的成员可执行关键的数据库管理任务,如创建数据库、启动和关 
  闭实例。该组的默认名称为dba。SYSDBA 系统权限甚至在数据库未打开时也允许访问数据库实例。对此权限的控制完全超出了数据库本身的范围。不要混淆 SYSDBA  
  系统权限与数据库角色 DBA。DBA 角色不包括 SYSDBA 或 SYSOPER 系统权限。 
c.数据库操作员组(OSOPER,一般为 oper): 
  OSOPER 组的成员可通过操作系统身份验证使用 SQL 以 SYSOPER 身份连接到一个 Oracle 实例。这个可选组的成员拥有一组有限的数据库管理权限,如管理和运行备份。 
  该组的默认名称为oper。SYSOPER 系统权限甚至在数据库未打开时也允许访问数据库实例。对此权限的控制完全超出了数据库本身的范围。要使用该组,选择 Advanced 安装类型来安装 Oracle 数据库软件。  

3.在/etc/hosts文件内容的最底下添加主机名(注掉原来的,然后添加自己的)

#查看自己的主机名
		hostname
	例:127.0.0.1 localhost
		192.168.146.134 localhost.localdomain  (自己的IP和主机名)

4.将oracle使用者加入到sudo群组 (为的是让oracle能够执行一些root命令,不需要频繁的切换用户)

输入 vi /etc/sudoers
	找到 root       ALL=(ALL)       ALL 
	在后面加入 oracle 	   ALL=(ALL)       ALL

提示:无论安装什么版本的oracle,在安装之前,都需要配置 /etc/pam.d/login /etc/profile /etc/security/limits.conf这三个文件

5.首先需要编辑/etc/security/limits.conf文件(用户限制配置文件)

	 oracle soft nproc 2047

     oracle hard nproc 16384

     oracle soft nofile 1024

     oracle hard nofile 65536
	 
	 oracle soft stack  10240

6.然后编辑/etc/pam.d/login文件 (将配置文件加入到登录验证模块)

     session required  /lib64/security/pam_limits.so
	 session required   pam_limits.so

7.修改linux内核,修改/etc/sysctl.conf文件,输入命令: vi /etc/sysctl.conf ,按i键进入编辑模式,将下列内容加入该文件

	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
提示:要使 /etc/sysctl.conf 更改立即生效,执行以下命令。 输入:sysctl -p 显示如下

8.最后编辑/etc/profile文件(环境变量文件),在末尾插入:

	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

9.创建数据库软件目录和数据文件存放目录,目录的位置,根据自己的情况来定,注意磁盘空间即可,例如:

	#同时创建多层文件夹:	mkdir -p
	01	mkdir /data/oracle              #(oracle 总体目录)
	
	02	mkdir /data/oracle/oracle_soft  #(存放软件位置) 
	03	mkdir /data/oracle/oracle_soft/product  #(存放不同版本数据库的位置:03是为了更加细化将不同版本oracle数据库区分相隔) 
		mkdir /data/oracle/oracle_soft/product/11.2.0
		mkdir /data/oracle/oracle_soft/product/11.2.0/dbhome_1   #(这个目录配置信息里面会需要)
		
	04	mkdir /data/oracle/oracle_data  #(存放数据文件位置) 
	05	mkdir /data/oracle/inventory  #(nventory是oracle安装工具OUI用来管理oracle安装目录的) 
	06  mkdir /data/oracle/flash_recovery_area	#(闪回区) 
	
	#授权给用户及用户组
	chown -R oracle:oinstall /data/oracle
	Chmod -R 775 /data/oracle

10.更改目录属主为Oracle用户所有,输入命令

	chown -R oracle:oinstall /data/oracle

11.配置oracle用户的环境变量,前提是需要将用户切换到oracle用户下:su - oracle

	export ORACLE_BASE=/data/oracle   	#数据库目录结构的基目录,建议软件安装之前设置好此项

	export ORACLE_HOME=$ORACLE_BASE/oracle_soft/product/11.2.0/dbhome_1 	#制定ORACLE数据库软件的安装目录位置

	export ORACLE_SID=orcl				#初始实例名称,提供用户连接指定的数据库,可选环境变量,对简化以后与特定实例的交互很有用。

	export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin  #PATH 这个变量包含了一系列由冒号分隔开的目录,系统就从这些目录里寻找可执行文件。如果你输入的可执行文件(例如ls、rc-update或者emerge) 不在这些目录中,系统就无法执行它(除非你输入这个命令的完整路径,如/bin/ls)。

	export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
	if [ $USER = "oracle" ]; then
	if [ $SHELL = "/bin/ksh" ]; then
	ulimit -p 16384
	ulimit -n 65536
	else
	ulimit -u 16384 -n 65536
	fi
	umask 022
	fi

12.关闭防火墙

	systemctl status firewalld.service  #查看防火墙状态
	systemctl stop firewalld.service 	#关闭防火墙状态
	systemctl start firewalld.service 	#关闭防火墙状态

13.关闭selinux(需重启生效,#为啥要关闭selinux?因为selinux太高深,非专业人士搞不懂~~)

	vim /etc/selinux/config
	修改为SELINUX=disabled

二 、开始安装

1.解压oracle1数据库安装包

将文件导入服务器后解压

unzip p10404530_112030_Linux-x86-64_1of7.zip
unzip p10404530_112030_Linux-x86-64_2of7.zip

2.编辑oracle数据库安装应答文件(在解压路径下的/database/response下)

安装好会出现三个应答文件:db_install.rsp(安装软件的配置文件,)、dbca.rsp(数据库实例配置文件)和netca.rsp(监听模板文件)
此处有注意点:SELECTED_LANGUAGES=zh_CN //78 行 选择语言 不应该填写 安装时候会报错予验安装不兼容问题

db_install.rsp参数解读文件

编辑 vi db_install.rsp  文件,修改一些配置(后面备注的行数可能会存在一些差异视情况而见
更多详细文件解读可看该文件同目录下的:db_install.rsp参数解读文件)
oracle.install.option=INSTALL_DB_SWONLY  		 				//29 行 安装类型
ORACLE_HOSTNAME=chances 						 				//37 行 主机名称
UNIX_GROUP_NAME=oinstall 						 				//42 行 安装组
INVENTORY_LOCATION=/data/oracle/inventory 		 				//47 行 INVENTORY目录
SELECTED_LANGUAGES= 							 				//78 行 选择语言
ORACLE_HOME=/data/oracle/oracle_soft/product/11.2.1/dbhome_1	//83 行 oracle_home
ORACLE_BASE=/data/oracle 						 				//88 行 oracle_base
oracle.install.db.InstallEdition=EE 			 				//99 行 oracle版本
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=800  			//192行 自动管理内存的最小内存(M)
oracle.install.db.config.starterdb.password.ALL=oracle 			//233行 设定所有数据库用户使用同一个密码
DECLINE_SECURITY_UPDATES=true 									//385行 设置安全更新

3.安装

进入解压路径database下
执行(静默安装)	
	./runInstaller -silent -responseFile /data/oracle_zip/database/response/db_install.rsp -ignorePrereq
	
tips:安装时可能会报一下错误(报错s为权限不够,目前还不知道为什么)
	01 [FATAL] [INS-32038] 为主产品清单 (oraInventory) 所有权指定的操作系统组无效。
	   原因: 执行安装的用户不是为主产品清单 (oraInventory) 所有权指定的操作系统组的成员。
	   操作: 请指定安装用户所属的操作系统组。此操作系统组的所有成员都将具有主产品清单目录 (oraInventory) 的写权限
	解决办法:创建 vim /etc/oraInst.loc文件
			  输入 inventory_loc=/data/oracle/inventory         (该路径为INVENTORY目录)
				   inst_group=oinstall
	02  这只是警告不是报错!!!,可以去看日志了
		例:[WARNING] [INS-32055] 主产品清单位于 Oracle 基目录中。
	   原因: 主产品清单位于 Oracle 基目录中。
	   操作: Oracle 建议将此主产品清单放置在 Oracle 基目录之外的位置中。
		

出现 Successfully Setup Software. 意味着安装完成

4.安装后的操作(安装完成时,安装日志中会提醒路径)

以 root 用户的身份执行以下脚本:
    1. /data/oracle/inventory/orainstRoot.sh
    2. /data/oracle/oracle_soft/product/11.2.0/dbhome_1/root.sh

5.配置监听(更多详细文件解读可看该文件同目录下的:netca.rsp参数解读文件,监听模板文件最好默认,改了容易出错)

netca.rsp参数解读文件

	#root环境下编辑
	vim /解压路径/database/response/netca.rsp
	INSTALL_TYPE=""typical""安装的类型
	LISTENER_NUMBER=1监听器数量
	LISTENER_NAMES={"LISTENER"}监听器的名称列表
	LISTENER_PROTOCOLS={"TCP;1521"}监听器使用的通讯协议列表
	LISTENER_START=""LISTENER""监听器启动的名称
	
	#Oracle环境下执行
	netca /silent /responseFile /data/oracle_zip/database/response/netca.rsp
	#执行过程中可能会报错
	#1.找不到文件路径错误
	#报错语句:
	#UnsatisfiedLinkError exception loading native library: njni11
	#java.lang.UnsatisfiedLinkError: /data/oracle/oracle_soft/product/11.2.0/dbhome_1/lib/libnjni11.so: libclntsh.so.11.1: cannot open shared object file: No such file or directory
	#解决方法:
	cd $ORACLE_HOME/inventory/Scripts/ext/lib/
	cp libclntsh.so.11.1  $ORACLE_HOME/lib/

6.修改监听信息配置文件 (在oracle用户)

vim  $ORACLE_HOME/network/admin/listener
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))   # 将HOST的主机名修改为ip

重启监听 	lsnrctl start  lsnrctl stop

7.添加数据库实例(root用户下)(以下文件参数可能有被引掉的,更多详细文件解读可看该文件同目录下的:dbca.rsp参数解读文件)

dbca.rsp参数解读文件

	vim /data/oracle_zip/database/response/dbca.rsp
	
	RESPONSEFILE_VERSION ="11.2.0" 		#不能更改
	OPERATION_TYPE ="createDatabase"
	GDBNAME ="orcl"						#数据库的名字 
	SID ="ORCL" 						#对应的实例名字
	TEMPLATENAME ="General_Purpose.dbc"	#建库用的模板文件
	SYSPASSWORD ="hengzc@2758"			#SYS管理员密码,
	SYSTEMPASSWORD ="hengzc@2758"		#SYSTEM管理员密码,
	SYSMANPASSWORD= "hengzc@2758"	
	DBSNMPPASSWORD= "hengzc@2758"	
	DATAFILEDESTINATION =/opt/oracle/oradata	#数据文件存放目录 
	RECOVERYAREADESTINATION=/opt/oracle/flash_recovery_area#	恢复数据存放目录
	CHARACTERSET ="ZHS16GBK"	#字符集,重要!!!建库后一般不能更改,所以建库前要确定清楚。
	TOTALMEMORY ="800"			#800MB,物理内存*80%

8.安装/创建实例

	dbca -silent -responseFile /data/oracle_zip/database/response/dbca.rsp
	#安装完成后,查看数据库是否已运行
	ps -ef | grep ora_ | grep -v grep

9.确保监听启动了

	lsnrctl status

10.修改配置文件

Oracle提供了两个脚本dbstart和dbshut用来启动和关闭数据库(包括数据库实例和监听)。

这两个脚本首先读取oratab(/etc/oratab)文件来决定哪些数据库是需要自动启动和关闭的,然后启动和关闭那些数据库

vi /opt/oracle/product/112010/db_1/bin/dbstart
将ORACLE_HOME_LISTNER=$1修改为ORACLE_HOME_LISTNER=$ORACLE_HOME

vi /opt/oracle/product/112010/db_1/bin/dbshut
将ORACLE_HOME_LISTNER=$1修改为ORACLE_HOME_LISTNER=$ORACLE_HOME

vi /etc/oratab
将orcl:/data/oracle/product/11.2.0:N中最后的N改为Y,成为orcl:/data/oracle/product/11.2.0:Y


输入命令dbshut和dbstart测试
查看监听还在不在 lsnrctl status
查看数据库还在运行没 ps -ef |grep ora_ |grep -v grep

11.进入数据库测试

sqlplus / as sysdba

select status from v$instance; #查看数据库状态(如果正常应该是OPEN)
上面步骤可能会报以下错误:
ORA-01078: failure in processing system parameters 
LRM-00109: could not open parameter file '/oracle/product/11.1.0/dbs/initorcl.ora' 
解决方法:
这是因为在oracle9i和oracle10g中,数据库默认将使用spfile启动数据库,如果spfile不存在,则就会出现上述错误。 
 解决方法:
 将$ORACLE_BASE/admin/数据库名称/pfile目录下的init.ora.012009233838形式的文件copy 到$ORACLE_HOME/dbs目录下initoracle.ora即可。
(注:initoracle.ora名字中oracle为你的实例名,例如我的应该是initorcl.ora)

启动数据:startup
若报错:ORA-01102: cannot mount database in EXCLUSIVE mode
原因:这个错误主要是lk文件造成的,该文件位于$ORALCE_HOME下的dbs目录下,
	  这个lk的主要作用是说明DATABASE MOUNT上了,不用在MOUNT了.DATABASE UNMOUNT 后会删除掉,如果DATABASE确实没有MOUNT,这个文件在你也MOUNT上,只有手工删除,所以一定要小心.
	  (引起这个错误的原因貌似是我前面配置dbca.rsp文件时,数据库名称和实例名不对应,导致后面IK开头的文件是"IK数据库名称",跟网上说的"lk实例名称"不一样)
解决方法:
01 进入$ORACLE_HOME/dbs目录,找到lk开头的文件,比如lkORCL,其中ORCL是oracle的sid
02 查看该文件是否被占用,若有返回信息则是被占用	fuser -u lkHENGZC
03 若被占用 kill掉								fuser -k lkHENGZC 
04 startup(若已启动再关闭即可)

12.收尾检查

01.完成之后,我们需要将selinux打开,不然重启会出现问题,无法开机!!!
	vim /etc/selinux/config
	将之前的disabled 改成targeted 然后就可以安心了。

02.检查listener.ora
	如果在安装监听过程中出现什么问题,可以将这个文件删除,然后重新执行netca步骤
	里面的内容应该是这样的
	
		SID_LIST_LISTENER =
		  (SID_LIST =
			(SID_DESC =
			  (GLOBAL_DBNAME = orcl)
			  (ORACLE_HOME =/data/oracle/oracle_soft/product/11.2.0/dbhome_1)
			  (SID_NAME = orcl)
			)
		  )
		LISTENER =
		  (DESCRIPTION_LIST =
			(DESCRIPTION =
			  (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
			  (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.0)(PORT = 1521))
			)
		  )

		ADR_BASE_LISTENER = /opt/oracle
	
	若缺少上面SID_LIST_LISTENER这部分,目前还不知道为什么,我估计是我的实例名和服务器和数据库名没统一造成的,现在需要将SID_LIST_LISTENER这部分添加到监听文件中去
	
 03.如果在lsnrctl start 或是lsnrctl status中有看到下面这部分内容(其实不处理 Navicat 也可以连接)
	Service "orcl" has 1 instance(s).
	Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...

.
那么需要执行以下步骤:
sql> alter system register

	sql> show parameter local_listener

	修改local_listener参数,sql> alter system set local_listener='192.168.248.128';
	再重新注册服务,sql> alter system register;

	查看注册情况,$ lsnrctl status

13.可能会用到的语句

创建用户	create user hengzc identified by hengzc2758;

授予管理员权限 grant create session, create table, unlimited tablespace,create sequence,create indextype to hengzc2758;

你可能感兴趣的:(ORACLE,数据库,oracle,database)