Oracle 11G手工建库

Oracle除自带的DBCA能够建立数据库之外,还能够利用Oracle手动建立数据库,也是做为DBA人员必需要掌握的。
下面就介绍一下手动建立数据库的步骤:sql

  • 建立必要的相关目录
  • 建立初始化参数文件
  • 设置环境变量ORACLE_SID
  • 建立口令文件
  • 启动数据库到nomount(实例)状态
  • 执行建库脚本
  • 执行catalog脚步本建立数据字典
  • 执行catproc建立package包
  • 执行pupbld
  • 由初始化参数文件建立spfile文件

下面以建立一个名为“RAC1”的数据库为例shell

一、 建立必要的相关目录

shell> cd $ORACLE_BASE;
shell> mkdir -p oradata/rac1            #存放数据库文件
shell> mkdir -p flash_recovery_area
shell> mkdir -p admin/rac1

2. 建立初始化参数文件

数据库系统启动时需要用初始化参数文件的设置分配内存、启动必要的后台进程的。
所以,初始化参数文件建立的是否正确、参数设置是否正确关系着整个建库的“命运”。
建立初始化参数文件能够经过拷贝如今的初始化参数文件并将其作适当的修改便可,从而没必要要用
手工去一句一句地写出来,由于初始化参数文件的结构体系基本上都是同样的。数据库

shell> cp $ORACLE_HOME/dbs/init.ora $ORACLE_HOME/dbs/initRAC1.ora
shell> vi $ORACLE_HOME/dbs/initRAC1.ora

修改其内容以下:
db_name='RAC1'
memory_target=1G
processes = 150
audit_file_dest='/db/oracle/admin/rac1/adump'
audit_trail ='db'
db_block_size=8192
db_domain='RAC1'
db_recovery_file_dest='/db/oracle/flash_recovery_area'
db_recovery_file_dest_size=2G
diagnostic_dest='/db/oracle'
dispatchers='(PROTOCOL=TCP) (SERVICE=RAC1XDB)'
open_cursors=300
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
undo_management=auto
# You may want to ensure that control files are created on separate physical
# devices
control_files = ('/db/oracle/oradata/rac1/control01.ctl',
                 '/db/oracle/oradata/rac1/control02.ctl',
                 '/db/oracle/flash_recovery_area/control03.ctl')
compatible ='11.2.0'

注意:参数文件不能包含中文,不然会出现:网络

SQL> startup pfile='/db/oracle/product/11.2.0/db_1/dbs/initRAC1.ora';
LRM-00123: invalid character 146 found in the input file
ORA-01078: failure in processing system parameters

3. 设置环境变量ORACLE_SID

shell> export ORACLE_SID=RAC1
shell> echo $ORACLE_SID
RAC1

4. 建立口令文件

shell> orapwd file=$ORACLE_HOME/dbs/pwdRAC1.ora password=oracle entries=2 force=y

orapwd是Oracle提供的建立口令文件的工具各称,file参数指定口令文件所在的目录和文件名称,
password参数指定sys用户的口令,entries参数指定数据库拥用DBA权限的用户的个数,固然还有一个force参数。
请注意,这里的命令要一行输入,中间不得换行,不然会出现没必要要的错误。
口令文件是专门存放sys用户的口令,由于sys用户要负责建库、启动数据库、关闭数据库等特殊任务,把以sys用户的中令单独存放于口令文件中,这样数据库末打开时也能进行口令验证。oracle

5. 启动数据库到nomount(实例)状态

shell> sqlplus sys/oracle as sysdba
startup nomount
ORA-00845: MEMORY_TARGET not supported on this system

查询资料发现:在oracle 11g中新增的内存自动管理的参数MEMORY_TARGET,它能自动调整SGA和PGA,
这个特性须要用到/dev/shm共享文件系统,并且要求/dev/shm必须大于MEMORY_TARGET,若是/dev/shm
比MEMORY_TARGET小就会报错,能够增大/dev/shm解决

shell> df -h |grep shm
tmpfs                1011M     0 1011M   0% /dev/shm

shell> vi /etc/fstab
将tmpfs /dev/shm tmpfs defaults 0 0修改成
tmpfs  /dev/shm tmpfs   defaults,size=6G  0 0
保存退出
从新mount下shm使其生效
shell> mount -o remount /dev/shm
shell> df -h |grep shm
tmpfs                 6.0G     0  6.0G   0% /dev/shm

SQL> startup nomount
ORACLE instance started.

Total System Global Area 1071333376 bytes
Fixed Size            1341312 bytes
Variable Size          620759168 bytes
Database Buffers      444596224 bytes
Redo Buffers            4636672 bytes

6. 执行建库脚本

执行建库脚本,首先要有建库的脚本。 获得一个符合本身要求的建库脚本有两种方法,一种方法是在本身的电脑上用DBCA来建,接照它的提示一步步地去作,选择“生成建库脚本”,而后就大功告成,你就能够到相应的目录上去找到那个脚本并适当地修它即可便用。另外一种方法就是本身手工去写一份建库脚本,这也是这里要建议使用的方法,用记事本编辑以下的内容,并将其保存为文件名任取然后缀名为(*.sql)的SQL脚本dom

SQL> create database RAC1
     controlfile reuse
     maxinstances 1
     maxloghistory 100
     maxlogfiles 5
     maxlogmembers 5
     maxdatafiles 1000
     character set zhs16gbk national character set al16utf16
     logfile  group 1('/db/oracle/oradata/rac1/redo01.log') size 100m reuse,
              group 2('/db/oracle/oradata/rac1/redo02.log') size 100m reuse,
              group 3('/db/oracle/oradata/rac1/redo03.log') size 100m reuse
    datafile '/db/oracle/oradata/rac1/system.dbf' size 1024m autoextend on next 100m 
             maxsize unlimited
    sysaux datafile '/db/oracle/oradata/rac1/sysaux.dbf' size 1024m autoextend on 
             next 100m maxsize unlimited
    default tablespace users datafile '/db/oracle/oradata/rac1/user01.dbf' size 2048m
         autoextend on next 100m maxsize unlimited extent management local 
         segment space management auto
    default temporary tablespace temp tempfile '/db/oracle/oradata/rac1/temp01.dbf'
        size 100m autoextend on next 10m maxsize unlimited
    undo tablespace UNDOTBS1 datafile '/db/oracle/oradata/rac1/undotbs01.dbf' 
     size 100m autoextend on next 10m maxsize unlimited;

Database created.

在执行create database 语句的同时,自动执行$ORACLE_HOME/rdbms/admin/sql.bsq脚本,建立SYSTEM表空间
和SYSTEM回退段、创建SYS和SYSTEM帐号、创建数据字典基础表、创建数据字典索引、建立预约义角色等。工具

7. 运行数据字典脚本

SQL> spool /home/oracle/create_rac1.log
SQL> @?/rdbms/admin/catalog.sql ;      (建数据字典视图,必须执行)
SQL> @?/rdbms/admin/catproc.sql ;      (建存储过程包,必须执行)
SQL> @?/rdbms/admin/catblock.sql ;   (建锁相关的几个视图,可选择执行)
SQL> @?/rdbms/admin/catoctk.sql ;       (建密码工具包dbms_crypto_toolkit,可选择执行)
SQL> @?/rdbms/admin/owminst.plb ;      (建工做空间管理相关对象,如dmbs_wm,可选择执行)
SQL> spool off

执行完后检查/home/oracle/create_rac1.log看看有什么不可接受的错误没有。

8. 建立sqlplus属性和帮助

在执行pupbld以前要把当前用户(sys)转换成system,即以system帐户链接数据库。由于此数据库是刚建的,因此system的口令是系统默认的口令,即manager。你能够在数据库建好之后再来从新设置此帐户的口令。测试

SQL> connect system/manager
Connected.

SQL> @?/sqlplus/admin/pupbld.sql
SQL> @?/sqlplus/admin/help/hlpbld.sql helpus.sql

9. 修改成归档模式

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> connect /as sysdba
Connected to an idle instance.
SQL> startup mount
ORACLE instance started.

Total System Global Area 1071333376 bytes
Fixed Size                  1341312 bytes
Variable Size             620759168 bytes
Database Buffers          444596224 bytes
Redo Buffers                4636672 bytes
Database mounted.

SQL> alter database archivelog;

SQL> alter database open;

修改数据库默认表空间
SQL> ALTER DATABASE DEFAULT TABLESPACE USERS;

由初始化参数文件建立spfile文件
SQL> create spfile from pfile;

10. 从新编译全部失效过程

SQL> execute utl_recomp.recomp_serial();

PL/SQL procedure successfully completed.

11. 查看数据库的状态信息测试是否安装成功

SQL> select instance_name,status from v$instance;

INSTANCE_NAME    STATUS
---------------- ------------
RAC1             OPEN

1 row selected.

SQL> select tablespace_name,contents,status from dba_tablespaces;

TABLESPACE_NAME                CONTENTS  STATUS
------------------------------ --------- ---------
SYSTEM                         PERMANENT ONLINE
SYSAUX                         PERMANENT ONLINE
UNDOTBS1                       UNDO      ONLINE
TEMP                           TEMPORARY ONLINE
USERS                          PERMANENT ONLINE

5 rows selected.

至此,整个数据库就已经建好了。接着就能够在此数据库上创建本身的帐户和表空间以及数据库对象this

整理自网络

Svoid
2014-11-17
spa