Oracle XE命令行创建数据库的一波三折(已解决)
这是一个目录
- 前言
- 创建预备
- 创建
- 一、创建配置文件+指定控制文件路径
- 二、使用命令行创建数据库
- 三、初始化数据库
- 四、创建服务
- 五、配置监听
- Oracle XE
- 尾声
前言
这篇文章是我在误装了oracle xe(精简版数据库)后有感而写,对于xe的具体区别将在文末进行说明。(ps:本文的操作方法并未在oracle11标准版数据库上尝试过(因为某盘下载实在是太慢啦!!!),仅仅针对XE版本)
数据库实验课上,老师要求我们下载oracle database,于是我“壮志满怀”的去下载了
可是,一找一个不吱声!!官网全是23AI版本,下载后安装还有一堆问题,一顿找没找到官网的11g(如果找别人博客的链接,又几乎全是某网盘,慢慢慢!!烦死啦!!)
幸运的是,好兄弟找到并将网址发给我辣!!可是大大大大问题就此开始了…(此时我还在得意的笑)
网址:oracle11g
于是我正式开始实验,发现书上的教程是使用DBCA创建案例数据库(创建一个新的,安装好的有一个默认的数据库,我的是XE)。
我就在那一顿找啊…最后才了解到我下载的版本是精简版(对,难怪那么小,damn!!)。
不就是安装一个数据库,我mysql都精通了,这不是小case,洒洒水就给他拿下!
…
…
啊?怎么和我设想的不一样??!!
…(省略一万次的尝试)
…经过一次又一次的失败,终于创成功辣!!!!
创建预备
这里会简单的介绍一下大致的内容:
- oracle中每个数据库都会对应一个控制文件,这个文件是数据库的核心
- 每个数据库都需要至少两个重做日志文件
- 每个数据库需要几个关键的角色(必不可少,如:sys…)
- 如果需要图形化界面链接数据库,则需要配置windows服务,配置监听服务
创建
一、创建配置文件+指定控制文件路径
创建数据库文件夹
路径:...\app\oracle\oradata\
在该目录下创建一个文件夹,名字为你要创建的数据库名字,
创建配置文件
路径:...\app\oracle\product\11.2.0\server\database
\
该目录统一存放配置文件(用于指定一些基础配置,如:数据库名称、控制文件路径)
创建配置文件intiXXX.ora
,其文件内容如下:
DB_NAME= BOOKSALE
MEMORY_TARGET =1G
PROCESSES = 200
CONTROL_FILES =(...\app\oracle\oradata\BOOKSALE\CONTROL.DBF) //指定控制文件路径
可以直接cv initXE.ora文件(该目录下应该存在一个安装时默认数据库的配置文件),然后改名成为你要创建的数据库名字(我的是initBOOKSALE.ora)
二、使用命令行创建数据库
先使用sqlplus打开数据库
关闭当前数据库
shutdown;
切换实例到NOMOUNT状态,用新配置文件重新启动实例
STARTUP NOMOUNT PFILE='...app\oracle\product\11.2.0\server\database\initBOOKSALE.ora';
创建数据库
需要在.../app/oracle/fast_recovery_area
路径下创建数据库文件夹,该文件夹用来存放重做日志文件
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中运行就行
@?/rdbms/admin/catalog.sql;
@?/rdbms/admin/catproc.sql;//这个可能会跑的比较久,等就完了
执行完上述操作后,可以使用cmd打开services.msc查看,会多出一个叫作OracleServerXXX的服务(这个服务就是监听你外部的图形化界面的链接的)
如果没有创建成功,则执行第四步,否则执行第五步
四、创建服务
创建windows服务(使用管理员启动cmd)
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 网络服务的一部分,负责接受客户端的连接请求并将其转发到相应的数据库实例。在内部添加如下内容:
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 地址)。该文件定义了数据库服务的名称以及如何通过网络连接到这些服务。在内部添加如下内容:
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数据库的基本功能,但有一些限制:
- 内存限制:Oracle XE最多只能使用2 GB的内存,即使系统内存更高,也无法突破这一限制。
- CPU限制:只能使用最多两个CPU线程,即如果系统有多核,Oracle XE只能使用两个线程进行处理。
- 存储限制:数据库存储空间被限制为12 GB。对于较小的数据库,这个限制通常足够,但不适用于大型数据库应用。
- 数据库实例:Oracle XE每次只能打开一个数据库实例,即如果你有多个数据库,需要关闭当前的数据库才能切换到另一个。
- 不支持集群和高级特性:Oracle XE不支持Oracle的集群(RAC)、分布式事务、数据守护(Data Guard)等企业级功能,这些功能在企业版中才有。
简单来说,XE有点弱,他甚至不能同时开启两个数据库来监听外部访问!!!
尾声
对了,写完这篇文章的我刚把数据库的课给退掉(问就是教务处搞错了,莫名其妙多了好多课,上了半学期了才被告知能退掉!!!)