Jslfl【软件开发技术笔记】

Linux服务器维护(jee/oracle)大杂烩(redhat7)

redhat7,oracle10g
真正的基础、基础、基础大杂烩,如果对linux有一点点概念,说不定就能找到需要的东西,全是干货干货干货。
引用参考:
http://wenku.baidu.com/link?url=DqwqHnRUpepB3omdMhWOjiwy8ugrYpYxXWtQ_KRKVlJl2ulvRsRpRK_wD7uXOjTRCd6-oB4HjR6_NGqQUBE-ZU893ZC5nk4VJ86FXgv5TZG
http://blog.chinaunix.net/uid-24612962-id-3160047.html
http://www.cnblogs.com/superjt/archive/2012/11/17/2774722.html
http://www.cnblogs.com/panjun-Donet/archive/2010/08/10/1796873.html
http://www.cnblogs.com/muliang/archive/2013/08/04/3237216.html
http://blog.csdn.net/tianlesoftware/article/details/41820095
http://blog.csdn.net/shizhebsys/article/details/18799593
http://www.cnblogs.com/xi52qian/p/4187019.html
http://www.centoscn.com/CentosServer/sql/Oracle/2015/0413/5168.html
http://blog.itpub.net/519536/viewspace-625514/

命令行约定:
# 表示在root下操作
~ 表示登陆到其它用户下的操作

开始:

win环境变量添加
NLS_LANG=AMERICAN_AMERICA.AL32UTF8

vm8/redhat7/ 安装篇

   /               /dev/hda1               10~15G足矣    

    /home       /dev/hda2              最大的剩余空间    

    /boot         /dev/hda3                100MB即可    

    swap         /dev/hda5        大约内存大小(建议至少512MB)    

    /var          /dev/hda6      视服务器功能决定大小,至少需要1GB以上

设置运行级别(启动图形模式或命令模式)
vi /etc/inittab 中,找到id:5:initdefault行,修改5为3(命令)
Linux有7个运行级别:init[0123456] 0:关机/1:单用户/2:多用户状态没有网络服务/3:多用户状态有网络服务/ 4:系统未使用保留给用户/5:图形界面/6:重新启动

redhat 7,设置不一样
1.首先删除已经存在的符号链接
rm /etc/systemd/system/default.target
2.默认级别转换为3(文本模式)
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
或者默认级别转换为5(图形模式)
ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
3.重启
reboot

配置网络
cd /etc/sysconfig/network-scripts/ #进入网络配置文件目录
vi ifcfg-eno16777736 #编辑配置文件,添加修改以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
TYPE="Ethernet"
BOOTPROTO="static"  #启用静态IP地址
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
NAME="eno16777736"
UUID="8071cc7b-d407-4dea-a41e-16f7d2e75ee9"
ONBOOT="yes"  #开启自动启用网络连接
IPADDR0="192.168.21.128"  #设置IP地址
#PREFIX0="24"  #设置子网掩码
NETMASK0=255.255.255.0 #设置子网掩码
GATEWAY0="192.168.21.2"  #设置网关
DNS1="8.8.8.8"  #设置主DNS
DNS2="8.8.4.4"  #设置备DNS
HWADDR="00:0C:29:EB:F2:B3"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"

:wq! #保存退出

1
2
3
4
service network restart   #重启网络
ping www.baidu.com  #测试网络是否正常

ip addr  #查看IP地址

root下给目录授权

1
# chmod -R 777 appdir

运行程序

1
# ./install.sh

目录操作命令
1. pwd :查看当前目录
2. cd :
cd /:进入根目录
cd .. :返回上一级目录
cd ~:切换到当前目录的家目录
cd ~chenwei:切换到用户chenwei的家目录
cd -:将当前目录切换到上一个工作目录
3. ls :显示目录内容
ls –a:显示包括隐藏文件在内的所有文件,Linux中文件名以“.”开头表示该文件是隐藏文件。
ls –r:反向排序
ls –u:以最后存取时间排序
ls –t:以最后修改时间排序
ls –S:根据文件大小排序
ls –l :显示目录下所有文件夹或目录的权限,所有者,大小,修改时间。
ls –h:使用KB、MB、GB为单位显示;须以l格式显示(-lh)
4. mkdir :创建目录
mkdir chenwei:在当前目录下建立名为“chenwei”的目录
mkdir chenwei1 chenwei2 :在当前目录下建立名为“chenwei1”和“chenwei2”的两个目录
mkdir –p chenwei1/chenwei2:在当前目录的“chenwe1”目录中建立建立名为“chenwei2”的目录,-p是因为“chenwei1”目录也不存在。
5. tree:以树状图显示目录内容

查看文件
less aaa.log
分页查看文件内容,可以用上下方向、pageup、pagedown查看内容

卸载rpm
首先通过 rpm -q <关键字> 可以查询到rpm包的名字
然后 调用 rpm -e <包的名字> 删除特定rpm包
如果遇到依赖,无法删除,使用 rpm -e –nodeps <包的名字> 不检查依赖,直接删除rpm包
如果恰好有多个包叫同样的名字,使用 rpm -e –allmatches –nodeps <包的名字> 删除所有相同名字的包, 并忽略依赖

中断命令
ctrl+c和ctrl+z都是中断命令,但是他们的作用却不一样.
ctrl+c是强制中断程序的执行,
而ctrl+z的是将任务中断,但是此任务并没有结束,他仍然在进程中他只是维持挂起的状态,用户可以使用fg/bg操作继续前台或后台的任务,fg命令重新启动前台被中断的任务,bg命令把被中断的任务放在后台执行.
例如:
当你vi一个文件是,如果需要用shell执行别的操作,但是你又不打算关闭vi,因为你得存盘退出,你可以简单的按下ctrl+z,shell会将vi进程挂起~,当你结束了那个shell操作之后,你可以用fg命令继续vi你的文件.

tomcat自启动
1.如果etc/profile中没有配置java变量,则修改
#vi /etc/profile
文件最后添加如下内容

1
2
3
export JAVA_HOME=/usr/local/jdk1.6.0_24
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH

#source /etc/profile

2.到tomcat目录bin目录下找到catalina.sh,复制文件到/etc/init.d并改名为tomcat
#cp /usr/local/apache-tomcat-7.0.11/bin/catalina.sh /etc/init.d/tomcat
3.编辑/etc/init.d/tomcat文件.在文件中添加如下”//$$部分”,”//$$$$$”为方便查找做的标注,$忽略掉
#vi /etc/init.d/tomcat

1
2
3
4
5
6
7
8
9
#!/bin/sh //$$$$$
# chkconfig: 345 99 10 //$$ 这个地方必须加(决定chkconfig --list的结果),否则出现错误:tomcat 服务不支持 chkconfig.注意,要比数据库的启动优先级低,优先级99 10是越小越高
# description:Tomcat service. //$$

#Licensed to the Apache Software Foundation (ASF) under one or more //$$$$$  ----------------------------------------------------------------------------- CATALINA_HOME=/usr/local/apache-tomcat-7.0.11 //$$
JAVA_HOME=/usr/local/jdk1.6.0_24 //$$
JAVA_OPTS="-server -Xms51200M -Xmx51200M -Xss256k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:PermSize=512M -XX:MaxPermSize=512M -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=31 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true "

# OS specific support. $var _must_ be set to either true or false.  //$$$$$

加权限
# chmod +x /etc/rc.d/init.d/tomcat

添加tomcat 服务
#chkconfig –add tomcat //将服务添加到自动启动列表服务中
你可以通过以下方式检查:#setup,选择系统服务(System Service),找找是否有”tomcat”这一项,并且前面有个*号(*号表示自启动服务)

6)关闭和启动tomcat 服务,由此生成的tomcat 没有重启命令
#service tomcat stop ####关闭tomcat 服务
#service tomcat start ####启动tomcat 服务

查看tomcat 服务运行级别
# chkconfig –list |grep tomcat
tomcat 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
如果345 为关闭状态。执行如下命令设置tomcat为开机自启动。
# chkconfig tomcat on
检查是否开机启动 #netstat -an | grep 8080

tail -f /home/app/apachetomcat/catalina.out

oracle安装篇
检以下组件是否都安装
# rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel
# rpm -q glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make numactl-devel sysstat

名称模糊检查
rpm -qa |grep glibc

在rhel安装盘中Packages中的找到或下载对应安装文件安装
# cd /run/media/test/RHEL-7.0 Server.x86_64/Packages
# ls elfutils-libelf-de*
可以输入前部分名称后按tab自动填充完整文件名
# rpm -ivh elfutils-libelf-devel-0.125

下面这些组件必需顺序装
compat-libstdc++-33-3.2.3-69.el6.x86_64.rpm
libmpc-1.0.1-3.el7.x86_64.rpm
上面这两个安装盘中没有,要自己下载

binutils-2.17.50.0.6
compat-libstdc++-33-3.2.3
compat-libstdc++-33-3.2.3 (32 bit)
elfutils-libelf-0.125
elfutils-libelf-devel-0.125
gcc-4.1.2 (rpm -ivh gcc-4.8.2-16.el7.x86_64.rpm cpp-4.8.2-16.el7.x86_64.rpm glibc-devel-2.17-55.el7.x86_64.rpm glibc-headers-2.17-55.el7.x86_64.rpm kernel-headers-3.10.0-123.el7.x86_64.rpm)
gcc-c++-4.1.2 (rpm -ivh gcc-c++-4.8.2-16.el7.x86_64.rpm libstdc++-devel-4.8.2-16.el7.x86_64.rpm)

glibc-2.5-24
glibc-2.5-24 (32 bit) (rpm -ivh glibc-2.17-55.el7.i686.rpm nss-softokn-freebl-3.15.4-2.el7.i686.rpm)
glibc-common-2.5
glibc-devel-2.5
glibc-devel-2.5 (32 bit)
glibc-headers-2.5
ksh-20060214
libaio-0.3.106
libaio-0.3.106 (32 bit)
libaio-devel-0.3.106
libaio-devel-0.3.106 (32 bit)
libgcc-4.1.2
libgcc-4.1.2 (32 bit)
libstdc++-4.1.2
libstdc++-4.1.2 (32 bit)
libstdc++-devel 4.1.2
libstdc++-devel 32bit
make-3.81
numactl-devel-0.9.8.x86_64
sysstat-7.0.2

libXp-1.0.0-8.1.el5.i386.rpm
libXt 32
libXtst 32

2.验证系统要求
查看内存大小
# grep MemTotal /proc/meminfo
查看交换空间
# grep SwapTotal /proc/meminfo
查看磁盘空间,Oracle 11g R2 x64企业版的磁盘空间要求4.35GB以上。
# df -h

3.创建Oracle组和用户帐户
# groupadd oinstall
# groupadd dba
# useradd -g oinstall -G dba oracle
# passwd oracle

5.创建Oracle Base目录:
# mkdir -p /home/oracle/app/
# chown -R oracle:oinstall /home/oracle/app/
# chmod -R 775 /home/oracle/app/

4.配置内核参数
以root身份登录系统,根据用户指南配置以下参数:
修改文件/etc/sysctl.conf,添加以下内容:
# /etc/sysctl.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
    # for oracle
    fs.aio-max-nr = 1048576
    fs.file-max = 6815744
    kernel.shmall = 2097152
    # 官方文档kernel.shmmax = 536870912,实际软件中需要kernel.shmmax = 980742144
    kernel.shmmax = 980742144
    kernel.shmmni = 4096
    kernel.sem = 250 32000 100 128
    net.ipv4.ip_local_port_range = 9000 65500
    net.core.rmem_default = 262144
    net.core.rmem_max = 4194304
    net.core.wmem_default = 262144
    net.core.wmem_max = 1048586

执行以下命令时参数生效:
# /sbin/sysctl -p

确定安装oracle所使用的用户组
# id oracle 可以看到oracle组dba id 为1002
more /proc/sys/vm/hugetlb_shm_group 结果不是1002
修改内核参数 echo 1002 >/proc/sys/vm/hugetlb_shm_group
修改/etc/sysctl.conf文件
vm.hugetlb_shm_group = 1002

修改vi /etc/hosts , 添加主机IP地址和主机名 使用hostname命令查看主机名,ifconfig命令查看IP地址 增加下面内容,如果没有oracle 的监听器无法启动 192.168.71.129 Rock

加入下面的行到文件vi /etc/security/limits.conf(oracle是用户名)
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

加入下面的行到文件vi /etc/pam.d/login
session required /lib64/security/pam_limits.so
session required pam_limits.so

64bit:/lib64/security/pam_limits.so
32bit:/lib/security/pam_limits.so

修改Linux的发行标记 8.1 需要将文件 vi /etc/redhat-release的内容由: Red Hat Enterprise Linux Server release 6.2 (Santiago) 修改为: Red Hat Enterprise Linux Server release 4 (Tikanga)
8.2 修改增强的Linux安全设置关闭防火墙:vi /etc/selinux/config SELINUX=disabled

6.编辑Oracle用户环境,编辑.bash_profile文件,,切换到oracle用户操作
# su – oracle
$ vi .bash_profile
编辑.bash_profile文件,添加以下内容

1
2
3
4
5
6
7
8
9
10
    # For Oracle
    export DISPLAY=:0.0
    export TMP=/tmp
    export TMPDIR=$TMP
    export ORACLE_BASE=/home/oracle/app/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
    export ORACLE_SID=orcl
    export ORACLE_TERM=xterm
    export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

执行
source .bash_profile 使生效

#unset ORACLE_HOME
#unset TNS_ADMIN

正式安装oracle数据库
此步骤需要直接在服务器上操作,如果不能直接造作服务器,需要安装VNC远程桌面。
用root用户登录,上传文件并解压、授权文件
将安装文件10201_database_linux_x86_64.cpio.gz,上传到服务器/opt路径下,并解压文件,如下
解压gz文件
# gunzip 10201_database_linux_x86_64.cpio.gz
解压cpio文件
# cpio -idmv < 10201_database_linux_x86_64.cpio 解压完成后,opt下会有个database目录,给oracle用户授权 此目录的读权限 # chown -R oracle:oinstall database 重启 开始安装 oracle ,进入图形界面登陆oracle账号, 如果安装的系统是中文系统,执行下(防止中文乱码):export LANG=”en_US.UTF-8” 用oracle用户登录服务器或通过VNC登录,进入/opt/database目录下执行: ./runInstaller 如果无法看到安装界面,请使用root帐户执行如下命令后再运行安装程序: # xhost + Specify Operating System group name: 选择dba UnsatisfiedLinkError exception loading native library: njni10 参考 http://blog.chinaunix.net/uid-25785357-id-4095473.html 安装了glibc-devel-32bit后重新安装数据库,数据库需要彻底删除,操作如下: 2. rm -rf $ORACLE_BASE/* --->oracle用户下
3. rm -f /etc/oraInst.loc /etc/oratab —>root用户下
4. rm -rf /etc/oracle —>root用户下
5. rm -f /usr/local/bin/coraenv /usr/local/bin/dbhome /usr/local/bin/oraenv —>root用户
6.# ./runInstaller

完全卸载,要删除oracle用户和组。(如果重新安装数据库,用户、组、环境变量、系统参数等配置不需要删除)
userdel oracle
groupdel dba
groupdel oinstall

ins_ctx.mk错误
检查32位的glibc-devel、libgcc是否安装

Error in invoking target ‘collector’ of makefile ‘/opt/oracle/102/sysman/lib/ins_emdb.mk’.
解决:这是oracle安装程序的一个bug,可以忽略此错误继续安装,对系统没什么影响。continue继续

安装或启动数据库时出错
ORA-27125:unable to create shared memory segment
解决:
1. 确定安装oracle所使用的用户组 # id oracle 可以看到oracle组dba id 为503。
2.more /proc/sys/vm/hugetlb_shm_group 结果不是503
3. 修改内核参数 echo “503” >/proc/sys/vm/hugetlb_shm_group 就可以了。 一路 Ignore–>OK–>.

修改/etc/sysctl.conf文件
vm.hugetlb_shm_group = 503

修改SID
[oracle@willie root]$ source oraenv (这个命令是用来修改SID的)
ORACLE_SID = [orcl] ?appdb
# /root/.bashrc: Permission denied
安装完成后,恢复语言环境以及版本信息
#export LC_CTYPE=zh_CN.UTF-8

#vi /etc/redhat-release
Red Hat Enterprise Linux Server release 7.0 (Maipo)

oracle操作篇
sqlplus登陆
sqlplus sys/pwd as sysdba “sys”:用户名,”pwd”:用户对应密码,”sysdba”是登陆身分

启动oracle
sqlplus / as sysdba
startup
exit
lsnrctl start

重启oracle
lsnrctl stop
sqlplus /nolog
conn /as sysdba
shutdown (startup)
exit
lsnrctl start

关闭oracle
lsnrctl stop
sqlplus /nolog
conn /as sysdba
shutdown
exit

startup pfile=’/u01/app/oracle/product/10.2.0/db_1/dbs/initappdb.ora’

有关oracle的基本参数的调整:
/home/oracle/app/oracle/admin/appdb/pfile/init.ora.10202007144030为安装时创建,一般用于还原时使用。
oracle正常启动时使用的是/home/oracle/app/oracle/product/10.2.0/db_1/dbs/spfileappdb.ora这个2进制文件,不能修改,当对oracle进行调整时,修改被记录到这个文件中,当修改导致oracle不能正常启动时,可以使用pfile文件进行恢复启动.
startup pfile=’/home/oracle/app/oracle/admin/appdb/pfile/init.ora.10202007144030′,oracle的参数将变为初始安装的状态。

可以使用以下的命令重新生成spfile文件(删除spfileappdb.ora后):
create spfile from pfile=’/home/oracle/app/oracle/admin/appdb/pfile/init.ora.10202007144030′

查看数据文件存放位置,建表空间时也用这个路径
select name from v$datafile;

/u01/app/oracle/oradata/appdb/system01.dbf

创建表空间

1
2
3
4
5
6
7
8
#删除表空间及其表空间里的所有内容
drop tablespace ATMV INCLUDING CONTENTS;

#windows:
    create tablespace ATMV datafile 'D:/oracle/product/10.2.0/oradata/orcl/ATMV.dbf' size 100m autoextend on next 50m maxsize unlimited;

#Linux:
    create tablespace ATMV datafile '/u01/app/oracle/oradata/orcl/ATMV.dbf' size 1024m autoextend on next 500m maxsize unlimited;

创建用户和受权
select username from dba_users;

drop user xxx cascade;
create user MISPSuser identified by MISPSpwd default tablespace TS_MISPS;
(oracle12中:create user c##MISPSuser identified by MISPSpwd default tablespace TS_MISPS;)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//让用户使用这个表空间
//alter user MISPSuser default tablespace TS_MISPS;
//分配session的权限
grant create session to MISPS;
//分配创建表的权限
grant create table to MISPS;
//分配创建视图的权限
grant create view to MISPS;
//分配创建触发器的权限
grant create trigger to MISPS;
//这行必须有
grant unlimited tablespace to MISPS;
//分配创建索引的权限
grant create any index to MISPS;
//分配修改表的权限
grant alter any table to misps;
//分配修改存储过程的权限
grant alter any procedure to MISPS;
//分配删除表的权限
grant drop any table to MISPS;
//赋予删除视图的权限
grant drop any view to MISPS;
//赋予删除索引的权限
grant drop any INDEX to MISPS;
//赋予删除存储过程的权限
grant drop any procedure to MISPS;
//赋予查询,插入,更新,删除表的权限
grant select any table,insert anytable,update any table,delete any table to MISPS;
//让表unlock,没有这句会出现ORA-28000: the account is locked错误
alter user MISPS account unlock;

//必须赋予connect,resource权限
grant connect,resource,DBA to MISPS;
//这一句是修改密码的sql
alter user MISPS identified by MISPS;
   
2.查看各表空间分配情况。
select tablespace_name, sum(bytes) / 1024 / 1024  from dba_data_files  
group by tablespace_name;  

3.查看各表空间空闲情况。
select tablespace_name, sum(bytes) / 1024 / 1024  from dba_free_space  group by tablespace_name;  

4.更改数据表大小(10G)
alter database datafile '/ora/oradata/radius/undo.dbf' resize 10240m;

5.设置表空间不足时自动增长
5.1查看表空间是否自动增长
SELECT FILE_NAME,TABLESPACE_NAME,AUTOEXTENSIBLE FROM dba_data_files;
5.2 设置表空间自动增长
ALTER DATABASE DATAFILE 'c:\SmartDB01.ora' AUTOEXTEND ON;//打开自动增长
ALTER DATABASE DATAFILE 'c:\SmartDB01.ora' AUTOEXTEND ON NEXT 200M ;//每次自动增长200m
ALTER DATABASE DATAFILE 'c:\SmartDB01.ora' AUTOEXTEND ON NEXT 200M MAXSIZE 1024M;//每次自动增长200m,数据表最大不超过1G

数据库随系统启动
修改Oracle系统配置文件/etc/oratab
orcl:/u01/product/10.2.0/db_1:N,最后一个字符’N’,改为’Y’
(SID:ORACLE_HOME:AUTO,把AUTO域设置为Y(大写),只有这样,oracle自带的dbstart和dbshut才能够发挥作用)
在/etc/rc.d/init.d目录下创建oracle文件作为启动脚本
#vi /etc/rc.d/init.d/oracle

内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/bin/sh
#
#/etc/rc.d/init.d/oracle
#startup or shutdown Oracle service and listener
case "$1" in
start)
echo -n "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 - oracle -c dbstart>> /var/log/oracle
echo "Done."
echo -n "Starting Oracle Listeners: "
su - oracle -c "lsnrctl start" >> /var/log/oracle
    #su - oracle  "sqlplus /nolog" <
    #connect /as sysdba
    #startup
    #exit
echo "Done."
echo ""
echo "----------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Finished." >> /var/log/oracle
echo "----------------------------------------------------" >> /var/log/oracle
touch /var/lock/subsys/oracle
    ;;
stop)
echo -n "Shutting Down Oracle Listeners: "
echo "----------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Shutting Down Oracle Databases as part of system down." >> /var/log/oracle
echo "----------------------------------------------------" >> /var/log/oracle
su - oracle -c "lsnrctl stop" >> /var/log/oracle
echo "Done."
rm -f /var/lock/subsys/oracle
echo -n "Shutting Down Oracle Databases: "
su - oracle -c dbshut>> /var/log/oracle
echo "Done."
echo ""
echo "----------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Finished." >> /var/log/oracle
echo "----------------------------------------------------" >> /var/log/oracle
    ;;
restart)
echo -n "Restarting Oracle Databases: "
echo "----------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Restarting Oracle Databases as part of system up." >> /var/log/oracle
echo "----------------------------------------------------" >> /var/log/oracle
su - oracle -c dbstop>> /var/log/oracle
su - oracle -c dbstart>> /var/log/oracle
echo "Done."
echo -n "Restarting Oracle Listeners: "
su - oracle -c "lsnrctl stop" >> /var/log/oracle
su - oracle -c "lsnrctl start" >> /var/log/oracle
echo "Done."
echo ""
echo "----------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Finished." >> /var/log/oracle
echo "----------------------------------------------------" >> /var/log/oracle
touch /var/lock/subsys/oracle
    ;;
*)
echo "Usage: oracle {start|stop|restart}"
exit 1
esac

保存退出
给予执行权限: chmod 775 /etc/rc.d/init.d/oracle

建立服务连接
ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc2.d/S98oracle
ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc3.d/S98oracle
ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc5.d/S98oracle
ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc0.d/K11oracle
ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc6.d/K11oracle

修改数据库启动和关闭脚本
#su – oracle
$vi $ORACLE_HOME/bin/dbstart
更改ORACLE_HOME_LISTENER的值为: $ORACLE_HOME/bin

#su – oracle
$vi $ORACLE_HOME/bin/dbshut
更改ORACLE_HOME_LISTENER的值为: $ORACLE_HOME/bin
(我这dbshut中没有这个配置)

apache httpd安装篇
检查环境
gcc-4.1.2
gcc-c++-4.1.2

# rpm -qa|grep zlib
zlib-devel-1.2.3-3
zlib-1.2.3-3
# rpm -qa|grep ssl
openssl-devel-0.9.8b-10.el5/
openssl-0.9.8b-10.el5

可能要下载安装libpcre-devel-8.37-alt2.x86_64.rpm
实在有些依赖忽略安装

httpd包

下载安装包到/home/lfl/soft/httpd-2.2.29.tar.gz
# cd /home/lfl/soft
解压
# gzip -d httpd-2.2.29.tar.gz
# tar -xvf httpd-2.2.29.tar
# cd httpd-2.2.29

1 ./configure [–prefix=/usr/local/apache2] –enable-module=so –enable-mods-shared=all

反向代理模块
# ./configure –enable-so –enable-mods-shared=”headers proxy proxy_http proxy_ftp proxy_connect proxy_scgi proxy_ajp proxy_balancer”

–prefix=/usr/local/apache2安装路径,不指定默认就是安装在这路径

# make
# make install
# cd /usr/local/apache2/bin
# ./apachectl start
# ./apachectl restart
# ./apachectl stop

有可能访问不到,后台中出错
semanage port -l |grep http
semanage port -a -t http_port_t -p tcp 8001

确认已开启以下模块
LoadModule headers_module modules/mod_headers.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so

修改
Listen 8001
rverName localhost:8001

文件末加入代理配置

ProxyPass /app/ http://192.168.1.100:8280/webapp/
ProxyPassReverse /app/ http://192.168.1.100:8280/webapp/

ProxyPass / http://192.168.1.110:8080/
ProxyPassReverse / http://192.168.1.110:8080/

apache设为linux服务
cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd
vi /etc/init.d/httpd
在在 #!/bin/sh 后面加入下面两行
#chkconfig:345 85 15
#description: Start and stops the Apache HTTP Server.
然后
chmod +x /etc/rc.d/init.d/httpd
chkconfig –add httpd

chkconfig –list 查看服务
setup也可以查看、控制服务(空格开启关闭)

chkconfig命令详解
http://www.cnblogs.com/panjun-Donet/archive/2010/08/10/1796873.html

第二种方法:
在/etc/rc.d/rc.local中增加启动apache的命令,例如:/usr/local/httpd/bin/apachectl start

防火墙操作
显示状态:systemctl status firewalld.service
启动服务:systemctl start firewalld.service
关闭服务:systemctl stop firewalld.service
重启服务:systemctl restart firewalld.service

在开机时启用服务:systemctl enable firewalld.service
在开机时禁用服务:systemctl disable firewalld.service
查看是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled

添加端口
$ sudo firewall-cmd –zone=public –add-port=1521/tcp –permanent
$ sudo firewall-cmd –reload
如果不使用“–permanent”标记,把么防火墙规则在重启后会失效。

oracle导出导入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
exp:imp:
exp oracle账号/oracle密码 file=/mydata/dat.dmp owner=appdbuser (owner和tables不能同时使用)
exp oracle账号/oracle密码 file=/mydata/dat.dmp tables=table1,table2,table3
exp oracle账号/oracle密码 file=/mydata/dat1.dmp,/mydata/dat2.dmp,/mydata/dat3.dmp tables=table1,table2,table3 filesize=1.9G

imp oracle账号/oracle密码 file=/myimpdat/dat.dmp ignore=y full=y
imp oracle账号/oracle密码 file=/myimpdat/dat.dmp ignore=y tables=table1,table2,table3
imp oracle账号/oracle密码 fromuser=username1 touser=username2 ignore=y file=expfile.dmp [tables=table1,table2,table3]
imp oracle账号/oracle密码 file=/myimpdat/dat1.dmp,/myimpdat/dat2.dmp ignore=y tables=table1,table2,table3

导出库示例
exp appdbuser/appdbpwd file=/home/oracle/exp/bak20151114.dmp owner=appdbuser
导入库示例
imp appprodbuser/appprodbpwd fromuser=appdbuser touser=appprodbuser ignore=y file=/home/oracle/imp/bak20151114.dmp

文件上传下载(windows下用到pscp小软件)
上传文件
pscp E:\new.txt root@192.168.1.2:/home/root/new.txt
下载文件
pscp root@192.168.1.2:/home/root/new.txt E:\new_copy.txt

oracle12c的一些

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
--显示当前连接container
show con_name;

--查看表空间:
select instance_name from v$instance;
select name,open_mode from v$pdbs;

--切换container
alter session set container=appdb;

--打开container
startup

SELECT NAME FROM v$datafile;
create tablespace appdb datafile '/u01/app/oracle/oradata/orcl/appdb/appdb.dbf' size 1024m autoextend on next 500m maxsize unlimited;
select tablespace_name,file_id,file_name from dba_data_files;

create user appdbroot identified by appdbroot default tablespace appdb;

grant connect,resource,DBA to appdbroot;

alter user appdbroot account unlock;

drop tablespace dave including contents and datafiles;

select * from user_tables where table_name = ''

查看服务状态
$lsnrctl service
sqlplus appdb/appdb@localhost:1521/appdb.localdomain

win环境变量中加
NLS_LANG=AMERICAN_AMERICA.AL32UTF8

linux: export NLS_LANG=”AMERICAN_AMERICA.AL32UTF8″

数据库字符集:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
  select userenv('language') from dual;
  查询结果:
  SIMPLIFIED CHINESE_CHINA.AL32UTF8

  --修改oracle数据库字符集:(在SQL Plus中,一般不建议)
  sql> conn / as sysdba;
  sql> shutdown immediate;
  database closed.
  database dismounted.
  oracle instance shut down.
  sql> startup mount;
  oracle instance started.
  total system global area  135337420 bytes
  fixed size                          452044 bytes
  variable size                     109051904 bytes
  database buffers              25165824 bytes
  redo buffers                      667648 bytes
  database mounted.
  sql> alter system enable restricted session;
  system altered.
  sql> alter system set job_queue_processes=0;
  system altered.
  sql> alter system set aq_tm_processes=0;
  system altered.
  sql> alter database open;
  database altered.
  sql> alter database character set internal_use UTF8
  sql> shutdown immediate;
  sql> startup;

oracle修改SGA大小

1
2
3
4
5
SQL> alter system set sga_max_size=4096M scope=spfile;
SQL> alter system set sga_target=4096M scope=spfile;
--sga_max_size/sga_target一般情况设为相同
--如果是RAC环境,需要这样增加sid='*'
alter system set sga_target=20G scope=spfile sid='*';

oracle 10201监听失效bug
运行一段时间(不定)过后,客户端会不能连接oracle,但服务器上sqlplus又可以正常连接,网上查找到两个说法:
1.bug
原因:10201版本上的一个BUG:4518443,会自动创建一个子监听器,当出现此情况时,监听器将会挂起。
检查是否真因为此BUG造成此现象:
$ ps -ef|grep tnslsnr
ora10g 8909 1 0 Sep 15 ? 902:44 /u05/10GHOME/DBHOME/bin/tnslsnr sales -inherit
ora10g 22685 8909 0 14:19:23 ? 0:00 /u05/10GHOME/DBHOME/bin/tnslsnr sales –inherit
正常情况只有一个监听器,而此BUG则会出现两个监听器的话,说明是此问题。
解决方法:打补丁4518443 或者在listener.ora 文件里加入:
SUBSCRIBE_FOR_NODE_DOWN_EVENT_ =OFF
其中, 是数据库的监听器的名称,默认情况下监听器名为:LISTENER
SUBSCRIBE_FOR_NODE_DOWN_EVENT_LISTENER=OFF
杀掉进程再启动监听
$kill 8909
$kill 22685
~lsnrctl start

listener.ora参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ more /home/oracle/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
# listener.ora Network Configuration File: /home/oracle/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /home/oracle/app/oracle/product/10.2.0/db_1)
      (PROGRAM = extproc)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )

#connect_timeout_listener=2
SUBSCRIBE_FOR_NODE_DOWN_EVENT_LISTENER=OFF #防止监听产生子进程
#INBOUND_CONNECT_TIMEOUT_listener=2

2.监听日志文件太大
清理日志文件/home/oracle/app/oracle/product/10.2.0/network/log/listener.log

加载光驱
查看光盘的完整路径名
ls -l /dev | grep cdrom
… cdrom -> sro cdrom是就光驱名
mount /dev/cdrom /mnt/
umount /mnt 用完后卸载,mnt下没有文件时成功

, ,

Comments are currently closed.