[root@lym Server]# rpm -ivh compat-libstdc++-33-3.2.3-61.i386.rpm
/////////////////////////////////////////////////////////////////////
---- Step 4 配置内核及其他参数
1). vi /etc/sysctl.conf --加入以下11行代码(并将原来的# kernel.shmmax和kernel.shmall这两行参数屏蔽)
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.rmem_max=262144
net.core.wmem_default=262144
net.core.wmem_max=262144
2). 执行以下命令使以上参数修改生效
[root@lym Server]# /sbin/sysctl -p
3). vi /etc/security/limits.conf --加入以下四行代码
* soft nproc 2047
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536
4). vi /etc/pam.d/login --加入下面一行代码
session required /lib/security/pam_limits.so
5). vi /etc/selinux/config --(禁用SELINUX,安装完后可再还原成原值) 将SELINUX设置为
SELINUX=disabled
////////////////////////////////////////////////////////////
---- Step 5. 添加用户组和用户,并为oracle用户设置密码
[root@lym Server]# groupadd oinstall
[root@lym Server]# groupadd dba
[root@lym Server]# groupadd oper
[root@lym Server]# useradd -g oinstall -G dba oracle
[root@lym Server]# passwd oracle
Changing password for user oracle.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
/////////////////////////////////////////////////////////////
---- Step 6. 创建安装Oracle的文件夹,并设置其相应权限给Oracle用户。
[root@lym Server]# mkdir -p /u01/app/oracle/product/10.2.0/db_1
[root@lym Server]# chown -R oracle.oinstall /u01
[root@lym Server]# chmod 775 /u01
/////////////////////////////////////////////////////////////
---- Step 7. 伪装操作系统版本,使安装Oracle时,通过操作系统验证。
vi /etc/redhat-release --(可保存此文件的副本在某位置,以便安装完成后,复原此文件)
--将这文件中的内容( Red Hat Enterprise Linux Server release 5 (Tikanga) )
替换为如下代码:
redhat-4
/////////////////////////////////////////////////////////////
---- Step 8. Oracle 10g 默认不支持中文
安装时将 /etc/sysconfig/i18n 中的 LANG改为 en 即可
/////////////////////////////////////////////////////////////
---- Step 9. 设置Oracle环境变量(可根据你的需要作适当更改)
[root@lym Server]# vi /home/oracle/.bash_profile --加入内容如下
# Oracle Settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME
ORACLE_SID=TSH1; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/jre:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
////////////////////////////////////////////////////////////
---- Step 10. 注销root用户,并登录oracle用户,在/home/oracle目录下建立一个名为enterprise01.rsp的文件,里面的具体内容如下(参考/oracle/database/response目录下面的enterprise.rsp文件,该目录下有三个文件enterprise.rsp(企业版静默安装文件),standard.rsp(标准版静默安装文件)和custom.rsp(客户版静默安装文件),另外还有其他三个静默安装文件)。
RESPONSEFILE_VERSION=2.2.1.0.0
FROM_LOCATION="../stage/products.xml"
ORACLE_HOME="/u01/app/oracle/product/10.2.0/db_1/"
ORACLE_HOME_NAME="OraDb10g_home1"
TOPLEVEL_COMPONENT={"oracle.server","10.2.0.1.0"}
DEINSTALL_LIST={"oracle.server","10.2.0.1.0"}
SHOW_SPLASH_SCREEN=false
SHOW_WELCOME_PAGE=false
SHOW_COMPONENT_LOCATIONS_PAGE=false
SHOW_CUSTOM_TREE_PAGE=false
SHOW_SUMMARY_PAGE=false
SHOW_INSTALL_PROGRESS_PAGE=false
SHOW_REQUIRED_CONFIG_TOOL_PAGE=false
SHOW_CONFIG_TOOL_PAGE=false
SHOW_RELEASE_NOTES=false
SHOW_ROOTSH_CONFIRMATION=false
SHOW_END_SESSION_PAGE=false
SHOW_EXIT_CONFIRMATION=false
NEXT_SESSION=false
NEXT_SESSION_ON_FAIL=false
SHOW_DEINSTALL_CONFIRMATION=false
SHOW_DEINSTALL_PROGRESS=false
ACCEPT_LICENSE_AGREEMENT=true
COMPONENT_LANGUAGES={"en"}
CLUSTER_NODES=
INSTALL_TYPE="EE"
s_nameForDBAGrp=dba
s_nameForOPERGrp=dba
b_oneClick=false
SHOW_DATABASE_CONFIGURATION_PAGE=false
b_createStarterDB=false
///////////////////////////////////////////////////////////////////
---- Step 11. 开始安装
[oracle@lym ~]$ cd /oracle/database
[oracle@lym database]$ ./runInstaller -silent -responseFile /home/oracle/enterprise01.rsp
-------安装时终端输出类似如文件"安装过程中的终端显示2.txt"中的内容--------
-------请您耐心等待,可先去喝杯荼!---------
//////////////////////////////////////////////////////////////////
---- Step 12. 以root用户运行安装后环境所需脚本(千万主意:要以root用户去执行这两个脚本,执行后一个脚本时,回车一下就可以了)
[root@lym ~]# sh /u01/app/oracle/oraInventory/orainstRoot.sh
[root@lym ~]# sh /u01/app/oracle/product/10.2.0/db_1/root.sh
---- Step 测试看能否进sqlplus----
[oracle@lym ~]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Thu May 22 00:25:56 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL>
至此Oracle的产品已经安装完成,可是目前为止我们还没有建立数据库。
由于没有X界面无法启动dbca ,所以不能用dbca来帮我们建立数据库。这时候你可能会想到用create database 语句来建立数据库,可是语法实在是繁琐,并且还要运行许多的
oracle脚本 。
此时,我们可以利用oracle提供的种子数据库还原一个数据库出来(详细见以下操作)
假设我们要建立的数据库的名称为TSH1(这个名称跟你安装前设置的环境变量中的ORACLE_SID相一致)。
-----------------------------------------------------------------------------
---------利用oracle提供的种子数据库还原一个数据库出来 的详细步骤---------------
///////////////////////////////////////////////////////////////////////////
---- Step 1. 建立我们所需的目录,并刷新授权。
[root@lym Server]# mkdir -p /u01/app/oracle/admin/TSH1/{a,b,u}dump
[root@lym Server]# mkdir -p /u01/app/oracle/oradata/TSH1
[root@lym Server]# chown -R oracle.oinstall /u01
[root@lym Server]# chmod 775 /u01
--你可以在oracle用户下,看刷新授权前后,权限的变化(比较如下)。
[oracle@lym oracle]$ ls -l --刷新授权前/uo1/oracle/oracle下面各文件的权限
total 16
drwxr-xr-x 3 root root 4096 May 22 06:24 admin
drwxr-xr-x 3 root root 4096 May 22 06:25 oradata
drwxr-xr-x 6 oracle oinstall 4096 May 22 06:19 oraInventory
drwxr-xr-x 3 oracle oinstall 4096 May 22 06:08 product
[oracle@lym oracle]$ ls -l ----刷新授权后/uo1/oracle/oracle下面各文件的权限
total 16
drwxr-xr-x 3 oracle oinstall 4096 May 22 06:24 admin
drwxr-xr-x 3 oracle oinstall 4096 May 22 06:25 oradata
drwxr-xr-x 6 oracle oinstall 4096 May 22 06:19 oraInventory
drwxr-xr-x 3 oracle oinstall 4096 May 22 06:08 product
/////////////////////////////////////////////////////////////////////////////
---- Step 2. 找到oracle为种子数据库提供的控制文件并copy至/u01/app/oracle/oradata/TSH1目录下(在Oracle用户下操作)。
[oracle@lym oracle]$ cd /u01/app/oracle/product/10.2.0/db_1/assistants/dbca/templates/
[oracle@lym templates]$ cp Seed_Database.ctl /u01/app/oracle/oradata/TSH1
////////////////////////////////////////////////////////////////////////////
---- Step 3. 建立pfile文件(在Oracle用户下操作)。
[oracle@lym templates]$ cd /u01/app/oracle/product/10.2.0/db_1/dbs
[oracle@lym templates]$ vi initTSH1.ora --输入以下三行并保存退出
*.db_name=SEEDDATA
control_files='/u01/app/oracle/oradata/TSH1/Seed_Database.ctl'
compatible=10.2.0.1.0
----注:因为Seed_Database.ctl控制文件中记录的db_name为SEEDDATA,所以第一行的设置如此。
/////////////////////////////////////////////////////////////////////////////
---- Step 4. 启动数据库到mount状态,并使用默认的参数建立spfile文件;然后重新启动数据库并更改sga_max_size,sga_target参数的值;然后再次重新启动数据库(具体操作如下)。
[oracle@lym dbs]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Thu May 22 06:56:19 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup mount
ORACLE instance started.
Total System Global Area 113246208 bytes
Fixed Size 1218004 bytes
Variable Size 58722860 bytes
Database Buffers 50331648 bytes
Redo Buffers 2973696 bytes
Database mounted.
SQL> create spfile from pfile;
File created.
SQL> shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 113246208 bytes
Fixed Size 1218004 bytes
Variable Size 58722860 bytes
Database Buffers 50331648 bytes
Redo Buffers 2973696 bytes
Database mounted.
SQL> alter system set sga_max_size=200M scope=spfile;
System altered.
SQL> alter system set sga_target=160M scope=spfile;
System altered.
SQL> shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 209715200 bytes
Fixed Size 1218580 bytes
Variable Size 100665324 bytes
Database Buffers 104857600 bytes
Redo Buffers 2973696 bytes
Database mounted.
SQL>
---- Step 5. 用rman连接数据库
[oracle@lym ~]$ rman target /
Recovery Manager: Release 10.2.0.1.0 - Production on Thu May 22 07:22:51 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: SEEDDATA (DBID=3891038516, not open)
RMAN> list backup;
using target database control file instead of recovery catalog
List of Backup Sets
===================
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
1 Full 89.23M DISK 00:00:36 30-JUN-05
BP Key: 1 Status: AVAILABLE Compressed: YES Tag:
Piece Name: /ade/aime_10.2_lnx_push/oracle/oradata/Seed_Database.dfb
List of Datafiles in backup set 1
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- --------- ----
1 Full 446074 30-JUN-05 /ade/aime_10.2_lnx_push/oracle/oradata/seeddata/system01.dbf
2 Full 446074 30-JUN-05 /ade/aime_10.2_lnx_push/oracle/oradata/seeddata/undotbs01.dbf
3 Full 446074 30-JUN-05 /ade/aime_10.2_lnx_push/oracle/oradata/seeddata/sysaux01.dbf
4 Full 446074 30-JUN-05 /ade/aime_10.2_lnx_push/oracle/oradata/seeddata/users01.dbf
RMAN>
----可以看到,我们可以利用/ade/aime_10.2_lnx_push/oracle/oradata/Seed_Database.dfb这个备份集来还原数据库。
但是很明显我们系统中并没有这样一个文件/ade/aime_10.2_lnx_push/oracle/oradata/Seed_Database.dfb ,但是查找发现路径/u01/app/oracle/product/10.2.0/db_1/assistants/dbca/templates下有 Seed_Database.dfb文件 。
----此明有两种方法解决此问题,一个是建立一个软链接/ade/aime_10.2_lnx_push/oracle/oradata/Seed_Database.dfb 指向 /u01/app/oracle/product/10.2.0/db_1/assistants/dbca/templates/Seed_Database.dfb 。另一个是创建目录/ade/aime_10.2_lnx_push/oracle/oradata/
并将Seed_Database.dfb copy至其下 。
-- 这里,我们使用第二种方法(具体操作如下):
[root@lym ~]# mkdir -p /ade/aime_10.2_lnx_push/oracle/oradata/
[root@lym ~]# chown -R oracle.oinstall /ade
[root@lym ~]# chmod 775 /ade
[root@lym ~]# su - oracle
[oracle@lym ~]$ cd /u01/app/oracle/product/10.2.0/db_1/assistants/dbca/templates
[oracle@lym templates]$ cp Seed_Database.dfb /ade/aime_10.2_lnx_push/oracle/oradata/
[oracle@lym templates]$
////////////////////////////////////////////////////////////////////////////
---- Step 6. 还原数据库(先在RMAN下执行如下命令)
run {
set newname for datafile '/ade/aime_10.2_lnx_push/oracle/oradata/seeddata/system01.dbf' to '/u01/app/oracle/oradata/TSH1/system01.dbf';
set newname for datafile '/ade/aime_10.2_lnx_push/oracle/oradata/seeddata/sysaux01.dbf' to '/u01/app/oracle/oradata/TSH1/sysaux01.dbf';
set newname for datafile '/ade/aime_10.2_lnx_push/oracle/oradata/seeddata/undotbs01.dbf' to '/u01/app/oracle/oradata/TSH1/undotbs01.dbf';
set newname for datafile '/ade/aime_10.2_lnx_push/oracle/oradata/seeddata/users01.dbf' to '/u01/app/oracle/oradata/TSH1/users01.dbf';
restore database;
switch datafile all;
}
-- 然后,执行如下命令可以看到我们所需要的数据文件都还原回来了,但是现在还缺少log file 。
我们现在打开数据库。
[oracle@lym templates]$ cd /u01/app/oracle/oradata/TSH1
[oracle@lym TSH1]$ ls
Seed_Database.ctl sysaux01.dbf system01.dbf undotbs01.dbf users01.dbf
[oracle@lym TSH1]$
-- 因为控制文件中记录的log file路径为 /ade/aime_10.2_lnx_push/oracle/oradata/seeddata 所以要先创建相应的目录并再次刷新其权限(具体操作如下)。
[root@lym ~]# mkdir -p /ade/aime_10.2_lnx_push/oracle/oradata/seeddata
[root@lym ~]# chown -R oracle.oinstall /ade
[root@lym ~]# chmod 775 /ade
-- 然后在sqlplus中执行如下命令:
[oracle@lym TSH1]$ sqlplus / as sysdba
SQL> alter database open resetlogs;
Database altered.
SQL>
-- 此时,在目录/ade/aime_10.2_lnx_push/oracle/oradata/seeddata 下创建了redo01.log,redo02.log,redo03.log,temp01.dbf文件。
-- 我们要更改这几个文件的路径,所以先将数据库关闭,然后cp /ade/aime_10.2_lnx_push/oracle/oradata/seeddata/× /u01/app/oracle/oradata/orcl/
启动数据库到mount状态,并更改日志和临时文件的路径(具体操作如下)
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
[oracle@lym ~]$ cd /ade/aime_10.2_lnx_push/oracle/oradata/seeddata
[oracle@lym seeddata]$ cp redo01.log redo02.log redo03.log temp01.dbf /u01/app/oracle/oradata/TSH1/
-- 然后启动数据库到mount状态,并更改日志和临时文件的路径
SQL> startup mount;
ORACLE instance started.
Total System Global Area 209715200 bytes
Fixed Size 1218580 bytes
Variable Size 104859628 bytes
Database Buffers 100663296 bytes
Redo Buffers 2973696 bytes
Database mounted.
SQL> alter database rename file '/ade/aime_10.2_lnx_push/oracle/oradata/seeddata/redo01.log' to '/u01/app/oracle/oradata/TSH1/redo01.log';
Database altered.
SQL> alter database rename file '/ade/aime_10.2_lnx_push/oracle/oradata/seeddata/redo02.log' to '/u01/app/oracle/oradata/TSH1/redo02.log';
Database altered.
SQL> alter database rename file '/ade/aime_10.2_lnx_push/oracle/oradata/seeddata/redo03.log' to '/u01/app/oracle/oradata/TSH1/redo03.log';
Database altered.
SQL> alter database rename file '/ade/aime_10.2_lnx_push/oracle/oradata/seeddata/temp01.dbf' to '/u01/app/oracle/oradata/TSH1/temp01.dbf';
Database altered.
SQL> alter database open;
Database altered.
SQL>
-- 到此数据库已经建立,并且数据文件也放到了我们期待的地方。但是还有一个问题,就是数据库名称不是我们事先期待的。
SQL> show parameter name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string
db_name string SEEDDATA
db_unique_name string SEEDDATA
global_names boolean FALSE
instance_name string TSH1
lock_name_space string
log_file_name_convert string
service_names string SEEDDATA
SQL>
////////////////////////////////////////////////////////////////////////
下面我们将数据库名称SEEDDATA改成我们需要的TSH1 。注意此时仅仅更改参数文件的值是不行的,因为控制文件中同样也记录着数据库的名称。
-- Step 7. 更改数据库名称
-- 首先备份控制文件脚本(具体操作如下)
SQL> alter database backup controlfile to trace as '/tmp/ctl.txt';
Database altered.
SQL> create pfile from spfile;
File created.
SQL>
-- 然后将spfile文件(spfileTSH1.ora)删除,编辑pfile文件(initTSH1.ora)将db_name="SEEDDATA" 改成 db_name="TSH1"(具体操作如下)。
[oracle@lym dbs]$ cd /u01/app/oracle/product/10.2.0/db_1/dbs
[oracle@lym dbs]$ rm spfileTSH1.ora
[oracle@lym dbs]$ vi initTSH1.ora
-- 然后保存对initTSH1.ora的修改并退出。
-- 然后vi /home/oracle/ctl2.txt(参考/tmp/ctl.txt重建控制文件脚本),脚本的内容如下:
CREATE CONTROLFILE REUSE DATABASE "SEEDDATA" set database "TSH1" RESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/u01/app/oracle/oradata/TSH1/redo01.log' SIZE 50M,
GROUP 2 '/u01/app/oracle/oradata/TSH1/redo02.log' SIZE 50M,
GROUP 3 '/u01/app/oracle/oradata/TSH1/redo03.log' SIZE 50M
DATAFILE
'/u01/app/oracle/oradata/TSH1/system01.dbf',
'/u01/app/oracle/oradata/TSH1/undotbs01.dbf',
'/u01/app/oracle/oradata/TSH1/sysaux01.dbf',
'/u01/app/oracle/oradata/TSH1/users01.dbf',
'/u01/app/oracle/oradata/TSH1/tt.dbf'
CHARACTER SET US7ASCII
;
-- 然后重新启动数据库到nomount状态,运行上面建立控制文件的脚本,然后打开数据库(具体操作如下) 。
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 209715200 bytes
Fixed Size 1218580 bytes
Variable Size 104859628 bytes
Database Buffers 100663296 bytes
Redo Buffers 2973696 bytes
SQL> @/home/oracle/ctl2.txt
Control file created.
SQL> alter database open resetlogs;
Database altered.
SQL>
//////////////////////////////////////////////////////////////////////////
---- Step 8. 控制文件更名并实现冗余
[root@lym ~]# cd /u01/app/oracle/oradata/TSH1
[root@lym TSH1]# mv Seed_Database.ctl control01.ctl
[root@lym TSH1]# cp control01.ctl control02.ctl
[root@lym TSH1]# cp control01.ctl control03.ctl
[root@lym TSH1]# cd /u01/app/oracle/product/10.2.0/db_1/dbs
[root@lym dbs]# chown -R oracle.oinstall /u01
[root@lym dbs]# chmod 775 /u01
-- 修改参数文件initTSH1.ora(修改*.control_files这一行,其内容如下)
[root@lym dbs]# vi initTSH1.ora
*.control_files='/u01/app/oracle/oradata/TSH1/control01.ctl','/u01/app/oracle/oradata/TSH1/control02.ctl','/u01/app/oracle/oradata/TSH1/control03.ctl'
-- 重新启动数据库,大功告成!
SQL> startup
ORACLE instance started.
Total System Global Area 209715200 bytes
Fixed Size 1218580 bytes
Variable Size 104859628 bytes
Database Buffers 100663296 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
SQL> show parameter name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string
db_name string TSH1
db_unique_name string TSH1
global_names boolean FALSE
instance_name string TSH1
lock_name_space string
log_file_name_convert string
service_names string TSH1
SQL> create user lym identified by lym;
User created.
SQL> grant resource to lym;
Grant succeeded.
SQL> grant create session to lym;
Grant succeeded.
SQL> conn lym/lym;
Connected.
SQL> select sysdate from dual;
SYSDATE
---------
22-MAY-08
SQL>