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

======清理现有数据库文件======

[oracle@localhost dbs]$ lltotal 240396

-rw-r-----. 1 oracle oinstall  7847936 Aug 28 11:43 cntrlwly.dbf

-rw-r-----. 1 oracle oinstall 81928192 Aug 28 11:40dbs1wly.dbf

-rw-r-----. 1 oracle oinstall 10493952 Aug 28 11:40 dbu1wly.dbf

...

-rw-r-----. 1 oracle oinstall     2560 Aug 28 04:17 spfileorcl.ora

-rw-r-----. 1 oracle oinstall     1536 Aug 28 10:25 spfilewly.ora

-rwxr-xr-x. 1 oracle oinstall      254 Aug 28 07:40 wly.env

[oracle@localhost dbs]$ rm -f*dbf

[oracle@localhost dbs]$ rm -fspfilewly.ora

[oracle@localhost dbs]$ lshc_orcl.dat initorcl.ora  lkWLY      peshm_orcl_0  spfileorcl.ora  hc_wly.dat  initwly.ora   old     peshm_ORCL_0  wly.env init.ora     lkORCL        orapworcl  peshm_wly_0

=======准备初始化参数文件=========

可以通过联机文档reference参考各参数的含义和用法。对于初学者,可以直接拷贝有经验的DBA创建的参数文件,也可以对安装ORACLE时默认创建的数据库中的PFILE进行修改。

[oracle@localhost dbs]$ env |grep ORAORACLE_SID=orcl

ORACLE_BASE=/oracle

ORACLE_HOME=/oracle/11g

# 当前使用的是orcl这个数据库

[oracle@localhost dbs]$ stringsspfileorcl.ora > initsmn.ora

#提取orcl的SPFILE到initsmn.ora中

[oracle@localhost dbs]$ viminitsmn.ora*.open_cursors=300

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.undo_tablespace='UNDOTBS1'

~

:%s/orcl/smn

# 在vim中使用 %s/原字符串/要替换的字符串将orcl 换成smn

# 这里有很多目录也被替换了,需要提前将他们创建出来,否则运行时会报错

:%s/*\.//g

# 去掉SPFILE中带上的*号

========根据参数文件逐一创建目录=========

[oracle@localhost dbs]$ catinitsmn.orasmn.__db_cache_size=96468992

smn.__java_pool_size=4194304

smn.__large_pool_size=4194304

smn.__oracle_base='/oracle'#ORACLE_BASE set from environment

smn.__pga_aggregate_target=146800640

smn.__sga_target=276824064

smn.__shared_io_pool_size=0

smn.__shared_pool_size=159383552

smn.__streams_pool_size=4194304

audit_file_dest='/oracle/admin/smn/adump'

audit_trail='db'

compatible='11.2.0.0.0'

control_files='/oracle/oradata/smn/control01.ctl','/oracle/flash_recovery_area/smn/control02.ctl'

db_block_size=8192

db_domain=''

db_name='smn'

db_recovery_file_dest='/oracle/flash_recovery_area'

db_recovery_file_dest_size=4039114752

diagnostic_dest='/oracle'

dispatchers='(PROTOCOL=TCP) (SERVICE=smnXDB)'

LOG_ARCHIVE_DEST_1='LOCATION=/oracle/oradata/smn/archive'

LOG_ARCHIVE_FORMAT ='%t_%s_%r.dbf'

memory_target=421527552

open_cursors=300

processes=150

remote_login_passwordfile='EXCLUSIVE'

undo_tablespace='UNDOTBS1'

[oracle@localhost dbs]$ cd/oracle/oradata

[oracle@localhost oradata]$ mkdir smn

[oracle@localhost oradata]$ lltotal 8

drwxr-x---. 2 oracle oinstall 4096 Aug 27 09:21 orcl

drwxr-xr-x. 2 oracle oinstall 4096 Aug 28 12:13 smn

[oracle@localhost dbs]$ mkdir/oracle/flash_recovery_area/smn/

[oracle@localhost ~]$ mkdir/oracle/oradata/smn/archive

#创建archive目录

[oracle@localhost oradata]$ mkdir/oracle/admin/smn/

[oracle@localhost ~]$ cd/oracle/admin/

[oracle@localhost admin]$ lltotal 8

drwxr-x---. 5 oracle oinstall 4096 Aug  5 18:24 orcl

drwxr-xr-x. 2 oracle oinstall 4096 Aug 28 12:33 smn

[oracle@localhost admin]$ cp -Rorcl/* smn

#将orcl目录下的子目录都复制到smn下

[oracle@localhost admin]$ cdsmn

[oracle@localhost smn]$ lltotal 20

drwxr-x---. 2 oracle oinstall 12288 Aug 28 12:41 adump

drwxr-x---. 2 oracle oinstall  4096 Aug 28 12:41 dpdump

drwxr-x---. 2 oracle oinstall  4096 Aug 28 12:41 pfile

[oracle@localhost smn]$ rm -fadump/*

[oracle@localhost smn]$ rm -fdpdump/*

[oracle@localhost smn]$ rm -fpfile/*

#删除上述三个子目录中原有的文件

======准备创建数据库用的脚本======

由于真正使用的创建数据库命令很长,如果直接在命令行中输入,很容易出错,因此建议先将这个命令编写成一个脚本,然后执行:

[oracle@localhost dbs]$ vimcrdb01.sqlspool dbcreate.log

-- 将以下执行的语句输出到dbcreate.log这个文件中

CREATE DATABASE "smn"

MAXDATAFILES500

MAXINSTANCES 8

MAXLOGFILES  32

CHARACTER SET"UTF8"

NATIONALCHARACTER SET AL16UTF16

ARCHIVELOG

SYSAUX

DATAFILE

'/oracle/oradata/smn/system01.dbf' SIZE 300M

EXTENTMANAGEMENT LOCAL

DEFAULTTEMPORARY TABLESPACE temp TEMPFILE '/oracle/oradata/smn/tempts01.dbf' SIZE 100M

EXTENTMANAGEMENT LOCAL

UNDOTABLESPACE "UNDOTBS1"

DATAFILE'/oracle/oradata/smn/undotbs01.dbf' SIZE 200M

LOGFILE

GROUP 1 (

'/oracle/oradata/smn/redo01a.rdo',

'/oracle/oradata/smn/redo01b.rdo'

) SIZE 100M,

GROUP 2 (

'/oracle/oradata/smn/redo02a.rdo',

'/oracle/oradata/smn/redo02b.rdo'

) SIZE 100M,

GROUP 3 (

'/oracle/oradata/smn/redo03a.rdo',

'/oracle/oradata/smn/redo03b.rdo'

) SIZE 100M

;

Spool off;

上述脚本需要和数据库的初始化参数文件中列出的数值一一对应,比如在PFILE中undo_tablespace='UNDOTBS1',那么,在CREATEDATABASE的脚本中,就需要指明UNDO TABLESPACE"UNDOTBS1"。这些细节需要十分小心,否则数据库创建会失败。

CREATE DATABASE语句的更多用法细节,可以查询联机文档中SQLReference相关章节的内容。

========创建环境变量========

[oracle@localhost dbs]$ vimsmn.envORACLE_BASE=/oracle

ORACLE_HOME=$ORACLE_BASE/11g

ORACLE_SID=smn

ORACLE_NLS33=$ORACLE_HOME/nls/data

PATH=$ORACLE_HOME/bin:$PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

export ORACLE_BASE ORACLE_HOME ORACLE_SID ORACLE_NLS33 PATHLD_LIBRARY_PATH

[oracle@localhost dbs]$ chmod+x smn.env

[oracle@localhost dbs]$ ../smn.env

[oracle@localhost dbs]$ env |grep ORACORACLE_NLS33=/oracle/11g/nls/data

ORACLE_SID=smn

ORACLE_BASE=/oracle

ORACLE_HOME=/oracle/11g

======执行创建数据库用的脚本======

[oracle@localhost dbs]$ sqlplus/nologSQL*Plus: Release 11.2.0.1.0 Production on Tue Sep 915:34:09 2014

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

SQL> conn / as sysdbaConnected to an idle instance.

SQL> create spfile frompfile;File created.

SQL> startup nomountORACLE instance started.

Total System Global Area 422670336 bytes

Fixed Size                 1336960 bytes

Variable Size            318769536 bytes

Database Buffers          96468992 bytes

Redo Buffers               6094848 bytes

SQL>@$ORACLE_HOME/dbs/crdb01.sql;-- 使用@加上路径和脚本的名字,就可以执行sql脚本了

Database created.

[oracle@localhost ~]$ cd/oracle/admin/smn

[oracle@localhost smn]$ lsadump  dpdump  pfile

[oracle@localhost smn]$ lsadumpsmn_ora_14093_1.aud smn_ora_14201_2.aud smn_ora_14430_1.aud smn_ora_14513_1.aud

smn_ora_14201_1.aud smn_ora_14303_1.aud smn_ora_14430_2.aud

[oracle@localhost ~]$ cd/oracle/oradata/smn

[oracle@localhost smn]$ lsarchive        redo01a.rdo  redo02a.rdo redo03a.rdo  system01.dbf  undotbs01.dbf

control01.ctl redo01b.rdo  redo02b.rdo  redo03b.rdo tempts01.dbf

# 已经创建了很多文件

=======创建额外的表空间=======

出于安全性和实用性考虑,用户可以创建额外的表空间,只需要执行CREATETABLESPACE 语句就可以了:

SQL> CREATE TABLESPACEmytbs

2 DATAFILE '/oracle/oradata/smn/mytbs01.dbf' SIZE 100M

3 EXTENT MANAGEMENT LOCAL;Tablespace created.

-- 创建了此表空间以后,可以将数据存放在该空间里

[oracle@localhost dbs]$ cd/oracle/oradata/smn

[oracle@localhost smn]$ lsarchive       mytbs01.dbf  redo01b.rdo  redo02b.rdo redo03b.rdo   tempts01.dbf

# 可以看到刚刚创建的表空间mytbs01.dbf

control01.ctl redo01a.rdo  redo02a.rdo  redo03a.rdo system01.dbf  undotbs01.dbf

=======创建数据字典=========

没有数据字典的数据库是无法使用的,因此这一步是必须的:

[oracle@localhost ~]$ cd/oracle/11g/rdbms/admin

[oracle@localhost admin]$ lsa0902000.sql                         dbmshtdb.sql           owmricb.plb        prvtmetd.plb

...

catalog.sql  catproc.sql

[oracle@localhost ~]$ cd/oracle/11g/sqlplus

[oracle@localhost admin]$ lsafiedt.buf glogin.sql  help  libsqlplus.def  plustrce.sql pupbld.sql

SQL> spool log1.1

--用来记录执行过程

SQL>@?/rdbms/admin/catalog.sql

--执行第一个脚本...

PL/SQL procedure successfully completed.

TIMESTAMP

--------------------------------------------------------------------------------

COMP_TIMESTAMP CATALOG   2014-09-09 17:01:14

SQL> spool log2.log

SQL>@?/rdbms/admin/catproc.sql...

PL/SQL procedure successfully completed.

SQL> spool log3.log

SQL> @?/sqlplus/admin/pupbld.sql;

SQL> -- End of pupbld.sql

创建过程中会出现一些ERROR,这通常是因为脚本中会先删除某个表再创建一个表,而第一次运行时表并不存在,所以那些ERROR是正常的。

[oracle@localhost dbs]$ vimlog2.logDROP TYPE kupc$_mastererror FORCE

*

ERROR at line 1:

ORA-04043: object KUPC$_MASTERERROR does not exist

======检验数据库是否可以正常工作=======

[oracle@localhost dbs]$ env |grep ORAORACLE_NLS33=/oracle/11g/nls/data

ORACLE_SID=smn

ORACLE_BASE=/oracle

ORACLE_HOME=/oracle/11g

[oracle@localhost dbs]$ sqlplus/nologSQL*Plus: Release 11.2.0.1.0 Production on Tue Sep 917:23:07 2014

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

SQL> conn / as sysdbaConnected to an idle instance.

SQL> startupORACLE instance started.

Total System Global Area 422670336 bytes

Fixed Size                 1336960 bytes

Variable Size            322963840 bytes

Database Buffers          92274688 bytes

Redo Buffers               6094848 bytes

Database mounted.

Database opened.

-- 正常启动数据库

SQL> select * from dual;D

-

X

-- 能够执行查询语句

SQL> desc dba_objects;Name                                     Null?    Type

------------------------------------------------- --------------------

OWNER                                             VARCHAR2(30)

OBJECT_NAME                                       VARCHAR2(128)

SUBOBJECT_NAME                                    VARCHAR2(30)

OBJECT_ID                                          NUMBER

DATA_OBJECT_ID                                     NUMBER

OBJECT_TYPE                                       VARCHAR2(19)

CREATED                                           DATE

LAST_DDL_TIME                                      DATE

TIMESTAMP                                         VARCHAR2(19)

STATUS                                            VARCHAR2(7)

TEMPORARY                                         VARCHAR2(1)

GENERATED                                          VARCHAR2(1)

SECONDARY                                         VARCHAR2(1)

NAMESPACE                                         NUMBER

EDITION_NAME                                      VARCHAR2(30)

-- 能够查询表结构

SQL> Create tabletestb1(id integer, name char(10));Table created.

--能够创建表

SQL> insert into testb1values(0, 'smn');1 row created.

-- 能够插入数据

SQL> select * from testb1;ID NAME

---------- ----------

0 smn

到这里,一个完整的并可以正常工作的数据库就创建好了

根据具体的需求,还可以安装一些额外的包。

由于创建数据库的过程非常繁琐,且有大量的初始化参数需要设置,为了简化操作,ORACLE提供了OMF特性,预设了很多参数帮助安装。

在创建数据库过程中可能会出现很多问题,需要自行查询联机文档和日志文件,来排查错误。

当数据库建立好以后,需要修改初始化密码,其中SYS用户的缺省密码是change_on_install,

SYSTEM用户的缺省密码是manager。

oracle数据库rdo,10_Oracle_Admin_手动创建一个比较实用的数据库相关推荐

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

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

  2. oracle创建数据库后干什么,手动创建Oracle数据库之前因后果

    对于许多数据库管理员来说,Oracle究竟是不是一个难以管理和驾驭的怪兽级数据库,会不会让他们管理生涯饱受折磨?当看到其命令行界面时,很多人会问这么一个问题. 如果你想通过一个应用程序操控使用这个数据 ...

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

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

  4. android手动创建数据表,Android开发—数据库应用—手动创建(SQLite)数据库--手动创建数据表(table)...

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:数据库应用-手 ...

  5. 手动添加linux用户,Linux入门教程:如何手动创建一个Linux用户

    想到要创建一个用户的时候,我们马上想到了useradd命令或者在图像下进行建立,但是这样并没有真正的了解linux用户的生成步骤,我们知道在linux下"一切皆文件",那么对于一个 ...

  6. git 创建webpack项目_使用webpack手动创建一个完整项目的全过程

    1.创建文件夹"webpack-study" 2.使用webstrom打开文件夹所在位置.在根目录上创建一个文件,文件命名为"src",在src文件下新建css ...

  7. 如何做一个mysql数据库_如何创建一个简单的mysql数据库

    这篇文章主要介绍了操作MySQL日志的一些方法,对日志的删除操作做了重点讲解,需要的朋友可以参考下. 一.创建数据库 注:已经安装好mysql. windows下运行cmd进入命令窗口,本人用的是wi ...

  8. oracle数据库监听问题,分享一个有意思的Oracle19c数据库监听异常

    概述 今天主要分享一个最近排查的监听问题,还是有点意思的,一起来看看吧~ 环境:oracle19c 单实例 用plsql连接提示,这里排除防火墙.账号密码问题,连接字符串按监听文件格式写 1. 测试监 ...

  9. 数据库表的基本操作——创建一个表,索引和查询

    1.定义基本表.删除和更改 (1)定义基本表 create table <表名>(<列名><数据类型>[列级完整性约束条件]     [,<列名>< ...

最新文章

  1. 剑灵总显示服务器断开连接,求解一分钟“与服务器断开连接”问题
  2. JS replace()方法-字符串首字母大写
  3. hdu 2881(简单dp)
  4. 通过日志恢复MS SQL数据案例
  5. hive表定义(3种方式)
  6. c++ array stl_C ++ STL中带有示例的array :: front()函数
  7. python支持向量机回归_机器学习实战-支持向量机原理、Python实现和可视化(分类)...
  8. TensorFlow (RNN)深度学习 双向LSTM(BiLSTM)+CRF 实现 sequence labeling 序列标注问题 源码下载...
  9. 比尔盖茨正式退出微软董事会:将继续担任技术顾问
  10. MVC---------ViewBag
  11. python 描述符参考文档_Python-描述符
  12. STM32 CubeMX 串口通信
  13. %date:~0,4%和 %time:~0,2%字符截取操作用法
  14. item_get - 根据ID取聚美优品商品详情
  15. pwnable.kr第二遍---mistake
  16. 为Linux安装CHM阅读器
  17. ssh框架的学习之strut2小测试(2)
  18. python多进程子进程不运行问题--未解决
  19. Word Embedding Papers | 经典再读之Word2Vec
  20. DFRobot离线语音识别模块真实测评

热门文章

  1. FPGA问题记录之:Warning (13024): Output pins are stuck at VCC or GND
  2. 记录与git 分支有关的七七八八
  3. 阿里技术实战:一些云上资源调度的经验谈
  4. 网络通信面试题详细解答
  5. 手机连接谷歌浏览器进行联调_如何让任何人将手机连接到您的Google Home
  6. Java 未来行情到底如何,来看看各界人士是怎么说的
  7. 创建您的第一个Substrate区块链
  8. UNABLE TO READ CONSUMER IDENTITY
  9. PostgreSQL导出表结构|表数据
  10. WifiNetworkSelector 走读