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有点弱,他甚至不能同时开启两个数据库来监听外部访问!!!

尾声

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

相关推荐
a努力。6 小时前
国家电网Java面试被问:混沌工程在分布式系统中的应用
java·开发语言·数据库·git·mysql·面试·职场和发展
li_wen016 小时前
文件系统(八):Linux JFFS2文件系统工作原理、优势与局限
大数据·linux·数据库·文件系统·jffs2
wWYy.7 小时前
详解redis(16):缓存击穿
数据库·redis·缓存
JosieBook7 小时前
【数据库】Oracle迁移至KingbaseES:挑战、策略与最佳实践
数据库·oracle
一休哥助手8 小时前
时序数据库选型指南:从核心考量到四大主流数据库深度解析
数据库·时序数据库
Mr__Miss9 小时前
说下Mysql的MVCC机制
数据库·mysql
老徐电商数据笔记9 小时前
BI工具与数据分析平台:数据价值呈现的最后一公里
数据库·数据挖掘·数据分析·bi·bi选型思考
码农水水10 小时前
米哈游Java面试被问:机器学习模型的在线服务和A/B测试
java·开发语言·数据库·spring boot·后端·机器学习·word
酉鬼女又兒11 小时前
SQL24 统计每个用户的平均刷题数
数据库·sql·mysql
雷工笔记11 小时前
数据库|SQLServer2025安装教程
数据库·sqlserver