对于许多数据库管理员来说,Oracle究竟是不是一个难以管理和驾驭的怪兽级数据库,会不会让他们管理生涯饱受折磨?当看到其命令行界面时,很多人会问这么一个问题。

如果你想通过一个应用程序操控使用这个数据库,那么你应当是一名终端用户;因此对这类人而言,界面越透明当然越好,而命令行界面显然不够理想。而如果你想成为精通数据库的技术员,成为排除数据库故障的检修员,成为当大家碰到数据库难题时会向他求助的万能先生的话,你就不能嫌脏怕累,而要不辞劳苦地深入了解数据库的结构和机理,这样你才能知道数据库到底怎么运作,发生了什么问题。命令行界面正是你需要适应并了解的东西。

为什么要手动创建数据库?

创建数据库也应该是你要深入了解的内容之一。当然,Oracle本身提供有图形用户界面工具可以帮助用户出色地完成这项任务。但是如果失败了呢?如果你在创建的过程中出现了警告或错误信息呢?这时候你应当怎么办?你是否想知道在这些信息背后到底是哪里出了问题?你是否想要更进一步了解Oracle在数据库创建的过程中到底是怎么变的戏法吗?来手动创建一次数据库,相信就能为你阐明一切。

当你手动创建一个数据库时,你就要在sqlplus提示符下输入指令。通常情况下你需要将这些指令添加到一个sql脚本,随后从sqlplus调用这个脚本。假设所有的路径和选项都正确,设定的大小可用,而且在数据库创建过程中没有达到容量的极限的话,那么整个创建过程应当顺利运行。而且,如果你开发了一个想要部署到Oracle数据库商的应用程序,你的应用程序也可以提供一份数据库创建脚本,按照你设定的方式来运行。

什么时候使用手动方法创建数据库?

显然,当你第一次学习Oracle时,你应当使用手动方法来创建数据库。一旦你完全理解其中的奥妙,你就可以考虑使用图形用户界面来简化你的工作。不过,如果你想控制文件的命名规范,建议你还是坚持使用手动方法。此外,当有新版本的Oracle数据库发布时,一定要通过手动方法检查一下有什么新选项添加到了创建数据库的语法当中。那如果你要创建一大堆特征相似的数据库呢?这种时候,手动创建的方法更具有吸引力,因为这样能够减少我们的工作量。

如何手动创建数据库

首先我们把我们要创建的数据命名为DBJ。接着,至少你得给DBJ设置ORACLE_SID环境变量,编辑initDBJ.ora,添加如下脚本:

db_name=DBJ

然后启动sqlplus,发布如下指令:

SQL> startup nomount;

SQL> create database;

Oracle会为所需要的所有参数设置一些默认值,例如应当将数据文件、控制文件放在哪里,分配多少内存等,然后启动实例,不挂载任何文件。创建数据库指令(create database)将要求Oracle创建一个数据库,这个数据库带有最小系统和sysaux表空间等默认设置。

不过现实中,我们可能想要指定很多其他的选项。下面我们来看看现实中创建Oracle数据库脚本更真实的例子:

connect / as sysdba;

startup nomount;

CREATE DATABASE "dbj"

DATAFILE

'/u01/oradata/sysdbj01.dbf' size 500M

SYSAUX DATAFILE

'/u01/oradata/auxdbj01.dbf' size 500M

UNDO TABLESPACE dbjundo DATAFILE

'/u01/oradata/unddbj01.dbf' size 250M

LOGFILE

'/u02/oradata/rdodbj01.dbf' size 10M,

'/u02/oradata/rdodbj02.dbf' size 10M

CHARACTER SET "WE8ISO8859P1"

NATIONAL CHARACTER SET "UTF8"

EXTENT MANAGEMENT LOCAL

DEFAULT TEMPORARY TABLESPACE mytemp TEMPFILE

'/u01/oradata/tmpdbj01.dbf' SIZE 500M

NOARCHIVELOG

MAXDATAFILES 1000

MAXLOGFILES 10;

# create the rest of the data dictionary

@?/rdbms/admin/catalog.sql

@?/rdbms/admin/catproc.sql

详解创建的各阶段

当我们发布“startup nomount”的指令时,我们是让Oracle以一种不同于平常使用的方式启动。不同在哪里呢?我们让Oracle。其实,我们让Oracle只启动实例,而不安装数据库,也不打开数据库,并启动所有的后台进程,并为系统全局区域(SGA)分配内存。为什么不启动数据库?因为在现阶段我们还没有一个可以挂载的数据库,也就是以一个有效形式存在的数据文件集合。

当我们发出“create database”指令的时候,Oracle将创建系统表空间、sysaux表空间、undo表空间和临时表空间,并为该数据库设置字符集。也就是设置数据文件的头信息,表明我们想要创建本地管理表空间,还有就是设置归档或非归档模式。一旦这些都完成了,Oracle就会运行一个名为sql.bsq的神奇文件。建议大家看看这个文件的内容,会很有趣且很有用。这是Oracle的自举代码(bootstrapping code),可以供我们查看并了解其中内容。我们可以在$ORACLE_HOME/rdbms/adminsql.bsq目录中找到这个sql.bsq文件。注意,这个文件会随着版本的不同而有所改变,所以定期查看一下其中的变化很能说明一些问题。

这个运行之后,就是创建Oracle数据字典了。catalog.sql和catproc.sql只是在真正的数据字典上创建有用的视图以及每个Oracle数据库都需要有的各种存储过程、包和函数。

结论

手动创建数据库并不是一件只和命令行打交道的乏味单调的苦差事,它可以很有趣也可以很有意义。深入了解Oracle数据库创建的过程有助于你理解数据库的内部运作原理,让我们可以了解构成每个Oracle数据库方方面面的元素。在这个过程中,我们可以了解更多关于init.ora、Oracle所倚赖的

oracle创建数据库后干什么,手动创建Oracle数据库之前因后果相关推荐

  1. oracle数据库rdo,10_Oracle_Admin_手动创建一个比较实用的数据库

    上一节中手动创建数据库由于参数太过简单,且没有安装数据字典,是无法实际应用的,本章节是对上节内容的深入,增加了很多细节和参数配置,按照以下步骤,可以成功安装一个能实际使用的数据库. ======清理现 ...

  2. oracle创建导入数据库,unix下手动创建oracle以及imp数据导入

    一.手动创建数据库步骤以及数据导入: 1.指定新的SID,我们这里创建一个以ecdsdb为名的SID. [oracle@localhost ~]$ export ORACLE_SID=ecdsdb 2 ...

  3. linux 创建一个数据库,Linux下手动创建一个数据库

    这是自己手动创建一个Oracle数据库的过程. 在Linux下虽然通过dbca也可以创建数据库,但是在某些环境下却是不能使用图形环境,如数据库服务器在机房,并且开放的端口有限制,或者需要批量创建数据库 ...

  4. linux卸载数据库后还在吗,oracle停止数据库后linux完全卸载oracle的详细步骤

    1.使用SQL*PLUS停止数据库 代码如下: $ sqlplus /nolog SQL> connect / as sysdba SQL> shutdown [immediate] SQ ...

  5. 手动启动oracle服务教程,windows下手动启动oracle服务

    出于学习的目的大家可能会将oracle安装在windows系统,但安装后,就会发现系统启动变慢了许多,因为oracle是很吃内存的,而我们只想使用数据库是才启动它,那么可以创建一个简单的脚本任务来启动 ...

  6. oracle form执行后左上角没出现oracle标记,oracle form学习笔记

    新增form步骤 打开模板TEMPLATE,将其改成自己所要的名称,删除Data Blacks中的BLOCKNAME,DETAILBLOCK,删除Canvases中的BLOCKNAME,删除Windo ...

  7. oracle form执行后左上角没出现oracle标记,Oracle FORM 开发技巧(1)

    1.客户化FORM中选择库存组织 1.1. 将INVSTAND.fmb中的对象组:INV_PARAMS复制到客户化Form中 1.2. 在Form级别触发器PER-FORM触发器中添加:FND_ORG ...

  8. python读取数据库后生成网页_python查询数据库并将结果按照格式生成HTML页面展示...

    ") print(" 座席呼入呼出记录查询系统 ") print(" ") print(" 一.座席呼入呼出查询结果如下 ") p ...

  9. 如何在linux上创建数据库,在LINUX平台上手动创建数据库(oracle 10g)

    在LINUX平台上手动创建数据库(oracle 10g) 安装完oracle软件后,不使用dbca创建数据库,而手动创建数据库,主要目的是了解数据库创建的过程中主要进行了那些操作. 1.首先设置要创建 ...

最新文章

  1. 从难免的线上bug说起代码的思考
  2. dataframe 按条件删行_根据列值删除Pandas中的DataFrame行
  3. 802.1x 客户端获取ip过程 很详细
  4. php扩展包是什么意思,php – 扩展或包括 – 什么是更好的Twig?
  5. layer iframe层的使用,传参
  6. ActiveMQ点对点的发送和接收
  7. 7-Zip将一个大文件压缩成多个小的压缩包
  8. php response响应,9. 响应 (Response)
  9. 章二测试 1613999388
  10. 掘金外链即将失效?论如何用脚本一次性下载/替换失效的外链图片
  11. 数组的连续最大子段合
  12. 第二阶段个人总结10
  13. [导入]你的网站被订阅了吗(浅谈RSS2.0)续
  14. 良心安利陶瓷材质贴图素材网站
  15. 解决:Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++ Build Tools“
  16. 5G网络架构 — 接入网/传输网/核心网
  17. pentaho资源库迁移-MySQL
  18. wordpress企业网站模板
  19. 图片怎么转换成pdf格式?手把手教你图片转PDF怎么转
  20. 4本建模必读的书籍,每天学一点,获益匪浅

热门文章

  1. R语言ggplot2可视化绘制线图(line plot)、使用gghighlight包突出高亮满足条件的线图、并保留其它线图的色彩(而不是灰色)自定义非高亮线图的透明度
  2. R语言可视化韦恩图实战:VENN DIAGRAM
  3. cufflinks基于dataframe数据绘制股票数据:散点图(scatter plot)、价差图
  4. R语言回归模型协方差分析(Analysis of Covariance)
  5. 拒绝+启示+TED+被拒的100天+What I learned from 100 days of rejection
  6. Maxout激活函数
  7. pandas dataframe中的列进行重新排序、倒排、正排、自定义排序详解及实践
  8. 怎么点亮段码屏_手机被人偷了,支付宝里的钱被转走了,遇到这种情况该怎么办?...
  9. 观《超能陆战队》未来的“机器人设计师”的必备装备
  10. 什么是RNA-Seq (RNA Sequencing)