oracle数据库rdo,10_Oracle_Admin_手动创建一个比较实用的数据库
上一节中手动创建数据库由于参数太过简单,且没有安装数据字典,是无法实际应用的,本章节是对上节内容的深入,增加了很多细节和参数配置,按照以下步骤,可以成功安装一个能实际使用的数据库。
======清理现有数据库文件======
[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_手动创建一个比较实用的数据库相关推荐
- linux 创建一个数据库,Linux下手动创建一个数据库
这是自己手动创建一个Oracle数据库的过程. 在Linux下虽然通过dbca也可以创建数据库,但是在某些环境下却是不能使用图形环境,如数据库服务器在机房,并且开放的端口有限制,或者需要批量创建数据库 ...
- oracle创建数据库后干什么,手动创建Oracle数据库之前因后果
对于许多数据库管理员来说,Oracle究竟是不是一个难以管理和驾驭的怪兽级数据库,会不会让他们管理生涯饱受折磨?当看到其命令行界面时,很多人会问这么一个问题. 如果你想通过一个应用程序操控使用这个数据 ...
- oracle创建导入数据库,unix下手动创建oracle以及imp数据导入
一.手动创建数据库步骤以及数据导入: 1.指定新的SID,我们这里创建一个以ecdsdb为名的SID. [oracle@localhost ~]$ export ORACLE_SID=ecdsdb 2 ...
- android手动创建数据表,Android开发—数据库应用—手动创建(SQLite)数据库--手动创建数据表(table)...
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:数据库应用-手 ...
- 手动添加linux用户,Linux入门教程:如何手动创建一个Linux用户
想到要创建一个用户的时候,我们马上想到了useradd命令或者在图像下进行建立,但是这样并没有真正的了解linux用户的生成步骤,我们知道在linux下"一切皆文件",那么对于一个 ...
- git 创建webpack项目_使用webpack手动创建一个完整项目的全过程
1.创建文件夹"webpack-study" 2.使用webstrom打开文件夹所在位置.在根目录上创建一个文件,文件命名为"src",在src文件下新建css ...
- 如何做一个mysql数据库_如何创建一个简单的mysql数据库
这篇文章主要介绍了操作MySQL日志的一些方法,对日志的删除操作做了重点讲解,需要的朋友可以参考下. 一.创建数据库 注:已经安装好mysql. windows下运行cmd进入命令窗口,本人用的是wi ...
- oracle数据库监听问题,分享一个有意思的Oracle19c数据库监听异常
概述 今天主要分享一个最近排查的监听问题,还是有点意思的,一起来看看吧~ 环境:oracle19c 单实例 用plsql连接提示,这里排除防火墙.账号密码问题,连接字符串按监听文件格式写 1. 测试监 ...
- 数据库表的基本操作——创建一个表,索引和查询
1.定义基本表.删除和更改 (1)定义基本表 create table <表名>(<列名><数据类型>[列级完整性约束条件] [,<列名>< ...
最新文章
- 剑灵总显示服务器断开连接,求解一分钟“与服务器断开连接”问题
- JS replace()方法-字符串首字母大写
- hdu 2881(简单dp)
- 通过日志恢复MS SQL数据案例
- hive表定义(3种方式)
- c++ array stl_C ++ STL中带有示例的array :: front()函数
- python支持向量机回归_机器学习实战-支持向量机原理、Python实现和可视化(分类)...
- TensorFlow (RNN)深度学习 双向LSTM(BiLSTM)+CRF 实现 sequence labeling 序列标注问题 源码下载...
- 比尔盖茨正式退出微软董事会:将继续担任技术顾问
- MVC---------ViewBag
- python 描述符参考文档_Python-描述符
- STM32 CubeMX 串口通信
- %date:~0,4%和 %time:~0,2%字符截取操作用法
- item_get - 根据ID取聚美优品商品详情
- pwnable.kr第二遍---mistake
- 为Linux安装CHM阅读器
- ssh框架的学习之strut2小测试(2)
- python多进程子进程不运行问题--未解决
- Word Embedding Papers | 经典再读之Word2Vec
- DFRobot离线语音识别模块真实测评
热门文章
- FPGA问题记录之:Warning (13024): Output pins are stuck at VCC or GND
- 记录与git 分支有关的七七八八
- 阿里技术实战:一些云上资源调度的经验谈
- 网络通信面试题详细解答
- 手机连接谷歌浏览器进行联调_如何让任何人将手机连接到您的Google Home
- Java 未来行情到底如何,来看看各界人士是怎么说的
- 创建您的第一个Substrate区块链
- UNABLE TO READ CONSUMER IDENTITY
- PostgreSQL导出表结构|表数据
- WifiNetworkSelector 走读