zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

Oracle 手工建库第二步 创建databse

Oracle 创建 手工 建库
2023-09-14 09:01:48 时间

将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 手工建库第三步 创建数据字典