一般而言,所谓的手工安装数据库是先安装好Oracle应用程序,然后再创建数据库。
这里所谓的纯手工安装Oracle服务器是指除了不用自己从源码编译应用程序,其他都自己动手:不使用UI来安装执行程序,不使用DBCA来安装实例和数据库,取而代之的是完全手工配置,手工安装Oracle Service、修改注册表、安装实例和数据库等。
这种安装方式只是为了亲身体验一番Oracle数据库的安装过程,详细了解GUI背后的工作。
* 这不应该在产品服务器上尝试,纯属体验:) *
主要分为两个主要步骤:创建实例和创建数据库。
1. 选择一台安装好Oracle的服务器,拷贝可执行程序。
需要拷贝的是ORACLE_HOME下的程序,如C:\oracle\product\10.2.0\db_1。
不需要拷贝数据文件、联机日志、归档日志、Flashback区域中的文件等,一来因为容量问题,二来这些都可以在事后创建——如果完整拷贝就失去意义了。总的文件大小应该少于1G,否则很可能是拷贝了包含数据库数据的文件。
2. 创建用户组:ORA_DBA,并将当前用户加入ORA_DBA用户组。
3. 将程序目录C:\oracle\product\10.2.0\db_1\BIN 加入PATH变量。
4. 添加注册表内容,如ORACLE_BASE,ORACLE_HOME等。
例子:
[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE]
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE]
"inst_loc"="C:\\Program Files\\Oracle\\Inventory"
[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1]
"ORACLE_HOME"="c:\\oracle\\product\\10.2.0\\db_1"
"ORACLE_HOME_NAME"="OraDb10g_home1"
"ORACLE_GROUP_NAME"="Oracle - OraDb10g_home1"
"NLS_LANG"="AMERICAN_AMERICA.AL32UTF8"
"ORACLE_BUNDLE_NAME"="Enterprise"
"SQLPATH"="c:\\oracle\\product\\10.2.0\\db_1\\dbs"
"ORACLE_HOME_KEY"="SOFTWARE\\ORACLE\\KEY_OraDb10g_home1"
"MSHELP_TOOLS"="c:\\oracle\\product\\10.2.0\\db_1\\MSHELP"
"ORACLE_BASE"="c:\\oracle\\product\\10.2.0"
"RDBMS_CONTROL"="c:\\oracle\\product\\10.2.0\\db_1\\DATABASE"
"RDBMS_ARCHIVE"="c:\\oracle\\product\\10.2.0\\db_1\\DATABASE\\ARCHIVE"
"ORACLE_SID"="MISSBB"
"ORA_MISSBB_AUTOSTART"=hex(2):54,00,52,00,55,00,45,00,00,00
"ORA_MISSBB_SHUTDOWN"=hex(2):54,00,52,00,55,00,45,00,00,00
"ORA_MISSBB_SHUTDOWN_TIMEOUT"=hex(2):39,00,30,00,00,00
"ORA_MISSBB_SHUTDOWNTYPE"=hex(2):69,00,6d,00,6d,00,65,00,64,00,69,00,61,00,74,\
00,65,00,00,00
[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\SYSMAN]
[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\SYSMAN\OracleDBConsoleMISSBB]
"EMDROOT"="c:\\oracle\\product\\10.2.0\\db_1"
"ORACLE_HOME"="c:\\oracle\\product\\10.2.0\\db_1"
"EMSTATE"="c:\\oracle\\product\\10.2.0\\db_1\\myhost.cn.madm.net_MISSBB"
"CONSOLE_CFG"="dbconsole"
"ORACLE_SID"="MISSBB"
"TIMEOUT"="15"
"TRACE_LEVEL"="16"
5. 配置listener。
示例:
listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = MISSBB.CN.MYDOMAIN.NET)
(ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
(SID_NAME = MISSBB)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = haz11wstedp011)(PORT = 1521))
)
tnsnames.ora
MISSBB.CN.MYDOMAIN.NET =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = haz11wstedp011)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = MISSBB.CN.MYDOMAIN.NET)
)
)
启动listener:
CMD> lsnrctl start
此步会创建OracleOraDb10g_home1TNSListener服务(手工),并启动。
6. 创建Oracle Service。
CMD> oradim -NEW -SID MISSBB
如果不想自动启动,可以添加参数-STARTMODE:
CMD> oradim -NEW -SID MISSBB -STARTMODE MANUAL
此步会创建OracleServiceMISSBB服务(手动),并启动。
到此,一个SID为MISSBB的Oracle实例已经创建完毕。可以用sqlplus登录来创建数据库。
接下来可以创建数据库了。
—————————————————–
7. 先创建Server Parameter文件
这个文件可以修改自默认的init.ora,也可以从其他数据CREATE PFILE FROM
SPFILE创建,大牛的话自己写一个好了。需要注意的是:
1) 参数undo_tablespace需要修改成与你将创建的数据库中的Undo Tablespace名字相同。
2) 一些目录如控制文件、数据文件等都需要再次检查一下,否则可能导致实例终止。
8. 启动实例并创建数据库。
SQL> conn sys/manager as sysdba
Connected to an idle instance.
SQL> startup nomount
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1247876 bytes
Variable Size 71304572 bytes
Database Buffers 88080384 bytes
Redo Buffers 7139328 bytes
SQL> CREATE DATABASE missbb
2 USER SYS IDENTIFIED BY manager
3 USER SYSTEM IDENTIFIED BY manager
4 LOGFILE GROUP 1 ('C:/oracle/oradata/missbb/redo01.log') SIZE 100M
reuse,
5 GROUP 2 ('C:/oracle/oradata/missbb/redo02.log') SIZE 100M reuse,
6 GROUP 3 ('C:/oracle/oradata/missbb/redo03.log') SIZE 100M reuse
7 MAXLOGFILES 5
8 MAXLOGMEMBERS 5
9 MAXLOGHISTORY 1
10 MAXDATAFILES 100
11 MAXINSTANCES 1
12 CHARACTER SET AL32UTF8
13 NATIONAL CHARACTER SET AL16UTF16
14 DATAFILE 'C:/oracle/oradata/missbb/system01.dbf' SIZE 325M REUSE
15 EXTENT MANAGEMENT LOCAL
16 SYSAUX DATAFILE 'C:/oracle/oradata/missbb/sysaux01.dbf' SIZE 325M
REUSE
17 DEFAULT TABLESPACE tbs_1
18 DEFAULT TEMPORARY TABLESPACE temp01
19 TEMPFILE 'C:/oracle/oradata/missbb/temp01.dbf' SIZE 20M REUSE
20 UNDO TABLESPACE undo01
21 DATAFILE 'C:/oracle/oradata/missbb/undo01.dbf' SIZE 200M REUSE
22 AUTOEXTEND ON MAXSIZE 1G
23 /
Database created.
9. 事后的简单调整。比如创建、修改表空间、数据文件等。
SQL> select * from v$tablespace;
TS# NAME INC BIG FLA ENC
---------- ------------------------------ --- --- --- ---
0 SYSTEM YES NO YES
1 UNDO01 YES NO YES
2 SYSAUX YES NO YES
3 TEMP01 NO NO YES
4 TBS_1 YES NO YES
SQL> select file#,ts#,status,name from v$datafile;
FILE# TS# STATUS NAME
------ --- ------- ----------------------------------------
1 0 SYSTEM C:\ORACLE\ORADATA\MISSBB\SYSTEM01.DBF
2 1 ONLINE C:\ORACLE\ORADATA\MISSBB\UNDO01.DBF
3 2 ONLINE C:\ORACLE\ORADATA\MISSBB\SYSAUX01.DBF
4 4 ONLINE
C:\ORACLE\ORADATA\MISSBB\DATAFILE\O1_MF_TBS_1_2783TJ0V_.DBF
因为在CREATE DATABASE语句中没有指定DEFAULT TABLESPACE tbs_1的datafile,Oracle自行创建了O1_MF_TBS_1_2783TJ0V_.DBF,路径为参数 db_create_file_dest设定的C:\oracle\oradata。
SQL> alter database
2 datafile 'C:\ORACLE\ORADATA\MISSBB\DATAFILE\O1_MF_TBS_1_2783TJ0V_.DBF'
offline;
alter database datafile
'C:\ORACLE\ORADATA\MISSBB\DATAFILE\O1_MF_TBS_1_2783TJ0V_.DBF' offline
*
ERROR at line 1:
ORA-01145: offline immediate disallowed unless media recovery enabled
先激活归档模式才能修改数据文件。将实例启动到mount状态:
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1247876 bytes
Variable Size 71304572 bytes
Database Buffers 88080384 bytes
Redo Buffers 7139328 bytes
Database mounted.
SQL> alter database archivelog;
Database altered.
SQL> alter database
2 datafile 'C:\ORACLE\ORADATA\MISSBB\DATAFILE\O1_MF_TBS_1_2783TJ0V_.DBF'
3 offline;
Database altered.
SQL> alter database rename
2 file 'C:\ORACLE\ORADATA\MISSBB\DATAFILE\O1_MF_TBS_1_2783TJ0V_.DBF'
3 to 'C:\ORACLE\ORADATA\MISSBB\tbs01.dbf';
Database altered.
SQL> select file#,ts#,status,name from v$datafile;
FILE# TS# STATUS NAME
--------- ---------- ------- ----------------------------------------
1 0 SYSTEM C:\ORACLE\ORADATA\MISSBB\SYSTEM01.DBF
2 1 ONLINE C:\ORACLE\ORADATA\MISSBB\UNDO01.DBF
3 2 ONLINE C:\ORACLE\ORADATA\MISSBB\SYSAUX01.DBF
4 4 OFFLINE C:\ORACLE\ORADATA\MISSBB\TBS01.DBF
SQL> alter database open;
Database altered.
SQL> alter database datafile 'C:\ORACLE\ORADATA\MISSBB\TBS01.DBF' online;
Database altered.
SQL> alter tablespace tbs_1 rename to tbs01;
Tablespace altered.
SQL> select * from v$tablespace;
TS# NAME INC BIG FLA ENC
---------- ------------------------- --- --- --- ---
0 SYSTEM YES NO YES
1 UNDO01 YES NO YES
2 SYSAUX YES NO YES
3 TEMP01 NO NO YES
4 TBS01 YES NO YES
OK! 可用的数据库基本创建完毕。
剩下来就是配置问题——实际上根本不会在这个数据库中配置,因为你的老板不会允许你这样安装Oracle的
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production