Oracle除自带的DBCA能够建立数据库之外,还能够利用Oracle手动建立数据库,也是做为DBA人员必需要掌握的。
下面就介绍一下手动建立数据库的步骤:sql
下面以建立一个名为“RAC1”的数据库为例shell
shell> cd $ORACLE_BASE; shell> mkdir -p oradata/rac1 #存放数据库文件 shell> mkdir -p flash_recovery_area shell> mkdir -p admin/rac1
数据库系统启动时需要用初始化参数文件的设置分配内存、启动必要的后台进程的。
所以,初始化参数文件建立的是否正确、参数设置是否正确关系着整个建库的“命运”。
建立初始化参数文件能够经过拷贝如今的初始化参数文件并将其作适当的修改便可,从而没必要要用
手工去一句一句地写出来,由于初始化参数文件的结构体系基本上都是同样的。数据库
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
shell> export ORACLE_SID=RAC1 shell> echo $ORACLE_SID RAC1
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
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
执行建库脚本,首先要有建库的脚本。 获得一个符合本身要求的建库脚本有两种方法,一种方法是在本身的电脑上用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帐号、创建数据字典基础表、创建数据字典索引、建立预约义角色等。工具
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看看有什么不可接受的错误没有。
在执行pupbld以前要把当前用户(sys)转换成system,即以system帐户链接数据库。由于此数据库是刚建的,因此system的口令是系统默认的口令,即manager。你能够在数据库建好之后再来从新设置此帐户的口令。测试
SQL> connect system/manager Connected. SQL> @?/sqlplus/admin/pupbld.sql SQL> @?/sqlplus/admin/help/hlpbld.sql helpus.sql
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;
SQL> execute utl_recomp.recomp_serial(); PL/SQL procedure successfully completed.
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-17spa