手动创建oracle数据库

本文档详细介绍了如何手动创建名为PROD的Oracle数据库,包括创建数据库密码文件、参数文件,利用pfile创建spfile,以及执行必要的初始化脚本。同时,强调了自动Undo管理的配置,以避免ORA-01555错误,并支持不同数量的并发用户需求。最后,总结了db_name、db_unique_name、instance_name、service_names和db_domain的区别。
摘要由CSDN通过智能技术生成

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.oraspfile 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值