采用RPM方式安装oracle(orm rpc)
mhr18 2024-09-17 23:22 15 浏览 0 评论
下载RPM安装包
(1)preinstall预安装包
http://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
(2)Oracle 的rpm 安装包
https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
安装
yum localinstall -y oracle-database-preinstall-19c-1.0-3.el7.x86_64.rpm
yum localinstall -y oracle-database-ee-19c-1.0-1.x86_64.rpm
修改字符集以及其他的配置
vim /etc/init.d/oracledb_ORCLCDB-19c
修改字符编码 export CHARSET=ZHS16GBK
在这里改数据库名的话,要同步修改文件名称,
初始化数据库
/etc/init.d/oracledb_ORCLCDB-19c configure
//执行完这个会创建一个CDB 一个PDB
时间较久,这里遇到了个问题
初始化的时候报错
LISTENER:No valid IP Address returned for the host VM-20-15-centos.
找不到主机名对应的有效IP地址
解决方法:
配置/etc/hosts,增加主机名和当前内网IP的关系
x.x.x.x(不要用127.0.0.1) VM-20-15-centos
配置环境变量
1.修改oracle用户密码
passwd oracle
2.切换至oracle用户,设置环境变量
注意不要在root用户下执行下列操作,否则后面会出现命令找不到的情况
su oracle
vim ~/.bash_profile
全局的是在/etc目录下(/etc/profile)
用户个人的是在用户的家目录下(~/.bash_profile)
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
export ORACLE_SID=ORCLCDB
export ORACLE_PDB_SID=ORCLPDB1
export PATH=$ORACLE_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export NLS_LANG=american_america.ZHS16GBK
source ~/.bash_profile
3.使用Oracle登录进行相关的处理
以sqlplus / as sysdba方式登录时,采用的是操作系统验证的方式,所以用户名/密码输与不输入是一样的
sqlplus / as sysdba
4.创建自动启动pdb的触发器
//创建
CREATE TRIGGER OPEN_ALL_PDBS
AFTER STARTUP ON DATABASE
BEGIN
EXECUTE IMMEDIATE 'alter pluggable database all open';
END OPEN_ALL_PDBS;
/
//查看所有的触发器
select trigger_name from all_triggers where table_name='OPEN_ALL_PDBS';
//查看触发器的写法
select text from all_source where type='TRIGGER' AND name='OPEN_ALL_PDBS';
//删除触发器
drop trigger OPEN_ALL_PDBS;
5.安装完毕重启数据库服务器
reboot
启动数据库
1.启动
su - oracle
lsnrctl start #启动监听,oracle下要有相应的环境变量
sys用数据库的超级用户,数据库内很多重要的东西(数据字典表、内置包、静态数据字典视图等)都属于这个用户,sys用户必须以sysdba身份登录。
sqlplus / as sysdba
startup
2.查看已启用的用户
select username from dba_users where account_status='OPEN';
dba_开头的是查全库所有的(要有dba权限),all_开头的是查当前用户可以看到的,user_开头的是查当前用户的
在oracle中,可利用“dba_sys_privs”查询用户的权限
select * from dba_sys_privs where grantee='用户名'
3.修改用户密码
alter user sys identified by password
alter user system identified by password
--pdb的用户
alter user pdbadmin identified by password
创建用户
1.管理员登录
sqlplus / as sysdba
or connect sys / as sysdba
2.创建用户
从12c开始 oracle添加了CDB,默认连接的都是CDB,
在不切换到pdb的情况下,创建用户名需要加C##的前缀
echo $ORACLE_SID #查看当前数据库的SID
create user c##cheng IDENTIFIED BY password;
3.用户添加权限
grant connect,resource,dba,unlimited tablespace to c##cheng container=all;
对于普通用户:授予connect, resource权限。
对于DBA管理用户:授予connect,resource, dba权限。
CDB(ContainerDatabase)与PDB(PluggableDatabase,就是普通数据库)
ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。CDB全称为Container Database,中文翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库。在ORACLE 12C之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。而实例与数据库不可能是一对多的关系。当进入ORACLE 12C后,实例与数据库可以是一对多的关系,就是可以插拔式地更换数据库。
一个CDB容器数据库通常包含CDB\$ROOT、PDB$SEED组件:
a. CDB$ROOT存储着ORACLE提供的元数据和Common User,Common User 是指在每个容器中都存在的用户(c##或C##开头的用户),查看:
show con_name;
b.PDB$SEED是创建PDB数据库的模板。一个CDB中有且只能有一个Seed,查看:
show pdbs
--------------------------------------------------------------
每个PDB都是独立的单元,有自己的用户(local user)、表空间、数据文件,每个local user只能访问自己的PDB,而common user只要权限足够,可以访问任意PDB
创建PDB
//查看表空间
select * from dba_tablespaces;
//查看当前用户的表空间
select * from user_users;
//查看表空间物理文件的名称及大小
select * from dba_data_files;
//如果在这一步创建表空间报错缺少路径的话,我们可以去配置OMF管理, OMF 在后面单独整一个小节来讲解,
//表空间不指定的话,则用户的表空间默认为SYSTEN的表空间
create pluggable database ORCLPDBC admin user CHENG_PDBC identified by password default tablespace TS_PDBC;
创建数据库也可以使用DBCA(数据库配置助手)自动化、可视化的完成数据库创建,需要linux有可视化界面,不然会报错display not set
-------------------------
-------------------------
插队OMF记录
OMF,全称是Oracle Managed Files,即Oracle文件管理,使用OMF可以简化管理员的管理工作,不用指定文件的名字、大小、路径,其名字,大小,路径由oracle 自动分配。在删除不再使用的日志、数据、控制文件时,OMF也可以自动删除其对应的OS文件
解决: ORA-02199: missing DATAFILE/TEMPFILE clause
//OMF支持下列文件的自动管理
表空间
日志文件(联机)
控制文件
前提条件:需要为这些类型文件设定相关参数。
//数据文件管理参数:
db_create_file_dest
//查看db_create_file_dest参数
show parameter db_create_file
//设定db_create_file_dest参数
ALTER SYSTEM SET db_create_file_dest = '/home/oracle/omf_data';
-------------------------
-------------------------
PDB相关命令
//若状态为MOUNTED表示创建成功
show pdbs;
//OPEN新创建的PDB,状态标为 read write 则开启成功
alter pluggable database ORCLPDBC open
后续的切换PDB和启动就不记录了,后面有记录(这里是分为两次记录的,所以后续启动记录是另一个PDB)
//记得给刚刚开出来的用户权限,向切换到本PDB再grant
grant connect,resource,dba to CHENG_PDBC;
grant create session to CHENG;
//启动pdb
//cdb切换至pdb
alter session set container=pdborcl;
//pdb切换至cdb
//alter session set container=cdb$root;
startup;
创建PDB自己的用户
//1.创建表空间
CREATE TABLESPACE TS_CHENG_TEST LOGGING DATAFILE '/home/oracle/ts_test/TS_CHENG_TEST.dbf'
SIZE 100M AUTOEXTEND ON NEXT 32M MAXSIZE unlimited EXTENT MANAGEMENT LOCAL;
//2.创建临时表空间
create temporary tablespace TS_CHENG_TEST_TEMP tempfile '/home/oracle/ts_test/TS_CHENG_TEST_TEMP.dbf'
size 100m autoextend on next 32m maxsize 500m extent management local;
//3.创建用户
CREATE USER CHENG IDENTIFIED BY PASSWORD DEFAULT TABLESPACE TS_CHENG_TEST TEMPORARY TABLESPACE TS_CHENG_TEST_TEMP;
//4.给用户授权
grant connect,resource,dba to CHENG;
grant create session to CHENG;
grant select any dictionary to 用户; --这个权限比较大
grant select_catalog_role to 用户; --这个权限是最低的要求,但是可以访问到v$相关视图
revoke select_catalog_role from user;--收回权限
//5.删除用户
drop user CHENG
创建PDB的用户的时候遇到个问题
新建pdb用户无法登录
报错ORA-01017: invalid username/password; logon denied
原因:
因为CDB和PDB的servicename可能是不一样的,需要先查询pdb的service_name
SQL> select name,pdb from v$services;
然后再vi tnsnames.ora 中添加
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl) 把查询到pdb对应的service_name写到这里
)
)
然后连接的时候加上SID
conn scott/oracle@ORCL
注意:
Listener.ora、tnsnames.ora和sqlnet.ora这3个文件是关系orale网络配置的3个主要文件,其中listener.ora是和数据库服务器端相关,
而tnsnames.ora和slqnet.ora这2个文件不仅仅关系到服务器端,主要的还是和客户端关系紧密。 这个客户端的意思是服务器上的客户端,服务器上也是可以通过客户端(sqlplus工具)连接到oracle服务器的
正儿八经的本机服务连接服务器的话,也可以去配置tnsnames.ora别名
linux下Oracle服务的启动和关闭
确保我们能够访问oracle数据库包含两部分,一个是oracle实例,一个是监听,两个同时开启,我们才能正常的使用数据库,因此我们在关闭和启动oracle服务时,也需要同时操作实例和监听
//查看
ps -ef|grep oracle
//启动监听
su - oracle
lsnrctl start #启动监听,oracle下要有相应的环境变量
//启动实例
sqlplus / as sysdba
startup
//查看实例的状态
select status from v$instance;
//关闭监听
lsnrctl stop
//关闭实例
sqlplus / as sysdba
shutdown immediate
注意:在 CDB 中,在 PDB 上发出 SHUTDOWN 中止等效于在非 CDB 上发出 SHUTDOWN INSTANT
直接使用shutdown immediate虽然是服务器主动断开连接但还是很慢,所以可以使用以下的步骤来:
//1、关监听
ps -ef |grep LOCAL=NO|grep -v grep|cut -c 9-15|xargs kill -9
//2、断session
就是上面的kill -9
//3、断开
shutdown immediate
LOCAL=NO:非本地连接,即网络连接。它是通过Listener 连接到服务器的。客户端的应用通过客户端的监听向服务器的监听发送请求,服务器的监听接收后,在与数据库连接,执行相关操作,在把结果返回给客户端。这是通过监听的流程。 所以在客户端需要配置监听,即配置tnsnames.ora。
LOCAL=YES:本地连接。 本地连接不走监听,所以在服务监听没有启动的情况下,通过本地的sqlplus 还是可以连上数据库的。
### 关闭实例的其他命令
SHUTDOWN ABORT
此模式适用于紧急情况,例如,当没有其他形式的关机成功时。这种关机模式是最快的。但是,此数据库的后续打开可能需要更长的时间,因为必须执行实例恢复以使数据文件保持一致。
由于不对打开的数据文件执行检查点操作,因此在数据库可以重新打开之前,必须进行实例恢复。其他关机模式不需要在数据库重新打开之前进行实例恢复。
注意:在 CDB 中,在 PDB 上发出 SHUTDOWN 中止等效于在非 CDB 上发出 SHUTDOWN INSTANT。
注意:实例恢复是将联机重做日志中的记录应用于数据文件以重建在最近一个检查点之后所做的更改的过程。就是将重做日志文件中的数据写入数据文件的操作
SHUTDOWN IMMEDIATE
此模式通常是仅次于 的最快模式。Oracle 数据库终止任何正在执行的 SQL 语句并断开用户连接。活动事务将终止,未提交的更改将回滚。SHUTDOWNABORT
SHUTDOWN TRANSACTIONAL,应该是生产中最安全的
此模式可防止用户启动新事务,但会等待所有当前事务完成,然后再关闭。此模式可能需要花费大量时间,具体取决于当前事务的性质。
SHUTDOWN NORMAL
这是默认的关机模式。数据库在关闭之前等待所有连接的用户断开连接。
关闭后重启报错ORA-01012: not logged on
shutdown abort
这个方式很危险,还是推荐上面的查出oracle进程后手动去kill掉
原因:
shutdown immediate是一种安全的数据库关闭方式
但是注意,如果数据库系统繁忙,当前有大量事务执行(甚至是大事务正在处理),那么使用此选项关闭数据库也可能需要大量时间
修改oracle默认端口
//关闭监听和服务
lsnrctl stop
shutdown immediate
// 找一个没有用的端口
netstat -ano | grep **
//修改文件
修改服务端%ORACLE_HOME%/network/admin/listener.ora文件里PORT=的值;
修改服务端%ORACLE_HOME%/network/admin/tnsnames.ora文件里PORT=的值;
注意:
如果本机客户端使用tnsnames.ora别名登录的话也需要修改本机客户端的PORT
// 重启监听和服务(好像只用重启监听就行了,服务不能关闭重启)
lsnrctl status 监听状态
lsnrctl start
startup
ORACLE中SID和SERVICE_NAME的区别
**数据库名**:数据库名是存储在控制文件中的名称,它代表的是数据库,也就是数据库包含的所有的物理文件的总称。
**实例名**:用于响应某个数据库操作的数据库管理系统的名称。实例名是由初始化参数文件的参数instance_name决定的。如果这个参数不被指定(即instance_name没有被指定为任何值),那么实例的名字由该用户的环境变量ORACLE_SID(注意这里是大写)决定。一个数据库可以有多个实例,例如RAC,实例名(SID)用于标识数据库内的每一个实例的名称
**服务名**:SERVICE_NAME指的是listener中的全局数据库名:这个名字是由listener.ora中GLOBAL_DBNAME参数决定的。SERVICE_NAME是Oracle8i新引进的,8i之前一个数据库只能有一个实例。8i之后一个数据库可以对应多个实例,例如RAC。为了充分利用所有实例,并且令客户端连接配置简单,ORACLE提出了SERVICE_NAME的概念。该参数直接对应数据库,而不是某个实例。
SELECT NAME FROM V$DATABASE; --数据库名
SELECT instance_name FROM
V$INSTANCE; --实例名
select global_name from global_name; --服务名
相关推荐
- redis 7.4.3更新!安全修复+性能优化全解析
-
一、Redis是什么?为什么选择它?Redis(RemoteDictionaryServer)是一款开源的高性能内存键值数据库,支持持久化、多数据结构(如字符串、哈希、列表等),广泛应用于缓存、消...
- C# 读写Redis数据库的简单例子
-
CSRedis是一个基于C#的Redis客户端库,它提供了与Redis服务器进行交互的功能。它是一个轻量级、高性能的库,易于使用和集成到C#应用程序中。您可以使用NuGet包管理器或使用以下命令行命令...
- 十年之重修Redis原理
-
弱小和无知并不是生存的障碍,傲慢才是。--------面试者总结Redis可能都用过,但是从来没有理解过,就像一个熟悉的陌生人,本文主要讲述了Redis基本类型的使用、数据结构、持久化、单线程模型...
- 高频L2行情数据Redis存储架构设计(含C++实现代码)
-
一、Redis核心设计原则内存高效:优化数据结构,减少内存占用低延迟访问:单次操作≤0.1ms响应时间数据完整性:完整存储所有L2字段实时订阅:支持多客户端实时数据推送持久化策略:RDB+AOF保障数...
- Magic-Boot开源引擎:零代码玩转企业级开发,效率暴涨!
-
一、项目介绍基于magic-api搭建的快速开发平台,前端采用Vue3+naive-ui最新版本搭建,依赖较少,运行速度快。对常用组件进行封装。利用Vue3的@vue/compiler-sfc单文...
- 项目不行简历拉胯?3招教你从面试陪跑逆袭大厂offer!
-
项目不行简历拉胯?3招教你从面试陪跑逆袭大厂offer!老铁们!是不是每次面试完都感觉自己像被大厂面试官婉拒的渣男?明明刷了三个月题库,背熟八股文,结果一被问项目就支支吾吾,简历写得像大学生课程设计?...
- 谷歌云平台:开发者部署超120个开源包
-
从国外相关报道了解,Google与Bitnami合作为Google云平台增加了一个新的功能,为了方便开发人员快捷部署程序,提供了120余款开源应用程序云平台的支持。这些应用程序其中包括了WordPre...
- 知名互联网公司和程序员都看好的数据库是什么?
-
2017年数据库领域的最大趋势是什么?什么是最热的数据处理技术?学什么数据库最有前途?程序员们普遍不喜欢的数据库是什么?本文都会一一揭秘。大数据时代,数据库的选择备受关注,此前本号就曾揭秘国内知名互联...
- 腾讯云发布云存储MongoDB服务
-
近日,著名安全专家兼Shodan搜索引擎的创建者JohnMatherly发现,目前至少有35000个受影响的MongoDB数据库暴露在互联网上,它们所包含的数据暴露在网络攻击风险之中。据估计,将近6...
- 已跪,Java全能笔记爆火,分布式/开源框架/微服务/性能调优全有
-
前言程序员,立之根本还是技术,一个程序员的好坏,虽然不能完全用技术强弱来判断,但是技术水平一定是基础,技术差的程序员只能CRUD,技术不深的程序员也成不了架构师。程序员对于技术的掌握,除了从了解-熟悉...
- 面试官:举个你解决冲突的例子?别怂!用这个套路……
-
面试官:举个你解决冲突的例子?别怂!用这个套路……最近收到粉丝私信,说被问到:团队技术方案有分歧怎么办?当场大脑宕机……兄弟!这不是送命题,是展示你情商+技术判断力的王炸题!今天教你们3招,用真实案例...
- 面试碰到MongoDB?莫慌,跟面试官这样吹MongoDB 复制集
-
推荐阅读:吊打MySQL:21性能优化实践+学习导图+55面试+笔记+20高频知识点阿里一线架构师分享的技术图谱,进阶加薪全靠它十面字节跳动,依旧空手而归,我该放弃吗?文末会分享一些MongoDB的学...
- SpringBoot集成扩展-访问NoSQL数据库之Redis和MongoDB!
-
与关系型数据库一样,SpringBoot也提供了对NoSQL数据库的集成扩展,如对Redis和MongoDB等数据库的操作。通过默认配置即可使用RedisTemplate和MongoTemplate...
- Java程序员找工作总卡项目关?
-
Java程序员找工作总卡项目关?3招教你用真实经历写出HR抢着要的简历!各位Java老哥,最近刷招聘软件是不是手都划酸了?简历投出去石沉大海,面试邀请却总在飞别人的简历?上周有个兄弟,13年经验投了5...
- Java多租户SaaS系统实现方案
-
嗯,用户问的是Java通过租户id实现的SaaS方案。首先,我需要理解用户的需求。SaaS,也就是软件即服务,通常是指多租户的架构,每个租户的数据需要隔离。用户可能想知道如何在Java中利用租户ID来...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle位图索引 (63)
- oracle批量插入数据 (62)
- oracle事务隔离级别 (53)
- oracle 空为0 (50)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)