当前位置: 首页 > 编程日记 > 正文

Centos6/7下静默安装oracle10g

Centos6/7下静默安装Oracle10g

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

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

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


检查硬件需求(略)

关闭防火墙

1、关闭firewall:

systemctl stop firewalld.service #停止firewall
systemctl 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-prohibited
COMMIT
:wq! #保存退出
备注:这里使用808080端口为例。***部分一般添加到“-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/oraInventory
inst_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 = 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

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

[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 Settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIRORACLE_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 PATHLD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/jre:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATHif [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

静默安装模板文件

注销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.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

安装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/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为种子数据库提供的控制文件并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=SEEDDATA
control_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_HOME
export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
echo $ORACLE_SID
export 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 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.

如果出现问题:

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

more /proc/sys/vm/hugetlb_shm_group
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.

问题:
这里写图片描述
该文件权限问题,可能当时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 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.

用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.dfbList of Datafiles in backup set 1File LV Type Ckp SCN    Ckp Time  Name---- -- ---- ---------- --------- ----1       Full 446074     30-JUN-05 /ade/aime_10.2_lnx_push/oracle/oradata/seeddata/system01.dbf2       Full 446074     30-JUN-05 /ade/aime_10.2_lnx_push/oracle/oradata/seeddata/undotbs01.dbf3       Full 446074     30-JUN-05 /ade/aime_10.2_lnx_push/oracle/oradata/seeddata/sysaux01.dbf4       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 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_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                 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 。注意此时仅仅更改参数文件的值是不行的,因为控制文件中同样也记录着数据库的名称。

更改数据库名称

首先备份控制文件脚本
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  NOARCHIVELOGMAXLOGFILES 16MAXLOGMEMBERS 3MAXDATAFILES 100MAXINSTANCES 8MAXLOGHISTORY 292
LOGFILEGROUP 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'
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 bytes
Fixed Size                  1218580 bytes
Variable Size             104859628 bytes
Database Buffers          100663296 bytes
Redo Buffers                2973696 bytes
SQL> @/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> 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 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 

方法:
http://blog.itpub.net/519536/viewspace-672034/

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

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


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

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

启动系统后,使用navicat连接oracle
问题1
这里写图片描述

关闭防火墙
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
systemctl stop firewalld.service #停止firewall
systemctl 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/oratab
orcl:/opt/oracle/102:Y
# Entries are of the form:
#   $ORACLE_SID:$ORACLE_HOME:<N|Y>:

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_1
ORA_OWNER=oracle
if [ ! -f $ORA_HOME/bin/dbstart ]
thenecho "Oracle startup: cannot start"exit
fi
case "$1" in
'start')
# Start the Oracle databases:
echo "Starting Oracle Databases ... "
echo "-------------------------------------------------" >> /var/log/oracle
date +" %T %a %D : Starting Oracle Databases as part of system up." >> /var/log/oracle
echo "-------------------------------------------------" >> /var/log/oracle
su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart" >>/var/log/oracle
echo "Done"# Start the Listener:
echo "Starting Oracle Listeners ... "
echo "-------------------------------------------------" >> /var/log/oracle
date +" %T %a %D : Starting Oracle Listeners as part of system up." >> /var/log/oracle
echo "-------------------------------------------------" >> /var/log/oracle
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start" >>/var/log/oracle
echo "Done."
echo "-------------------------------------------------" >> /var/log/oracle
date +" %T %a %D : Finished." >> /var/log/oracle
echo "-------------------------------------------------" >> /var/log/oracle
touch /var/lock/subsys/oracle
;;'stop')
# Stop the Oracle Listener:
echo "Stoping Oracle Listeners ... "
echo "-------------------------------------------------" >> /var/log/oracle
date +" %T %a %D : Stoping Oracle Listener as part of system down." >> /var/log/oracle
echo "-------------------------------------------------" >> /var/log/oracle
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop" >>/var/log/oracle
echo "Done."
rm -f /var/lock/subsys/oracle# Stop the Oracle Database:
echo "Stoping Oracle Databases ... "
echo "-------------------------------------------------" >> /var/log/oracle
date +" %T %a %D : Stoping Oracle Databases as part of system down." >> /var/log/oracle
echo "-------------------------------------------------" >> /var/log/oracle
su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut" >>/var/log/oracle
echo "Done."
echo ""
echo "-------------------------------------------------" >> /var/log/oracle
date +" %T %a %D : Finished." >> /var/log/oracle
echo "-------------------------------------------------" >> /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 - Production
With 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                    20
ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30
WARD       SALESMAN        7698 22-FEB-81       1250        500         30
JONES      MANAGER         7839 02-APR-81       2975                    20
MARTIN     SALESMAN        7698 28-SEP-81       1250       1400         30
BLAKE      MANAGER         7839 01-MAY-81       2850                    30
CLARK      MANAGER         7839 09-JUN-81       2450                    10
SCOTT      ANALYST         7566 19-APR-87       3000                    20
KING       PRESIDENT            17-NOV-81       5000                    10
TURNER     SALESMAN        7698 08-SEP-81       1500          0         30
ADAMS      CLERK           7788 23-MAY-87       1100                    20
JAMES      CLERK           7698 03-DEC-81        950                    30
FORD       ANALYST         7566 03-DEC-81       3000                    20
MILLER     CLERK           7782 23-JAN-82       1300                    10
rows 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

相关文章:

String和常量池

jdk1.6之前常量池属于永久代&#xff0c;jdk1.7以后移到堆中。 String s1 "abc";// 放在常量池中String s2 "abc";// 从常量池中查找String s3 new String("abc");//new放在堆中String s4 new String("abc");String s5 s1.inter…

CQRS体系结构模式实践案例:Tiny Library:领域仓储与事件存储

领域仓储&#xff08;Domain Repository&#xff09;与事件存储&#xff08;Event Store&#xff09;是CQRS体系结构应用系统中C部分&#xff08;Command部分&#xff09;的重要组件。虽然都是存储机制&#xff0c;但两者有着本质的区别&#xff1a;领域仓储是属于领域层的&…

​中国开启开源新纪元

距离“中国 Linux 第一人”宫敏博士用手提肩背的方式&#xff0c;将 20 盒装有 80G 容量的自由软件磁带背回中国转瞬已过 20 载&#xff0c;在宫敏博士的推动下&#xff0c;中国组建起国内第一个自由软件库&#xff0c;由此开源在第一代开发者心中的火种迅速传播。20 多年间&am…

kernel logo到开机动画之间闪现黑屏(android 5.X)

在BootAnimation開始画图之前&#xff0c;会先做一次clear screen的动作&#xff0c;避免出现前面的图干扰到BootAnimation的显示。 通过check main_log先确认播放开机动画是哪个function。在相应function删除clear screen的动作的相应代码。 /frameworks/base/cmds/bootanimat…

JScript Array对象的几个原型方法

代码 Array.prototype.inArray function(value) { for(vari 0; i <this.length; i) { if(this[i] value) { returntrue; } } returnfalse;};Array.prototype.max function() { for(vari 1, max this[0]; i <this.length; i) { …

太生猛!AI应届生年薪涨到80万!网友:后悔生的太早

据中国青年报报道&#xff1a;新冠肺炎疫情期间&#xff0c;非接触类交互、安全卫生等需求提升&#xff0c;以数字货币、数据应用、人工智能为代表的数字经济显著发展&#xff0c;全球经济数字化转型踩下“油门”。中国人工智能人才很可能缺口超过500万人。其实&#xff0c;早在…

Tomcat定时任务

原文: The load-on-startup element indicates that this servlet should be loaded (instantiated and have its init() called) on the startup of the web application. The optional contents of these element …

Nutanix CE on Lenovo W520 初探

話說 Nutanix 出了 CE 版本&#xff0c;這當然要來試試看 Nutanix 威力拿了部機器lenovo W520 CPU: i7-2820QM 4 coreRam: 32GBHDD:500G安裝選單選擇鍵盤配置&#xff0c;按下 ProceedNutanix 開始載入程式硬件最低需求不滿足Laptop 32G 內存Lenovo W520Nutanix 官方 CE 最低硬…

《爱情公寓2》将播 恶搞宣传片大喊“有种别看”

昨晚&#xff0c;一支重口味的宣传片消然出现在各大网站&#xff0c;一夜之间在狂转发。上线不到一小时&#xff0c;单一网站浏览量就超十万&#xff0c;视频主标写着&#xff1a;神兽组合从天而降&#xff0c;口味超重&#xff0c;少儿不宜&#xff0c;人兽悲剧&#xff0c;蛋…

“应付”大学作业,我花3小时写了一个“文本转手写”神器

作者 | Saurabh Daware译者 | 弯月&#xff0c;责编 | 郭芮来源 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;最近&#xff0c;有一个名叫Saurabh Daware的印度大学生只花了3个小时就编写了一款自动化工具&#xff0c;能够将文本转换成手写文字&#xff0c;并用这个工…

Laravel应用

CLI 参考&#xff1a;http://laravel-china.org/docs/5.1/artisancli处理业务&#xff0c;把业务封装成一个命令&#xff0c;用php artisan来调用自定义的命令放在App/Console/Commands下创建方式php artisan make:console 命令名 —command调用时名字php artisan make:console…

匿名内部类和传接口

匿名内部类也就是没有名字的内部类正因为没有名字&#xff0c;所以匿名内部类只能使用一次&#xff0c;它通常用来简化代码编写但使用匿名内部类还有个前提条件&#xff1a;必须继承一个父类或实现一个接口 参考&#xff1a;http://www.cnblogs.com/nerxious/archive/2013/01/…

为什么这门技术如此重要?错过这次黄金期,就晚了!

老李一直怀疑自己是不是年纪大了&#xff0c;脑子跟不上了。作为十几年经验的资深 Java 工程师&#xff0c;维护这公司产品的核心代码的他&#xff0c;现在迭代产品的时候&#xff0c;经常出 Bug 。有时修复一个 Bug 时间&#xff0c;比开发一个需求的时间要长很多&#xff0c;…

字符编码简介 ANSI Unicode Unicode big endian UTF-8

1. ASCII码 我们知道&#xff0c;在计算机内部&#xff0c;所有的信息最终都表示为一个二进制的字符串。每一个二进制位&#xff08;bit&#xff09;有0和 1两种状态&#xff0c;因此八个二进制位就可以组合出256种状态&#xff0c;这被称为一个字节&#xff08;byte&#xff0…

ReactiveCocoa代码实践之-更多思考

三.ReactiveCocoa代码实践之-更多思考 1. RACObserve()宏形参写法的区别 之前写代码考虑过 RACObserve(self.timeLabel , text) 和 RACObserve(self , timeLabel.text) 的区别。 因为这两种方法都是观察self.timeLabel.text的属性&#xff0c;并且都能实现功能。估计是作者原本…

Java常用命令及Java Dump

线程Dump,包含所有线程的运行状态。纯文本格式。 堆Dump,包含线程Dump,幵包含所有堆对象的状态。二进制格式。 Java Dump方法 1.使用Java虚拟机制作Dump 指示虚拟机在发生内存不足错误时,自动生成堆Dump -XX:HeapDumpOnOutOfMemoryError 2.使用图形化工具制作Dump 使用JDK…

使用Windows远程登录Ubuntu

一、SSH登录 1、Ubuntu默认没有安装SSH &#xff0c;可以在新得利软件安装程序里&#xff0c;搜索SSH&#xff0c;标记并安装&#xff1b; 或者使用命令&#xff1a; sudo apt-get install openssh-server sudo /etc/init.d/ssh restart ssh localhost…

紧急更新下降难度,《王者荣耀》绝悟 AI 难倒一片玩家

作者 | 神经星星来源 | HyperAI超神经&#xff08;ID: HyperAI&#xff09;在 5 月 1 日~ 5 月 4 日期间&#xff0c;玩家通过《王者荣耀》最新版本客户端进入游戏&#xff0c;即可与绝悟 AI 对战。一时间哀鸿遍野&#xff0c;普通玩家、游戏主播、职业选手&#xff0c;纷纷表示…

SQL:安装多个实例,修改实例端口号,和IP加端口号连接实例

原文:SQL&#xff1a;安装多个实例&#xff0c;修改实例端口号,和IP加端口号连接实例sql server 安装第一个实例&#xff0c;默认实例的端口是1433&#xff0c; 一个库中如果有多个实例&#xff0c;从第二个实例开始的端口是动态端口&#xff0c;需要的话&#xff0c;自己手工指…

用“逐步排除”的方法定位Java服务线上“系统性”故障

说明&#xff1a;原文地址已经不可访问&#xff0c;其他地方有转载&#xff0c;不过很多丢失图片&#xff0c;所以&#xff0c;找到一处有图的重新配好图。 用“逐步排除”的方法定位Java服务线上“系统性”故障 Posted on 2014/08/25李斯宁&#xff08;高级测试开发工程师&…

清华硕士爆料:这些才是机器学习必备的数学基础

现如今&#xff0c;计算机科学、人工智能、数据科学已成为技术发展的主要推动力。无论是要翻阅这些领域的文章&#xff0c;还是要参与相关任务&#xff0c;你马上就会遇到一些拦路虎&#xff1a;想过滤垃圾邮件&#xff0c;不具备概率论中的贝叶斯思维恐怕不行&#xff1b;想试…

LINUX环境下资源下载中文目录及中文文件名称问题

为什么80%的码农都做不了架构师&#xff1f;>>> http://www.yeeach.com/2009/04/09/linux%E7%8E%AF%E5%A2%83%E4%B8%8B%E8%B5%84%E6%BA%90%E4%B8%8B%E8%BD%BD%E4%B8%AD%E6%96%87%E7%9B%AE%E5%BD%95%E5%8F%8A%E4%B8%AD%E6%96%87%E6%96%87%E4%BB%B6%E5%90%8D%E7%A7%B…

dojo从asp.net中获取json数据

搞来有搞去终于有了个结果&#xff0c;主要是一开始犯了一些低级错误。 对于json不太了解的童鞋&#xff0c;可以看看这个&#xff1a;http://www.dreamdu.com/blog/2008/10/19/json_in_javascript/ 这个例子中主要是从数据库中读取数据&#xff0c;转换成JSON格式&#xff0c;…

RHEL5 install

RHEL5 安装转载于:https://blog.51cto.com/bhanv/477708

线上java问题排查

0.jps 这个输出java进程pid #jps 查看java的线程 #top -Hp 25448 如图25757这个线程比较耗时&#xff0c;看看他在做什么 注意需要折算出线程pid的16进制值&#xff0c;然后jstack。 可以打印更多信息 #jstack pid | grep -A 20 649d 参考&#xff1a;JVM调优之jstack找出…

GitHub标星10,000+,Apache项目ShardingSphere的开源之路

【编者按】几天前&#xff0c;当 GitHub 全球产品技术生态总经理 Michael Francisco 谈到中国开发者已经成为 GitHub 上最活跃的群体时&#xff0c;有开发者提出数量之后质量也要跟上。的确&#xff0c;过去十数年间&#xff0c;中国开源一直呈现企业热使用热社区冷开发冷的景象…

JAVA中LOCK

原文链接&#xff1a;http://www.cnblogs.com/dolphin0520/p/3923167.html 一.synchronized的缺陷 我们知道如果一个代码块被synchronized修饰了&#xff0c;当一个线程获取了对应的锁&#xff0c;并执行该代码块时&#xff0c;其他线程便只能一直等待&#xff0c;等待获取锁的…

【公开课预告】AutoML知多少

5月7日周四19:00&#xff0c;商汤泰坦公开课第010期&#xff0c;论文解读系列课程第二期即将开播&#xff01;我们邀请到商汤科技的4位研究员&#xff0c;分享团队在AutoML方面的一系列研究工作&#xff0c;其中包含CVPR 2020、ICLR 2020等多篇最新论文成果&#xff0c;想要了解…

Linux kernel futex.c的bug导致JVM不可用

JVM死锁导致线程不可用&#xff0c;然后会瞬间起N个线程&#xff0c;当然也是不可用的&#xff0c;因为需要的对象死锁&#xff0c;然后耗尽文件句柄导致外部TCP无法建议拒绝服务&#xff0c;jstack之后就会恢复。 解决办法&#xff1a;替换中间件类库 &#xff0c;比如httpcli…

ruby爬虫综述

http://ihower.tw/blog/archives/2941一个ruby爬虫的例子http://hi.baidu.com/anspider/blog/item/9da210425a0e4e179213c6fb.html