目录
- 一、安装前准备
- 1、安装前置工具(安装过可以忽略)
- 2、更配yum源
- 2.1、备份原有源;
- 2.2、下载阿里云base源和epel源;
- 2.3、清理yum缓存
- 2.4、生成新的缓存
- 2.5、更新系统中所有软件到最新版(按需谨慎操作)
- 3 修改主机名: oracle配置文件中需要
- 4、配置网络 : 非必要
- 4.1、修改网络配置文件,设置静态IP。
- 4.2、重启网络服务后,可使用下面的命令查询当前IP地址是否修改成功。
- 5、配置hosts文件
- 5、关闭防火墙
- 二、系统环境准备
- 1. 检测是否符合安装Oracle 11g的环境需求(2核CPU 、2G内存、8G的硬盘空间)
- 1.1 查看cpu详细信息:lscpu
- 1.2 查看内存详细信息: free -h
- 1.3 查看存储盘详细信息 : lsblk
- 1.4确保服务器能访问外网:ping baidu.com
- 2. 检测是否已安装Oracle
- 2.1查看是否有Oracle的进程:
- 2.2检查是否有Oracle用户 : id oracle
- 3. 创建用户组
- 4. 创建安装目录:
- 5. 修改目录权限:
- 三、安装依赖包
- 四、下载Oracle11g安装包
- 1、在Oracle官方网站下载 Oracle database 11g 的安装包
- 2、创建/data/u01/software目录
- 3、上传安装包到目录下,解压
- 五、静默安装Oracle11G数据库
- 1、修改内核配置文件
- 2、修改用户限制
- 3、修改/etc/pam.d/login 文件
- 4、修改环境变量
- 5、设置oracle用户环境变量
- 5.1、切换oracle用户
- 5.2、编辑配置文件
- 5.3、使配置生效:
- 6、修改静默安装响应文件
- 6.1、复制一份响应文件:
- 6.2、修改响应文件
- 6.3、修改完成,保存退出。
- 7、执行安装
- 7.1、切换到解压的安装包目录:
- 7.2、执行安装命令:
- 7.3、安装过程中可以再开启一个终端,使用命令查看实时安装日志
- 7.4、当出现如下信息时,需要再开启一个终端,以root用户执行这两个脚本。
- 7.5、脚本执行完成后,再回到oracle安装的终端界面,回车。此时显示“Successfully Setup Software.”则Oracle已经安装完成。
- 7.6、使用sqlplus登录验证,成功登录。
- 六、创建数据库实例
- 1、修改响应配置文件:
- 2、编辑完成,保存退出。
- 3、检查配置:
- 4、安装创建:
- 5、查看默认实例
- 6、启动监听:
- 7、连接测试
- 七、配置oracle开机自启
- 至此,Centos7中的Oracle11g安装完成,整个流程已经过验证,只要按照步骤操作基本不会出现问题。
- 有些服务器 需要外网访问,可视情况设置:
- 八、数据库管理
- 1、进入Oracle数据库
- 2、数据表及表空间:
- 3、3.创建用户并赋予表空间权限
- 注:刚刚创建完的新用户是没有任何权限的,甚至连登录数据库的权限都没有。这时使用conn 用户名/密码 会提示没有权限。在新建一个用户之后还要对这个用户进行授权操作。当然是要使用有能力授权的用户,如sys、system。角色是指由系统权限集合。通常给某个用户授予权限时如果没有角色存在的话,那么需要一条一条的操作,角色的存在就是使得授权变得很方便。通常一个角色由多个系统权限组成。常用的角色有三个connect(7种权限)、dba、resource(在任何表空间建表)。
- 4、授予用户管理权限:
- 注意:在给其他用户修改密码时,需要具有DBA的权限或拥有alter user的系统权限。
- 5.想让B用户对A用户库进行操作,那就授权给B用户(不强制执行)
- 6.退出数据库
- 九、oracle(11g) 数据库设置ID自增功能(一共两个步骤):
- 十、遇到oracle(11g) 数据表被上锁,无法正常更新表数据怎么处理?
- 1.用sql命令行查询目前所有被锁的表:
- 2.通过sql命令解锁指定进程:
- 十一、遇到oracle(11g) 表中数据查询后发现中文字符乱码怎么转义?
一、安装前准备
1、安装前置工具(安装过可以忽略)
[root@server01 ~]# yum -y install yum-utils net-tools wget vim unzip lrzsz
2、更配yum源
2.1、备份原有源;
[root@server01 ~]# mkdir /etc/yum.repo-bak
[root@server01 ~]# mv /etc/yum.repos.d/* /etc/yum.repo-bak
2.2、下载阿里云base源和epel源;
[root@server01 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@server01 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
2.3、清理yum缓存
[root@server01 ~]# yum clean all
2.4、生成新的缓存
[root@server01 ~]# yum makecache
此处可能会遇到错误:
“Could not resolve host: mirrors.aliyun.com;未知的错误”
解决方法:
修改配置文件添加nameserver地址,重新执行生成缓存
[root@server01 ~]# vi /etc/resolv.conf
nameserver 8.8.8.8
nameserver 114.114.114.114
2.5、更新系统中所有软件到最新版(按需谨慎操作)
[root@server01 ~]# yum -y update
3 修改主机名: oracle配置文件中需要
[root@localhost oracle]# hostname
localhost.localdomain
[root@localhost oracle]# hostnamectl set-hostname szkj.member.s01
[root@localhost oracle]# systemctl restart network
[root@localhost oracle]# source /etc/profile
[root@localhost oracle]# hostname
szkj.member.s01
[root@localhost oracle]#
4、配置网络 : 非必要
4.1、修改网络配置文件,设置静态IP。
[root@server01 ~]# cd /etc/sysconfig/network-scripts/
[root@server01 ~]# vi ifcfg-ens32
[root@server01 ~]# systemctl restart network
4.2、重启网络服务后,可使用下面的命令查询当前IP地址是否修改成功。
[root@server01 ~]# ifconfig
[root@server01 ~]# ip addr show
[root@server01 ~]# hostname –I
5、配置hosts文件
[root@server01 ~]# vi /etc/hosts
5、关闭防火墙
二、系统环境准备
1. 检测是否符合安装Oracle 11g的环境需求(2核CPU 、2G内存、8G的硬盘空间)
1.1 查看cpu详细信息:lscpu
1.2 查看内存详细信息: free -h
1.3 查看存储盘详细信息 : lsblk
1.4确保服务器能访问外网:ping baidu.com
2. 检测是否已安装Oracle
2.1查看是否有Oracle的进程:
2.2检查是否有Oracle用户 : id oracle
3. 创建用户组
3.1建立oracle用户和用户组
# 创建oninstall用户组:
groupadd oninstall
# 创建dba用户组:
groupadd dba
创建主用户组为oninstall 附加组为dba和oper用户组的oracle用户:
useradd -g oninstall -G dba oracle
passwd oracle # 'ltkj.com'
或 echo "ltkj.com" | passwd --stdin oracle
4. 创建安装目录:
[root@server01 ~]# mkdir -p /data/db/oracle/product/11.2.0/dbhome_1
[root@server01 ~]# mkdir /data/db/oracle/{oradata,inventory,fast_recovery_area}
5. 修改目录权限:
[root@server01 ~]# chown -R oracle:oninstall /data/db/oracle
[root@server01 ~]# chmod -R 775 /data/db/oracle
三、安装依赖包
[root@server01 ~]# yum -y install gcc gcc-c++ make binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static glibc glibc-common glibc-devel ksh libaio libaio-devel libgcc libstdc++ numactl-devel sysstat unixODBC unixODBC-devel kernel-headers pcre-devel readline rlwrap
如果提示有包没有找到,可以单独进行下载,上传至服务器,使用命令rpm –ivh进行安装。
四、下载Oracle11g安装包
1、在Oracle官方网站下载 Oracle database 11g 的安装包
https://edelivery.oracle.com/osdc/faces/SoftwareDelivery;jsessionid=NuAH5JL9Du6Cc7McbCYsS8W8oMNqhLE6o1l7bdONyEEaauT71Wp_!83811957
或 百度网盘
2、创建/data/u01/software目录
[root@server01 ~]# mkdir -p /usr/local/soft/oracle
3、上传安装包到目录下,解压
rz
[root@localhost oracle]# cd /usr/local/soft/oracle
[root@localhost oracle]# unzip p10404530_112030_Linux-x86-64_1of7.zip
[root@localhost oracle]# unzip p10404530_112030_Linux-x86-64_2of7.zip
五、静默安装Oracle11G数据库
1、修改内核配置文件
[root@localhost oracle]# vim /etc/sysctl.conf
在尾部添加下面配置:
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 1073741824
kernel.shmmni = 4096
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
使配置文件生效:
[root@localhost oracle]# sysctl -p
2、修改用户限制
[root@localhost oracle]# vim /etc/security/limits.conf
添加下面内容:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
3、修改/etc/pam.d/login 文件
[root@localhost oracle]# vim /etc/pam.d/login
添加下面内容:
session required /lib64/security/pam_limits.so
session required pam_limits.so
4、修改环境变量
[root@server01 ~]# vim /etc/profile
添加下面内容:
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384
ulimit -n 65536
fi
fi
环境变量生效:
[root@localhost oracle]# source /etc/profile
5、设置oracle用户环境变量
5.1、切换oracle用户
[root@localhost oracle]# su - oracle
密码:
上一次登录:三 8月 14 10:14:23 CST 2024pts/0 上
[oracle@localhost ~]$
5.2、编辑配置文件
[oracle@localhost ~]$ vim .bash_profile
添加下面内容:
export ORACLE_BASE=/data/db/oracle
export ORACLE_HOME=/data/db/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export ORACLE_PID=ora11g
export ORACLE_UNQNAME=$ORACLE_SID
export PATH=$ORACLE_HOME/bin:$PATH
export NLS_LANG=american_america.AL32UTF8
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
5.3、使配置生效:
[oracle@localhost ~]$ source .bash_profile
6、修改静默安装响应文件
6.1、复制一份响应文件:
[oracle@localhost ~]$ cp -R /usr/local/soft/oracle/database/response/ /home/oracle
[oracle@localhost ~]$ ll
总用量 0
drwxr-xr-x. 2 oracle oninstall 61 8月 14 10:23 response
[oracle@localhost ~]$
[oracle@localhost ~]$ cd response/
6.2、修改响应文件
[oracle@localhost response]$ vim db_install.rsp
修改文件中内容:
29 oracle.install.option=INSTALL_DB_SWONLY
37 ORACLE_HOSTNAME=szkj.member.s01
42 UNIX_GROUP_NAME=oninstall
47 INVENTORY_LOCATION=/data/db/oracle/inventory
86 SELECTED_LANGUAGES=en,zh_CN
91 ORACLE_HOME=/data/db/oracle/product/11.2.0/dbhome_1
96 ORACLE_BASE=/data/db/oracle
107 oracle.install.db.InstallEdition=EE
154 oracle.install.db.DBA_GROUP=dba
160 oracle.install.db.OPER_GROUP=dba
400 DECLINE_SECURITY_UPDATES=true
6.3、修改完成,保存退出。
7、执行安装
7.1、切换到解压的安装包目录:
[oracle@localhost response]$ cd /usr/local/soft/oracle/database
7.2、执行安装命令:
[oracle@localhost database]$ ./runInstaller -silent -force -responseFile /home/oracle/response/db_install.rsp -ignorePrereq
安装过程大概几分钟,如果服务器配置低可能会久一些;
7.3、安装过程中可以再开启一个终端,使用命令查看实时安装日志
[root@localhost database]# tail -f /data/db/oracle/inventory/logs/installActions2024-08-14_01-30-47PM.log
7.4、当出现如下信息时,需要再开启一个终端,以root用户执行这两个脚本。
[root@localhost database]# sh /data/db/oracle/inventory/orainstRoot.sh
[root@localhost database]# sh /data/db/oracle/product/11.2.0/dbhome_1/root.sh
7.5、脚本执行完成后,再回到oracle安装的终端界面,回车。此时显示“Successfully Setup Software.”则Oracle已经安装完成。
7.6、使用sqlplus登录验证,成功登录。
[oracle@localhost database]$ sqlplus / as sysdba
六、创建数据库实例
1、修改响应配置文件:
[oracle@localhost database]$ vim /home/oracle/response/dbca.rsp
修改如下内容:
78 GDBNAME = "orcl"
170 SID = "orcl"
211 SYSPASSWORD = "orcl.xxxj.xxx"
222 SYSTEMPASSWORD = "orcl.xxxx.test"
253 SYSMANPASSWORD = "orcl.xxxj.xxx"
263 DBSNMPPASSWORD = "orcl.xxxj.xxxx"
362 DATAFILEDESTINATION =/data/db/oracle/oradata
372 RECOVERYAREADESTINATION=/data/db/oracle/fast_recovery_area
420 #CHARACTERSET = "US7ASCII"
421 CHARACTERSET = "AL32UTF8"
556 TOTALMEMORY = "2048"
2、编辑完成,保存退出。
3、检查配置:
[oracle@localhost database]$ egrep -v "(^#|^$)" /home/oracle/response/dbca.rsp
4、安装创建:
[oracle@localhost database]$ dbca -silent -responseFile /home/oracle/response/dbca.rsp
5、查看默认实例
[oracle@localhost database]$ env|grep ORACLE_UNQNAME
6、启动监听:
[oracle@localhost database]$ lsnrctl start
正常的监听启动,如下:
重启Oracle数据库的操作步骤
1)查看监听器状态:lsnrctl status
2)停止监听器:lsnrctl stop
3)连接数据库:sqlplus sys/密码 as sysdba
或 以管理员模式登录:
sqlplus / as sysdba
4)停止数据库:shutdown immediate
5)启动数据库:startup
6)退出数据库:exit
7)启动监听:lsnrctl start
7、连接测试
Navicat Premium
七、配置oracle开机自启
1、oracle用户修改Oracle实例配置
[oracle@localhost database]$ vim /etc/oratab
修改下面内容:
将orcl:/data/db/oracle/product/11.2.0/db_1:N 的N改成Y
23 # orcl:/data/db/oracle/product/11.2.0/dbhome_1:N
24 orcl:/data/db/oracle/product/11.2.0/dbhome_1:Y
2、root用户添加开机自启策略
1. # 切换到 root 用户
su - root , 或再打开一个窗口 以root 登录
2. # 配置文件权限
[root@localhost oracle]# chmod +x /etc/rc.local
2-2. # 或者 直接给777
[root@localhost oracle]# chmod 777 /etc/rc.local
3. # 然后编辑
[root@localhost oracle]# vim /etc/rc.local
添加如下内容:
# oracle开机自启
su - oracle -c "dbstart"
su - oracle -c "lsnrctl start"
su - oracle -c "lsnrctl start listenerl"
至此,Centos7中的Oracle11g安装完成,整个流程已经过验证,只要按照步骤操作基本不会出现问题。
有些服务器 需要外网访问,可视情况设置:
开放1521端口(远程连接Oracle所需)
查看端口是否开放
firewall-cmd --query-port=1521/tcp
永久开放1521端口号
firewall-cmd --permanent --zone=public --add-port=1521/tcp
重启防火墙
systemctl restart firewalld.service
查看防火墙状态
systemctl status firewalld.service
八、数据库管理
1、进入Oracle数据库
命令:su - oracle
命令:sqlplus / as sysdba
【进入Oracle数据库后可以操作的常用命令】:
关闭数据库:shutdown immediate
启动数据库:startup
启动监听:lsnrctl start
停止监听:lsnrctl stop
2、数据表及表空间:
创建表空间:
create tablespace ittbank datafile ‘/u01/app/oracle/oradata/ORCL/ittbank.dbf’ size 300m autoextend on;
【说明】:
create tablespace:创建表空间关键字
MyDataBase:数据库名称(表名称)
datafile '/u01/app/oracle/oradata/MyDataBase.dbf':指定数据库文件目录
size 300m:设置表空间初始大小
autoextend on:参数表示当表空间大小不够用时会自动扩容,所有建议加上autoextend on参数。
末尾带autoextend on参数表示当表空间大小不够用时会自动扩容,所有建议加上autoextend on参数。
————————————————
3、3.创建用户并赋予表空间权限
注:以下命令都需要DBA权限。
- 创建用户:
create user ittbank identified by 123456 ; - 赋予用户的表空间权限:
alter user ittbank default tablespace ittbank;; - 或者两条命令合并为:
create user ittbank identified by 123456 default tablespace ittbank;
【说明】:
create user:oracle创建用户关键词
username:用户名
identified by:指定密码关键词
passwd:自定义密码
default tablespace:数据库映射关键词
MyDataBase:映射的数据库名称
注:刚刚创建完的新用户是没有任何权限的,甚至连登录数据库的权限都没有。这时使用conn 用户名/密码 会提示没有权限。在新建一个用户之后还要对这个用户进行授权操作。当然是要使用有能力授权的用户,如sys、system。角色是指由系统权限集合。通常给某个用户授予权限时如果没有角色存在的话,那么需要一条一条的操作,角色的存在就是使得授权变得很方便。通常一个角色由多个系统权限组成。常用的角色有三个connect(7种权限)、dba、resource(在任何表空间建表)。
4、授予用户管理权限:
grant connect,resource,dba to ittbank ;
- 删除用户
drop user“name”cascade;
注:cascade参数是级联删除该用户所有对象,经常遇到如用户有对象而未加此参数则用户删不了的问题,所以习惯性的加此参数。“name”的引号有无都是一样的。 - 修改用户密码
password ittbank( 在用户已经连接的情况下 )或者
alter user ittbank identified by newpassword【说明】: grant connect,resource,dba to:将连接数据权限,授权给指定用户 grant create session to :将创建会话权限,授权给指定用户 username:用户名
注意:在给其他用户修改密码时,需要具有DBA的权限或拥有alter user的系统权限。
- 查看当前用户的角色
select * from user_role_privs;
select * from session_privs;
查看当前用户的系统权限和表级权限
select * from user_sys_privs;
select * from user_tab_privs;
查询用户表
select name from dba_users;
修改用户口令
alter user “name” identified by “password”;
显示当前用户
show user;
删除表空间:
drop tablespace ittbank including contents and datafiles;
修改表空间大小(注:修改=可以增大,可以减小。)
alter database datafile ‘/u01/app/oracle/oradata/ORCL/ittbank.dbf’ resize 200m;
增加表空间大小(注:增加=只能增大,不能减少。)
alter tablespace ittbank add datafile ‘/u01/app/oracle/oradata/ORCL/ittbank.dbf’ size 2048m;
查询数据库文件:
select * from dba_data_files;
查询当前存在的表空间:
select * from vKaTeX parse error: Expected group after '_' at position 267: …t(*) from sys.v_̲session;
pl/sql
[declare
/申明部分,一般是变量及常量/]
[ begin
/执行部分,流程结构控制,sql部分/]
[exception
/异常处理部分/]
end
set serveroutput on //打开输出开关
begin
dbms_output.put_line(‘hello world!’); //输出结果
end;
修改连接数:(注:要重启数据库)
alter system set processes=1000 scope=spfile;
shutdown immediate;
startup;
5.想让B用户对A用户库进行操作,那就授权给B用户(不强制执行)
grant all privileges to Buser;
【说明】:
grant :授权关键字
all:全部权限
privileges to:指定授权人关键字
Buser:授权人用户名
6.退出数据库
命令:exit;
九、oracle(11g) 数据库设置ID自增功能(一共两个步骤):
1.给要实现ID自增的数据表创建一个序列
SQL> CREATE SEQUENCE "序列名称"
increment by 1 ----- 每次递增:1
start with 1 ----- 从哪开始:1
nomaxvalue ----- 递增最大值:没有
minvalue 1 ----- 递增最小值:1
NOCYCLE; ----- 不循环
2.给要实现ID自增的数据表创建一个触发器
SQL> CREATE OR REPLACE TRIGGER "触发器名称"
BEFORE INSERT ON "要实现ID自增的数据表名称"
FOR EACH ROW
BEGIN
SELECT "之前创建的序列名称".nextval INTO :new."要实现ID自增数据表中的ID字段名" FROM dual;
END;
这2个SQL执行完成后,您的数据表就可以实现ID自增的效果了。
十、遇到oracle(11g) 数据表被上锁,无法正常更新表数据怎么处理?
1.用sql命令行查询目前所有被锁的表:
select b.owner TABLEOWNER,b.object_name TABLENAME,c.OSUSER LOCKBY,c.USERNAME LOGINID, c.sid SID, c.SERIAL# SERIAL from v$locked_object a,dba_objects b,v$session c where b.object_id = a.object_id AND a.SESSION_ID =c.sid;
2.通过sql命令解锁指定进程:
alter system kill session 'SID,SERIAL' immediate;
解锁被锁数据表后,数据表可恢复正常更新。
十一、遇到oracle(11g) 表中数据查询后发现中文字符乱码怎么转义?
<?php
//变量字符类型检测;
$fileType = mb_detect_encoding($appPath , array('UTF-8','GBK','LATIN1','BIG5'));
//变量强行转换utf-8
$appPath = mb_convert_encoding($appPath ,'utf-8' , $fileType);
?>