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

采用RPM方式安装oracle(oracle rpm 安装包)

sinye56 2024-10-03 00:37 7 浏览 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;        --服务名

相关推荐

Linux在线安装JDK1.8

首先在服务器pingwww.baidu.com查看是否可以连网然后就可以在线下载一、下载安装JDK1.81、在下载安装的同时做好一些准备工作...

Linux安装JDK,超详细

1、了解RPMRPM是Red-HatPackageManager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux...

Linux安装jdk1.8(超级详细)

前言最近刚购买了一台阿里云的服务器准备要搭建一个网站,正好将网站的一个完整搭建过程分享给大家!#一、下载jdk1.8首先我们需要去下载linux版本的jdk1.8安装包,我们有两种方式去下载安装...

Linux系统安装JDK教程

下载jdk-8u151-linux-x64.tar.gz下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.ht...

干货|JDK下载安装与环境变量配置图文教程「超详细」

1.JDK介绍1.1什么是JDK?SUN公司提供了一套Java开发环境,简称JDK(JavaDevelopmentKit),它是整个Java的核心,其中包括Java编译器、Java运行工具、Jav...

Linux下安装jdk1.8

一、安装环境操作系统:CentOSLinuxrelease7.6.1810(Core)JDK版本:1.8二、安装步骤1.下载安装包...

Linux上安装JDK

以CentOS为例。检查是否已安装过jdk。yumlist--installed|grepjdk或者...

Linux系统的一些常用目录以及介绍

根目录(/):“/”目录也称为根目录,位于Linux文件系统目录结构的顶层。在很多系统中,“/”目录是系统中的唯一分区。如果还有其他分区,必须挂载到“/”目录下某个位置。整个目录结构呈树形结构,因此也...

Linux系统目录结构

一、系统目录结构几乎所有的计算机操作系统都是使用目录结构组织文件。具体来说就是在一个目录中存放子目录和文件,而在子目录中又会进一步存放子目录和文件,以此类推形成一个树状的文件结构,由于其结构很像一棵树...

Linux文件查找

在Linux下通常find不很常用的,因为速度慢(find是直接查找硬盘),通常我们都是先使用whereis或者是locate来检查,如果真的找不到了,才以find来搜寻。为什么...

嵌入式linux基本操作之查找文件

对于很多初学者来说都习惯用windows操作系统,对于这个系统来说查找一个文件简直不在话下。而学习嵌入式开发行业之后,发现所用到的是嵌入式Linux操作系统,本想着跟windows类似,结果在操作的时...

linux系统查看软件安装目录的方法

linux系统下怎么查看软件安装的目录?方法1:whereis软件名以查询nginx为例子...

Linux下如何对目录中的文件进行统计

统计目录中的文件数量...

Linux常见文件目录管理命令

touch用于创建空白文件touch文件名称mkdir用于创建空白目录还可以通过参数-p创建递归的目录...

Linux常用查找文件方法总结

一、前言Linux系统提供了多种查找文件的命令,而且每种查找命令都具有其独特的优势,下面详细总结一下常用的几个Linux查找命令。二、which命令查找类型:二进制文件;...

取消回复欢迎 发表评论: