这两天练习了下手工建立ORACLE数据库,这里列出了ORACLE 11g的官方文档的步骤,并且加了些自己的心得和总结。
Step 1: Specify an Instance Identifier (SID)
export ORACLE_SID=panda
Step 2: Ensure That the Required Environment Variables Are Set
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
前面两步都是设置环境变量,可以把环境变量写到oracle用户的.base_profile文件中,这样每次进入oracle用户会自动加载环境变量。
Step 3: Choose a Database Administrator Authentication Method
这一步可以建立口令文件以便以后可以dba用户远程登录。口令文件的建立方法这里就不说了。
Step 4: Create the Initialization Parameter File
在$ORACLE_HOME/dbs下建立ora<sid>.ora初始化参数文件。
官方文档建议要有DB_NAME,CONTROL_FILES,MEMORY_TARGET三个参数。
实际上可以设置更少的参数,分以下三种情况:
1)、如果后面创建数据库(CREATE DATABASE)时不选择OMF,那么这时最少只需要设置DB_NAME这一个初始化参数可以,在建立数据库(create database)时,会在与初始化参数文件一样的位置建立一个控制文件cntrl<sid>.ctl。这样建立的数据库没有控制文件冗余,如果你想要有控制文件冗余,就得用CONTRIL_FILES参数去设置多个控制文件。
2)、如果后面创建数据库(CREATE DATABASE)时选择OMF,并且后面没有创建spfile,那么这时最少需要设置DB_NAME、CONTROL_FILES两个初始化参数,如果只设置DB_NAME一个参数,数据库也是可以成功建立的,但是在数据库重启时会因为找不到控制文件而启动失败(原因就是初始化参数文件中没有控制文件记录)。
3)、如果后面创建数据库(CREATE DATABASE)时选择OMF,并且后面创建了spfile,那么就只需要DB_NAME一个参数就可以了。数据库会把生成的控制文件记录在spfile中。
建议至少使用DB_NAME与CONTROL_FILES两个参数,这样可以在创建数据库时选择让数据库冗余控制文件,并且可以在没有创建spfile和使用OMF的情况下,不至于导致数据库重启时找不到控制文件而启动不了。
如:DB_NAME=panda
CONTROL_FILES=(/u01/oracle/prod/control01.ctl,/u02/oracle/prod/control01.ctl)
$SQL> CONNECT SYS AS SYSDBA
Connected to an idle instance.
Step 7: Create a Server Parameter File
这一步不是必须的,但是为了后面的使用方便强烈建议建立spfile.
如果你是按照前面第四步在$ORACLE_HOME/dbs下建立ora<sid>.ora初始化参数文件。那么只需要执行下面语句建立spfile.
CREATE SPFILE FROM PFILE;
Step 8: Start the Instance
STARTUP NOMOUNT
Step 9: Issue the CREATE DATABASE Statement
a)以非OMF建立的数据库
CREATE DATABASE panda
USER SYS IDENTIFIED BY sys_password
USER SYSTEM IDENTIFIED BY system_password
LOGFILE GROUP 1 ('/u01/logs/my/redo01a.log','/u02/logs/my/redo01b.log') SIZE 100M BLOCKSIZE 512,
GROUP 2 ('/u01/logs/my/redo02a.log','/u02/logs/my/redo02b.log') SIZE 100M BLOCKSIZE 512,
GROUP 3 ('/u01/logs/my/redo03a.log','/u02/logs/my/redo03b.log') SIZE 100M BLOCKSIZE 512
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 200
MAXDATAFILES 100
CHARACTER SET AL32UTF8
NATIONAL CHARACTER SET AL16UTF16
EXTENT MANAGEMENT LOCAL
DATAFILE '/u01/app/oracle/oradata/panda/system01.dbf' SIZE 325M REUSE
SYSAUX DATAFILE '/u01/app/oracle/oradata/panda/sysaux01.dbf' SIZE 325M REUSE
DEFAULT TABLESPACE users
DATAFILE '/u01/app/oracle/oradata/panda/users01.dbf'
SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE tempts1
TEMPFILE '/u01/app/oracle/oradata/panda/temp01.dbf'
SIZE 20M REUSE
UNDO TABLESPACE undotbs
DATAFILE '/u01/app/oracle/oradata/panda/undotbs01.dbf'
SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
注意: 1)控制文件时这时生成的,初始化参数文件中的CONTROL_FILES指定了控制文件的数量和位置。如果初始化参数文件这个参数未设置,则会在与初始化参数文件相同的位置建立控制文件。
2)建立数据库相关的目录必须提前建立好,并且要有权限
3)创建数据库语句只能建立SYS与SYSTEM两个用户
4)日志组的块大小可以不指定,如果不指定则会取磁盘的一个扇区的大小作为块大小。
5)MAXLOGHISTORY参数可以稍微给大一点,如200
6)如果不指定EXTENT MANAGEMENT LOCAL语句,那么system表空间会默认使用字典管理的表空间,强烈建议使用本地表空间管理。
7)默认的users表空间可以不先不建立,在建库完成后再建立也可以
8)undo表空间不建议使用AUTOEXTEND ON MAXSIZE UNLIMITED字句,这样可能会导致UNDO过段时间变得很大,可是设置一个稍微大点的固定大小的值。
DB_CREATE_FILE_DEST='/u01/app/oracle/oradata'
CREATE DATABASE panda
USER SYS IDENTIFIED BY sys_password
USER SYSTEM IDENTIFIED BY system_password
EXTENT MANAGEMENT LOCAL
DEFAULT TEMPORARY TABLESPACE temp
UNDO TABLESPACE undotbs1
DEFAULT TABLESPACE users;
Step 10: Create Additional Tablespaces
这一步是可选的,可以在业务使用时再去建立需要的表空间。
CREATE TABLESPACE apps_tbs LOGGING
DATAFILE '/u01/app/oracle/oradata/panda/apps01.dbf'
SIZE 500M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL;
-- create a tablespace for indexes, separate from user tablespace (optional)
CREATE TABLESPACE indx_tbs LOGGING
DATAFILE '/u01/app/oracle/oradata/panda/indx01.dbf'
SIZE 100M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL;
Step 11: Run Scripts to Build Data Dictionary Views
@?/rdbms/admin/catalog.sql
@?/rdbms/admin/catproc.sql
conn system/sys_password
@?/sqlplus/admin/pupbld.sql
注意:
CATALOG.SQL:Creates the views of the data dictionary tables, the dynamic performance views, and public synonyms for many of the views. Grants PUBLIC access to the synonyms.
CATPROC.SQL:Runs all scripts required for or used with PL/SQL.
PUPBLD.SQL:Required for SQL*Plus. Enables SQL*Plus to disable commands by user.
到这里数据库已经建立完成了,后面的可以根据自己的需要去做。
Step 12: (Optional) Run Scripts to Install Additional Options
Step 13: Back Up the Database.
Step 14: (Optional) Enable Automatic Instance Startup
Step 1: Specify an Instance Identifier (SID)
export ORACLE_SID=panda
Step 2: Ensure That the Required Environment Variables Are Set
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
注意:这个ORACLE_HOME是安装好的ORACLE软件的home,不是随便乱设置的。前面两步都是设置环境变量,可以把环境变量写到oracle用户的.base_profile文件中,这样每次进入oracle用户会自动加载环境变量。
Step 3: Choose a Database Administrator Authentication Method
这一步可以建立口令文件以便以后可以dba用户远程登录。口令文件的建立方法这里就不说了。
Step 4: Create the Initialization Parameter File
在$ORACLE_HOME/dbs下建立ora<sid>.ora初始化参数文件。
官方文档建议要有DB_NAME,CONTROL_FILES,MEMORY_TARGET三个参数。
实际上可以设置更少的参数,分以下三种情况:
1)、如果后面创建数据库(CREATE DATABASE)时不选择OMF,那么这时最少只需要设置DB_NAME这一个初始化参数可以,在建立数据库(create database)时,会在与初始化参数文件一样的位置建立一个控制文件cntrl<sid>.ctl。这样建立的数据库没有控制文件冗余,如果你想要有控制文件冗余,就得用CONTRIL_FILES参数去设置多个控制文件。
2)、如果后面创建数据库(CREATE DATABASE)时选择OMF,并且后面没有创建spfile,那么这时最少需要设置DB_NAME、CONTROL_FILES两个初始化参数,如果只设置DB_NAME一个参数,数据库也是可以成功建立的,但是在数据库重启时会因为找不到控制文件而启动失败(原因就是初始化参数文件中没有控制文件记录)。
3)、如果后面创建数据库(CREATE DATABASE)时选择OMF,并且后面创建了spfile,那么就只需要DB_NAME一个参数就可以了。数据库会把生成的控制文件记录在spfile中。
建议至少使用DB_NAME与CONTROL_FILES两个参数,这样可以在创建数据库时选择让数据库冗余控制文件,并且可以在没有创建spfile和使用OMF的情况下,不至于导致数据库重启时找不到控制文件而启动不了。
如:DB_NAME=panda
CONTROL_FILES=(/u01/oracle/prod/control01.ctl,/u02/oracle/prod/control01.ctl)
Step 5: (Windows Only) Create an Instance
Step 6: Connect to the Instance$SQL> CONNECT SYS AS SYSDBA
Connected to an idle instance.
Step 7: Create a Server Parameter File
这一步不是必须的,但是为了后面的使用方便强烈建议建立spfile.
如果你是按照前面第四步在$ORACLE_HOME/dbs下建立ora<sid>.ora初始化参数文件。那么只需要执行下面语句建立spfile.
CREATE SPFILE FROM PFILE;
Step 8: Start the Instance
STARTUP NOMOUNT
Step 9: Issue the CREATE DATABASE Statement
a)以非OMF建立的数据库
CREATE DATABASE panda
USER SYS IDENTIFIED BY sys_password
USER SYSTEM IDENTIFIED BY system_password
LOGFILE GROUP 1 ('/u01/logs/my/redo01a.log','/u02/logs/my/redo01b.log') SIZE 100M BLOCKSIZE 512,
GROUP 2 ('/u01/logs/my/redo02a.log','/u02/logs/my/redo02b.log') SIZE 100M BLOCKSIZE 512,
GROUP 3 ('/u01/logs/my/redo03a.log','/u02/logs/my/redo03b.log') SIZE 100M BLOCKSIZE 512
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 200
MAXDATAFILES 100
CHARACTER SET AL32UTF8
NATIONAL CHARACTER SET AL16UTF16
EXTENT MANAGEMENT LOCAL
DATAFILE '/u01/app/oracle/oradata/panda/system01.dbf' SIZE 325M REUSE
SYSAUX DATAFILE '/u01/app/oracle/oradata/panda/sysaux01.dbf' SIZE 325M REUSE
DEFAULT TABLESPACE users
DATAFILE '/u01/app/oracle/oradata/panda/users01.dbf'
SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE tempts1
TEMPFILE '/u01/app/oracle/oradata/panda/temp01.dbf'
SIZE 20M REUSE
UNDO TABLESPACE undotbs
DATAFILE '/u01/app/oracle/oradata/panda/undotbs01.dbf'
SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
注意: 1)控制文件时这时生成的,初始化参数文件中的CONTROL_FILES指定了控制文件的数量和位置。如果初始化参数文件这个参数未设置,则会在与初始化参数文件相同的位置建立控制文件。
2)建立数据库相关的目录必须提前建立好,并且要有权限
3)创建数据库语句只能建立SYS与SYSTEM两个用户
4)日志组的块大小可以不指定,如果不指定则会取磁盘的一个扇区的大小作为块大小。
5)MAXLOGHISTORY参数可以稍微给大一点,如200
6)如果不指定EXTENT MANAGEMENT LOCAL语句,那么system表空间会默认使用字典管理的表空间,强烈建议使用本地表空间管理。
7)默认的users表空间可以不先不建立,在建库完成后再建立也可以
8)undo表空间不建议使用AUTOEXTEND ON MAXSIZE UNLIMITED字句,这样可能会导致UNDO过段时间变得很大,可是设置一个稍微大点的固定大小的值。
b)以OMF建立的数据库
如果使用OMF还需要在初始化参数文件中指定DB_CREATE_FILE_DESTDB_CREATE_FILE_DEST='/u01/app/oracle/oradata'
CREATE DATABASE panda
USER SYS IDENTIFIED BY sys_password
USER SYSTEM IDENTIFIED BY system_password
EXTENT MANAGEMENT LOCAL
DEFAULT TEMPORARY TABLESPACE temp
UNDO TABLESPACE undotbs1
DEFAULT TABLESPACE users;
Step 10: Create Additional Tablespaces
这一步是可选的,可以在业务使用时再去建立需要的表空间。
CREATE TABLESPACE apps_tbs LOGGING
DATAFILE '/u01/app/oracle/oradata/panda/apps01.dbf'
SIZE 500M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL;
-- create a tablespace for indexes, separate from user tablespace (optional)
CREATE TABLESPACE indx_tbs LOGGING
DATAFILE '/u01/app/oracle/oradata/panda/indx01.dbf'
SIZE 100M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL;
Step 11: Run Scripts to Build Data Dictionary Views
@?/rdbms/admin/catalog.sql
@?/rdbms/admin/catproc.sql
conn system/sys_password
@?/sqlplus/admin/pupbld.sql
注意:
CATALOG.SQL:Creates the views of the data dictionary tables, the dynamic performance views, and public synonyms for many of the views. Grants PUBLIC access to the synonyms.
CATPROC.SQL:Runs all scripts required for or used with PL/SQL.
PUPBLD.SQL:Required for SQL*Plus. Enables SQL*Plus to disable commands by user.
到这里数据库已经建立完成了,后面的可以根据自己的需要去做。
Step 12: (Optional) Run Scripts to Install Additional Options
Step 13: Back Up the Database.
Step 14: (Optional) Enable Automatic Instance Startup