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

尾声

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

相关推荐
桃根仙6 分钟前
mongoDB设置访问用户名密码
数据库·mongodb
骑士99911123 分钟前
mongoDB的安装及使用
数据库·mongodb
灰哥数据智能27 分钟前
DB-GPT系列(六):数据Agent开发part1-光速创建AWEL Agent应用
数据库·oracle
2402_857589362 小时前
Spring Boot编程训练系统:实战开发技巧
数据库·spring boot·性能优化
液态不合群2 小时前
Spring AI 再更新:如何借助全局参数实现智能数据库操作与个性化待办管理
数据库·人工智能·spring
2401_857636392 小时前
电商系统设计与实现:Spring Boot框架
数据库·spring boot·后端
灰哥数据智能2 小时前
DB-GPT系列(五):DB-GPT六大基础应用场景part2
数据库·人工智能·python·sql·gpt·abi
爱搞技术的猫猫2 小时前
实现API接口的自动化
大数据·运维·数据库·性能优化·自动化·产品经理·1024程序员节
2401_833755813 小时前
PostgreSQL 查看重复索引
数据库·postgresql
小牛itbull4 小时前
ReactPress 安装指南:从 MySQL 安装到项目启动
前端·javascript·数据库·mysql·react.js·开源·reactpress