Oracle XE命令行创建数据库的一波三折(已解决)

这是一个目录

前言

这篇文章是我在误装了oracle xe(精简版数据库)后有感而写,对于xe的具体区别将在文末进行说明。(ps:本文的操作方法并未在oracle11标准版数据库上尝试过(因为某盘下载实在是太慢啦!!!),仅仅针对XE版本

数据库实验课上,老师要求我们下载oracle database,于是我"壮志满怀"的去下载了

可是,一找一个不吱声!!官网全是23AI版本,下载后安装还有一堆问题,一顿找没找到官网的11g(如果找别人博客的链接,又几乎全是某网盘,慢慢慢!!烦死啦!!)

幸运的是,好兄弟找到并将网址发给我辣!!可是大大大大问题就此开始了...(此时我还在得意的笑)

网址:oracle11g

于是我正式开始实验,发现书上的教程是使用DBCA创建案例数据库(创建一个新的,安装好的有一个默认的数据库,我的是XE)。

我就在那一顿找啊...最后才了解到我下载的版本是精简版(对,难怪那么小,damn!!)。

不就是安装一个数据库,我mysql都精通了,这不是小case,洒洒水就给他拿下!

...

...

啊?怎么和我设想的不一样??!!

...(省略一万次的尝试)

...

经过一次又一次的失败,终于创成功辣!!!!

创建预备

这里会简单的介绍一下大致的内容:

  1. oracle中每个数据库都会对应一个控制文件,这个文件是数据库的核心
  2. 每个数据库都需要至少两个重做日志文件
  3. 每个数据库需要几个关键的角色(必不可少,如:sys...)
  4. 如果需要图形化界面链接数据库,则需要配置windows服务,配置监听服务

创建

一、创建配置文件+指定控制文件路径

创建数据库文件夹

路径:...\app\oracle\oradata\

在该目录下创建一个文件夹,名字为你要创建的数据库名字,

创建配置文件

路径:...\app\oracle\product\11.2.0\server\database\

该目录统一存放配置文件(用于指定一些基础配置,如:数据库名称、控制文件路径)

创建配置文件intiXXX.ora,其文件内容如下:

bash 复制代码
DB_NAME= BOOKSALE
MEMORY_TARGET =1G
PROCESSES = 200
CONTROL_FILES =(...\app\oracle\oradata\BOOKSALE\CONTROL.DBF) //指定控制文件路径

可以直接cv initXE.ora文件(该目录下应该存在一个安装时默认数据库的配置文件),然后改名成为你要创建的数据库名字(我的是initBOOKSALE.ora)

二、使用命令行创建数据库

先使用sqlplus打开数据库

关闭当前数据库

bash 复制代码
shutdown;

切换实例到NOMOUNT状态,用新配置文件重新启动实例

bash 复制代码
STARTUP NOMOUNT PFILE='...app\oracle\product\11.2.0\server\database\initBOOKSALE.ora';

创建数据库

需要在.../app/oracle/fast_recovery_area路径下创建数据库文件夹,该文件夹用来存放重做日志文件

bash 复制代码
CREATE DATABASE BOOKSALE
   USER SYS IDENTIFIED BY 123456
   USER SYSTEM IDENTIFIED BY 123456
   LOGFILE GROUP 1 ('.../app/oracle/fast_recovery_area/BOOKSALE/redo01.log') SIZE 100M,
           GROUP 2 ('.../app/oracle/fast_recovery_area/BOOKSALE/redo02.log') SIZE 100M
   MAXLOGFILES 32
   MAXDATAFILES 100
   DATAFILE '.../app/oracle/oradata/BOOKSALE/SYSTEM.DBF' SIZE 500M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
   UNDO TABLESPACE undo_ts
   DATAFILE '.../app/oracle/oradata/BOOKSALE/UNDO_TS.DBF' SIZE 100M AUTOEXTEND ON
   SYSAUX DATAFILE '.../app/oracle/oradata/BOOKSALE/SYSAUX.DBF' SIZE 100M AUTOEXTEND ON;

如此,数据库就"暂时"创建好了

三、初始化数据库

当完成上述内容后,数据库被创建好了,但是你几乎什么都干不了,这是因为数据库还没有初始化!

初始化数据库

运行脚本来初始化,直接在sqlplus中运行就行

bash 复制代码
@?/rdbms/admin/catalog.sql;
@?/rdbms/admin/catproc.sql;//这个可能会跑的比较久,等就完了

执行完上述操作后,可以使用cmd打开services.msc查看,会多出一个叫作OracleServerXXX的服务(这个服务就是监听你外部的图形化界面的链接的)

如果没有创建成功,则执行第四步,否则执行第五步

四、创建服务

创建windows服务(使用管理员启动cmd)

bash 复制代码
oradim -NEW -SID BOOKSALE -STARTMODE auto -PFILE "...\app\oracle\product\11.2.0\server\dbs\initBOOKSALE.ora"

然后打开services.msc查看,会多出一个叫作OracleServerXXX的服务

五、配置监听

配置listener.ora文件

路径:...\app\oracle\product\11.2.0\server\network\ADMIN\

该文件是服务器端的配置文件,用于定义 Oracle Listener 的设置。Oracle Listener 是 Oracle 网络服务的一部分,负责接受客户端的连接请求并将其转发到相应的数据库实例。在内部添加如下内容:

bash 复制代码
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      //...
      (ADDRESS = (PROTOCOL = TCP)(HOST = LAPTOP-xxxxx)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = LAPTOP-xxxxx)(PORT = 1531))
    )
  )

1531这个端口你也可以不设置,就采用默认的1521(因为Oracle XE一次只能开启一个数据库,所以开多个端口监听其实没啥用,但是在每次切换数据库的时候需要将对对应数据库的服务开启)

配置tnsnames.ora文件

路径:...\app\oracle\product\11.2.0\server\network\ADMIN\

该文件是客户端和服务器端都可以使用的配置文件,用于配置连接到数据库所需的连接字符串(TNS 地址)。该文件定义了数据库服务的名称以及如何通过网络连接到这些服务。在内部添加如下内容:

bash 复制代码
BOOKSALE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = LAPTOP-xxxxx)(PORT = 1531))//这个LAPTOP号和你的listener.ora的一样
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = BOOKSALE)
    )
  )

该文件一定要配置,不然你使用图形化界面就会发现找不到对应的数据库服务名,不过这里的端口也可以配置成1521(不会冲突的,因为不可能出现两个端口同时开启监听的状况)

配置完之后需要重启一下OracleXETNSListener服务


然后你就可以快乐的继续做折磨人的实验啦!!

Oracle XE

Oracle XE(Express Edition)是Oracle提供的一种轻量级、免费的数据库版本,适合小型应用、开发和学习用途。它提供了Oracle数据库的基本功能,但有一些限制:

  1. 内存限制 :Oracle XE最多只能使用2 GB的内存,即使系统内存更高,也无法突破这一限制。
  2. CPU限制 :只能使用最多两个CPU线程,即如果系统有多核,Oracle XE只能使用两个线程进行处理。
  3. 存储限制 :数据库存储空间被限制为12 GB。对于较小的数据库,这个限制通常足够,但不适用于大型数据库应用。
  4. 数据库实例 :Oracle XE每次只能打开一个数据库实例,即如果你有多个数据库,需要关闭当前的数据库才能切换到另一个。
  5. 不支持集群和高级特性:Oracle XE不支持Oracle的集群(RAC)、分布式事务、数据守护(Data Guard)等企业级功能,这些功能在企业版中才有。

简单来说,XE有点弱,他甚至不能同时开启两个数据库来监听外部访问!!!

尾声

对了,写完这篇文章的我刚把数据库的课给退掉(问就是教务处搞错了,莫名其妙多了好多课,上了半学期了才被告知能退掉!!!)

相关推荐
.Eyes23 分钟前
OceanBase 分区裁剪(Partition Pruning)原理解读
数据库·oceanbase
MrZhangBaby1 小时前
SQL-leetcode— 2356. 每位教师所教授的科目种类的数量
数据库
一水鉴天2 小时前
整体设计 之定稿 “凝聚式中心点”原型 --整除:智能合约和DBMS的在表层挂接 能/所 依据的深层套接 之2
数据库·人工智能·智能合约
翔云1234562 小时前
Python 中 SQLAlchemy 和 MySQLdb 的关系
数据库·python·mysql
孙霸天2 小时前
Ubuntu20系统上离线安装MongoDB
数据库·mongodb·ubuntu·备份还原
Java 码农2 小时前
nodejs mongodb基础
数据库·mongodb·node.js
TDengine (老段)3 小时前
TDengine IDMP 运维指南(4. 使用 Docker 部署)
运维·数据库·物联网·docker·时序数据库·tdengine·涛思数据
TDengine (老段)3 小时前
TDengine IDMP 最佳实践
大数据·数据库·物联网·ai·时序数据库·tdengine·涛思数据
彬彬醤3 小时前
Mac怎么连接VPS?可以参考这几种方法
大数据·运维·服务器·数据库·线性代数·macos·矩阵
废喵喵呜3 小时前
达梦数据库-实时主备集群部署详解(附图文)手工搭建一主一备数据守护集群DW
网络·数据库·tcp/ip