一、删除一个已有的数据库
/*=====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来删除数据库
/*=====手动删除=====*/
这是通过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
到这里,就手动删除了数据库。
二、手动创建数据库的概述
使用手动方式创建数据库,可以自行定制各种参数,但难度相应较大。
详细的创建数据库步骤可查阅联机文档:
手动创建数据库的步骤大致归纳如下:
1.指定SID
2.设置环境变量
3.确定DBA的认证方法(操作系统;基于口令的认证)
4.创建初始化参数文件
5.创建实例(仅针对Windows)
6.连接Instance
7.创建服务器参数文件
8.启动实例
9.运行CREATEDATABASE的指令
10.创建额外的表空间
11.建立数据字典
----------后面都是可选项----------
12.安装可选项
13.备份数据库
14.允许数据库实例自启动
三、手动创建一个数据库
[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 # 环境变量已经生效了
=======创建初始化文件======
[oracle@localhost dbs]$ vim initwly.ora
db_name='wly' # 创建数据库需要大量的参数,这些参数的含义会在后文中介绍 # 这里只设置最简单的数据库名字,其他的参数都是以缺省值。
这一步针对的是Windows平台,和本机环境不符,故略过。
[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.
=======根据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
由于PFILE除了数据库名,没有设置任何参数,因此需要创建SPFILE,否则无法启动数据库
以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
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规范。
手动创建数据库的过程到这里就结束了,尽管这个数据库由于参数过于简单而无法应用于实际生产环境中,但更复杂更完善的数据库也就是在上述过程的基础上增加参数和命令选项完成的,这需要对数据库有更为深刻的认识,后文中将陆续介绍各种参数的设置方法。