百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

采用RPM方式安装oracle(orm rpc)

mhr18 2024-09-17 23:22 22 浏览 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\$ROOTPDB$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;        --服务名

相关推荐

Java面试宝典之问答系列(java面试回答)

以下内容,由兆隆IT云学院就业部根据多年成功就业服务经验提供:1.写出从数据库表Custom中查询No、Name、Num1、Num2并将Name以姓名显示、计算出的和以总和显示的SQL。SELECT...

ADG (Active Data Guard) 数据容灾架构下,如何配置 Druid 连接池?

如上图的数据容灾架构下,上层应用如果使用Druid连接池,应该如何配置,才能在数据库集群节点切换甚至主备数据中心站点切换的情况下,上层应用不需要变动(无需修改配置也无需重启);即数据库节点宕机/...

SpringBoot多数据源dynamic-datasource快速入门

一、简介dynamic-datasourc是一个基于SpringBoot的快速集成多数据源的启动器,其主要特性如下:支持数据源分组,适用于多种场景纯粹多库读写分离一主多从混合模式。支持...

SpringBoot项目快速开发框架JeecgBoot——项目简介及系统架构!

项目简介及系统架构JeecgBoot是一款基于SpringBoot的开发平台,它采用前后端分离架构,集成的框架有SpringBoot2.x、SpringCloud、AntDesignof...

常见文件系统格式有哪些(文件系统类型有哪几种)

PART.01常见文件系统格式有哪些常见的文件系统格式有很多,通常根据使用场景(Windows、Linux、macOS、移动设备、U盘、硬盘等)有所不同。以下是一些主流和常见的文件系统格式及其特点:一...

Oracle MySQL Operator部署集群(oracle mysql group by)

以下是使用OracleMySQLOperator部署MySQL集群的完整流程及关键注意事项:一、部署前准备安装MySQLOperator通过Helm安装Operator到Ku...

LibreOffice加入"转向Linux"运动

LibreOffice项目正准备削减部分Windows支持,并鼓励用户切换到Linux系统。自Oracle放弃OpenOffice后,支持和指导LibreOffice开发的文档基金会对未来有着明确的观...

Oracle Linux 10发布:UEK 8.1、后量子加密、增强开发工具等

IT之家6月28日消息,科技媒体linuxiac昨日(6月27日)发布博文,报道称OracleLinux10正式发布,完全二进制兼容(binarycompatibility...

【mykit-data】 数据库同步工具(数据库同步工具 开源)

项目介绍支持插件化、可视化的数据异构中间件,支持的数据异构方式如下MySQL<——>MySQL(增量、全量)MySQL<——>Oracle(增量、全量)Oracle...

oracle关于xml的解析(oracle读取xml节点的属性值)

有时需要在存储过程中处理xml,oracle提供了相应的函数来进行处理,xmltype以及相关的函数。废话少说,上代码:selectxmltype(SIConfirmOutput).extract...

如何利用DBSync实现数据库同步(通过dblink同步数据库)

DBSync是一款通用型的数据库同步软件,能侦测数据表之间的差异,能实时同步差异数据,从而使双方始终保持一致。支持各种数据库,支持异构同步、增量同步,且提供永久免费版。本文介绍其功能特点及大致用法,供...

MYSQL存储引擎InnoDB(八十):InnoDB静态数据加密

InnoDB支持独立表空间、通用表空间、mysql系统表空间、重做日志和撤消日志的静态数据加密。从MySQL8.0.16开始,还支持为模式和通用表空间设置加密默认值,这允许DBA控制在这些模...

JDK高版本特性总结与ZGC实践(jdk高版本兼容低版本吗)

美团信息安全技术团队核心服务升级JDK17后,性能与稳定性大幅提升,机器成本降低了10%。高版本JDK与ZGC技术令人惊艳,且JavaAISDK最低支持JDK17。本文总结了JDK17的主要...

4 种 MySQL 同步 ES 方案,yyds!(两个mysql数据库自动同步的方法)

本文会先讲述数据同步的4种方案,并给出常用数据迁移工具,干货满满!不BB,上文章目录:1.前言在实际项目开发中,我们经常将MySQL作为业务数据库,ES作为查询数据库,用来实现读写分离,...

计算机Java培训课程包含哪些内容?其实就这六大块

不知不觉秋天已至,如果你还处于就业迷茫期,不如来学习Java。对于非科班小白来说,Java培训会更适合你。提前了解下计算机Java培训课程内容,会有助于你后续学习。下面,我就从六个部分为大家详细介绍...

取消回复欢迎 发表评论: