前几天看小布的手动建库视频,自己也尝试了一下。结果各种悲剧。记录如下:
明确手动建库的步骤:
Creating a Database with the CREATE DATABASE Statement
- Step 1: Specify an Instance Identifier (SID)
- Step 2: Ensure That the Required Environment Variables Are Set
- Step 3: Choose a Database Administrator Authentication Method
- Step 4: Create the Initialization Parameter File
- Step 5: (Windows Only) Create an Instance
- Step 6: Connect to the Instance
- Step 7: Create a Server Parameter File
- Step 8: Start the Instance
- Step 9: Issue the CREATE DATABASE Statement
- Step 10: Create Additional Tablespaces
- Step 11: Run Scripts to Build Data Dictionary Views
- Step 12: (Optional) Run Scripts to Install Additional Options
- Step 13: Back Up the Database.
- Step 14: (Optional) Enable Automatic Instance Startup
2,按照步骤设置环境变量,主要的变量有ORACLE_HOME,ORACLE_SID,ORACLE_BASE。为了不影响之前的库, 我
把这些变量放到
一个可执行文件bbk.env中,这样在安装新库的时候,只用改session的环境变量,而不影响 整个系统的。这个文件的执行是 ".空格./bbk.eng"。注意执行命令是“点,空格,点,杠,文件名”。
bbk.env的内容是:
export PATH ORACLE_SID=bbk
ORACLE_BASE=/u01
ORACLE_HOME=$ORACLE_BASE/oracle
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID ORACLE_BASE ORACLE_HOME LD_LIBRARY_PATH PATH DISPLAY
4,创建pfile,我是直接复制的上一个库的pfile,并把做了一些修改。这里注意ORACLE_SID要和db_name一致。
sam库的initsam.ora
sam.__db_cache_size=67108864
sam.__java_pool_size=4194304
sam.__large_pool_size=4194304
sam.__oracle_base='/u01'#ORACLE_BASE set from environment
sam.__pga_aggregate_target=67108864
sam.__sga_target=201326592
sam.__shared_io_pool_size=0
sam.__shared_pool_size=117440512
sam.__streams_pool_size=4194304
*.audit_file_dest='/u01/admin/sam/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/u01/oradata/sam/control01.ctl','/u01/flash_recovery_area/sam/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='sam'
*.db_recovery_file_dest='/u01/flash_recovery_area'
*.db_recovery_file_dest_size=4039114752
*.diagnostic_dest='/u01'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=samXDB)'
*.open_cursors=300
*.pga_aggregate_target=66060288
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=198180864
bbk的initbbk.ora
bbk.__db_cache_size=67108864
bbk.__java_pool_size=4194304
bbk.__large_pool_size=4194304
bbk.__oracle_base='/u01'#ORACLE_BASE set from environment
bbk.__pga_aggregate_target=67108864
bbk.__sga_target=201326592
bbk.__shared_io_pool_size=0
bbk.__shared_pool_size=117440512
bbk.__streams_pool_size=4194304
*.audit_file_dest='/u01/admin/bbk/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/u01/oradata/bbk/control01.ctl','/u01/flash_recovery_area/bbk/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='bbk'
*.db_recovery_file_dest='/u01/flash_recovery_area'
*.db_recovery_file_dest_size=4039114752
*.diagnostic_dest='/u01'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=bbkXDB)'
*.open_cursors=300
*.pga_aggregate_target=66060288
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=198180864
6,连接实例
sqlplus /nolog
SQL> conn /as sysdba
7,创建spfile。其实这里可以不创建spfile,而用pfile直接启动。
SQL> create spfile from pfile;
8,启动实例。 因为是创建数据库,所以要在nomount状态下执行。
SQL>startup nomount
从这里悲剧开始了:
startup nomount时出现错误:
ORA-09925: Unable to create audit trail file
Linux Error: 2: No such file or directory
Linux Error: 2: No such file or directory
既然提示的是no file,则可能是OS中没有在initpfile.ora提到的目录,或文件,于是到这些目录中去验证是否有这些目录。发现是有这些目录的。又想到,会不会是这些目录的用户、用户组不是oracle,oinstall。ll后发现,这些目录真的不在oracle用户下,用户组也不是oinstall。那就赋权呗! 再次startup nomount 成功!
9,执行create database命令。这个命令我用的是联机文档中的example 1,并对各个文件的大小作出了一定修改(正式这些修改又让我慌了半天)。命令如下:
CREATE DATABASE bbk
USER SYS IDENTIFIED BY sys_password
USER SYSTEM IDENTIFIED BY system_password
LOGFILE GROUP 2 ('/u01/oradata/bbk/redo01a.log','/u01/oradata/bbk/redo01b.log') SIZE 10M BLOCKSIZE 512,
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
MAXDATAFILES 100
CHARACTER SET US7ASCII
NATIONAL CHARACTER SET AL16UTF16
EXTENT MANAGEMENT LOCAL
DATAFILE '/u01/oradata/bbk/system01.dbf' SIZE 50M REUSE
SYSAUX DATAFILE '/u01/oradata/bbk/sysaux01.dbf' SIZE 32M REUSE
DEFAULT TABLESPACE users
DATAFILE '/u01/oradata/bbk/users01.dbf'
SIZE 50M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE tempts1
TEMPFILE '/u01/oradata/bbk/temp01.dbf'
SIZE 20M REUSE
UNDO TABLESPACE undotbs
DATAFILE '/u01/oradata/bbk/undotbs01.dbf'
SIZE 20M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
这一步也没有报错。
11,执行脚本:
@?/rdbms/admin/catalog.sql @?/rdbms/admin/catproc.sql @?/sqlplus/admin/pupbld.sql
执行完这三个脚本,等我重新startup的时候,开始报错了。
ORA-00704: bootstrap process failure
ORA-39700: database must be opened with UPGRADE option
那就用upgrade启动呗!
SQL>startup upgrade
这样数据库确实启动了,也能使用。但这不是我想要的。在网上搜的多是说,在数据库升级的时候碰到这种情况,执行
SQL>@?/rdbms/admin/catupgrd.sql
SQL>@?/rdbms/admin/catalog.sql
SQL>@?/rdbms/admin/catproc.sql
SQL>@?/rdbms/admin/utlrp.sql
这几个脚本后,重启数据库就行了。可是我这样干后,就是不行,还是ORA-39700错误。
后来在http://orcl.tistory.com/entry/ORA-00704-bootstrap-process-failure-ORA-39700里发现有这么一句:
Tablespaces: [make adjustments in the current environment] ********************************************************************** --> SYSTEM tablespace is adequate for the upgrade. .... minimum required size: 505 MB
我嘞个去。我把system01.dbf改成了50M!!!!!!!!!!! 那就改回来,重新建一次。
这回一路畅通,没错了。