【上一篇】 |
The Begin 点点关注,收藏不迷路
|
【下一篇】 |
规划项 | (本环境)描述 |
---|---|
操作系统版本 | Red Hat Enterprise Linux Server release 7.9 (Maipo) |
主机名 | db-oracle |
数据库版本 | Oracle 11g |
Ip规划 | 192.168.181.71 |
服务器空间要求 | 根据实际要求 |
数据库名/实例名 | orcl |
数据库块大小 | oracle建库一般设置数据库块大小8192K |
数据库使用字符集 | 这里用AL32UTF8 字符集 |
UFT8与GBK的区别:
区别主要是他们占用的字节不同(汉字),UTF8占用三个字节,而GBK占用两个字节,如varchar2(30)类型,如果是utf8,只能输入10汉字;而gbk则可以输入15个汉字。
一般生产环境服务器空间规划要求(可根据业务量自行调整)
/
------100G
数据库安装目录(如:/u01
)------100G
数据存储目录(如:/oradata
) ------500G
归档目录(如:/archive
) ------500G(一般和数据目录一致)
备份目录(如:/backup
)----------1.5T(一般是数据目录3倍左右)
####64位
[root@db-oracle ~]# uname -m
x86_64
####查看内核版本
[root@db-oracle ~]# cat /proc/version
Linux version 3.10.0-1160.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) #1 SMP Tue Aug 18 14:50:17 EDT 2020
[root@db-oracle ~]#
[root@db-oracle ~]# uname -a
Linux db-oracle 3.10.0-1160.el7.x86_64 #1 SMP Tue Aug 18 14:50:17 EDT 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@db-oracle ~]#
####查看系统版本
[root@db-oracle ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.9 (Maipo)
[root@localhost ~]#
关闭selinux可以提高系统的性能,因为 selinux会对系统进行安全检查,这会消耗一定的系统资源。
[root@db-oracle ~]# vi /etc/selinux/config
####将SELINUX= enforcing
修改为SELINUX=disabled
####防火墙有关命令
###
##关闭
防火墙
[root@db-oracle ~]# systemctl stop firewalld
###开启
防火墙
[root@db-oracle ~]# systemctl start firewalld
###重启
防火墙
[root@db-oracle ~]# systemctl restart firewalld
###防火墙状态查看
[root@db-oracle ~]# systemctl status firewalld
###禁止开机启动
[root@db-oracle ~]# systemctl disable firewalld
###设置开机启动
[root@db-oracle ~]# systemctl enable firewalld
###
设置1521端口开放
[root@db-oracle ~]# firewall-cmd --zone=public --add-port=1521/tcp --permanent
success
[root@db-oracle ~]#
###重启防火墙,查看开放端口列表
[root@db-oracle ~]# firewall-cmd --list-ports
1521/tcp
[root@db-oracle ~]#
###
查看磁盘占用的空间
[root@db-oracle ~]# df -h
###查看内存总量
[root@db-oracle ~]# grep MemTotal /proc/meminfo
###查看空闲内存量
[root@db-oracle ~]# grep MemFree /proc/meminfo
安装oracle 11g对于共享内存(/dev/shm)要求/dev/shm空间不能小于分配给oracle使用内存的大小
。
[root@db-oracle ~]# vi /etc/fstab
###文本末添加内容
tmpfs /dev/shm tmpfs defaults,size=4096M 0 0
###
重新挂载/dev/shm
[root@db-oracle ~]# mount -o remount /dev/shm
安装数据库11G操作系统 | 内核需求 |
---|---|
On Oracle Linux 4 and Red Hat Enterprise Linux 4 | 2.6.9 or later |
On Oracle Linux 5 Update 5 | 2.6.32-100.0.19 or later |
On Oracle Linux 5 Update 2 | 2.6.18 or later (with Red Hat Compatible Kernel) |
On Oracle Linux 6 | 2.6.32-100.28.5.el6.x86_64 or later |
On Oracle Linux 6 | 2.6.32-71.el6.x86_64 or later (with Red Hat Compatible Kernel) |
Oracle 11gR2要求OS至少为RHEL4.7,内核为Kernel 2.6.9
。
一般生产环境无法访问外网,在内网环境可以使用系统ISO镜像文件作为本地yum源,在服务器上挂载DVD的 iso 文件。
###
创建
镜像文件挂载目录/mnt/dvd
[root@db-oracle ~]# mkdir /mnt/dvd
###上传rhel-server-7.9-x86_64-dvd.iso
文件到/usr/local/src
下
####挂载iso
文件(只能读,不可写)
[root@db-oracle src]# mount -t iso9660 -o loop /usr/local/src/rhel-server-7.9-x86_64-dvd.iso /mnt/dvd
####重新以可读可写的方式挂载
[root@db-oracle src]# mount -o remount,rw /
#####
设置开机自动挂载本地镜像文件
[root@db-oracle src]# vi /etc/fstab
###文末添加内容
/usr/local/src/rhel-server-7.9-x86_64-dvd.iso /mnt/dvd iso9660 loop 0 0
[root@db-oracle ~]# cd /etc/yum.repos.d/
[root@db-oracle yum.repos.d]# more redhat.repo
###备份yum源文件
[root@db-oracle yum.repos.d]# cp redhat.repo redhat.repo-bak
[root@db-oracle ~]# cd /etc/yum.repos.d/
[root@db-oracle yum.repos.d]# vi redhat.repo
# 标识符
[redhat]
# 名称
name=Red Hat Enterprise Linux 7.9
# 本地yum源地址
baseurl=file:///mnt/dvd
# 下载的rpm不进行校验
gpgcheck=0
#启用状态
enabled=1
###
清除yum缓存
[root@db-oracle ~]# yum clean all
###缓存本地yum源中的软件包信息
[root@db-oracle ~]# yum makecache
###查询仓库中的所有软件包
[root@db-oracle ~]# yum list
####Orange11g有关依赖包检查
rpm -q binutils \
compat-libcap1 \
compat-libstdc++ \
gcc \
gcc-c++ \
glibc \
glibc-devel \
ksh \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
libXi \
libXtst \
make \
sysstat \
unixODBC \
unixODBC-devel \ | grep "not installed"
----提前安装有关依赖
###
安装有关依赖
yum install gcc* binutils* compat* glibc* ksh* libgcc* libstdc* libaio* make* sysstat* unixODBC* -y
分享 一个rpm 下载的网站,compat-libstdc++ (这里可以搜索下载,平时有缺少的依赖,都可在这搜索)
####
手动上传安装compat-libstdc++
[root@db-oracle ~]# rpm -ivh compat-libstdc+±8-3.3.4.2.x86_64.rpm --force --nodeps
warning: compat-libstdc+±8-3.3.4.2.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 4f2a6fd2: NOKEY
Preparing… ################################# [100%]
Updating / installing…
1:compat-libstdc+±8-3.3.4.2 ################################# [100%]
[root@db-oracle ~]#
####有关依赖包再次检查
对oracle用户做资源的限制,主要是出于性能上的考虑,防止oracle用户过渡消耗有限资源,使系统变得臃肿缓慢。
###
步骤一、备份limits.conf 文件
,limits.conf只针对于单个会话。
[root@db-oracle ~]# cp /etc/security/limits.conf /etc/security/limits.conf-bak
[root@db-oracle ~]# 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
oracle hard stack 32768
oracle soft memlock 3145728
oracle hard memlock 3145728
注意:
资源限制参数分为软限制和硬限制
。
nproc ----进程最大数目
nofile ----进程打开文件的最大数目
stack ----最大栈大小
memlock ----最大锁定内存地址空间(要比实际内存小,如内存4G,设置3G最大锁定内存地址空间,则为3x1024x1024=3145728)
--------其他配置项
------------------------
core ----限制内核文件的大小
data ----最大数据大小
fsize ----最大文件大小
rss ---- 最大持久设置大小
cpu---- 以分钟为单位的最多 CPU 时间
as ---- 地址空间限制
maxlogins---- 此用户允许登录的最大数目
步骤二、使 limits.conf 文件配置生效
,必须要确保 pam_limits.so 文件被加入到启动文件中。
vi /etc/pam.d/login 文件,文末添加内容:
session required /lib/security/pam_limits.so
###
步骤一、备份编辑内核参数文件sysctl.conf
[root@db-oracle ~]# cp /etc/sysctl.conf /etc/sysctl.conf-bak
[root@db-oracle ~]# vi /etc/sysctl.conf
###文末添加内容
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmni = 4096
kernel.shmmax = 2576980377
kernel.shmall = 629145
vm.nr_hugepages = 1457
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
系统内核参数详解,关注该四个:
1、
kernel.shmmax
----单个共享内存段的最大值(如系统内存4G,则oracle 内存为0.8x4G=3.2G(SGA=0.8x3.2G+PGA=0.2x3.2G)) >= SGA的值,则最终值应该>=0.8x3.2Gx1024x1024x1024
2、kernel.shmall
-----控制共享内存页数(kernel.shmmax/PAGESIZE)
###PAGESIZE—页数查看
[root@db-oracle ~]# getconf PAGESIZE
4096
[root@db-oracle ~]#
3、kernel.shmmni
-----共享内存段的最大数量 = 4096(和每页大小一致即可)
4、vm.nr_hugepages
-----大页,直接分配并保留对应大小的内存区域(SGA/2M稍微大一点,加200M左右),如(0.8x3.2Gx1024x1024x1024)/(1024x1024)
###
步骤二、使内核参数文件sysctl.conf生效
,重新加载配置文件
[root@db-oracle ~]# sysctl -p
nproc是操作系统级别对每个用户创建进程数的限制.
###设置每个用户创建进程最大数为16384
[root@db-oracle ~]# echo "* - nproc 16384 ">/etc/security/limits.d/90-nproc.conf
[root@db-oracle ~]# cat /etc/security/limits.d/90-nproc.conf
* - nproc 16384
[root@db-oracle ~]#
拓展:
1、查看所有用户创建的进程数
,使用命令:
[root@db-oracle ~]# ps h -Led -o user | sort | uniq -c | sort -n
2、查看某个用户创建的进程数
,使用命令:
[root@db-oracle ~]# ps -o nlwp,pid,lwp,args -u root | sort -n
注:在安装任何软件设置的用户和用户密码都要做好记录
###
创建oinstall用户组
—控制软件安装,补丁安装
[root@db-oracle ~]# /usr/sbin/groupadd -g 5001 oinstall
###创建dba用户组
—控制数据库创建、管理
[root@db-oracle ~]# /usr/sbin/groupadd -g 5002 dba
###创建oper用户组
—数据库操作员
[root@db-oracle ~]# /usr/sbin/groupadd -g 5003 oper
[root@db-oracle ~]#
拓展:删除用户组
[root@db-oracle ~]# groupadd test
[root@db-oracle ~]# useradd -g test -G dba test
[root@db-oracle ~]# groupdel test
groupdel: cannot remove the primary group of user ‘test’
[root@db-oracle ~]#
如果组里面有用户需要先删除用户或移动用户,才能删除组
[root@db-oracle ~]# userdel test ###删除用户
###
创建oracle用户
—编号为6001,默认组为oinstall ,并添加到dba,oper组,主要是oinstall组发生作用
[root@db-oracle ~]# useradd -u 6001 -g oinstall -G dba,oper oracle
####passwd oracle
----设置oracle用户密码
(Zyl@0411)
[root@db-oracle ~]# passwd oracle
Changing password for user oracle.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
####检查创建的oracle用户
[root@db-oracle ~]# su - oracle
[oracle@db-oracle ~]$ id
uid=6001(oracle) gid=5001(oinstall) groups=5001(oinstall),5002(dba),5003(oper)
[oracle@db-oracle ~]$
###
创建oracle安装目录
[root@db-oracle ~]# mkdir -p /u01/app/oracle
###更改/u01目录用户组
[root@db-oracle ~]# chown -R oracle:oinstall /u01
###-更改oracle目录权限
[root@db-oracle ~]# chmod -R 775 /u01/app/oracle
###
切换至oracle用户
,编辑 .bash_profile
文件
[oracle@db-oracle ~]$ vi .bash_profile
####添加内容
# use for oracle
unset TNS_ADMIN
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
#防止Oracle安装界面乱码,先把语言环境改为英文
export LANG=en_US
if [ $USER = "oracle" ];then
if [ $SHELL = "/bin/ksh" ];then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
使配置文件生效
:
[oracle@db-oracle ~]$ source .bash_profile
###检查是否生效
[oracle@db-oracle ~]$ echo $ORACLE_BASE
/u01/app/oracle[oracle@db-oracle ~]$ echo $ORACLE_HOME
/u01/app/oracle/product/11.2.0/dbhome_1
[oracle@db-oracle ~]$
[oracle@db-oracle ~]$ env | grep ORACLE_SID
ORACLE_SID=orcl
[oracle@db-oracle ~]$
[oracle@db-oracle ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/oracle/.local/bin:/home/oracle/bin:/home/oracle/.local/bin:/home/oracle/bin:/home/oracle/bin:/u01/app/oracle/product/11.2.0/dbhome_1/bin
##
1、创建oracle安装文件所在目录
[root@db-oracle ~]# mkdir -p /software/oracle
[root@db-oracle ~]# cd /software/oracle/
##2、上传oracle11g安装包
##3、解压oracle11g安装包
[root@db-oracle oracle]# unzip linux.x64_11gR2_database_1of2.zip
[root@db-oracle oracle]# unzip linux.x64_11gR2_database_2of2.zip
##4、更改oracle安装文件所在目录的用户组
##5、更改oracle安装文件所在目录的操作权限
[root@db-oracle oracle]# chmod -R 755 database/
切换至oracle用户
##
1、切换至oracle用户
[root@db-oracle ~]# su - oracle
[oracle@db-oracle ~]$ export DISPLAY=192.168.181.1:0.0
[oracle@db-oracle ~]$ echo $DISPLAY
192.168.181.1:0.0
###2、进入oracle安装文件所在目录
[oracle@db-oracle ~]$ cd /software/oracle/database
[oracle@db-oracle database]$ ./runInstaller
①Create and configure a database----创建并配置一个新数据库,适用于新安装数据库的用户
②Install database software only-----只安装数据库软件,适用于数据迁移
③Upgrade an existing database------升级已有数据库
①Single instance database installation----单实例数据库安装(仅在本节点上安装单实例数据库软件)
②Real Application Clusters database installation-----Oracle RAC数据库安装(可在在集群中的选定节点上选择和安装数据库软件)
①Enterprise Edition ----企业版(最强的版本,大部分功能需要付费)
②Standard Edition-----标准版(包括了Standard Edition one 版本的功能和RAC)
③Standard Edition one ------最基本的商业版(包括基本的数据库功能)
指定Oracle Base和Software Location存储位置。
①该目录统一记录安装的软件信息,记录了每一个Oracle软件主目录的名称和位置、安装的组件,以及一些其他的信息。
②Oracle的集群和数据库软件在进行升级时,通过读取中央目录中的信息来确认哪些软件应被安装的。删除或丢失oraInventory目录的内容,都有可能导致安装或升级报错。
③安装失败需要重新安装时,查看此目录,删除/u01/app/下的oraInventory目录,和/u01/app/oracle 下的product目录。
忽略32位的这些包,把未安装的64位包手动安装点击Check Again通过即可。
这里手动安装了
compat-libstdc++-33-3.2.3-72.el7.x86_64_3.rpm
和pdksh-5.2.14
有关32位64位包。
命令:
[root@db-oracle rpm-pages]# rpm -ivh rpm包名 --force --nodeps
第一个报错:
Error in invoking target ‘install’ of makefile
‘/u01/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk’. See ‘/u01/app/oraInventory/logs/installActions2023-06-13_08-00-29PM.log’ for details.
第一个报错解决:
INFO: //usr/lib64/libstdc++.so.5: undefined reference to `memcpy@GLIBC_2.14’
INFO: collect2: error: ld returned 1 exit status
INFO: make: *** [ctxhx] Error 1
###编辑 /u01/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk 文件
[root@db-oracle ~]# vim /u01/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk
修改
ctxhx: $(CTXHXOBJ)
$(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK)
为
ctxhx: $(CTXHXOBJ)
-static $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK) /usr/lib64/libc.a
第二个报错:
Error in invoking target ‘agent nmhs’ of makefile
‘/u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk’. See ‘/u01/app/oraInventory/logs/installActions2023-06-13_08-00-29PM.log’ for details.
第二个报错解决:
###在makefile中添加链接libnnz11库的参数
[root@db-oracle ~]# vim /u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk
将
$(MK_EMAGENT_NMECTL)
修改为
$(MK_EMAGENT_NMECTL) -lnnz11
打开一个终端窗口并切换到 root 用户,按照执行配置脚本窗口提示的路径执行脚本
[root@db-oracle ~]#bash /u01/app/oraInventory/orainstRoot.sh
[root@db-oracle ~]#bash /u01/app/oracle/product/11.2.0/dbhome_1/root.sh
###
切换至oracle用户
[root@db-oracle ~]$ su - oracle
###执行监听配置命令
[oracle@db-oracle ~]$ netca
###
监听状态查看
[oracle@db-oracle ~]$ lsnrctl status
###监听停止
[oracle@db-oracle ~]$ lsnrctl stop
###监听开启
[oracle@db-oracle ~]$ lsnrctl start
###
切换至oracle用户
[root@db-oracle ~]$ su - oracle
###dbca命令建库
[oracle@db-oracle ~]$ dbca
注意区分:全局数据库名称上挂载实例,如果集群上会有多个实例,而全局数据库名只有1个
--(Zyl@0411-这里建议不要设置密码带@符号---否则后面建库到45%左右会报ORA-12532:TNS:无效参数)--
###切换oracle用户
[root@db-oracle ~]# su - oracle
Last login: Tue Jun 13 23:27:36 CST 2023 on pts/3
###启动客户端进程
[oracle@db-oracle ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Tue Jun 13 23:28:43 2023
Copyright (c) 1982, 2009, Oracle. All rights reserved.
###以管理员登录
SQL> conn / as sysdba
SQL> show user;
USER is "SYS"
SQL>
##启动数据库startup;或者startup open;
SQL> startup open;
ORA-01081: cannot start already-running ORACLE - shut it down first
##关闭数据库
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup open;
ORACLE instance started.
Total System Global Area 1586708480 bytes
Fixed Size 2213736 bytes
Variable Size 922749080 bytes
Database Buffers 654311424 bytes
Redo Buffers 7434240 bytes
Database mounted.
Database opened.
SQL>
##监听状态查看
[oracle@db-oracle ~]$ lsnrctl status
##启动监听
[oracle@db-oracle ~]$ lsnrctl start
##关闭监听
[oracle@db-oracle ~]$ lsnrctl stop
##查看数据库版本
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
SQL>
SQL> select status from v$instance;
STATUS
------------
OPEN
SQL>
SQL> select name as database from v$database;
DATABASE
---------
ORCL
SQL>
###命令:
create user 用户名 identified by 密码;
SQL> create user zyl identified by Zyl#0411;
User created.
###赋权---dba权限,命令grant 权限 to 用户名;
SQL> grant dba to zyl;
Grant succeeded.
SQL>
###检索用户信息。可检索系统用户(SystemUser)、外部用户(ExternalUser)、和内部用户(CommonUser)的所有信息。
SQL> select * from dba_users;
###可以通过该功能来获取全部数据库用户的信息,查出被授权的所有Oracle用户的角色,账户名等信息。
SQL> select * from all_users;
###描述当前用户下所有用户信息的视图
SQL> select * from user_users;
SQL> select * from dba_sys_privs;
SQL> select * from user_sys_privs;
sql> select * from role_sys_privs;
sql> select * from dba_roles;
sql> select * from user_tab_privs;
sql> select * from dba_tab_privs;
sql> select * from all_tab_privs;
SQL> select * from dba_role_privs where granted_role='DBA';
GRANTEE GRANTED_ROLE ADM DEF
------------------------------ ------------------------------ --- ---
SYS DBA YES YES
SYSTEM DBA YES YES
ZYL DBA NO YES
SQL>
GRANT:赋予一个用户,一个组或所有用户访问权限
GRANT 语法:
GRANT privilege [, ...] ON object [, ...] TO { PUBLIC | GROUP group | username }
###如:
SQL> grant select, insert, update, delete on dbtest.tab1 to zyl;
SQL> revoke select, insert, update, delete on dbtest.tab1 from zyl;
❓ 安装前规划,如服务器空间规划要求、数据库、服务器版本,服务器信息等
❓ 安装前准备一(系统参数修改)
❓ 安装前准备二(创建用户、用户组以及安装目录)
❓ 挂载iso镜像,配置本地yum源,有关依赖环境安装
❓ 内核参数等调整优化
❓ 安装过程有关报错解决
❓ netca配置监听
❓ dbca建库
❓ 数据库简单使用
【上一篇】 |
The End 点点关注,收藏不迷路
|
【下一篇】 |