博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Centos6/7下静默安装oracle10g
阅读量:6983 次
发布时间:2019-06-27

本文共 25146 字,大约阅读时间需要 83 分钟。

Centos6/7下静默安装Oracle10g

远程安装oracle10g,通过网上资料,不断摸索成功安装。先在本地虚拟机Centos7上做实验,快照恢复快照恢复,安装了几十次成功之后,再在服务器Centos6上安装,(6和7还是有区别的,比如默认防火墙)中间遇到各种问题特记录下来分享。

在linux下安装oracle主要注意点:

1.关闭不必要的服务

2.安装必要的依赖包(少包会引起各种问题)
3.根据系统版本选择合适的oracle安装包
4.添加用户和用户组,创建安装文件夹
5.配置系统环境(创建修改各种文件)
6.安装软件并建库
7.开机自启配置


检查硬件需求(略)

关闭防火墙

1、关闭firewall:

systemctl stop firewalld.service #停止firewallsystemctl disable firewalld.service #禁止firewall开机启动firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

2、iptables防火墙

vi /etc/sysconfig/iptables #编辑防火墙配置文件
# sampleconfiguration for iptables service# you can edit thismanually or use system-config-firewall# please do not askus to add additional ports/services to this default configuration*filter:INPUT ACCEPT [0:0]:FORWARD ACCEPT[0:0]:OUTPUT ACCEPT[0:0]-A INPUT -m state--state RELATED,ESTABLISHED -j ACCEPT-A INPUT -p icmp -jACCEPT-A INPUT -i lo -jACCEPT-A INPUT -p tcp -mstate --state NEW -m tcp --dport 22 -j ACCEPT-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -jACCEPT-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080-j ACCEPT-A INPUT -j REJECT--reject-with icmp-host-prohibited-A FORWARD -jREJECT --reject-with icmp-host-prohibitedCOMMIT
:wq! #保存退出
备注:这里使用80和8080端口为例。***部分一般添加到“-A INPUT -p tcp -m state --state NEW -m tcp--dport 22 -j ACCEPT”行的上面或者下面,切记不要添加到最后一行,否则防火墙重启后不生效。
systemctlrestart iptables.service #最后重启防火墙使配置生效systemctlenable iptables.service #设置防火墙开机启动

3.编写关闭服务脚本(根据需要来)

#vi serverstop.sh
chkconfig iptables off  chkconfig ip6tables off  chkconfig cups off  chkconfig firstboot off  chkconfig wpa_supplicant off  chkconfig postfix off  sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config  sed -i 's/^GSSAPIAuthentication yes$/GSSAPIAuthentication no/' /etc/ssh/sshd_config  sed -i 's/#UseDNS yes/UseDNS no/' /etc/ssh/sshd_config

执行关闭服务脚本

#sh serverstop.sh

准备文件Oracle10g

上传文件 xxx.zip 到 /oracle(没有就建,放哪都行)目录下(工具任意,Xshell带的Xftp,SecureCRT带的SecureFX);

[root@localhost oracle]# unzip xxx.zip

如果压缩格式是cpio.gz  这种格式有这样几种解压缩方式   a.  # zcat XXXX.cpio.gz | cpio -idmv    b.  # gunzip XXXX.cpio.gz 解压出XXXX.cpio文件然后再> # cpio -idvm < XXXX.cpio 解压缩完成后,设置oracle帐户可以操作安装文件所在的目录   chown -R oracle:oinstall 所在目录

添加用户组和用户

[root@localhost Server]# groupadd oinstall[root@localhost Server]# groupadd dba[root@localhost  Server]# groupadd oper[root@localhost Server]# useradd -g oinstall -G dba oracle[root@localhost Server]# passwd oracleChanging password for user oracle.New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.

创建Oracle安装文件夹,并授权Oracle

[root@localhost Server]# mkdir -p /u01/app/oracle/product/10.2.0/db_1[root@localhost Server]# chown -R oracle.oinstall /u01[root@localhost Server]# chmod 775 /u01

oraInst.loc

在/etc目录下创建一个名为 oraInst.loc 的文件,文件中的内容(两行代码)如下:

inventory_loc=/u01/app/oracle/oraInventoryinst_group= oinstall

输入下面的命令在oraInst.loc文件上设置合适的拥有者,组和权限:

[root@localhost oracle]# chown oracle:oinstall oraInst.loc[root@localhost oracle]# chmod 664 oraInst.loc

安装常用软件及必需软件

从网上搜集的,可能有重复包,不影响,yum安装时,已安装会自动略过

安装常用包

yum -y install autoconf automake binutils-devel bison cpp dos2unix ftp gcc gcc-c++ lrzsz python-devel

安装Oracle必需软件:

yum -y install compat-db compat-gcc-34 compat-gcc-34-c++ compat-libstdc++-33 glibc-* glibc-*.i686 libXpm-*.i686 libXp.so.6 libXt.so.6 libXtst.so.6 libgcc_s.so.1 ksh libXp libaio-devel numactl numactl-devel unixODBC unixODBC-devel

网上的第二版本

或者一起安装(推荐再执行一次,以免遗漏,不费力)

yum -y install binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel make sysstat

遇到下面问题[1]

这里写图片描述
解决方法:

Ctrl+c退出命令

rm –f /var/run/yum.pid

配置内核及其他参数

sysctl.conf

vi /etc/sysctl.conf

加入以下11行代码(并将原来的# kernel.shmmax和kernel.shmall这两行参数屏蔽)(kernel.shmmax和kernel.shmall好像要单独考虑,我略过了)

kernel.shmall = 2097152kernel.shmmax = 2147483648kernel.shmmni = 4096# semaphores: semmsl, semmns, semopm, semmnikernel.sem = 250 32000 100 128fs.file-max = 65536net.ipv4.ip_local_port_range = 1024 65000net.core.rmem_default=262144net.core.rmem_max=262144net.core.wmem_default=262144net.core.wmem_max=262144

执行以下命令使以上参数修改生效

[root@localhost Server]# /sbin/sysctl -p

limits.conf

vi /etc/security/limits.conf

加入以下四行代码

oracle              soft    nproc   2047  oracle              hard    nproc   16384  oracle              soft    nofile  1024  oracle              hard    nofile  65536

login

vi /etc/pam.d/login

加入最后一行上面,下面代码(64位和32位注意lib64/lib这个区别)

session    required     /lib64/security/pam_limits.so  session    required     pam_limits.so

config

vi /etc/selinux/config

禁用SELINUX,安装完后可再还原成原值) 将SELINUX设置为

SELINUX=disabled

伪装操作系统版本

vi /etc/centos-release

注释掉原来的,添加下面的,因为oracle支持的操作系统包含rh4

redhat-4

LANG

Oracle 10g 默认不支持中文

安装时,临时执行修改就行

export LANG=en_US

Oracle环境变量

可根据你的需要作适当更改

[root@localhost Server]# vi /home/oracle/.bash_profile

加入内容如下,注释原PATH及export

# Oracle SettingsTMP=/tmp; export TMPTMPDIR=$TMP; export TMPDIRORACLE_BASE=/u01/app/oracle; export ORACLE_BASEORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOMEORACLE_SID=TSH1; export ORACLE_SIDORACLE_TERM=xterm; export ORACLE_TERMPATH=/usr/sbin:$PATH; export PATHPATH=$ORACLE_HOME/bin:$PATH; export PATHLD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATHCLASSPATH=$ORACLE_HOME/jre:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATHif [ $USER = "oracle" ]; thenif [ $SHELL = "/bin/ksh" ]; thenulimit -p 16384ulimit -n 65536elseulimit -u 16384 -n 65536fifi

静默安装模板文件

注销root用户,并登录oracle用户,在/home/oracle目录下建立一个名为enterprise01.rsp的文件,里面的具体内容如下(参考/oracle/database/response目录下面的enterprise.rsp文件,该目录下有三个文件enterprise.rsp(企业版静默安装文件),standard.rsp(标准版静默安装文件)和custom.rsp(客户版静默安装文件),另外还有其他三个静默安装文件)。


有三四个值在enterprise.rsp中没有,可以直接使用下面的配置

RESPONSEFILE_VERSION=2.2.1.0.0FROM_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=falseSHOW_WELCOME_PAGE=falseSHOW_COMPONENT_LOCATIONS_PAGE=falseSHOW_CUSTOM_TREE_PAGE=falseSHOW_SUMMARY_PAGE=falseSHOW_INSTALL_PROGRESS_PAGE=falseSHOW_REQUIRED_CONFIG_TOOL_PAGE=falseSHOW_CONFIG_TOOL_PAGE=falseSHOW_RELEASE_NOTES=falseSHOW_ROOTSH_CONFIRMATION=falseSHOW_END_SESSION_PAGE=falseSHOW_EXIT_CONFIRMATION=falseNEXT_SESSION=falseNEXT_SESSION_ON_FAIL=falseSHOW_DEINSTALL_CONFIRMATION=falseSHOW_DEINSTALL_PROGRESS=falseACCEPT_LICENSE_AGREEMENT=trueCOMPONENT_LANGUAGES={
"en"}CLUSTER_NODES=INSTALL_TYPE="EE"s_nameForDBAGrp=dbas_nameForOPERGrp=dbab_oneClick=falseSHOW_DATABASE_CONFIGURATION_PAGE=falseb_createStarterDB=false

安装oracle

[oracle@localhost ~]$ cd /oracle/database[oracle@localhost database]$ ./runInstaller -silent -responseFile /home/oracle/enterprise01.rsp

安装完成查看日志

这里写图片描述
如果只有下面这个问题(其它问题自行百度),可以忽略
这里写图片描述

执行oracle脚本

以root用户运行安装后环境所需脚本(千万主意:要以root用户去执行这两个脚本,执行后一个脚本时,回车一下就可以了)

[root@localhost ~]# sh /u01/app/oracle/oraInventory/orainstRoot.sh(非第一次安装,可无)[root@localhost ~]# sh /u01/app/oracle/product/10.2.0/db_1/root.sh

这里写图片描述

测试看能否进sqlplus

这里写图片描述


至此Oracle的产品已经安装完成,可是目前为止我们还没有建立数据库。 由于没有X界面无法启动dbca ,所以不能用dbca来帮我们建立数据库。这时候你可能会想到用create database 语句来建立数据库,可是语法实在是繁琐,并且还要运行许多的oracle脚本 。

此时,我们可以利用oracle提供的种子数据库还原一个数据库出来(详细见以下操作) 假设我们要建立的数据库的名称为TSH1(这个名称跟你安装前设置的环境变量中的ORACLE_SID相一致)。

建库

利用oracle提供的种子数据库还原一个数据库出来 的详细步骤

建议同时建立三个远程连接,一个root,一个oracle下一般操作,一个oracle下rman操作,避免来回切换引起的不便和带来意想不到的问题(注意在重启数据库时要退出rman)。

建立所需目录,并授权

[root@localhost Server]# mkdir -p /u01/app/oracle/admin/TSH1/{a,b,u}dump[root@localhost Server]# mkdir -p /u01/app/oracle/oradata/TSH1[root@localhost Server]# chown -R oracle.oinstall /u01[root@localhost Server]# chmod 775 /u01
[oracle@localhost  oracle]$ ls -l

刷新授权前/uo1/oracle/oracle下面各文件的权限

/u01/app/oracletotal 16drwxr-xr-x 3 root   root     4096 May 22 06:24 admindrwxr-xr-x 3 root   root     4096 May 22 06:25 oradatadrwxr-xr-x 6 oracle oinstall 4096 May 22 06:19 oraInventorydrwxr-xr-x 3 oracle oinstall 4096 May 22 06:08 product

种子数据库控制文件

找到oracle为种子数据库提供的控制文件并copy至/u01/app/oracle/oradata/TSH1目录下(在Oracle用户下操作)

[oracle@localhost  oracle]$ cd /u01/app/oracle/product/10.2.0/db_1/assistants/dbca/templates/

这里写图片描述

[oracle@localhost templates]$ cp Seed_Database.ctl /u01/app/oracle/oradata/TSH1

pfile文件

建立pfile文件(在Oracle用户下操作)

[oracle@localhost templates]$ cd /u01/app/oracle/product/10.2.0/db_1/dbs

注意权限

[oracle@localhost templates]$ vi initTSH1.ora

输入以下三行并保存退出

*.db_name=SEEDDATAcontrol_files='/u01/app/oracle/oradata/TSH1/Seed_Database.ctl'compatible=10.2.0.1.0

注:因为Seed_Database.ctl控制文件中记录的db_name为SEEDDATA,所以第一行的设置如此

spfile

启动数据库到mount状态,并使用默认的参数建立spfile文件;然后重新启动数据库并更改sga_max_size,sga_target参数的值;然后再次重新启动数据库(具体操作如下)

问题

这里写图片描述

先 cd /u01/app/oracle/product/10.2.0/db_1/bin/

这里写图片描述

报错 说明oracle_home的问题 临时解决方案(可能原因是从root用户切换过引起的,直接使用oracle用户登录,或者su -

oracle 切换)

echo $ORACLE_HOMEexport ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1echo $ORACLE_SIDexport ORACLE_SID=TSH1

也可以建立软链接

ln -s /u01/app/oracle/product/10.2.0/db_1/bin/sqlplus /usr/bin

这里写图片描述

[oracle@localhost  dbs]$ sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Thu May 22 06:56:19 2008Copyright (c) 1982, 2005, Oracle.  All rights reserved.Connected to an idle instance.SQL> startup mountORACLE instance started.Total System Global Area  113246208 bytesFixed Size                  1218004 bytesVariable Size              58722860 bytesDatabase Buffers           50331648 bytesRedo Buffers                2973696 bytesDatabase mounted.

如果出现问题:

这里写图片描述

解决方法:
这里写图片描述

more /proc/sys/vm/hugetlb_shm_group
SQL> create spfile from pfile;File created.SQL> shutdown immediateORA-01109: database not openDatabase dismounted.ORACLE instance shut down.SQL> startup mountORACLE instance started.Total System Global Area  113246208 bytesFixed Size                  1218004 bytesVariable Size              58722860 bytesDatabase Buffers           50331648 bytesRedo Buffers                2973696 bytesDatabase mounted.

问题:

这里写图片描述
该文件权限问题,可能当时copy的时候使用的是root,修改一下就行

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 immediateORA-01109: database not openDatabase dismounted.ORACLE instance shut down.

这里写图片描述

SQL> startup mountORACLE instance started.Total System Global Area  209715200 bytesFixed Size                  1218580 bytesVariable Size             100665324 bytesDatabase Buffers          104857600 bytesRedo Buffers                2973696 bytesDatabase mounted.

用RMAN连接数据库

和sqlplus一样的命令,在oracle安装目录bin下

[oracle@localhost ~]$ rman target //u01/app/oracle/product/10.2.0/db_1/bin/rman target /Recovery Manager: Release 10.2.0.1.0 - Production on Thu May 22 07:22:51 2008Copyright (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 catalogList 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.dbfRMAN>

这里写图片描述

可以看到,我们可以利用

/ade/aime_10.2_lnx_push/oracle/oradata/Seed_Database.dfb

这个备份集来还原数据库

上面的地址是其他人的,我的是下面的,注意一下就行,灵活变通

/ade/aime_ship_10gR2_050630.0022/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@localhost ~]# mkdir -p mkdir -p /ade/aime_ship_10gR2_050630.0022/oracle/oradata/[root@localhost ~]# chown -R oracle.oinstall /ade[root@localhost ~]# chmod 775 /ade[root@localhost ~]# su - oracle[oracle@localhost ~]$ cd /u01/app/oracle/product/10.2.0/db_1/assistants/dbca/templates[oracle@localhost templates]$cp Seed_Database.dfb /ade/aime_ship_10gR2_050630.0022/oracle/oradata/

还原数据库

先在RMAN下执行如下命令

run {set newname for datafile '/ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/system01.dbf' to '/u01/app/oracle/oradata/TSH1/system01.dbf';set newname for datafile '/ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/sysaux01.dbf' to '/u01/app/oracle/oradata/TSH1/sysaux01.dbf';set newname for datafile '/ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/undotbs01.dbf' to '/u01/app/oracle/oradata/TSH1/undotbs01.dbf';set newname for datafile '/ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/users01.dbf' to '/u01/app/oracle/oradata/TSH1/users01.dbf';restore database;switch datafile all;}

因为控制文件中记录的log file路径为

/ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata

所以要先创建相应的目录并再次刷新其权限,体操作如下

[root@localhost ~]#mkdir -p /ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata[root@localhost  ~]# chown -R oracle.oinstall /ade[root@localhost ~]# chmod 775 /ade

然后在sqlplus中执行如下命令:

[oracle@localhost TSH1]$ sqlplus / as sysdba

这里写图片描述

SQL> alter database open resetlogs;Database altered.SQL>

此时,在目录

/ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata

下创建了redo01.log,redo02.log,redo03.log,temp01.dbf文件

我们要更改这几个文件的路径,所以先将数据库关闭

/ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata

然后

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@localhost ~]$cd /ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata[oracle@localhost 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 bytesFixed Size                  1218580 bytesVariable Size             104859628 bytesDatabase Buffers          100663296 bytesRedo Buffers                2973696 bytesDatabase mounted.SQL> alter database rename file '/ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/redo01.log' to '/u01/app/oracle/oradata/TSH1/redo01.log';Database altered.SQL> alter database rename file '/ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/redo02.log' to '/u01/app/oracle/oradata/TSH1/redo02.log';Database altered.SQL> alter database rename file '/ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/redo03.log' to '/u01/app/oracle/oradata/TSH1/redo03.log';Database altered.SQL>alter database rename file '/ade/aime_ship_10gR2_050630.0022/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 nameNAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------db_file_name_convert                 stringdb_name                              string      SEEDDATAdb_unique_name                       string      SEEDDATAglobal_names                         boolean     FALSEinstance_name                        string      TSH1lock_name_space                      stringlog_file_name_convert                stringservice_names                        string      SEEDDATASQL>

这里写图片描述


下面我们将数据库名称SEEDDATA改成我们需要的TSH1 。注意此时仅仅更改参数文件的值是不行的,因为控制文件中同样也记录着数据库的名称。

更改数据库名称

首先备份控制文件脚本
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@localhost dbs]$ cd /u01/app/oracle/product/10.2.0/db_1/dbs[oracle@localhost dbs]$ rm spfileTSH1.ora[oracle@localhost 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 292LOGFILE  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 50MDATAFILE  '/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'CHARACTER SET US7ASCII;
nomount

然后重新启动数据库到nomount状态,运行上面建立控制文件的脚本,然后打开数据库(具体操作如下)

SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL> startup nomount;ORACLE instance started.Total System Global Area  209715200 bytesFixed Size                  1218580 bytesVariable Size             104859628 bytesDatabase Buffers          100663296 bytesRedo Buffers                2973696 bytesSQL> @/home/oracle/ctl2.txtControl file created.SQL> alter database open resetlogs; Database altered.SQL>

控制文件更名并实现冗余(可略)

[root@localhost ~]# cd /u01/app/oracle/oradata/TSH1[root@localhost TSH1]# mv Seed_Database.ctl control01.ctl[root@localhost TSH1]# cp control01.ctl control02.ctl[root@localhost TSH1]# cp control01.ctl control03.ctl[root@localhost TSH1]# cd /u01/app/oracle/product/10.2.0/db_1/dbs[root@localhost dbs]# chown -R oracle.oinstall /u01[root@localhost  dbs]# chmod 775 /u01

修改参数文件initTSH1.ora(修改.control_files这一行,其内容如下)*

[root@localhost 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> startupORACLE instance started.Total System Global Area  209715200 bytesFixed Size                  1218580 bytesVariable Size             104859628 bytesDatabase Buffers          100663296 bytesRedo Buffers                2973696 bytesDatabase mounted.Database opened.SQL> show parameter name

这里写图片描述

NAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------db_file_name_convert                 stringdb_name                              string      TSH1db_unique_name                       string      TSH1global_names                         boolean     FALSEinstance_name                        string      TSH1lock_name_space                      stringlog_file_name_convert                stringservice_names                        string      TSH1SQL> create user yyidentified by yy;User created.SQL> grant resource to yy;Grant succeeded.SQL> grant create session to yy;Grant succeeded.SQL> conn yy/yy;Connected.SQL> select sysdate from dual;SYSDATE---------2016-04-17 10:33:31SQL>

问题:

这里写图片描述

解决方法:

这里写图片描述
这里写图片描述

create rollback segment rbs_seg tablespace system;alter rollback segment rbs_seg tablespace online;

这里写图片描述

问题:

ORA-12162: TNS:net service name is incorrectly specified

方法:

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

未设置自启动前,重启linux后的问题集:


(大部分问题的解决方法,都能够解决问题,直接截图了,当时安装的时候在word文档里做得笔记,截图比较快,结果整理到博客上只能一张一张上传图片。。。)

首先要直接用oracle登陆,不能root ->su oracle,丢失环境变量

启动系统后,使用navicat连接oracle

问题1
这里写图片描述

关闭防火墙firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)systemctl stop firewalld.service #停止firewallsystemctl disable firewalld.service #禁止firewall开机启动

这里写图片描述

这里写图片描述

因为用户非root,需密码

再次连接oracle

问题2
这里写图片描述
这里写图片描述

这里写图片描述

方法:
这里写图片描述

这里写图片描述

这里写图片描述

然后(建立两个链接,避免来回切换)(出现乱码是因为使用backespace和delete,百度设置一下xshell就行)

这里写图片描述

然后exit,lsnrctl start,emctl start dbconsole

这里写图片描述

这里写图片描述

再次连接

这里写图片描述

新增数据后

问题3
这里写图片描述

方法

这里写图片描述

这里写图片描述

这里写图片描述

create undo tablespace "UNDOTBSGCH02" datafile '/u01/app/oracle/oradata/TSH1/UNDOTBSGCH02.DBF' size 128m reuse autoextend on next 10m maxsize 2048m; alter system set undo_tablespace=UNDOTBSGCH02  scope=spfile;

oracle自动启动与关闭

Oracle启动&停止脚本

1.修改Oracle系统配置文件:/etc/oratab,只有这样,Oracle 自带的dbstart和dbshut才能够发挥作用。

# vi /etc/orataborcl:/opt/oracle/102:Y# Entries are of the form:#   $ORACLE_SID:$ORACLE_HOME:
:

2. 在 /etc/init.d/ 下创建文件oracle,内容如下:

#!/bin/sh# chkconfig: 35 80 10# description: Oracle auto start-stop script.## Set ORA_HOME to be equivalent to the $ORACLE_HOME# from which you wish to execute dbstart and dbshut;## Set ORA_OWNER to the user id of the owner of the# Oracle database in ORA_HOME.ORA_HOME=/u01/app/oracle/product/10.2.0/db_1ORA_OWNER=oracleif [ ! -f $ORA_HOME/bin/dbstart ]then    echo "Oracle startup: cannot start"    exitficase "$1" in'start')# Start the Oracle databases:echo "Starting Oracle Databases ... "echo "-------------------------------------------------" >> /var/log/oracledate +" %T %a %D : Starting Oracle Databases as part of system up." >> /var/log/oracleecho "-------------------------------------------------" >> /var/log/oraclesu - $ORA_OWNER -c "$ORA_HOME/bin/dbstart" >>/var/log/oracleecho "Done"# Start the Listener:echo "Starting Oracle Listeners ... "echo "-------------------------------------------------" >> /var/log/oracledate +" %T %a %D : Starting Oracle Listeners as part of system up." >> /var/log/oracleecho "-------------------------------------------------" >> /var/log/oraclesu - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start" >>/var/log/oracleecho "Done."echo "-------------------------------------------------" >> /var/log/oracledate +" %T %a %D : Finished." >> /var/log/oracleecho "-------------------------------------------------" >> /var/log/oracletouch /var/lock/subsys/oracle;;'stop')# Stop the Oracle Listener:echo "Stoping Oracle Listeners ... "echo "-------------------------------------------------" >> /var/log/oracledate +" %T %a %D : Stoping Oracle Listener as part of system down." >> /var/log/oracleecho "-------------------------------------------------" >> /var/log/oraclesu - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop" >>/var/log/oracleecho "Done."rm -f /var/lock/subsys/oracle# Stop the Oracle Database:echo "Stoping Oracle Databases ... "echo "-------------------------------------------------" >> /var/log/oracledate +" %T %a %D : Stoping Oracle Databases as part of system down." >> /var/log/oracleecho "-------------------------------------------------" >> /var/log/oraclesu - $ORA_OWNER -c "$ORA_HOME/bin/dbshut" >>/var/log/oracleecho "Done."echo ""echo "-------------------------------------------------" >> /var/log/oracledate +" %T %a %D : Finished." >> /var/log/oracleecho "-------------------------------------------------" >> /var/log/oracle;;'restart')$0 stop$0 start;;Esac

3.改变文件权限

# chmod 755 /etc/init.d/oracle

4.添加服务

# chkconfig --level 35 oracle on

5.需要在关机或重启机器之前停止数据库,做一下操作

# ln -s /etc/init.d/oracle /etc/rc0.d/K01oracle   //关机# ln -s /etc/init.d/oracle /etc/rc6.d/K01oracle   //重启

6.使用方法

# service oracle start        //启动oracle# service oracle stop        //关闭oracle# service oracle restart     //重启oracle

7.测试

a. 开机自启动

Last login: Mon Nov 26 19:57:06 2012 from 10.0.0.145[root@localhost ~]# su - oracle[oracle@ORS ~]$ sqlplus "/as sysdba"SQL*Plus: Release 10.2.0.1.0 - Production on Mon Nov 26 20:07:33 2012Copyright (c) 1982, 2005, Oracle.  All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsSQL> set linesize 300;SQL> set pagesize 30;SQL> select * from scott.emp;     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO---------- ---------- --------- ---------- --------- ---------- ---------- ----------SMITH      CLERK           7902 17-DEC-80        800                    20ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30WARD       SALESMAN        7698 22-FEB-81       1250        500         30JONES      MANAGER         7839 02-APR-81       2975                    20MARTIN     SALESMAN        7698 28-SEP-81       1250       1400         30BLAKE      MANAGER         7839 01-MAY-81       2850                    30CLARK      MANAGER         7839 09-JUN-81       2450                    10SCOTT      ANALYST         7566 19-APR-87       3000                    20KING       PRESIDENT            17-NOV-81       5000                    10TURNER     SALESMAN        7698 08-SEP-81       1500          0         30ADAMS      CLERK           7788 23-MAY-87       1100                    20JAMES      CLERK           7698 03-DEC-81        950                    30FORD       ANALYST         7566 03-DEC-81       3000                    20MILLER     CLERK           7782 23-JAN-82       1300                    10rows selected.SQL>
如果还不能远程连接oracle可能是一下问题引起:1.  端口映射2.  编辑oracle的文件是确保sid正确![这里写图片描述](https://img-blog.csdn.net/20160419104834156)
还有主机名称端口扫描http://tool.chinaz.com/port/或者Netstat –p  port  ip

转载于:https://www.cnblogs.com/llhl/p/9648695.html

你可能感兴趣的文章
一些东西,复制
查看>>
bi api 软件
查看>>
WPS客户端更新日志留着备用
查看>>
c#获取电脑硬件信息参数说明(内存篇 Win32_PhysicalMemory)
查看>>
LeetCode算法题-Balanced Binary Tree(Java实现)
查看>>
Cocos2dx 3.1.1 将一个2.X的项目改成3.1版本
查看>>
12.12冲刺~!
查看>>
sql知识
查看>>
spring boot
查看>>
核心动画(转场动画和组动画)
查看>>
数的全排列
查看>>
2015年最新手机号码正则表达式
查看>>
public private protected 区别
查看>>
IntelliJ IDEA常用设置及快捷键
查看>>
KVM: 安装Windows virtio半虚拟化驱动
查看>>
hdu2669 扩展欧几里得
查看>>
PHP 基础
查看>>
Delphi判断字符串是否是数字、字母、大小写字母
查看>>
POJ NOI0105-45 金币
查看>>
Project Euler Problem 15 Lattice paths
查看>>