一、删除一个已有的数据库

 

/*=====DBCA删除法=====*/

 

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

[oracle@localhost dbs]$ ls

hc_DBUA0.dat init.ora  mickey_orcl.ora  orapworcl     peshm_orcl_0
hc_mcky.dat  lkMCKY    old              peshm_DBUA0_0  spfilemcky.ora
# 之前用DBCA创建了一个数据库mcky
hc_orcl.dat  lkORCL    orapwmcky        peshm_mcky_0   spfileorcl.ora

 

[oracle@localhost dbs]$ dbca

# 启动dbca来删除数据库

 

9_Oracle_Admin_删除数据库并使用CREATE DATABASE命令手动创建数据库_数据库删除

9_Oracle_Admin_删除数据库并使用CREATE DATABASE命令手动创建数据库_Oracle Admin _02

9_Oracle_Admin_删除数据库并使用CREATE DATABASE命令手动创建数据库_Oracle Admin _03


 

/*=====手动删除=====*/

 

这是通过DBCA删除数据库的方式,事实上,也可以使用相应的命令手动删除数据库。

由于使用DBCA创建的数据库时遵循OFA规范的,因此它的数据库文件通常会放在几个不同的地方,首先,在$ORACLE_HOME/dbs目录下带SID的文件都是该数据库相关的参数文件:

 

[oracle@localhost dbs]$ ls | grep mcky

hc_mcky.dat
orapwmcky
peshm_mcky_0
spfilemcky.ora

 

第二,在$ORACLE_BASE/oradata目录下有一个以SID命名的目录,也是该数据库相关的文件,也应该删除之

 

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

[oracle@localhost oradata]$ ll

total 8
drwxr-x---. 2 oracle oinstall 4096 Sep  9 10:35 mcky
# SID为mcky的数据库的data files
drwxr-x---. 2 oracle oinstall 4096 Aug  5 18:29 orcl

 

第三,在$ORACLE_BASE/admin目录下也有一个以SID命名的目录,也需要将其删除

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

[oracle@localhost admin]$ ll

total 8
drwxr-x---. 5 oracle oinstall 4096 Sep  9 10:33 mcky
drwxr-x---. 5 oracle oinstall 4096 Aug  5 18:24 orcl

 

======删除过程======

[oracle@localhost admin]$ rm -fR mcky

 

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

[oracle@localhost oradata]$ ls

mcky  orcl

[oracle@localhost oradata]$ rm -fR mcky

 

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

[oracle@localhost dbs]$ ls

hc_DBUA0.dat init.ora  mickey_orcl.ora  orapworcl     peshm_orcl_0
hc_mcky.dat  lkMCKY    old              peshm_DBUA0_0  spfilemcky.ora
hc_orcl.dat  lkORCL    orapwmcky        peshm_mcky_0   spfileorcl.ora

 

[oracle@localhost dbs]$ rm -f hc_mcky.dat lkMCKY orapwmcky spfilemcky.ora

[oracle@localhost dbs]$ rm -fR peshm_mcky_0

[oracle@localhost dbs]$ ls

hc_DBUA0.dat init.ora  mickey_orcl.ora  orapworcl     peshm_orcl_0
hc_orcl.dat  lkORCL    old              peshm_DBUA0_0  spfileorcl.ora

 

到这里,就手动删除了数据库。

 

二、手动创建数据库的概述

 

使用手动方式创建数据库,可以自行定制各种参数,但难度相应较大。

9_Oracle_Admin_删除数据库并使用CREATE DATABASE命令手动创建数据库_Oracle Admin _04

 

详细的创建数据库步骤可查阅联机文档:

9_Oracle_Admin_删除数据库并使用CREATE DATABASE命令手动创建数据库_Oracle Admin _05

 

9_Oracle_Admin_删除数据库并使用CREATE DATABASE命令手动创建数据库_数据库删除_06

手动创建数据库的步骤大致归纳如下:

 


9_Oracle_Admin_删除数据库并使用CREATE DATABASE命令手动创建数据库_Oracle Admin _07

9_Oracle_Admin_删除数据库并使用CREATE DATABASE命令手动创建数据库_数据库删除_08

 

1.指定SID

2.设置环境变量

3.确定DBA的认证方法(操作系统;基于口令的认证)

4.创建初始化参数文件

5.创建实例(仅针对Windows

6.连接Instance

7.创建服务器参数文件

8.启动实例

9.运行CREATEDATABASE的指令

10.创建额外的表空间

11.建立数据字典

----------后面都是可选项----------

12.安装可选项

13.备份数据库

14.允许数据库实例自启动

 

三、手动创建一个数据库

9_Oracle_Admin_删除数据库并使用CREATE DATABASE命令手动创建数据库_Oracle Admin _09

9_Oracle_Admin_删除数据库并使用CREATE DATABASE命令手动创建数据库_数据库删除_10

9_Oracle_Admin_删除数据库并使用CREATE DATABASE命令手动创建数据库_数据库删除_11


 

[oracle@localhost ~]$ id

uid=500(oracle) gid=500(oinstall)groups=500(oinstall),501(dba)
# 当前操作系统用户为oracle,属于dba组
context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

 

[oracle@localhost dbs]$ env | grep ORA

ORACLE_SID=orcl
ORACLE_BASE=/oracle
ORACLE_HOME=/oracle/11g
# 当前的环境变量


 

======创建一个环境配置文件=========

[oracle@localhost dbs]$ vim wly.env

 

ORACLE_BASE=/oracle
ORACLE_HOME=$ORACLE_BASE/11g
ORACLE_SID=wly
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 wly.env

 

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

# 执行环境变量,注意是两个点

 

[oracle@localhost dbs]$ env | grep ORA

ORACLE_NLS33=/oracle/11g/nls/data
ORACLE_SID=wly
ORACLE_BASE=/oracle
ORACLE_HOME=/oracle/11g
# 环境变量已经生效了


 

9_Oracle_Admin_删除数据库并使用CREATE DATABASE命令手动创建数据库_数据库删除_12

 

=======创建初始化文件======

 

[oracle@localhost dbs]$ vim initwly.ora

db_name='wly'
# 创建数据库需要大量的参数,这些参数的含义会在后文中介绍
# 这里只设置最简单的数据库名字,其他的参数都是以缺省值。


 

9_Oracle_Admin_删除数据库并使用CREATE DATABASE命令手动创建数据库_Oracle Admin _13

这一步针对的是Windows平台,和本机环境不符,故略过。

 

9_Oracle_Admin_删除数据库并使用CREATE DATABASE命令手动创建数据库_数据库删除_14

 

[oracle@localhost dbs]$ sqlplus /nolog

 

SQL*Plus: Release 11.2.0.1.0 Production on Tue Sep 912:27:29 2014
 
Copyright (c) 1982, 2009, Oracle.  All rights reserved.

 

SQL> conn / as sysdba

Connected to an idle instance.

 

9_Oracle_Admin_删除数据库并使用CREATE DATABASE命令手动创建数据库_数据库删除_15

 

=======根据PFILE创建SPFILE========

 

SQL> create spfile from pfile;

 
File created.

 

[oracle@localhost dbs]$ ls

hc_DBUA0.dat initwly.ora  mickey_orcl.ora  peshm_DBUA0_0   spfileorcl.ora
old  spfilewly.ora  hc_orcl.dat   lkORCL   peshm_orcl_0   wly.env
init.ora  orapworcl

9_Oracle_Admin_删除数据库并使用CREATE DATABASE命令手动创建数据库_Oracle Admin _16

由于PFILE除了数据库名,没有设置任何参数,因此需要创建SPFILE,否则无法启动数据库

 

9_Oracle_Admin_删除数据库并使用CREATE DATABASE命令手动创建数据库_Oracle Admin _17

NOMOUNT模式启动数据库,读取SPFILE

 

SQL> startup nomount

ORACLE instance started.
 
Total System Global Area 146472960 bytes
Fixed Size                 1335080 bytes
Variable Size             92274904 bytes
Database Buffers          50331648 bytes
Redo Buffers               2531328 bytes

 

[oracle@localhost dbs]$ ps -ef | grep oracle

oracle    1276  1275  012:35 pts/0    00:00:00 -bash
root      1516     1  0Sep08 ?        00:00:00 login --oracle    
oracle    9716  1276  012:42 pts/0    00:00:00 sqlplus      
oracle   11437     1  001:37 ?        00:00:04/oracle/11g/bin/tnslsnr LISTENER -inherit
oracle   13117     1  012:51 ?        00:00:00 ora_pmon_wly
...
oracle   13145     1  012:51 ?        00:00:00 ora_mmon_wly
oracle   13147     1  012:51 ?        00:00:00 ora_mmnl_wly
# wly数据库的进程已经启动了
oracle   13148  9716  012:51 ?        00:00:00 oraclewly(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle   13153  9716  012:52 pts/0    00:00:00 /bin/bash
oracle   1317213153  2 12:52 pts/0    00:00:00 ps -ef

 

[oracle@localhost dbs]$ ipcs

 # ipcs资源已经分配了
------ Shared Memory Segments --------
key        shmid      owner     perms      bytes      nattch    status     
0x00000000 851968    oracle     600        393216     2         dest        
 
------ Semaphore Arrays --------
key        semid      owner     perms      nsems    
0x1ce603a0 3604482   oracle     660        104      
 
------ Message Queues --------
key        msqid      owner     perms      used-bytes   messages

 

9_Oracle_Admin_删除数据库并使用CREATE DATABASE命令手动创建数据库_数据库删除_18

 

SQL> create database wly;

-- 这一步需要一定的时间,来创建一个几十,甚至上百兆的数据库
Database created.

 

至此,数据库就创建好了,可以查看到这个新建的数据库:

[oracle@localhost dbs]$ ll

total 240416
-rw-r-----. 1 oracle oinstall  7847936 Sep 9 12:57 cntrlwly.dbf
-rw-r-----. 1 oracle oinstall 81928192 Sep  9 12:56 dbs1wly.dbf
#  dbs1wly.dbf即为新创建的数据库相关文件
-rw-r-----. 1 oracle oinstall 10493952 Sep  9 12:56 dbu1wly.dbf
-rw-r-----. 1 oracle oinstall 40968192 Sep  9 12:56 dbx1wly.dbf
-rw-rw----. 1 oracle oinstall     1544 Sep 9 12:46 hc_DBUA0.dat
-rw-rw----. 1 oracle oinstall     1544 Sep 9 08:51 hc_orcl.dat
-rw-rw----. 1 oracle oinstall     1544 Sep 9 12:56 hc_wly.dat
-rw-r--r--. 1 oracle oinstall     2851 May 15  2009 init.ora
-rw-r--r--. 1 oracle oinstall       14 Sep 9 12:40 initwly.ora
-rw-r-----. 1 oracle oinstall       24 Aug 5 18:28 lkORCL
-rw-r-----. 1 oracle oinstall       24 Sep 9 12:56 lkWLY
-rw-r-----. 1 oracle oinstall 52429312 Sep  9 12:56 log1wly.dbf
-rw-r-----. 1 oracle oinstall 52429312 Sep  9 12:56 log2wly.dbf
-rw-r--r--. 1 oracle oinstall      723 Sep 9 07:37 mickey_orcl.ora
drwxr-xr-x. 2 oracle oinstall     4096 Sep 9 03:48 old
-rw-r-----. 1 oracle oinstall     1536 Sep 9 06:25 orapworcl
drwx------. 2 oracle oinstall     4096 Sep 9 10:19 peshm_DBUA0_0
drwx------. 2 oracle oinstall     4096 Aug 5 18:25 peshm_orcl_0
drwx------. 2 oracle oinstall     4096 Sep 9 12:51 peshm_wly_0
-rw-r-----. 1 oracle oinstall     2560 Sep 9 07:46 spfileorcl.ora
-rw-r-----. 1 oracle oinstall     1536 Sep 9 12:51 spfilewly.ora
-rwxr-xr-x. 1 oracle oinstall      255 Sep 9 12:39 wly.env

 

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

[oracle@localhost oradata]$ ll

total 4
drwxr-x---. 2 oracle oinstall 4096 Aug  5 18:29 orcl
# 这里只有一个orcl目录,而没有创建wly目录,是因为初始化参数太简陋了,并没有遵循OFA规范。


 

9_Oracle_Admin_删除数据库并使用CREATE DATABASE命令手动创建数据库_数据库删除_19

 

手动创建数据库的过程到这里就结束了,尽管这个数据库由于参数过于简单而无法应用于实际生产环境中,但更复杂更完善的数据库也就是在上述过程的基础上增加参数和命令选项完成的,这需要对数据库有更为深刻的认识,后文中将陆续介绍各种参数的设置方法。