Section 0 :创建数据库(即手动建库)
1. Create a database the sid name is PROD
2. Don’t run the Script catalog.sql and catproc.sql
一、查看ORALCE_SID=PROD
[oracle@slmdeep ~]$ echo $ORACLE_SID
pfd
[oracle@slmdeep ~]$ vim .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=PROD
export ORACLE_HOSTNAME=slmdeep
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_TERM=xterm
export PATH=/usr/sbin:$PATH
export OPATCH_HOME=$ORACLE_HOME/OPatch
export PATH=$ORACLE_HOME/bin:$PATH:$OPATCH_HOME
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export EDITOR=vi
export LANG=en_US
export NLS_LANG=american_america.AL32UTF8
export NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'
alias sqlplus="rlwrap sqlplus"
umask 022
[oracle@slmdeep ~]$source /home/oracle/.bash_profile
[oracle@slmdeep ~]$ env |grep ORACLE_SID
ORACLE_SID=PROD
[oracle@slmdeep ~]$
二、创建数据库密码文件
[oracle@slmdeep ~]$ cd $ORACLE_HOME/dbs
[oracle@slmdeep dbs]$ ll
total 8
drwxr-xr-x 2 oracle oinstall 4096 Mar 22 18:33 history
-rw-r--r-- 1 oracle oinstall 2851 May 15 2009 init.ora
[oracle@slmdeep dbs]$ orapwd file=orapwdPROD password=oracle entries=30
[oracle@slmdeep dbs]$ ll
total 16
drwxr-xr-x 2 oracle oinstall 4096 Mar 22 18:33 history
-rw-r--r-- 1 oracle oinstall 2851 May 15 2009 init.ora
-rw-r----- 1 oracle oinstall 5120 Mar 22 18:55 orapwdPROD
[oracle@slmdeep dbs]$ mkdir -p $ORACLE_HOME/admin/PROD/adump
[oracle@slmdeep dbs]$ mkdir -p $ORACLE_HOME/admin/PROD/bdump
[oracle@slmdeep dbs]$ mkdir -p $ORACLE_HOME/admin/PROD/cdump
[oracle@slmdeep dbs]$ mkdir -p $ORACLE_HOME/admin/PROD/udump
[oracle@slmdeep dbs]$ ll $ORACLE_HOME/admin/PROD/
total 16
drwxr-xr-x 2 oracle oinstall 4096 Mar 22 18:56 adump
drwxr-xr-x 2 oracle oinstall 4096 Mar 22 18:56 bdump
drwxr-xr-x 2 oracle oinstall 4096 Mar 22 18:56 cdump
drwxr-xr-x 2 oracle oinstall 4096 Mar 22 18:57 udump
[oracle@slmdeep dbs]$
三、创建参数文件
客户端字符集环境
SELECT * FROM V$NLS_PARAMETERS;
SELECT USERENV(‘language’) FROM DUAL;
USERENV、 V$NLS_PARAMETERS表示当前字符集环境。如果你在客户端执行,则表示客户端字符集环境。
cluster_database=false
#cluster_database 默认为false。可选值true | false
compatible=11.2.0
#COMPATIBLE = release_number
control_files=('<ORACLE_BASE>/oradata/<ORACLE_SID>/control01.ctl','<ORACLE_BASE>/flash_recovery_area/<ORACLE_SID>/control02.ctl')
#control file 文件的位置,建议创建2个以上。每个控制文件其实都是一样的,这样可以起一个备份的作用。
db_block_size=8192
#为数据库数据库block大小,默认大小8192 。数值可以为2048~32768之间的任意值。但是要为系统block大小的整数倍
db_create_file_dest='<ORACLE_BASE>/oradata/<ORACLE_SID>'
#创建数据文件时,指定默认存放数据文件的位置
db_create_online_log_dest_1='<ORACLE_BASE>/oradata/<ORACLE_SID>'
#创建数据库时,redo logfile默认存放的位置
db_domain='domain.net'
#在网络结构中指定数据库的逻辑位置。在cluster中,最好指定下。
db_name='PROD'
#设置database_name 最多8个字符,必须和create database database_name一致。alter database database_name mount.
db_recovery_file_dest='<ORACLE_BASE>/flash_recovery_area'
db_recovery_file_dest_size=4G
db_unique_name='pfd'
#在企业内部,db_unique_name必须唯一。最多30个字符,不区分大小写
instance_number=0
#如果不是创建rac,默认为0。
job_queue_processes=10
#指定可以为执行作业创建的最大进程数。 它指定每个实例(J000,... J999)的作业队列进程数
log_archive_dest_n='location=<ORACLE_BASE>/fast_recovery_area/arch'
#设置archive_log归档日志的位置。但需要对应log_archive_dest_state_n 设置为enable 或者 disabled
log_archive_dest_state_n=
#与上面log_archive_dest_n对应,需要开启就enable,关闭就disabled
nls_language=american_america.AL32UTF8
#指定数据库nls_language。
nls_territory='AMERICA'
#指定为AMERICA
open_cursors=300
#可以打开cursors的最大数
pag_aggregate_target=654311424
#10 MB or 20% of the size of the SGA,会自动选择较大的。连接到实例的所有服务器进程可用的目标聚合PGA内存。设置此参数时,应检查系统上可用#于Oracle实例的总内存,并减去SGA。您可以将剩余的内存分配给PGA_AGGREGATE_TARGET。将PGA_AGGREGATE_TARGET设置为0会自动将WORKAREA_SIZE_POLICY参数设置为MANUAL。
processes=150
#PROCESSES指定可以同时连接到Oracle的最大操作系统用户进程数。 它的值应允许所有后台进程,如锁,作业队列进程和并行执行进程。
remote_listener=
#该网络名称解析为Oracle Net远程侦听器的地址或地址列表。
remote_login_passwordfile='EXCLUSIVE'
#值为'NONE'、'SHARED'、'EXCLISIVE'.NONE,Oracle忽略任何密码文件。 因此,特权用户必须由操作系统认证。shared,一个或者多个数据库可以使用密码文件。
rollback_segments=
#当UNDO_MANAGEMENT设置为AUTO时,忽略ROLLBACK_SEGMENTS。
sessions=
#这个参数有效地确定了系统中并发用户的最大数量
aga_target=
#自动管理开启时,这个参数失效。
shared_servers=
#设置数据库连接模式为shared模式还是indicated模式。0为专用,而1或者2为共享模式。
star_transformation_enabled=
#确定是否将基于成本的查询转换应用于星型查询。TRUE、FALSE、TEMP_DISABLE
undo_management='AUTO'
undo_tablespace='UNDOTBS1'
四、利用pfile创建spfile,然后强制用spfile启动
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 221331456 bytes
Fixed Size 2251856 bytes
Variable Size 163578800 bytes
Database Buffers 50331648 bytes
Redo Buffers 5169152 bytes
SQL> create spfile from pfile;
File created.
SQL> select distinct isspecified from v$spparameter;
ISSPECIFIED
------------------
FALSE
表明为pfile启动的
SQL> shutdown immediate;
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 221331456 bytes
Fixed Size 2251856 bytes
Variable Size 163578800 bytes
Database Buffers 50331648 bytes
Redo Buffers 5169152 bytes
SQL> show parameter spfile
NAME TYPE VALUE
------------- ------------ ------------------------------
spfile string /u01/app/oracle/product/11.2.0/db_1/dbs/spfilePROD.ora
[oracle@slmdeep PROD]$ pwd
/u01/app/oracle/oradata/PROD
[oracle@slmdeep PROD]$ ll
total 0
五、创建数据库脚本:
执行之前,要注意control file文件必须不存在。因为下面的脚本创建时会自动创建control文件。
SQL>CREATE DATABASE PROD1
USER SYS IDENTIFIED BY oracle
USER SYSTEM IDENTIFIED BY oracle
LOGFILE GROUP 1 ('/u01/app/oracle/oradata/PROD/redo01.log') SIZE 100M,
GROUP 2 ('/u01/app/oracle/oradata/PROD/redo02.log') SIZE 100M,
GROUP 3 ('/u01/app/oracle/oradata/PROD/redo03.log') SIZE 100M
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
MAXDATAFILES 100
MAXINSTANCES 1
CHARACTER SET AL32UTF8
NATIONAL CHARACTER SET AL16UTF16
DATAFILE '/u01/app/oracle/oradata/PROD/system01.dbf' SIZE 325M REUSE
EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE '/u01/app/oracle/oradata/PROD/sysaux01.dbf' SIZE 325M REUSE
DEFAULT TEMPORARY TABLESPACE temp01
TEMPFILE '/u01/app/oracle/oradata/PROD/temp01.dbf'
SIZE 20M REUSE
UNDO TABLESPACE undotbs1
DATAFILE '/u01/app/oracle/oradata/PROD/undotbs01.dbf'
SIZE 100M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
Database created.
1.1 Run the minimum required scripts to complete the basic configuration of the PROD database.
SQL> @$ORACLE_HOME/rdbms/admin/catalog.sql
SQL> @$ORACLE_HOME/rdbms/admin/catproc.sql
还记得我们在手工建库的时候,运行的两个脚本文件。一个是catalog.sql,另一个是catproc.sql。catalog.sql是用来创建数据库的内部字典表的。catproc.sql是用来创建数据库的内建的存储过程和一些view。
1.2 Set up automatic undo management in the PROD database to support the following requirements:
1.2.1 Avoid ORA-01555 Snapshot too old errors for queries running up to 90 minues on average.
SQL> alter system set undo_retention=5400
System altered.
1.2.2 The number or concurrent OLTP users will be approximately 120 during normal business hours.
SQL> alter system set processes=140 scope=spfile;
System altered.
1.2.3 The number or concurrent batch processes that will run in the evenings and weekends will approximately 12 to 15
SQL> alter system set job_queue_processes=15;
System altered.
总结 : db_name,db_unique_name,instance_name,service_names,db_domain
区别
initPROD.ora
1. ORACLE_SID=PROD
在一定程度上只是用来,数据库启动初始化时方便找init
ORACLESID.ora或者spfile
ORACLE_SID.ora用的
2. db_name:PROD1 //数据库的名称
3. db_unique_name:pfd //在一个企业网络,这个名字必须唯一!
4. instance_name:PROD //这个基本和oracle_id保持一致 在10G中就取消了在pfile文件的配置。
5. db_domain:domain.net
6. service_names:pfd.domain.net //db_unique_name.db_domain