oracle19.3安装和配置

本文详细介绍了Oracle19c在WindowsServer2019环境下的安装过程,包括使用Navicat和PL/SQLDeveloper的连接配置,以及通过修改配置文件启用远程访问的方法。此外,还讲解了C#连接Oracle的示例代码,并深入探讨了Oracle的逻辑体系结构,如数据库与实例的关系、表空间管理、角色与权限分配,以及备份和还原的命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境:

  • window server 2019
  • oracle19c
  • navicat15.0.11
  • pl/sql developer 14.0.1 x64位
  • .net framework4.5
  • .netcore 3.1

oracle安装文件:
链接:https://pan.baidu.com/s/1jrD2Mg3gMPZp_btI-GtMXg
提取码:hnpt

plsql安装文件:
链接:https://pan.baidu.com/s/10Lh6dLzEAuDKga1MdlXZfA
提取码:b4uz

参考:

一、安装oracle19.3

安装包如下,大小为2.98G:
在这里插入图片描述
将它解压到c盘:
在这里插入图片描述
双击setup.exe进行安装:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
因为密码设的太简单,下面弹出了警告框,直接点确定即可:
在这里插入图片描述
在这里插入图片描述

点击安装,下面等的时间要长,大概半小时:
在这里插入图片描述
在这里插入图片描述
看到上图说明安装成功了,点击关闭即可!

验证安装是否成功:
安装完毕后,打开命令行:
sqlplus /nolog
在这里插入图片描述

连按两次ctrl+c即可退出。

我们可以使用sqlplus登录后进行操作,如下是登录sys账户:
在这里插入图片描述

然后测一下tns联通性:
在这里插入图片描述

也可以登录web页面:https://localhost:5500/em/login
在这里插入图片描述

在这里插入图片描述

还可以查看下window服务:
在这里插入图片描述
此时,我们先来检查下listener.ora和tnsnames.ora的内容(这两个文件的位置可以从上面tnsping命令中看出来):
listener.ora:
在这里插入图片描述
tnsnames.ora:
在这里插入图片描述

二、使用navicate链接:

在这里插入图片描述

由于使用sys用户,所以需要在高级里设置以sysdba身份登录:
在这里插入图片描述
然后测试链接:
在这里插入图片描述
链接后如下:
在这里插入图片描述

三、使用pl/sql developer链接

在这里插入图片描述

在这里插入图片描述

四、修改配置文件,启用远程访问

4.1 修改oracle服务器的配置文件

找到对应位置的listener.ora和tnsnames.ora文件,在里面添加针对静态ip的监听和服务(实验的静态ip是:192.168.3.39):

  • listener.ora
    在这里插入图片描述
  • tnsnames.ora
    在这里插入图片描述

然后,重启Oracle服务和监听:
在这里插入图片描述

4.2 使用navicat连接oracle服务器

换一个计算机(不用安装oracle客户端),使用navicat进行连接,如下:
navicate:

在这里插入图片描述

4.3 使用pl/sql developer连接oracle服务器

虽然navicat可以在不安装Oracle客户端的情况下连接到远程oracle服务器,但这不代表pl/sql developer也可以。。。
下载oracle客户端:
地址:https://www.oracle.com/database/technologies/instant-client/downloads.html

也可以从我的网盘下载:
链接:https://pan.baidu.com/s/1GkOCX74h9Fre5CMpv-q4kA
提取码:ntpi
在这里插入图片描述
下载后如下:
在这里插入图片描述
将它解压到d盘即可:
在这里插入图片描述
然后,从oracle服务器拷贝tnsnames.ora文件到这个目录,如下:
在这里插入图片描述

然后,打开pl/sql developer,配置目录和oci.dll路径:
在这里插入图片描述
配置完成后重启pl/sql developer,输入连接信息如下:
在这里插入图片描述
点击确定后:
在这里插入图片描述
看到这里,说明已经连接成功了。

注意:

可能需要在客户端配置字符集,否则会提示如下:
在这里插入图片描述
这个时候,我们需要查看数据库中使用的字符集是哪个,然后在客户端的环境变量中设置,我的Oracle数据库用的是utf8,所以我设置如下(NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8):
在这里插入图片描述
如果是gbk可以设置:SIMPLIFIED CHINESE_CHINA.ZHS16GBK

五、c#连接oracle

新建.net 45控制台程序,安装Oracle.ManagedDataAccess包(如果是.netcore程序安装:Oracle.ManagedDataAccess.Core):
在这里插入图片描述
编写代码如下:

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Oracle.ManagedDataAccess.Client;

namespace OracleConnect
{
    class Program
    {
        static void Main(string[] args)
        {
            var oracleConnection = new OracleConnection("Data Source=192.168.3.39/ORCL;Password=123456;User ID=sys;DBA Privilege=SYSDBA;");
            oracleConnection.Open();
            var cmd= new OracleCommand("select * from user_users", oracleConnection);
            var adapter = new OracleDataAdapter(cmd);
            var ds = new DataSet();
            adapter.Fill(ds);
            Console.WriteLine($"ds.Tables.Count={ds.Tables.Count},currentUserName={ds.Tables[0].Rows[0]["username"].ToString()}");
            oracleConnection.Close();
            Console.WriteLine("ok");
        }
    }
}

运行如下:
在这里插入图片描述

六、关于oracle逻辑体系

6.1 数据库与实例

数据库是一套完整的数据仓储,里面包含的数据、用户权限等信息。
实例是一组Oracle进程,这些进程加载了一个数据库,然后对外提供服务。

在oracle12c之前, 数据库和实例是1对多的关系。一般我们开发环境默认安装的话就是一个数据库对应一个实例(多个实例对应一个数据库的情况是RAC)。这一点和sqlserver差别比较大(sqlserver是一个实例对应多个数据库)。

在oracle12c之后, 出现了可插拔数据库(PDB)和容器数据库(CDB)的概念,这有点类似于sqlserver的实例和数据库的关系了,具体来说:安装oracle的时候选择“创建为容器数据库”,这样就安装了一个容器数据库和一个可插拔数据库了,我们可以把项目数据都放在可插拔数据库里,每个可插拔数据库都是相互独立的,这样只需要一个oracle实例就可以管理多个oracle数据库(PDB)了。

看下图:
在这里插入图片描述

6.2 数据库和表空间、用户、模式(Schema)的关系

  • 一个Oracle数据库可以有多个表空间;
  • 一个表空间可以对应多个实际的物理文件;
  • 一个表空间可以供多个用户使用;
  • 一个用户只能有一个默认的表空间(可以在用户使用过程中修改用户的表空间);
  • 一个用户默认对应一个同名的模式(Schema),用户的其他对象(如:表、索引等)都在这个模式中。模式的概念主要是针对一系列资源对象来说的,而用户的概念主要是针对权限来说的。在oracle中用户和模式默认是1对1的,只允许创建用户,不允许创建模式;
  • 访问数据库资源的完整名称是schema.tablename,比如:select * from user1.table1

它们的关系如下图:
在这里插入图片描述

6.3 用户角色、权限

oracle中的用户、角色和权限具有如下图关系:
在这里插入图片描述
总结来说:

  • 可以将权限授予角色,然后将角色授予用户,这样用户就有了角色上的权限;
  • 也可以直接将权限授予用户;
  • 也可以将角色a授予另一个角色b,这样角色b将具有角色a的权限。

权限的概念:>权限分为两中(系统权限和用户权限)。
系统权限是针对用户设定的。而对象权限是用来控制用户访问其他用户模式对象的。

我们新建了一个用户并指定用户的默认表空间:

create user test1 identified by 123456 default tablespace data_test;

此时,test1还不能连接到oracle。。。
我们需要授予connect角色:

grant connect to test1;

这样我们就能使用test1连接Oracle了,不过我们连接后还不能创建表,所以我们还需要把resource角色授权给test1,如下:

grant connect,resource to test1;

其实,仅授予这两个角色还是会有限制,如果想在开发中省去配置权限的时候,可以将dba角色授予test1。

grant connect,resource,dba to test1;

不过需要注意两个地方:

  • 即使你授予了dba角色,你也不能使test1以sysdba身份登录(经实验:localhost可以,其他的不可以)。
  • 授予dba角色后,这个用户将可以修改所有的用户数据的权限,生产环境中慎用。
  • 如果想精细控制用户的权限,可参考:《Oracle权限管理详解》

6.4 DBA角色和SYSDBA角色

DBA角色是实实在在存在oracle数据库中的,我们可以通过select * from dba_roles;查询出来,而SYSDBA只是概念上的一种标识,你在dba_roles中是查询不出来它的。用户sys默认具有sysdba特权。如果你想让新建的用户以sysdba的身份登录,那么你需要执行grant sysdba to user1;

需要注意的是: 无论你用什么用户登录,一旦你选择以sysdba登录并且成功后,系统将认为你是sys账户,如下:
在这里插入图片描述
可以看到,虽然我们使用test1的账号登录,但是由于我们以sysdba身份登录,所以登录后显示当前用户是sys,而不是test1。

6.5 oracle安装后默认的表空间

使用sys账户以sysdba登录后查询即可:
在这里插入图片描述
或者使用sql查询:
在这里插入图片描述
可以看到,默认新建了五个表空间(DATA_TEST是我建的),它们的作用如下:

  • system/sysaux:

    system是oracle元数据存放的表空间,sysaux是辅助表空间。Oracle会在这里记录数据库的资源对象和数据情况。

  • temp:

    临时表空间,相当于一个临时的垃圾场。用于排序操作,比如你要做一次大数据量的查询,但在内存无法存储这么大量的数据,然后会在磁盘上建立一个临时的表空间用记存放这些数据。

  • UNDOTBS1:

    Undo 类型的表空间,当你对一张表或一条记录进行修改的时候,它会对修改之前的信息进行保存,这样可以保证数据的回滚。Undo 只包含undo类型的对象,不能包含任何其他对象,只适合于数据文件和区间管理。

  • USERS:

    用户存储数据的表空间,在新建用户的时候,如果我们没有默认的表空间,那么这个用户就是用USERS作为默认表空间,之后用户新建的表和数据都会存储到USERS表空间里。

6.6 oracle安装后默认的角色

直接使用sql语句查询(sys账户以sysdba身份登录):

select * from dba_roles;

在这里插入图片描述

可以看到,默认有90个角色,我们只需要知道最常用的几个就可以了,比如:connect、resources、dba。。。

6.7 oracle安装后默认的用户

直接使用sql语句查询(sys账户以sysdba身份登录):

select * from dba_users;

在这里插入图片描述
可以看到,安装后就已经有这么多用户了,不过它们大多都没有开启使用,我们关系最长用的几个就好了,比如:sys、system。。。

6.8 对比oracle(12c以前)和sqlserver体系

sqlserver:
在这里插入图片描述
oracle:
在这里插入图片描述

6.9 oracle的备份和还原

在Oracle12c以前,我们针对一个项目开发的流程是这样的:

  1. 新建表空间(项目单独所有)
  2. 新建账户,默认表空间为上面新建的
  3. 给这个账户赋权
  4. 当环境迁移的时候,将这个表空间进行备份,然后将备份到的dmp文件拿到另一个oracle服务器上进行还原
  5. 继续开发。。。

那么oracle表空间备份和还原的命令是什么呢?
答:EXPDPPMPDP。具体细节,参考:《关于oracle数据库备份还原-impdp,expdp》

七、给项目准备“数据库”

7.1 新建表空间

注:我实验的时候是在服务器上本地连接到oracle服务器的
首先,找到Oracle数据文件的目录,如下:
在这里插入图片描述
执行下面语句:
create tablespace data_test datafile 'C:\app\Administrator\oradata\ORCL\data_test1.dbf' size 50M;
在这里插入图片描述
这样一个表空间就创建成功了,可以观察下创建好的文件:
在这里插入图片描述

7.2 新建用户

执行下面的语句:
create user test1 identified by 123456 default tablespace data_test;
在这里插入图片描述

7.3 给用户授权

执行如下命令:
grant connect, resource,dba to test1;

在这里插入图片描述

授权之后,我们就可以进行操作了。

在这里插入图片描述
连接后,先来个查询:
在这里插入图片描述

接下来,进行其他常规操作:
在这里插入图片描述
在这里插入图片描述
实验到此结束。。。

Oracle数据库中,监听器是用于接收客户端连接请求并将其转发给相应的数据库实例的网络服务。在Oracle 19.3中,监听器的配置较为简单,可以通过以下步骤进行设置: 1. 首先,确认Oracle数据库已经成功安装并启动。在Oracle 19c中,默认监听器名称为LISTENER。 2. 打开命令行终端或者终端,输入lsnrctl start命令来启动监听器。可以通过lsnrctl status命令来验证监听器是否已经成功启动。 3.Oracle 19.3中,监听器的配置文件为listener.ora,默认位于$ORACLE_HOME/network/admin目录下。可以使用文本编辑器打开该文件。 4. 在listener.ora文件中,可以根据需要修改以下参数: - PROTOCOLS_LISTEN:指定监听器使用的协议。 - LISTENER:指定监听器的名称。 - PORT:指定监听器使用的端口号。 - HOST:指定监听器所在的主机名。 5. 保存listener.ora文件,并重启监听器以使更改生效。可以使用lsnrctl命令来停止启动监听器。 6. 如果需要在监听器中添加或删除特定数据库实例的监听端口,可以使用lsnrctl命令的services参数来进行配置。例如,使用以下命令添加一个数据库实例的监听端口: lsnrctl services <监听器名称> 7. 配置完成后,可以使用tnsping命令或者其他客户端工具来测试监听器是否正常响应客户端连接请求。 需要注意的是,在配置监听器时,应确保监听器的名称、端口协议与数据库实例的配置相匹配,以确保客户端能够正确连接到数据库实例。 以上是Oracle 19.3监听器配置的基本步骤,根据具体的环境需求,还可以进行更高级的配置,如支持多个监听器、配置监听器密码验证等。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jackletter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值