手动创建数据库是一个数据库管理员最基本的能力,现在来介绍一下如何来手动创建数据库:
1.首先编辑一下oracle的环境变量,修改一下SID,这个SID为你要创建的数据库的名字
$vim .bash_profile
ORACLE_SID=mydb
$. .bash_profile
$echo $ORACLE_SID (查看一下SID)
2.编辑数据库的初始化参数文件(这个文件的选项有很多,我只是写了几个比较重要的)
$cd $ORACLE_HOME/dbs/
spfile .ora (这是个二进制文件,不能直接创建)
pfile.ora (先建立这个文件,然后将它转化为spfile.ora二进制文件)
$vim pfilemydb.ora (编辑PFILE初始化参数文件)
db_name=mydb
db_domain=example.com
db_block_size=8192
undo_management=auto
sga_target=400M
control_files=(‘/u02/oradata/mydb/control01.ctl’,’/u02/oradata/mydb/control02.ctl’,’/u02/oradata/mydb/control03.ctl’)
(注意以上内容不要随便加空格,还有就是你的/u02/oradata/下的mydb目录必须已经创建了,否则会接下来的操作会出现错误信息。)
3.将pfile文件转换为spfile文件
$sql / as sysdba
SQL>CREATE SPFILE=’/u01/app/oracle/product/10.2.0/db_1/dbs/spfilemydb.ora’ FROM PFILE=’/u01/app/oracle/product/10.2.0/db_1/dbs/pfilemydb.ora’;
4.以nomount方式启动数据库实例
SQL>startup nomount
5.创建数据库
先编辑一个创建数据库的脚本:(关于创建数据库的选项也有很多,我这里只是写了几个常用的)
$cd $ORACLE_HOME/dbs/
$vim create.sh (脚本内容如下)
CREATE DATABASE mydb
CONTROLFILE REUSE
LOGFILE
group 1 ('/u02/oradata/mydb/redo101.log') size 20M,
group 2 ('/u02/oradata/mydb/redo102.log') size 20M,
group 3 ('/u02/oradata/mydb/redo103.log') size 20M
DATAFILE '/u02/oradata/mydb/undotbs01.dbf' size 200M
DEFAULT TEMPORARY tablespace temp01 TEMPFILE '/u02/oradata/mydb/temp01.dbf' size 100M
DEFAULT TABLESPACE users DATAFILE '/u02/oradata/mydb/users01.dbf' size 100M
autoextend on next 10M maxsize unlimted
SYSAUX DATAFILE '/u02/oradata/mydb/sysaux01.dbf' size 400M
UNDO TABLESPACE undotbs01 DATAFILE '/u02/oradata/mydb/system01.dbf' size 400M;
$sqlplus / as sysdba
SQL>@$ORACLE_HOME/dbs/create.sh (运行这个脚本来创建数据库)
6.执行以下两个脚本,来创建数据字典文件
SQL> @$ORACLE_HOME/rdbms/admin/catalog.sql
SQL> @$ORACLE_HOME/rdbms/admin/catproc.sql
脚本执行完后,我们的oracle数据库就创建出来了,如果想配置的更加详细,需要把我们的初始化参数文件写的更加详细,控制的更加准确)
以下为大家介绍一些关于PFILE文件经常用到的选项:
db_name (数据库的名字,要跟SID匹配)
instance_type (数据库实例的类型,实例有两种类型:ASM和RDBMS)
db_domain (定义数据库的域)
db_files (定义打开数据文件的个数不能动态改变,默认为200个,改变后要重启实例)
processes (定义了允许oracle相关的进程的个数,)
db_block_size (指定数据块的大小)
background_dump_dest (指定路径跟踪调试文件程序背景)
user_dump_dest (指定用户会话信息的存放位置)
core_dump_dest (oracle的错误信息的存放位置)
compatible (指定兼容的数据库版本,注意它只能升级,不能降级)
control_files (指定一个或多个控制文件的位置,控制文件最少为一个,最多为八个)
cursor_sharing (指定游标共享模式:有三种模式:FORCE 强制共享模式; SIMILAR 类似模式: EXACT完全相同的模式)
sga_target (让Oracle自己来自动分配各个组的大小)
sga_max_size (指定SGA内存的最大大小)
streams_pool_size (定义流池的大小)
shared_pool_size (定义共享池大小)
large_pool_size (定义大池的大小)
java_pool_size (定义java池的大小)
db_cache_size (定义数据缓冲区缓存的大小)
log_buffer (定义日志缓冲的大小)
db_nK_cache_size (设定给非标准块开辟的buffer caches的大小)
pga_aggregate_target (指定PGA的信息)
db_file_multiblock_read_count (定义一次I/O的访问,要读取多少个数据块)
db_flashback_retention_target (指定快闪恢复区文件的保存时间,默认为1440分钟,范围为:0到232-1)
db_recovery_file_dest (指定快闪恢复区的位置,前提是这个路径必须实现已经存在了)
db_recovery_file_dest_size (指定快闪恢复区的大小)
log_archive_dest_n (n为1-10,指定归档日志的位置)
log_archive_format (指定归档日志的格式)
optimizer_mode (指定优先模式,有三种模式:first_rows_n ; first_rows ; all_rows )
remote_login_passwordfile (初始化参数指定是否让oracle验证密码文件,有多少可以使用数据库的密码文件,选项为NONE和SHARED,一般都使用NONE)
undo_management (指定撤销表空间的管理方法)
undo_tablespace (指定撤销表空间)
undo_retention (指定撤销表空见的数据最小保留的时间,默认为900,范围为0到232-1)
当然,oracle太强大了,我这里讲的还只是一些简单的设置,有关更加详细的设置,可以参考oracle的官方文档: