重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
什么是模式(schema)
专注于为中小企业提供成都做网站、成都网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业蒲县免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了数千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
模式是一个逻辑容器,你可以把模式理解为文件夹,方便我们对一组数据库对象进行管理。通常,一个大的系统由许多小的系统组成,我们可以给每个小的系统创建一个模式,把该系统中用到的数据库对象都创建在这个模式中。例如,每个公司都会有员工,我们可以创建一个模式 HR,然后在 HR 中创建一个表 EMPLOYEES 来维护员工信息,如果需要在其他模式中访问 EMPLOYEES 表,我们需要指定它的全名 HR.EMPLOYEES。
模式对象
我们可以在模式中创建表(Table), 分区(Partition), 视图(View), 索引(Indexe), 包(Package),存储过程(Procedure),函数(Function),触发起(Trigger),类型(Type), 序列(Sequence), 同义(Synonym)等数据库对象。
创建模式
模式隶属于某个数据库用户,模式名和数据库用户是相同的,那如何创建模式呢?呵呵,很简单,其实就是创建数据库用户。
SYS 和 SYSTEM 模式
当我们安装 Oracle 的时候,系统自动帮我们创建了 SYS 和 SYSTEM 模式,它们拥有最高权限,用来管理数据库,SYSTEM 比 SYS 提供了更多的表。
-- 更多参见:Oracle 精萃
-- 声明:转载请注明出处
-- Last edited on 2015-09-04
-- Created by ShangBo on 2015-09-04
-- End
从数据库用户角度看,数据库中的数据是以表、视图等方式储存的。那么用户自己是怎么创建表的呢?简单的有两种方式,一种是用户可以在Oracle提供的SQL*Plus中使用CREATE TABLE语句创建表,也可以通过OEM图形化工具创建表。
工具/材料
电脑
Oracle 10g
CREATE TABLE创建表
01
首先用户必须要有CREATE TABLE系统权限,并且只能在自己的模式中创建表,图中的例子使用CREATE TABLE语句在当前模式中创建了一个共有5列的表:表的名称为employees,包含 emp_id, name, job,age,dep_id 等5列,后面的number、 varchar2、等为数据类型,括号里面为长度。
02
如果想要在其他模式中创建表,则必须在表名前加上模式名,并且用户还要有CREATE ANY TABLE系统权限,例如图中语句将在SYSTEM模式中创建employees1表
OEM创建表
01
在OEM主界面中选择【管理】选项卡,进入如图所示的数据库管理界面;然后在“数据库对象”中单击【表】选项。
02
系统进入管理表界面,在该页面中单击【创建】按钮,进入如图所示的“创建表的组织形式”界面。在该界面中用户可以选择创建的表类型---标准表、临时表或索引表。
03
在选择创建的表类型后,单击【继续】按钮,进入如图所示的“创建表”界面。在“名称”文本框中输入要创建表的名称。系统在“方案”文本框中显示当前模式,这表示新创建的表将属于该模式。
04
在“创建表”页面中选择“约束条件”选项卡,进入如图所示的“表约束条件”页面。该页面中用户可以为创建的表定义约束条件,包括主键约束(PRIMARY)、唯一约束(UNIQUE)、检查约束(CHECK)和外键(FOREIGN)约束。
05
设置储存参数,选择“储存”选项卡,进入如图所示的储存设置界面,最后保存表格,单机【确定】按钮,系统会根据用户对表的设置,创建一个新表。
oracle手动创建数据库步骤如下所示:
1.编写初始化参数文件
2.设置操作系统环境变量
3.创建实例
4.以管理员身份连接数据库
5.启动实例
6.create
database
创建数据库
7.运行数据字典脚本
8.Oracle的网络配置
(客户端连接到服务端)
初始化参数文件
从%ORACLE_HOME%\admin\sample\pfile从复制initsmpl.ora文件,并黏贴到$ORACLE_HOME%\database目录下,改名为initsid假设改为initzhouyt.ora.(init为文本文件)
对initzhouyt.ora内容进行修改
新增参数
*
instance_name=zhouyt
*
db_domain=hdu.edu.cn
修改参数
*
db_name=zhouyt
*
db_block_size=8192(8kM)
*
remote_login_passwordfile=exclusive
操作系统环境变量
设置操作系统环境变量oracle_sid指向数据库实例的名称
set
oracle_sid=zhouyt
该命令在window
dos窗口下只对当前有效,当关闭窗口则失效,想要一直有效,则需要在系统环境变量中修改
创建实例
实用工具oradim使用
在DOS窗口输入命令
oradim
-new
-sid
zhouyt
-intpwd
sys123(sys的密码,sys是管理员)
-startmode
auto
sid是Oracle在操作系统中的“身份证号码”
管理员身份连接数据库
sqlplus实用工具登录数据库
在DOS命令输入sqlplus/nolog
只是登录状态
以数据库管理员身份连接数据库
在上面的基础上输入命令
connect
sys/sys123
as
sysdba
因为以
数据库管理员身份
登录可以
安装数据库
启动实例
将文本初始化参数文件pfile转化为二进制初始化参数文件spfile
因为数据库启动需要找到配置文件,默认寻找二进制文件,也可以手动启动文本文件,那这一步就不需要了
输入命令
create
spfile
from
pfile;
(将会报错,因为文本文件比较老相对于Oracle
10g),
这个时候我们需要修改配置文件initzhouyt.ora
这个时候在%ORACLE_HOME%\database文件下会生成SPFILEZHOUYT.ora文件
以nomount形式启动实例
命令
startup
nomount,将会出现错误,当我们按照提示修改文本文件以后,如果我们还是按照startup
nomount来启动的话,我们要生成相应的二进制文件来覆盖旧的二进制文件
并注释%seed_control%
create
databae
创建数据库
创建数据库脚本
三个文件
控制文件
数据文件
重做日志文件
create
database
zhouyt
datafile
'C:\oracle\product\10.2.0\db_2\zhouyt\system_01.dbf'
size
100m
Autoextend
on
next
10m
maxsize
unlimited
sysaux
datafile
'C:\oracle\product\10.2.0\db_2\zhouyt\systemaux_01.dbf'
size
60m
Autoextend
on
next
10m
maxsize
unlimited
logfile
group
1
('C:\oracle\product\10.2.0\db_2\zhouyt\log_1_01.rdo')
size
10m,
group
2
('C:\oracle\product\10.2.0\db_2\zhouyt\log_2_01.rdo')
size
10m
character
set
zhs16gbk;
需要确保目录文件"db_2\zhouyt"存在
生成两个数据文件和两个重做日志文件,那么控制文件呢?
运行数据字典脚本
__数据库创建后,系统会生成两个管理员用户sys和system
运行3个数据字典脚本
catalog.sql
创建系统常用的数据字典视图和同义词
(sys登录);
catproc.sql
建立PL/SQL功能的使用环境,还创建几个PL/SQL包用于扩展RDBMS功能
(sys登录);
pupbld.sql
使用SQL*PLUS环境时需要
(system登录)
在命令行输入@
加脚本文件的绝对路径
第二个脚本过程和第一个一样
执行第三个脚本需要切换到system用户
connect
system/manager
@
C:\oracle\product\10.2.0\db_2\sqlplus\admin\pupbld.sql
创建scott模式
@
C:\oracle\product\10.2.0\db_2\RDBMS\ADMIN\scott.sql
oracle在创建用户(user)的时候自动创建一个同名的模式(schema),基本上,你不用区分模式和用户,登录用户,也就是使用了该模式。
至于用户(模式)下要创建哪些对象,这个得依据需求,做出概要设计才能确定。比如图书表,工作人员表,学生表,图书借阅记录表是最基本的,然后还要有很多外围的支持表(如各种代码表)和视图,以及若干存储过程、触发器等进行数据处理和保持业务逻辑的完整性一致性,以及其它的一些OBJECTS。这些细节是在需求分析的基础才能确定的。你这一句话太笼统,暂时无法确定。
使用一个编辑器打开Store_schema.sql的脚本,如需要,可以修改system用户的密码。system用户除具有普通用户的其他权限之外,还具有创建新用户和表的权限,其默认的密码是manager,如果system用户密码不是manager可以向DBA询问正确的密码。