其实在很多环境下是无法打开图形界面的,那么创建数据库只能通过手工的方式来创建。
手工建库可以分为三部分:
先创建实例,口令文件将数据库启动到nomount状态
(1)创建初始化参数文件pfile
首先确定数据库名,然后生成pfile文件。
先进入到$ORACLE_HOME/dbs下面,pfile文件应该放在该目录下面。在Oracle软件安装好之后在该目录下面会自动的生成init.ora这个文件,这个文件就可以当做pfile的一个模板。
[oracle@Database2 dbs]$ cd $ORACLE_HOME/dbs
[oracle@Database2 dbs]$ ls
hc_oradb.dat init.ora snapcf_oradb.f
[oracle@Database2 dbs]$ cat init.ora --查看这个文件里面的内容,这个文件里面的内容就足够创建一个pfile
db_name='ORCL'
memory_target=1G
processes = 150
audit_file_dest='<ORACLE_BASE>/admin/orcl/adump'
audit_trail ='db'
db_block_size=8192
db_domain=''
db_recovery_file_dest='<ORACLE_BASE>/flash_recovery_area'
db_recovery_file_dest_size=2G
diagnostic_dest='<ORACLE_BASE>'
dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)'
open_cursors=300
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
# You may want to ensure that control files are created on separate physical
# devices
control_files = (ora_control1, ora_control2)
compatible ='11.2.0'
[oracle@Database2 dbs]$ vi initoradb.ora --生成pfile文件,这个文件名是init<SID>.ora,将上面的内容复制进去,然后修改里面的内容。
db_name='oradb' --写上数据库名
原来:audit_file_dest='<ORACLE_BASE>/admin/orcl/adump'
修改后:audit_file_dest='$ORACLE_BASE/admin/oradb/adump' --审计文件存放的路径,oradb是实例名字,这个目录是不存在的,需要手工创建这个目录。
[root@Database2 ~]# su - oracle
[oracle@Database2 ~]$ mkdir -p $ORACLE_BASE/admin/oradb/adump --手工创建目录
修改前:diagnostic_dest='<ORACLE_BASE> ' --这个是存放告警日志 ,生成的一些trace文件
修改后:diagnostic_dest='$ORACLE_BASE'
remote_login_passwordfile='EXCLUSIVE' --这个是sys用户远程连接的时候对其身份认证口令文件对其验证,EXCLUSIVE代表可以远程登入。
undo_tablespace='UNDOTBS1' --这个要和建库脚本里面的内容是一样的。
控制文件修改之前:control_files = (ora_control1, ora_control2)
修改之后:control_files = '/u01/app/oracle/oradata/oradb/control01.ctl'
[oracle@Database2 oradb]$ mkdir -p /u01/app/oracle/oradata/oradb --这个目录也可能不存在,要手工创建一下
[oracle@Database2 dbs]$ cat initoradb.ora --修改完之后pfile的内容(pfile文件里面的参数越少越好,这样出错的概率也不会大。)
db_name='oradb'
memory_target=1G
processes = 150
audit_file_dest='$ORACLE_BASE/admin/oradb/adump'
audit_trail ='db'
db_block_size=8192
db_domain=''
diagnostic_dest='$ORACLE_BASE'
dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)'
open_cursors=300
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
control_files = '/u01/app/oracle/oradata/oradb/control01.ctl'
compatible ='11.2.0'
(2)创建口令文件
口令文件是当sys用户远程登入的时候,需要对其身份进行验证,口令文件格式是orapw<SID>
[oracle@Database2 dbs]$ cd $ORACLE_HOME/dbs
[oracle@Database2 dbs]$ ls
hc_oradb.dat init.ora initoradb.ora snapcf_oradb.f
[oracle@Database2 dbs]$ orapwd file=orapworadb entries=3 password=oracle --创建口令文件是使用orapwd这个工具来创建,entries=3代表同时允许具有sysdba权限的三个用户来登入。
file - name of password file (required),
password - password for SYS will be prompted if not specified at command line,
entries - maximum number of distinct DBA (optional),
[oracle@Database2 dbs]$ ls
hc_oradb.dat init.ora initoradb.ora orapworadb snapcf_oradb.f
[oracle@Database2 dbs]$ cat orapworadb
(3)启动实例
[oracle@Database2 dbs]$ export ORACLE_SID=oradb --如果有多个实例,指明启动哪个实例
[oracle@Database2 dbs]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Thu May 24 02:46:16 2018
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup;
ORA-00845: MEMORY_TARGET not supported on this system
下面蓝色部分是调整操作系统的大小解决上面红色的报错
[root@Database2 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_database1-lv_root
23G 9.6G 12G 46% /
tmpfs 1004M 276K 1004M 1% /dev/shm
[root@Database2 ~]# cat /etc/fstab | grep tmpfs
tmpfs /dev/shm tmpfs defaults,size=1700m 0 0
[root@Database2 ~]# mount -o remount /dev/shm
[root@Database2 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_database1-lv_root
23G 9.6G 12G 46% /
tmpfs 1.7G 276K 1.7G 1% /dev/shm
SQL> startup nomount; --修改完之后启动实例到nomount
ORACLE instance started.
Total System Global Area 1068937216 bytes
Fixed Size 2260088 bytes
Variable Size 671089544 bytes
Database Buffers 390070272 bytes
Redo Buffers 5517312 bytes
SQL> show parameter name;
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
cell_offloadgroup_name string
db_file_name_convert string
db_name string oradb
db_unique_name string oradb
global_names boolean FALSE
instance_name string oradb
lock_name_space string
log_file_name_convert string
processor_group_name string
service_names string oradb
上面就是手工建库的第一步,通过创建pfile和口令文件来将数据库启动到nomount状态。
总结:创建pfile面,有些物理路径不存在的需要使用oracle用户手工创建,之后创建口令文件,最后启动实例,在这一步只需要将实例启动到nomount状态,之后接下来手工建库第二步建数据库。