redhat7 RPM 安装oracle 19c详细步骤和相关问题的解决方法
说明:本人在安装中遇到了很多问题,查阅了很多博文和资料,现将问题和解决方案编入本人,感谢所有分享的博主。
1. 下载需要的安装包:
1.1 preinstall的rpm 安装包
http://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
preinstall主要用于检查当前系统是否满足oracle安装所需的条件,可能缺少其他插件,进行对应的安装即可。
常见的缺少:
ksh-20120801-26.el7.x86_64.rpm
libaio-devel-0.3.109-13.el7.x86_64.rpm
compat-libcap1-1.10-7.el7.x86_64.rpm
compat-libstdc+±33-3.2.3-72.el7.x86_64.rpm
(前3个rpm可以在安装redhat的镜像文件中找到,最后一个需要在网上下载,找到rpm包,
同理使用rpm -ivh **.rpm或者yum localinstall -y **.rpm进行安装)
镜像文件中找到对应的rpm包,以及安装可以查看一下链接:
使用镜像光盘作为安装源-在VMware上挂载ios镜像,并安装vsftpd(ksh同理)
1.2 Oracle 的rpm 安装包
https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
2. 安装.
yum localinstall -y oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
安装完成之后 进行安装
yum localinstall -y oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
等待安装结果即可.
可能存在问题1:
虚拟机存储空间不足,不能进行安装,需要进行扩容处理:扩容处理链接
安装完结果:
Total size: 6.9 G
Installed size: 6.9 G
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : oracle-database-ee-19c-1.0-1.x86_64 1/1
[INFO] Executing post installation scripts...
[INFO] Oracle home installed successfully and ready to be configured.
To configure a sample Oracle Database you can execute the following service configuration script as root: /etc/init.d/oracledb_ORCLCDB-19c configure
Verifying : oracle-database-ee-19c-1.0-1.x86_64 1/1
Installed:
oracle-database-ee-19c.x86_64 0:1.0-1
Complete!
注意安装完成之后的配置 需要使用root用户.
3.使用root用户进行配置.
#root 用户执行命令:
/etc/init.d/oracledb_ORCLCDB-19c configure
等待Oracle数据库执行初始化操作即可.
4. 执行完成之后的处理.
4.1增加环境变量处理:
#配置文件/etc/profile.d目录下的环境变量,是会作用于全部用户的
vim /etc/profile.d/oracle19c.sh
增加内容为:
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
export PATH=$PATH:/opt/oracle/product/19c/dbhome_1/bin
#设置数据库实例
export ORACLE_SID=ORCLCDB
#设置字符集问题,避免sqlplus连接时,输出信息全是问号问题
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
4.2增加系统用户:
新建用户:useradd oracle
新建组:groupadd dba
修改用户所属组:chgrp -R dba oracle
修改用户密码:passwd oracle
4.3使用Oracle用户登录进行相关的处理:
sqlplus / as sysdba
4.4查看pdb信息:这个很重要,后续建用户会用到
show pdbs
4.5创建自动启动pdb的触发器(不设置PDB的开机启动 很多程序无法连接上PDB, 建议使用show pdbs 查看状态, 手工启动也可以. 不能在CDB创建业务数据, 会提示创建的用户名不符合 c##的要求)
CREATE TRIGGER open_all_pdbs
AFTER STARTUP ON DATABASE
BEGIN
EXECUTE IMMEDIATE 'alter pluggable database all open';
END open_all_pdbs;
/
5.创建oracle数据库用户
此处可能出现问题:
Oracle 12c创建用户时出现“ORA-65096: invalid common user or role name”的错误
主要是oracle从12c开始,出现了CDB和PDB的基本管理,在oracle 12c中,使用了一个container(容器)的概念。
基本概念:
Multitenant Environment:多租户环境
CDB(Container Database):数据库容器
PDB(Pluggable Database):可插拔数据库
COMMON USERS(普通用户):经常建立在CDB层,用户名以C##或c##开头;
(如果不介意c##用户名的话,可直接创建create user c##test identified by test;
然后授权:grant dba to c##test;
然后登陆时使用用户名c##test ,密码test即可)
LOCAL USERS(本地用户):仅建立在PDB层,建立的时候得指定CONTAINER。
(如果想创建本地用户的话,需要做一下修改:就是指定PDB容器,然后创建用户)
操作步骤:(sysdba进入数据库后)
1、查看Oracle 的版本
SQL> select * from v$version;
查看当前使用的容器
SQL>select sys_context ('USERENV', 'CON_NAME') from dual;
2、查询pdbs
SQL>select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
3、将Pdb open:
SQL> alter pluggable database pdborcl open;
4、切换容器到pdb
SQL> alter session set container=ORCLPDB1;(注意自己的PDB名称,是第2步中查询出的)
5.查看当前使用容器
SQL>select sys_context ('USERENV', 'CON_NAME') from dual;
可以看出由原来的CDB$ROOT修改为了ORCLPDB1了
6、创建用户
SQL>create user zhangsanidentified by zhangsan;
SQL>grant dba to zhangsan;
以上就完成了PDB的本地用户创建
6.连接数据库
6.1 redhat7通过客户端sqlplus直接登录
如果是创建的CDB 普通用户,先查看安装路径下的客户端的连接符(/opt/oracle/product/19c/dbhome_1/network/admin/tnsnames.ora)
ORCLCDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCLCDB)
)
)
则登录就是 sqlplus c##test/test@ORCLCBD
(sqlplus 用户/密码@连接符)
如果是PDB本地用户,则需要新增连接符,否则会报错: 用sys登录SQLplus新建用户后,用新建的用户登录plsql程序,提示“ora-01017:用户名/口令无效;登录被拒绝。”
vi /opt/oracle/product/19c/dbhome_1/network/admin/tnsnames.ora
#新增:注意service_name是pdb的NAME(select NAME from v$pdbs;),
ORCLPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCLPDB1)
)
)
登录就是 sqlplus zhangsan/zhangsan@ORCLPDB
(sqlplus 用户/密码@连接符)
6.2 通过plsql登录
1.首先检查网络是否连通,端口是否连通(oracle默认端口是1521)
如果网络连通,但是端口不通,则可能是防火墙的问题,解决方案如下
Centos7系统,关闭了防火墙,但是有些端口仍然不能telnet通,解决方案
2.oracle客户端新增连接符(tnsnames.ora)
#注意:链接名前没有空格;服务器IP;服务名,参照redhat7 oracle客户端上的tnsnames.ora配置
链接名自己定 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle服务器IP)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = 数据库名)
#注意此处数据库名,如果是oracle12c以后版本,则需要使用用户对应的数据库容器,可能是pdb名称。默认的是CDB名称;
#用户对应的pdb名称,可以使用select NAME from v$pdbs;查询
)
)
后续补充:windows上的oracle客户端以及plsql安装