Oracle 11g R2创建数据库之手工建库方式
在之前的博文当中梳理了关于DBCA静默方式创建数据库的过程,本文就手工通过SQL*PLUS客户端采用CREATE DATABASE
语句创建数据库。这种建库方式就是完全使用手工SQL语句创建数据库,通常而言都会推荐DBCA图形界面方式创建,因为更为直观,但并非所有场景都有图形界面。DBCA也可以使用静默方式进行创建数据库,详细可参考我另一篇博文:Oracle 11g R2创建数据库之DBCA静默方式
手工方式是采用执行CREATE DATABASE
SQL语句完成的。相比较DBCA工具建库而言,手工方式可以将建库语句编写成脚本语句,可以通过执行脚本来完成建库。在完成手工方式创建数据库之前还需进行额外的操作以保证数据库可用性:
- 创建数据字典以及基于数据字典视图;
- 创建标准的PL/SQL包。
这些操作也都可以写进脚本当中执行,简化了操作步骤。
关于手工方式创建数据库详细步骤可以参考官方文档:Creating a Database with the CREATE DATABASE Statement
环境准备
- 操作系统(OS):CentOS Linux release 7.5.1804 (Core)
- 数据库版本(Oracle Database):Oracle Database 11g R2(11.2.0.4.0)
其中监听也已经通过静默方式配置启动成功。
总体步骤
- 指定数据库实例的SID
- 配置系统环境变量
- 指定数据库管理员认证方式
- 创建初始化参数文件(pfile)
- 连接数据库实例
- 创建服务器参数文件(spfile)
- 启动数据库实例
- 执行CREATE DATABASE建库语句
- 创建额外的表空间(如索引表空间)
- 执行脚本创建数据字典视图
步骤解析
指定数据库实例(SID)
SID是Oracle数据库在同一服务器上的唯一标识。通过环境变量ORACLE_SID
指定,在Linux系统下ORACLE_SID
是区分大小写的,长度最大为8个字符,有两种方式配置:
- 环境变量配置文件中指定,环境变量文件一般是oracle用户home目录下的
.bash_profile
;
$ grep ORACLE_SID /home/oracle/.bash_profile
export ORACLE_SID=dbabd #实例SID
- 会话级别直接使用命令
export
指定。
$ export ORACLE_SID=dbabd
配置系统环境变量
主要是配置ORACLE_HOME
环境变量值,并且将oracle命令路径 $ORACLE_HOME/bin加入系统PATH变量中方便以使用,可以参考SID配置写入环境变量文件当中。
$ grep ORACLE_HOME /home/oracle/.bash_profile
export ORACLE_HOME=/data/app/oracle/product/11.2.0/db_1 #Oracle Home目录
export PATH=$PATH:$ORACLE_HOME/bin #命令加入系统环境变量中
指定管理员认证方式
根据官方文档的描述,数据库管理员的认证方式有如下方式:
- 通过密码文件认证;
- 通过操作系统级别认证。
如果是通过操作系统认证,则用户要是属于dba组的成员,如果是密码文件认证必须创建密码文件:
$ orapwd file=$ORACLE_HOME/dbs/orapwdbabd password=oracle entries=10
创建初始化参数文件
这里的初始化参数文件指的pfile,pfile可以能过文本编辑器进行编辑与修改,待实例启动成功之后根据pfile创建服务器参数文件(spfile)。spfile使有的数据库参数能够在实例运行中动态修改并且生效,大大增加了数据库参数的可维护性。pfile和spfile文件默认存储的路径为 $ORACLE_HOME/dbs。pfile的命名格式为initSID.ora,本文创建的pfile文件名为initdbabd.ora,根据官方文档的要求,初始化参数文件最少都要包含如下参数DB_NAME
、CONTROL_FILES
和MEMORY_TARGET
,initdbabd.ora内容如下:
DB_NAME=dbabd
CONTROL_FILES=(/data/app/oracle/data/dbabd/control01.ctl,/data/app/oracle/data/dbabd/control02.ctl)
MEMORY_TARGET=300M
也可以通过模板参数文件init.ora进行修改,init.ora内容如下:
$ cat init.ora | grep -v ^$ | grep -v ^#
db_name='ORCL'
memory_target=1G
processes = 150
audit_file_dest='<ORACLE_BASE>/admin/orcl/adump'
audit_trail ='db'
db_block_size=8192
db_domain=''
db_recovery_file_dest='<ORACLE_BASE>/flash_recovery_area'
db_recovery_file_dest_size=2G
diagnostic_dest='<ORACLE_BASE>'
dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)'
open_cursors=300
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
control_files = (ora_control1, ora_control2)
compatible ='11.2.0'
连接数据库实例
在连接之前确保当前环境变量的配置,主要检查的是数据库实例SID变量ORACLE_SID的值:
$ echo $ORACLE_SID
dbabd
$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Fri Jan 11 15:16:12 2019
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL>
创建服务器参数文件
通过create spfile from pfile
语句从初始化参数文件创建服务器参数文件,路径也是保存在 $ORACLE_HOME/dba目录下:
$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Fri Jan 11 15:20:04 2019
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL> create spfile from pfile;
File created.
$ pwd
/data/app/oracle/product/11.2.0/db_1/dbs
$ ls *.ora
initdbabd.ora init.ora spfiledbabd.ora
启动数据库实例
启动数据库实例,因为当前只有参数文件,所以只能将实例启动到NOMOUNT状态:
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 313159680 bytes
Fixed Size 2252824 bytes
Variable Size 222302184 bytes
Database Buffers 83886080 bytes
Redo Buffers 4718592 bytes
SQL> select status from v$instance;
STATUS
------------------------------------
STARTED
即使直接执行命令startup
也是只能启动到NOMOUNT状态,并会报ORA-00205
错误,因为当前只有参数文件。
SQL> startup;
ORACLE instance started.
Total System Global Area 313159680 bytes
Fixed Size 2252824 bytes
Variable Size 222302184 bytes
Database Buffers 83886080 bytes
Redo Buffers 4718592 bytes
ORA-00205: error in identifying control file, check alert log for more info
执行建库语句
最关键的一个步骤,就是执行CREATE DATABASE
建库语句。开始创建数据库之前检查确保:
- 数据文件目录存在
- 日志文件目录存在
- 控制文件目录存在
本文以上三类文件的路径统一为 /data/app/oracle/data/dbabd。
官方文档上有CREATE DATABASE
语句的模板:Issue the CREATE DATABASE Statement,也可以根据需求自定义CREAET DATABASE
语句,以下是通过模板进行修改的语句:
CREATE DATABASE dbabd -- 数据库名,DB_NAME
USER SYS IDENTIFIED BY oracle -- sys用户密码
USER SYSTEM IDENTIFIED BY oracle -- system用户密码
LOGFILE GROUP 1 ('/data/app/oracle/data/dbabd/redo01.log') SIZE 100M BLOCKSIZE 512, -- 在线日志
GROUP 2 ('/data/app/oracle/data/dbabd/redo02.log') SIZE 100M BLOCKSIZE 512,
GROUP 3 ('/data/app/oracle/data/dbabd/redo03.log') SIZE 100M BLOCKSIZE 512
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
MAXDATAFILES 100
CHARACTER SET AL32UTF8 -- 数据库字符集
NATIONAL CHARACTER SET AL16UTF16
EXTENT MANAGEMENT LOCAL
DATAFILE '/data/app/oracle/data/dbabd/system01.dbf' SIZE 325M REUSE -- 各个表空间数据文件
SYSAUX DATAFILE '/data/app/oracle/data/dbabd/sysaux01.dbf' SIZE 325M REUSE
DEFAULT TABLESPACE users
DATAFILE '/data/app/oracle/data/dbabd/users01.dbf'
SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE temp
TEMPFILE '/data/app/oracle/data/dbabd/temp01.dbf'
SIZE 20M REUSE
UNDO TABLESPACE undotbs
DATAFILE '/data/app/oracle/data/dbabd/undotbs01.dbf'
SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
以上注释只是为了更好解析语句的内容,实际语句当中并不存在注释内容。
执行以上CREATE DATABASE
语句:
SQL> CREATE DATABASE dbabd
2 USER SYS IDENTIFIED BY oracle
3 USER SYSTEM IDENTIFIED BY oracle
4 LOGFILE GROUP 1 ('/data/app/oracle/data/dbabd/redo01.log') SIZE 100M BLOCKSIZE 512,
5 GROUP 2 ('/data/app/oracle/data/dbabd/redo02.log') SIZE 100M BLOCKSIZE 512,
6 GROUP 3 ('/data/app/oracle/data/dbabd/redo03.log') SIZE 100M BLOCKSIZE 512
7 MAXLOGFILES 5
8 MAXLOGMEMBERS 5
9 MAXLOGHISTORY 1
10 MAXDATAFILES 100
11 CHARACTER SET AL32UTF8
12 NATIONAL CHARACTER SET AL16UTF16
13 EXTENT MANAGEMENT LOCAL
14 DATAFILE '/data/app/oracle/data/dbabd/system01.dbf' SIZE 325M REUSE
15 SYSAUX DATAFILE '/data/app/oracle/data/dbabd/sysaux01.dbf' SIZE 325M REUSE
16 DEFAULT TABLESPACE users
17 DATAFILE '/data/app/oracle/data/dbabd/users01.dbf'
18 SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
19 DEFAULT TEMPORARY TABLESPACE temp
20 TEMPFILE '/data/app/oracle/data/dbabd/temp01.dbf'
21 SIZE 20M REUSE
22 UNDO TABLESPACE undotbs
23 DATAFILE '/data/app/oracle/data/dbabd/undotbs01.dbf'
24 SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
Database created.
创建额外表空间(可选)
这一步是可选的,如果建库语句创建的数据库已经满足需求,这步可以跳过,本文这一步创建一个索引表空间:
SQL> create tablespace idx_tbs datafile '/data/app/oracle/data/dbabd/idx_tbs01.dbf' size 100M;
Tablespace created.
创建数据字典视图
执行额外的SQL脚本创建数据字典、视图、同义词、PL/SQL包等。脚本所在路径为 ORACLE_HOME/rdbms/admin和 $ORACLE_HOME/sqlplus/admin,关于执行的SQL脚本及其作用可以参考官方文档:Run Scripts to Build Data Dictionary Views
以SYS用户执行:
@?/rdbms/admin/catalog.sql
@?/rdbms/admin/catproc.sql
@?/rdbms/admin/utlrp.sql
执行完成后切换到SYSTEM用户执行:
@?/sqlplus/admin/pupbld.sql
在SQL*PLUS当中,?代表的是$ORACLE_HOME。
至此,手工方式创建数据库完成,可以通过sqlplus进行查询实例状态:
SQL> select instance_name,startup_time,status from v$instance;
INSTANCE_NAME STARTUP_TIME STATUS
------------------------------------------------ ------------------- ------------------------------------
dbabd 2019-01-11 15:26:49 OPEN
也可以通过监听查看实例状态:
$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 11-JAN-2019 16:53:17
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date 11-JAN-2019 10:35:36
Uptime 0 days 6 hr. 17 min. 41 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /data/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
Listener Log File /data/app/oracle/diag/tnslsnr/dbabd/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=dbabd)(PORT=1521)))
Services Summary...
Service "dbabd" has 1 instance(s).
Instance "dbabd", status READY, has 1 handler(s) for this service...
The command completed successfully
参考
https://docs.oracle.com/cd/E11882_01/server.112/e25494/create.htm#ADMIN11073
☆〖本人水平有限,文中如有错误还请留言批评指正!〗☆
Oracle 11g R2创建数据库之手工建库方式的更多相关文章
- Oracle 11g R2创建数据库之DBCA静默方式
通常创建Oracle数据库都是通过DBCA(Database Configuration Assistant)工具完成的,DBCA工具可以通过两种方式完成建库任务,即图形界面方式和静默命令行方式.既然 ...
- centos 安装oracle 11g r2(二)-----监听配置与创建数据库实例
centos 安装oracle 11g r2(二)-----监听配置与创建数据库实例 一.监听配置(命令:netca) 1.以 oracle 用户输入命令,启动图形化工具配置监听 [oracle@lo ...
- 转://oracle 11G+ASM for Linux手工建库
环境描述 环境:Oracle Linux 6.5 + ORACLE 11g R2+ASM ORACLE的程序已经安装完毕.但是没有创建任何数据库. 实验内容 安装ORACLE11g数据库,不使用DBC ...
- Oracle 11g 手工建库
假设数据库软件已经安装好,现在没有图形界面无法用dbca安装数据库,那么用手工建库,数据库名为edw 创建目录 [oracle@localhost ~]$ mkdir -p /u01/app/orac ...
- linux 6.4平台利用rman迁移oracle 11g r2数据库
测试环境分别在虚拟机安装A,B主机 系统:linux 6.4, 数据库:oracle 11g r2 A主机:安装oracle 11g r2数据库 B主机:只安装oracle 11g r2软件 第一步, ...
- Oracle 10g AND Oracle 11g手工建库案例--Oracle 11g
Oracle 10g AND Oracle 11g手工建库案例--Oracle 11g 系统环境: 操作系统: RedHat EL6 Oracle: Oracle 10g and Oracle 11 ...
- CentOS 7静默安装Oracle 11g R2数据库软件
之前安装Oracle 11g R2数据库软件都是建立在图形界面上的,不过现在大部分服务器上都没有安装图形界面.图形界面安装较为方便,安装选项清晰,步骤明确,但Oracle还支持另一种安装方式,就是通过 ...
- Windows Server 2008 R2 64位操作系统安装Oracle 11g 64位数据库,在客户终端上安装Oracle 11g 32位,才能安装P/L Sql Developer并配置
1.下载Oracle 11g R2 for Windows的版本 下载地址: http://www.oracle.com/technetwork/database/enterprise-edition ...
- centos 安装oracle 11g r2(三)-----表空间创建
centos 安装oracle 11g r2(三)-----表空间创建 创建表空间前要保证监听与数据库实例已经启动 1.启动监听 [oracle@localhost ~]$ lsnrctl start ...
随机推荐
- ubuntu上Android开发环境及依赖项
[时间:2018-07] [状态:Open] [关键词:ubuntu,系统安装,开发环境搭建,android,工具集] Ubuntu系统版本:v18.04 LTS c/c++ dev (build-e ...
- 力导向图Demo
<html> <head> <meta charset="utf-8"> <title>力导向图</title> < ...
- github控件地址
地址: https://github.com/wasabeef/awesome-android-ui http://www.jcodecraeer.com/plus/list.php?tid=31 h ...
- [转]谈NAND Flash的底层结构和解析
这里我想以一个纯玩家的角度来谈谈关于NAND Flash的底层结构和解析,可能会有错误的地方,如果有这方面专家强烈欢迎指正. NAND Flash作为一种比较实用的固态硬盘存储介质,有自己的一些物理特 ...
- FatFs文件系统的移植
FatFs 的底层可以写一次命令,读写多个扇区.FatFs的设计的读写的思想就很好,小块的数据,我就经过Buffer来存储,大块的数据,我就直接进行存取,那样速度,效率高了很多,看图: FatFs文件 ...
- 转 .NET4.5之初识async与await
来自:http://www.cnblogs.com/lekko/archive/2013/03/05/2944282.html 本人是从.NET4.0刚出的时候接触的.NET环境,所以学的东西就是4. ...
- Jquery EasyUI Combotree和 EasyUI tree展开所有父节点和获取完整路径
Jquery EasyUI Combotree展开所有父节点 Jquery EasyUI Combotree获取树完整路径 Jquery EasyUI tree展开所有父节点 Jquery EasyU ...
- go关键字之select
select是Go中的一个控制结构,类似于switch语句,用于处理异步IO操作.select会监听case语句中channel的读写操作,当case中channel读写操作为非阻塞状态(即能读写)时 ...
- 查看spark RDD 各分区内容
mapPartitionsWithIndexdef mapPartitionsWithIndex[U](f: (Int, Iterator[T]) => Iterator[U], preserv ...
- MakeFile 详解
最近在学习Linux下的C编程,买了一本叫<Linux环境下的C编程指南>读到makefile就越看越迷糊,可能是我的理解能不行. 于是google到了以下这篇文章.通俗易懂.然后把它贴出 ...