UNIX下ORACLE数据库的创建

oracle|unix|创建|数据|数据库

创建数据库虽说是一件很平常的工作,在ORACLE的参考文档中也有一定的描述,但现实中确有很多人都不会,一方面是因为平时很少有这样的机会让你去做,而真有了这样的机会让你做的时候,可能又手忙脚乱的不知道如何下手,本文将为你提供一个完整的参考。

详细步骤如下:

第一步:准备工作

1、 环境变量:
ox1> more .profile_oracyx
# 这部分建议提供
PATH=/data4/ora817/app/oracle/product/8.1.7/bin:/data4/ora817/bin::/usr/bin:.
ORACLE_BASE=/data4/ora817/app/oracle
ORACLE_SID=oracyx
ORA_NLS33=/data4/ora817/app/oracle/product/8.1.7/ocommon/nls/admin/data
ORACLE_HOME=/data4/ora817/app/oracle/product/8.1.7

# 这部分根据你的具体环境,不过有的参数在数据库建成后最好还是明确写出来,
# 如:LD_LIBRARY_PATH等,这样自己看起来会更清楚些。
LD_LIBRARY_PATH=/data4/ora817/app/oracle/product/8.1.7/lib:/usr/lib
TNS_ADMIN=/data4/ora817/app/oracle/product/8.1.7/network/admin
USER=ora817
NLS_LANG=american_america.zhs16cgb231280
LOGNAME=ora817
ORA_DB=/data4/ora817/app/oracle/product/8.1.7/dbs
TERM=vt100
HOME=/data4/ora817
ORACLE_TERM=vt100
SHELL=/bin/ksh
DISPLAY=ox1:0.0

2、参数文件
ox1> pwd
/data4/ora817/app/oracle/product/8.1.7/dbs
ox1> cp init.ora initoracyx.ora
ox1> vi initoracyx.ora
# --------------------------BEGIN---------------------------------------------------------
# db_name是唯一一个需要在建库时候提供的参数,
# 但通常以下参数都会做部分调整的
db_name = "oracyx"
instance_name = oracyx
service_names = oracyx
control_files = ('/data4/ora817/oradata/oracyx/control1.ctl', '/data2/oradata/or
acyx/control2.ctl','/data5/oradata/oracyx/control3.ctl')
open_cursors = 1000
max_enabled_roles = 40
db_block_buffers = 18800
shared_pool_size = 204800000
java_pool_size = 0
log_checkpoint_interval = 1000000000
log_checkpoint_timeout = 1800
processes = 2000
log_buffer = 2048000
timed_statistics = true
max_dump_file_size = 10000
log_archive_start = true
log_archive_dest_1 = "location=/data5/archive/oracyx"
log_archive_format = arch_%t_%s.arc
global_names = false
background_dump_dest = /data4/ora817/app/oracle/admin/oracyx/bdump
background_core_dump = partial
core_dump_dest = /data4/ora817/app/oracle/admin/oracyx/cdump
shadow_core_dump = none
user_dump_dest = /data4/ora817/app/oracle/admin/oracyx/udump
db_block_size = 8192
remote_login_passwordfile = exclusive
os_authent_prefix = ""
distributed_transactions = 1500
compatible = "8.1.7.0.0"
sort_area_size = 1024000
sort_area_retained_size = 1024000
db_files = 400
db_file_multiblock_read_count = 16
parallel_max_servers = 8
lm_ress=900000
lm_locks=1500000
session_cached_cursors = 20
transactions_per_rollback_segment = 10
db_block_lru_latches = 6
instance_number = 1
resource_limit=TRUE
# --------------------------END-----------------------------------------------------------

3、密码文件:
ox1> pwd
/data4/ora817/app/oracle/product/8.1.7/dbs
ox1> orapwd file=orapworacyx password=cyx entries=10

值得注意的是,oracle密码文件的文件名是有严格规范的:orapw[sid]。默认的查找顺序是:先找orapwsid,再找orapw,如果同一台机子上有两个数据库,为了区分起见必须有一个要指明SID。

同时不要忘了确认sqlnet.ora含如下内容:
sqlnet.authentication_services = (none)

当然你也可以不用密码文件,那么这一步就可以省略了。

4、准备目录:
ORACLE真的很笨,不会自己建立子目录,所以我们不得不在开始建库之前将所有数据文件存放的目录先建好,这里建的目录有:
/data2/oradata/oracyx
/data3/oradata/oracyx
/data4/ora817/oradata/oracyx/
/data5/oradata/oracyx
/data6/oradata/oracyx
/data7/oradata/oracyx
/data4/ora817/app/oracle/admin/oracyx/bdump
/data4/ora817/app/oracle/admin/oracyx/udump
/data4/ora817/app/oracle/admin/oracyx/cdump

第二步:开始建库

1、 建立基本数据库文件:

在本部分中将建立基本的数据库文件,包括control file, system data file和online redo log file。具体脚本如下:

ox1> more cdb1_base.sh
#!/bin/sh
#---------------------------------BEGIN--------------------------------------------------
ORACLE_SID=oracyx export ORACLE_SID
ORACLE_HOME=/data4/ora817/app/oracle/product/8.1.7 export ORACLE_HOME

/data4/ora817/app/oracle/product/8.1.7/bin/svrmgrl<< EOF
connect internal/cyx
spool /data4/ora817/cyx/cdb/crdb1.log
startup nomount pfile='/data4/ora817/app/oracle/product/8.1.7/dbs/initoracyx.ora'

CREATE DATABASE "oracyx"
CONTROLFILE REUSE
maxdatafiles 254
maxinstances 8
maxloghistory 100
maxlogmembers 2
maxlogfiles 64
character set ZHS16CGB231280
national character set ZHS16CGB231280
DATAFILE '/data4/ora817/oradata/oracyx/system.dbf'
SIZE 240M REUSE AUTOEXTEND OFF

logfile '/data4/ora817/oradata/oracyx/log1.rdo' SIZE 4M REUSE ,
'/data4/ora817/oradata/oracyx/log2.rdo' SIZE 4M REUSE ,
'/data4/ora817/oradata/oracyx/log3.rdo' SIZE 4M REUSE;

disconnect
spool off
exit
EOF
#---------------------------------END----------------------------------------------------

2、 建立其它表空间

此部分首先对系统表空间作适当的修改,然后开始创建其它表空间,详细脚本如下:

ox1> more cdb2_storage.sh
#!/bin/sh
#----------------------BEGIN--------------------------------------------------
ORACLE_SID=oracyx export ORACLE_SID
/data4/ora817/app/oracle/product/8.1.7/bin/svrmgrl << EOF
spool /data4/ora817/cyx/cdb/crdb2.log
connect internal/cyx

REM ********** ALTER SYSTEM TABLESPACE *********
ALTER TABLESPACE SYSTEM
DEFAULT STORAGE (
INITIAL 640K NEXT 640K MINEXTENTS 1
MAXEXTENTS UNLIMITED PCTINCREASE 0);
ALTER TABLESPACE SYSTEM MINIMUM EXTENT 64K;

REM ********** TABLESPACE FOR TOOLS**********
CREATE TABLESPACE TOOLS DATAFILE '/data4/ora817/oradata/oracyx/tools_01.dbf'
SIZE 4000M REUSE AUTOEXTEND OFF
MINIMUM EXTENT 512K
DEFAULT STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 8 MAXEXTENTS 4096);

REM ********** TABLESPACE FOR INDX1 **********
CREATE TABLESPACE INDX1 DATAFILE '/data2/oradata/oracyx/indx1_01.dbf'
SIZE 4000M REUSE AUTOEXTEND OFF
MINIMUM EXTENT 512K
DEFAULT STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 8 MAXEXTENTS 4096);

REM ********** TABLESPACE FOR USER**********
CREATE TABLESPACE USER1 DATAFILE '/data6/oradata/oracyx/user1_01.dbf'
SIZE 4000M REUSE AUTOEXTEND OFF
MINIMUM EXTENT 512K
DEFAULT STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 8 MAXEXTENTS 4096);

REM ********** TABLESPACE FOR TEMP **********
CREATE TABLESPACE TEMP DATAFILE '/data7/oradata/oracyx/temp_01.dbf'
SIZE 4000M REUSE AUTOEXTEND OFF
MINIMUM EXTENT 512K
DEFAULT STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 8 MAXEXTENTS 4096);

REM ********** TABLESPACE FOR RBS **********
CREATE TABLESPACE RBS DATAFILE '/data3/oradata/oracyx/rbs1_1.dbf'
SIZE 4000M REUSE AUTOEXTEND OFF
MINIMUM EXTENT 512K
DEFAULT STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 8 MAXEXTENTS 4096);

REM **** Creating Six Rollback Segments ****************
CREATE PUBLIC ROLLBACK SEGMENT RBS_01 TABLESPACE RBS
STORAGE (INITIAL 10m NEXT 10m MINEXTENTS 20 OPTIMAL 200m);
ALTER ROLLBACK SEGMENT RBS_01 ONLINE;

CREATE PUBLIC ROLLBACK SEGMENT RBS_02 TABLESPACE RBS
STORAGE (INITIAL 10m NEXT 10m MINEXTENTS 20 OPTIMAL 200m);
ALTER ROLLBACK SEGMENT RBS_02 ONLINE;

CREATE PUBLIC ROLLBACK SEGMENT RBS_03 TABLESPACE RBS
STORAGE (INITIAL 10m NEXT 10m MINEXTENTS 20 OPTIMAL 200m);
ALTER ROLLBACK SEGMENT RBS_03 ONLINE;

CREATE PUBLIC ROLLBACK SEGMENT RBS_04 TABLESPACE RBS
STORAGE (INITIAL 10m NEXT 10m MINEXTENTS 20 OPTIMAL 200m);
ALTER ROLLBACK SEGMENT RBS_04 ONLINE;

CREATE PUBLIC ROLLBACK SEGMENT RBS_05 TABLESPACE RBS
STORAGE (INITIAL 10m NEXT 10m MINEXTENTS 20 OPTIMAL 200m);
ALTER ROLLBACK SEGMENT RBS_05 ONLINE;

CREATE PUBLIC ROLLBACK SEGMENT RBS_06 TABLESPACE RBS
STORAGE (INITIAL 10m NEXT 10m MINEXTENTS 20 OPTIMAL 200m);
ALTER ROLLBACK SEGMENT RBS_06 ONLINE;

disconnect
spool off
exit
EOF
#-------------------END----------------------------------------------------

3、 创建数据字典

在本部分中将调用oracle自带的脚本创建数据字典。其中catalog.sql用于创建相对于系统基表的视图和系统动态性能视图以及他们的同义词。同时该脚本将运行创建其他对象的脚本,主要有基本的PL/SQL环境(包括PL/SQL的声明:数据类型、预定义例外、内建的过程和函数、SQL操作等),审计,导入/导出,SQL*Loader以及安装选项等。
Catproc.sql用于建立PL/SQL的使用环境。此外,还创建几个PL/SQL包用于扩展RDBMS功能。该脚本同时还为下面的一些RDBMS功能创建另外的一些包和视图:  警告、管道、日志分析、对象、大对象、高级队列、复制选项以及其他的一些内建包和选项等。
以上两个是必须运行的,其他的则根据实际需求了,这里对用到的几个作一下说明:
caths.sql用于安装异类服务管理包。
helpbld.sql和helpus.sql用于创建SQL*PLUS帮助所用到的表(to create the help facility tables)。
另外一个pupbld.sql,对于低版本需要运行,否则在登录时会出现“Product user profile does not exit”的提示信息,pupbld.sql用于建立PUP(Product_User_Profile)表,以在用户级别安全性的基础上,提供产品级(product_level)的安全机制。

ox1> more cdb3_dd.sh
#!/bin/sh
#-----------------BEGIN--------------------------------------------------
ORACLE_SID=oracyx export ORACLE_SID
/data4/ora817/app/oracle/product/8.1.7/bin/sqlplus internal/cyx << EOF
spool /data4/ora817/cyx/cdb/crdb3.log

@/data4/ora817/app/oracle/product/8.1.7/rdbms/admin/catalog.sql;
@/data4/ora817/app/oracle/product/8.1.7/rdbms/admin/catproc.sql;
@/data4/ora817/app/oracle/product/8.1.7/rdbms/admin/caths.sql;
connect system/manager
@/data4/ora817/app/oracle/product/8.1.7/sqlplus/admin/help/helpbld.sql helpus.sql;

disconnect
spool off
exit
EOF
#------------------END----------------------------------------------------

4、 完善处理

为了使数据库达到较好的性能,我们还需要对数据库作进一步的调整,这里举的例子是修改用户的默认表空间和临时表空间,改变数据库为archive log运行模式。

ox1> more cdb4_perf.sh
#!/bin/sh
#-----------------BEGIN--------------------------------------------------
ORACLE_SID=oracyx export ORACLE_SID
/data4/ora817/app/oracle/product/8.1.7/bin/sqlplus internal/cyx << EOF
spool /data4/ora817/cyx/cdb/crdb4.log

alter user sys temporary tablespace TEMP;
alter user system default tablespace TOOLS;
alter user system temporary tablespace TEMP;

shutdown normal;
startup mount pfile='/data4/ora817/app/oracle/product/8.1.7/dbs/initoracyx.ora';
alter database archivelog;
alter database open;
alter system archive log start;
alter system switch logfile;

disconnect
spool off
exit
EOF
#------------------END----------------------------------------------------

总结:

好了,到此为止我们就建立一个新的数据库,不知你现在对这一过程是否清晰了?在我们对数据库的逻辑结构都很熟悉的情况下,建库过程中需要重点考虑的是数据库的物理存储,而这和我们具体的应用有关,不是一两句话就能说情的,希望大家能够一起来探讨……
          刁馋

时间: 2024-11-08 19:06:49

UNIX下ORACLE数据库的创建的相关文章

Windows系统下Oracle数据库每天自动备份_oracle

linux和unix下面使用shell可以很方便实现,如果windows环境下可以结合计划任务实现 1.创建备份目录d:\backup, 创建批处理命令Bak.bat,编写备份脚本 exp user/passwd@orcl DIRECT=Y BUFFER=100000 FILE=D:\backup\scdd%date:~0,10% OWNER=('scdd') LOG=D:\backup\data.log forfiles /p "D:\backup" /s /m *.dmp /d -

windows系统下oracle数据库定时自动备份

  实现目的:为避免数据丢失或错误,对数据库数据的定时备份 实现方式:oracle导出+windows 任务 完成 学习方法:先知其然,后知其所以然 实现过程: 1. 建立文件 backup.bat (自定义文件名.bat) @echo off REM ########################################################### REM # Windows Server 2003下Oracle数据库自动备份批处理脚本 REM ##############

Windows DOS窗体下Oracle 数据库的导入导出命令

oracle 用户创建 数据库的导入导出imp/exp 可以在SQLPLUS.EXE或者DOS(命令行)中执行 执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行, DOS中可以执行时由于 在oracle 8i 中 安装目录ora81BIN被设置为全局路径, 该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出. 创建用户 给用户增加导入数据权限的操作 第一,启动sql*puls 第二,以system/manager登陆 第三,create user 用户名 IDENTI

使用OCCI连接Linux下Oracle数据库

OCCI(Oracle C++ Call Interface):C++程序与Oracle数据库实现交互的应用程序接口,它以动态连接库的形式提供给用户.OCCI对OCI实行了对象级的封装,其底层仍是OCI OCCI连接Linux下的Oracle数据库: 1 安装Linux下的oracle客户端 2 下载对应的oracle-instantclient-basic-10.2.0.4-1.i386.zip将其拷贝至Linux的Oracle账户并解压至instantclient_10_2目录 实现OCCI

oracle数据库用户创建、权限分配

oracle|创建|数据|数据库 1.数据库安装时的参数设定下面数据库所用的版本为ORACLE 9I (9.2.0),安装数据库时,数据库系统会创建一个数据库实例,其中:安装目录选为:\oracle,数据库名与数据库SID号都输入:ora9i ,其中的字符集必须选为:ZHS16GBK(否则以后进行跨平台操作时对中文的操作将比较困难).2.数据库用户的创建.权限的分配数据库安装完成后,有两个系统级的用户: 1.          system 默认密码为:manager 2.          s

Oracle数据库索引创建要做到三个适当

在Oracle数据库中,创建索引虽然比较简单.但是要合理的创建索引则比较困难了.笔者认为,在创 建索引时要做到三个适当,即在适当的表上.适当的列上创建适当数量的索引.虽然这可以通过一句话来 概括优化的索引的基本准则,但是要做到这一点的话,需要数据库管理员做出很大的努力.具体的来说, 要做到这个三个适当有如下几个要求. 一. 根据表的大小来创建索引. 虽然给表创建索引,可以提高查询的效率.但是数据库管理员需要注意的是,索引也需要一定的开销 的.为此并不是说给所有的表都创建索引,那么就可以提高数据库

Linux系统下Oracle数据库的安装和启动关闭操作教程_oracle

1.准备: df -H   查看空间剩余   一般准备最少5G 2.查看swap分区大小 du -sh /tmp/     最少400M 3. 建组建用户 groupadd dba -g 111 groupadd oinstall -g 110 useradd oracle -u -110 -g 110 -G 111 passwd oracle --stdin 4. 设置参数 su - oracle vi .bash_profile export ORACLE_BASE=/u01/oracle

在oracle数据库里创建自增ID字段的步骤_oracle

在oracle里使用自增ID字段的步骤比较繁琐,总结如下: -- 创建表 CREATE TABLE ADVICE ( ID INT NOT NULL, ACTIVE INT DEFAULT 1 NOT NULL, TYPE INT NOT NULL, MSG VARCHAR2(512) NOT NULL, ADVICE VARCHAR2(4000) NOT NULL, PRIMARY KEY(ID), CONSTRAINT ADVICE_UNI UNIQUE(TYPE,MSG) )TABLESP

Oracle数据库如何创建第一张表_oracle

对于Oracle数据库的使用,创建一张符合自己需求的表是至关重要的,下面就让我们进行创建第一张属于自己的表 创建表时有两种种方式: (1)在cmd里边更具需要进行创建 (2)在sql developer中进行创建,而对于在可视化界面sqldeveloper中创建时,也有两种方式,即一种是使用命令直接进行创建,另外一种是使用可视化界面按钮进行点击创建 下面就是创建的具体过程: (1)首先我们进行数据的连接,在SQLdeveloper中进行操作,在使用sqldeveloper时需要下载sqldeve