将instance启动到nomount状态就可以创建数据库了,通过create database来手工来创建数据库了,这里要写一个脚本,这个脚本相对比较复杂,不建议直接编写,可以通过oracle官方文档来找到相应的信息,然后修改过后拿来使用。
将官方文档上面的内容复制过来,将其进行修改。
[oracle@Database2 dbs]$ cd /home/oracle
[oracle@Database2 dbs]$ vi creatdb.txt
CREATE DATABASE oradb --数据库名称
USER SYS IDENTIFIED BY oracle --修改sys用户的口令
USER SYSTEM IDENTIFIED BY oracle --修改system用户的口令
LOGFILE GROUP 1 ('/u01/app/oracle/oradata/oradb/redo01.log') SIZE 500M, --日志组文件的位置和大小,路径(/u01/app/oracle/oradata/oradb)必须已经是存在的
GROUP 2 ('/u01/app/oracle/oradata/oradb/redo02.log') SIZE 500M,
GROUP 3 ('/u01/app/oracle/oradata/oradb/redo03.log') SIZE 500M
MAXLOGFILES 10 --最大的日志组的个数,最多十个日志组
MAXLOGMEMBERS 5 --每个日志组里面最大的成员个数,一般两个成员就足够保证日志的安全了,但是这两个日志一定要放在不同的存储上,成员也不能多了,这样产生的I/O也会很多
MAXLOGHISTORY 200
MAXDATAFILES 100 --数据文件最大个数,对于大的生产库最好设置为200
CHARACTER SET ZHS16GBK --支持的是中文的
NATIONAL CHARACTER SET AL16UTF16
EXTENT MANAGEMENT LOCAL --表空间是本地管理的,不使用数据字典,生产环境使用本地管理
DATAFILE '/u01/app/oracle/oradata/oradb/system01.dbf' SIZE 500M REUSE
SYSAUX DATAFILE '/u01/app/oracle/oradata/oradb/sysaux01.dbf' SIZE 325M REUSE
DEFAULT TEMPORARY TABLESPACE temp
TEMPFILE '/u01/app/oracle/oradata/oradb/temp01.dbf'
SIZE 20M REUSE
UNDO TABLESPACE undotbs1 --这个名字得和参数文件init<SID>.ora里面的名字保持一致(undo_tablespace='UNDOTBS1')
DATAFILE '/u01/app/oracle/oradata/oradb/undotbs01.dbf'
SIZE 200M REUSE;
在建库的时候,最好对存储有一个规划,数据文件,redo日志文件,归档日志文件尽量不要放到相同的存储上,这样是从安全角度和性能角度考虑。
我的建库脚本最后修改如下:
CREATE DATABASE oradb
USER SYS IDENTIFIED BY oracle
USER SYSTEM IDENTIFIED BY oracle
LOGFILE GROUP 1 ('/u01/app/oracle/oradata/oradb/redo01.log') SIZE 50M,
GROUP 2 ('/u01/app/oracle/oradata/oradb/redo02.log') SIZE 50M,
GROUP 3 ('/u01/app/oracle/oradata/oradb/redo03.log') SIZE 50M
MAXLOGFILES 20
MAXLOGMEMBERS 5
MAXLOGHISTORY 200
MAXDATAFILES 100
CHARACTER SET ZHS16GBK
NATIONAL CHARACTER SET AL16UTF16
EXTENT MANAGEMENT LOCAL
DATAFILE '/u01/app/oracle/oradata/oradb/system01.dbf' SIZE 500M REUSE
SYSAUX DATAFILE '/u01/app/oracle/oradata/oradb/sysaux01.dbf' SIZE 325M REUSE
DEFAULT TEMPORARY TABLESPACE temp
TEMPFILE '/u01/app/oracle/oradata/oradb/temp01.dbf'
SIZE 20M REUSE
UNDO TABLESPACE undotbs1
DATAFILE '/u01/app/oracle/oradata/oradb/undotbs01.dbf'
SIZE 200M REUSE;
SQL> select status from v$instance; --现在实例是启动到nomount状态
STATUS
------------------------
STARTED
SQL> @/home/oracle/createdb.sql --@代表运行,后面绝对路径,运行该脚本。
Database created.
下面是alter日志里面的内容,可以在一边建库一边观察alter日志里面的内容:
建库完成之后可以观察一下实例启动到什么阶段了
SQL> select status from v$instance; --可以看到,建库完成之后启动到open状态了
STATUS
------------
OPEN
SQL> desc dba_tablespaces; --可以看到虽然库创建成功,但是很多数据字典还是不存在的
ERROR:
ORA-04043: object dba_tablespaces does not exist
如果要将文件分散的放置使用下面的建库脚本:
[oracle@Database2 ~]$ cat createdb.sql
CREATE DATABASE oradb
USER SYS IDENTIFIED BY oracle
USER SYSTEM IDENTIFIED BY oracle
LOGFILE GROUP 1 ('/u01/app/oracle/oradata/oradb/redo01.log','/u02/app/oracle/oradata/oradb/redo01.log') SIZE 500M,
GROUP 2 ('/u01/app/oracle/oradata/oradb/redo02.log','/u02/app/oracle/oradata/oradb/redo02.log') SIZE 500M,
GROUP 3 ('/u01/app/oracle/oradata/oradb/redo03.log','/u02/app/oracle/oradata/oradb/redo03.log') SIZE 500M
MAXLOGFILES 20
MAXLOGMEMBERS 5
MAXLOGHISTORY 200
MAXDATAFILES 100
CHARACTER SET ZHS16GBK
NATIONAL CHARACTER SET AL16UTF16
DATAFILE '/u03/app/oracle/oradata/oradb/system01.dbf' SIZE 500M REUSE
SYSAUX DATAFILE '/u03/app/oracle/oradata/oradb/sysaux01.dbf' SIZE 325M REUSE
DEFAULT TEMPORARY TABLESPACE temp
TEMPFILE '/u03/app/oracle/oradata/oradb/temp01.dbf'
SIZE 20M REUSE
UNDO TABLESPACE undotbs1
DATAFILE '/u03/app/oracle/oradata/oradb/undotbs01.dbf'
SIZE 200M REUSE;
(如果路径不存在要将路径创建起来,并且修改所有者和所属组:mkdir -p '/u02/app/oracle/oradata/oradb/ chown -R oracle:oinstall /u02)
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/oradb/redo01.log
/u02/app/oracle/oradata/oradb/redo01.log
/u01/app/oracle/oradata/oradb/redo02.log
/u02/app/oracle/oradata/oradb/redo02.log
/u01/app/oracle/oradata/oradb/redo03.log
/u02/app/oracle/oradata/oradb/redo03.log
6 rows selected.
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/u03/app/oracle/oradata/oradb/system01.dbf
/u03/app/oracle/oradata/oradb/sysaux01.dbf
/u03/app/oracle/oradata/oradb/undotbs01.dbf
SQL> select name from v$tempfile;
NAME
--------------------------------------------------------------------------------
/u03/app/oracle/oradata/oradb/temp01.dbf
最后一步就是创建数据字典了。
如果要参考Oracle手工建库第一步请参考: Oracle 手工建库第一步 创建instance
创建数据字典请参考:Oracle 手工建库第三步 创建数据字典