Oracle產品的三種安裝方式分別爲:html
1.圖形化(Java嚮導)安裝引導
2.使用應答文件靜默安裝
3.直接將裝好的oracle複製一份放到另外一臺服務器安裝
注意:
#方法2和方法3的安裝前提是:配置好Oracle安裝所須要的前提node
不管是圖形化安裝,靜默安裝仍是拷貝安裝,都首先須要把基礎環境配置好。linux
環境: 在VMware中安裝CentOS6.5虛擬機,在此虛擬機裏面安裝Oracle數據庫,
CPU: 2x2=4核 (CPU大小可自定義)
內存: 4G(官方最低要求1G)
硬盤: 好比30G(Oracle EE企業版安裝至少需4.29G+1.7G數據文件,硬盤大小可自定義)
系統: CentOS release 6.5 (Final) Minimal最小化安裝
內核:Linux 2.6.32-431.el6.x86_64
Oracle: 11.2.0.4c++
(root用戶)檢查虛擬內存和/tmp目錄大小,待安裝目錄設置。sql
要求以下,shell
Available RAM Swap Space Required
Between 1 GB and 2 GB 1.5 times the size of the RAM
Between 2 GB and 16 GB Equal to the size of the RAM
More than 16 GB 16 GB數據庫
檢查實際swap的大小,vim
[root@db ~]# free -g
total used free shared buffers cached
Mem: 7 7 0 0 0 5
-/+ buffers/cache: 1 5
Swap: 7 0 7windows
若是swap空間不足(not sufficient),centos
#一、用dd命令建立一個16G的文件
#好比原有的swap爲3G,如今再直接用dd從磁盤中取出16G來作爲swap,這樣總計內存將會是19G,
[root@db ~]# dd if=/dev/zero of=/var/swapfile bs=1G count=16
#二、將它建立爲Linux Swap虛擬交換文件
[root@db ~]# mkswap /var/swapfile
mkswap: /var/swapfile: warning: don't erase bootbits sectors
on whole disk. Use -f to force.
Setting up swapspace version 1, size = 16777212 KiB
no label, UUID=17af76cb-2164-4142-b6aa-5dbf88add771
#三、激活並使用/var/swapfile交換文件
[root@db ~]# swapon /var/swapfile
[root@db ~]# free -g
total used free shared buffers cached
Mem: 125 19 105 0 0 18
-/+ buffers/cache: 1 123
Swap: 19 0 19
#四、設置系統啓動後自動激活虛擬交換文件。
#cp /etc/fstab /etc/fstab.bak && \
echo '/var/swapfile swap swap defaults 0 0' >> /etc/fstab && \
mount -a
檢查待安裝Oracle的目錄,待安裝目錄要有足夠的空間(Oracle EE企業版安裝至少需4.29G+1.7G數據文件,硬盤大小可自定義),
[root@db ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 81G 13G 64G 17% /
tmpfs 3.9G 203M 3.7G 6% /dev/shm
/dev/sda1 485M 33M 427M 8% /boot
/dev/mapper/VolGroup-lv_home 9.9G 152M 9.2G 2% /home
/tmp 目錄要大於1G
注:/tmp目錄不須要專門的掛載分區,大於1G的目錄是oracle在安裝過程當中要用而已。
[root@db ~]# df -h /tmp
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 27G 8.2G 17G 33% /
(root用戶)檢查系統架構
[root@db ~]# uname -a 或 uname -r
Linux db 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
[root@db ~]# cat /etc/system-release
CentOS release 6.5 (Final)
(root用戶)關閉selinux和防火牆
[root@db ~]# setenforce 0 && \
sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config && \
iptables -F && \
service iptables stop && \
chkconfig iptables off
須要靜態IP,根據狀況自定義,
[root@db ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static"
HWADDR="00:50:56:93:50:0c"
IPV6INIT="no"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
IPADDR=192.168.xx.xx
GATEWAY=192.168.25.1
DNS1=114.114.114.114
DNS2=8.8.8.8
(root用戶)設置163和epel的yum源,並安裝基本的依賴,
setenforce 0 > /dev/null 2>&1
sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config && \
cp /etc/sysconfig/iptables /etc/sysconfig/iptables`date +%F_%T`
iptables -F && \
service iptables save && \
service iptables stop && \
chkconfig iptables off && \
cp /etc/yum.conf /etc/yum.confbak`date +%F_%T`
echo 'exclude=kernel*
exclude=centos-release*' >> /etc/yum.conf && \
grep exclude /etc/yum.conf && \
mkdir -p /tmp/repobak && \
rm -rf /tmp/repobak/* && \
cd /etc/yum.repos.d/ && \
mv -f * /tmp/repobak/ > /dev/null 2>&1
curl -o /etc/yum.repos.d/CentOS6-Base-163.repo http://mirrors.163.com/.help/CentOS6-Base-163.repo && \
mv -f /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup > /dev/null 2>&1
mv -f /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup > /dev/null 2>&1
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo && \
rpm --import /etc/pki/rpm-gpg/RPM* && \
yum clean all && \
yum makecache && \
yum groupinfo 'Development tools' && \
yum groupinstall -y 'Development tools' && \
yum install wget vim man rsync openssh-clients openssl -y && \
ls -l && cd ~
(root用戶)安裝軟件包
[root@db ~]# yum install binutils compat-libstdc* elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers libaio libaio-devel libgcc libstdc++ libstdc++-devel libgomp make numactl numactl-devel sysstat -y
[root@db ~]# yum install unixODBC unixODBC-devel -y
[root@db ~]# yum localinstall pdksh-5.2.14-30.x86_64.rpm -y
#注1:pdksh包須要單獨下載(百度搜索 pdksh rpm)並使用rpm手動安裝
#注2:若是安裝有問題,就把ksh先卸載了,rpm -e --nodeps ksh
(root用戶)修改主機名(自定義),添加主機名與IP對應記錄,注意下面要修改成本身實際的IP和主機名,
[root@db ~]# sed -i.ori 's#^HOSTNAME=.*#HOSTNAME=centos6#g' /etc/sysconfig/network &&\
hostname db &&\
service network restart &&\
echo '192.168.xx.xx db' >> /etc/hosts &&\
grep 'HOSTNAME' /etc/sysconfig/network &&\
grep 'db' /etc/hosts
[root@db ~]# cp /etc/sysconfig/i18n /etc/sysconfig/i18n`date +%F_%T`
echo 'LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"' > /etc/sysconfig/i18n
[root@db ~]# yes | cp -a /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
yum install ntpdate -y && chkconfig ntpdate on && chkconfig --list ntpdate
yum install -y vixie-cron && chkconfig crond on && chkconfig --list crond && service crond start
/usr/sbin/ntpdate -u cn.pool.ntp.org
crontab -l > conf
echo "*/10 * * * * /usr/sbin/ntpdate -u cn.pool.ntp.org > /dev/null 2>&1" >> conf && \
crontab conf && \
rm -f conf && \
crontab -l
(root用戶)配置內核參數
[root@db ~]# vim /etc/sysctl.conf
[root@db ~]# cp /etc/sysctl.conf /etc/sysctl.conf.bak
echo 'net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 8589934591
kernel.shmall = 2097152
fs.aio-max-nr = 1048576
fs.file-max = 6815744
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 = 1048576' > /etc/sysctl.conf
/sbin/sysctl -p
[root@db ~]# egrep -v '^#|^$' /etc/sysctl.conf | wc -l
22
[root@db ~]# /sbin/sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 2097152
fs.aio-max-nr = 1048576
fs.file-max = 6815744
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 = 1048576
如下爲說明:
kernel.shmmax:
64位linux系統:可取的最大值爲物理內存值-1byte,建議值爲多於物理內存的一半,通常取值大於SGA_MAX_SIZE便可,能夠取物理內存-1byte。例如,若是爲12GB物理內存,可取128*1024*1024*1024-1=12884901887,SGA確定會包含在單個共享內存段中。128GB對應的是137438953471。
kernel.shmall:
該參數控制可使用的共享內存的總頁數。Linux共享內存頁大小爲4KB,共享內存段的大小都是共享內存頁大小的整數倍。一個共享內存段的最大大小是16G,那麼須要共享內存頁數是16GB/4KB=16777216KB /4KB=4194304(頁)。
即16GB對應4194304,8GB對應2097152,128GB對應33554432
net.ipv4.ip_forward = 0 #不變
net.ipv4.conf.default.rp_filter = 1 #不變
net.ipv4.conf.default.accept_source_route = 0 #不變
kernel.sysrq = 0 #不變
kernel.core_uses_pid = 1 #不變
net.ipv4.tcp_syncookies = 1 #不變
net.bridge.bridge-nf-call-ip6tables = 0 #不變
net.bridge.bridge-nf-call-iptables = 0 #不變
net.bridge.bridge-nf-call-arptables = 0 #不變
kernel.msgmnb = 65536 #不變
kernel.msgmax = 65536 #不變
kernel.shmmax = 4294967295 #變 note:4*1024*1024*1024-1=4294967295 共享內存段的最大尺寸,須要小於SGA MAX SIZE,大小爲shmall*頁大小(4K);
kernel.shmall = 2097152 #變note:4*1024*1024/4K*2=2097152,兩倍, 1倍實際不夠,控制共享內存頁數
fs.aio-max-nr = 1048576 #新增 異步I/O請求數目
fs.file-max = 6815744 #新增 一個進程能夠打開的文件句柄的最大數量
kernel.shmmni = 4096 #新增 共享內存段的最大數量,ipcs -sa
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 #新增 默認發送緩衝區大小
(root用戶)配置文件和進程的資源限制,
soft是指當前系統設置生效的值,而hard代表系統中所能設定的最大值,nofile是指文件句柄數,nproc是指進程數,
[root@db ~]# cp /etc/security/limits.conf /etc/security/limits.conf.bak
sed -i.bak 's/1024/102400/' /etc/security/limits.d/90-nproc.conf
ulimit -u 102400
echo 'session required pam_limits.so' >> /etc/pam.d/login
echo '
oracle soft nproc 16000
oracle hard nproc 16384
oracle soft nofile 60000
oracle hard nofile 65536
oracle soft stack 20480
oracle hard stack 20480
* soft memlock unlimited
* hard memlock unlimited' >> /etc/security/limits.conf
[root@db ~]# vim /etc/security/limits.conf
oracle soft nproc 16000 #oracle要求最小爲2047
oracle hard nproc 16384 #--進程的最大數目,對oracle用戶生效
oracle soft nofile 60000 #oracle要求最小爲1024
oracle hard nofile 65536 #--打開文件的最大數目,對oracle用戶生效
oracle soft stack 10240
oracle hard stack 10240
* soft memlock unlimited
* hard memlock unlimited #--最大鎖定內存地址空間,對全部用戶生效
(root用戶)創建必要的Oracle用戶和用戶組,
[root@db ~]# id oracle
id: oracle: No such user
[root@db ~]# groupadd oinstall && groupadd dba && useradd -g oinstall -G dba oracle && id oracle
#建立密碼,密碼自定義
[root@db ~]# echo "oracle" | passwd --stdin oracle
(root用戶)建立安裝數據庫軟件的目錄
#安裝目錄可自行定義,沒有要求,通常推薦安裝目錄爲/opt,/u01,或 /data等目錄
#對權限來講網上有此說755 這個不用糾結,775,755都行。
#咱們只須要把oracle的base目錄/data/app/oracle建立好便可,ORACLE_HOME目錄不須要建立 oracle會在安裝時自動建立。
[root@db ~]# mkdir -p /data/app/oracle && \
mkdir -p /data/app/oraInventory && \
mkdir -p /data/dpdata && \
chown -R oracle:oinstall /data/ && \
chmod -R 775 /data/
root用戶,
#注意一下有的是11.2.0.4/db_1,有的是 11.2.0/db_1,有的是11.2.0/dbhome_1等
[root@db ~]# cat >> /root/.bash_profile << EOF
export ORACLE_BASE=/data/app/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/11.2.0.4/db_1
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib:\$GGS_HOME
export TNS_ADMIN=\$ORACLE_HOME/network/admin/
EOF
[root@db ~]# source /root/.bash_profile && echo $ORACLE_HOME
oracle用戶,
[root@db ~]# su - oracle
[oracle@db ~]$ sed -i.ori 's/^PATH/\#PATH/g' /home/oracle/.bash_profile && \
cat >> /home/oracle/.bash_profile << EOF
export ORACLE_BASE=/data/app/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export ORALCE_OWNER=oracle
PATH=\$PATH:\$HOME/bin:\$ORACLE_HOME/bin:\$ORACLE_HOME/OPatch:\$ORACLE_HOME/jdk/bin:/usr/bin:/usr/sbin:/sbin:/bin:/usr/local/bin:/usr/local/sbin
export PATH
export LANG="en_US.UTF-8"
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib:\$GGS_HOME
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
alias scp='scp -o StrictHostKeyChecking=no'
alias ssh='ssh -o StrictHostKeyChecking=no'
alias rsync='rsync -e \"ssh -o stricthostkeychecking=no\"'
EOF
#注:alias sqlplus='rlwrap sqlplus',alias rman='rlwrap rman' 前面沒有export
[oracle@db ~]$ source /home/oracle/.bash_profile && echo $ORACLE_HOME && echo $ORACLE_BASE && env | grep ORA
oracle用戶上傳Oracle 11.2.0.4安裝軟件,rlwrap-0.42.tar.gz等相應軟件至/tmp 目錄
[oracle@db ~]$ cd /tmp && ll
-rw-r--r--. 1 oracle oinstall 1395582860 Aug 29 19:10 p13390677_112040_Linux-x86-64_1of7.zip
-rw-r--r--. 1 oracle oinstall 1151304589 Aug 29 19:10 p13390677_112040_Linux-x86-64_2of7.zip
-rw-r--r--. 1 oracle oinstall 279608 Aug 29 19:09 rlwrap-0.42.tar.gz
[oracle@db ~]$ cd /tmp/ && \
unzip p13390677_112040_Linux-x86-64_1of7.zip && \
unzip p13390677_112040_Linux-x86-64_2of7.zip && \
chown -R oracle:oinstall /tmp/database/ && \
chmod -R 775 /tmp/database/ && \
cd /tmp/database && ll
#注意是root用戶須要chown -R oracle:oinstall /tmp/database/
(root用戶) 安裝rlwrap
[root@db ~]# cd /tmp && \
yum install readline* -y && \
tar -zxvf rlwrap-0.42.tar.gz && \
cd rlwrap-0.42 && \
./configure && \
make && make install
(root用戶)安裝圖形化界面:
[root@db ~]# yum groupinstall "X Window System" -y
[root@db ~]# yum groupinstall "Desktop" -y
[root@db ~]# yum groupinstall "Font" -y
[root@db ~]# yum install tigervnc -y
[root@db ~]# yum install tigervnc-server -y
[root@db ~]# vncserver #設置遠程圖形化桌面登陸的密碼後vncserver會自動啓動。
You will require a password to access your desktops.
Password:
Verify:
New 'db:1 (root)' desktop is db:1
Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/db:1.log
[root@db ~]# chkconfig vncserver on
[root@db ~]# vim /etc/sysconfig/vncservers #此可不用設置,可忽略
最後一行加入:
VNCSERVERS="1:root" 多個用戶用空格分開,並要先su - 到那個用戶運行vncserver[:n]來設定配置文件和密碼
Windows安裝VNC viewer/realVNC (注:是VNC viewer 不是VNC)
Windows界面打開VNC Viewer,輸入192.168.137.129:1
登陸進去之後,
Open in terminal,
在root用戶下打開普通用戶調用Xserver的權利
[root@db Desktop]# xhost + #(打開普通用戶調Xserver的權利)
這樣咱們就能夠在終端使用oracle用戶調用圖形化了
調用安裝程序: cd ~/database ./runInstaller
接下來就是圖形化安裝了:
http://www.cnblogs.com/smail-bao/p/oracle.html
在生產上我咱們就只安裝oracle 的產品,不建庫。因此咱們install database software only
後面咱們在使用dbca的方式建庫
咱們裝到最後的時候會檢查一下安裝環境,回提示你須要裝一些什麼,回提示咱們少一些c包等,還有pdksh
都給他裝上,還有一個提示就是swap的警告,老師說這個不用管它,就是給swap設置成0也是沒有問題的
還有裝到最後的時候
save Response File
保存的就是應答文件,這個咱們可使用這個文件使用靜默方式來安裝
說到靜默安裝,就不得不提到響應文件(Response File),在Oracle安裝目錄下會提供響應文件模板,這個響應文件其實就是配置文件,裏面能夠配置一些安裝細節,在DBCA圖形界面中可以看到的安裝選項,在響應文件中都有體現。你能夠經過響應文件來設置安裝企業版、我的版、標準版、安裝的語言包,字符集等。
解壓後獲得database目錄,其中包含response目錄,該目錄中有三個rsp文件,用來做爲靜默安裝時的應答文件的模板。
三個文件做用分別是: db_install.rsp:安裝應答 dbca.rsp:建立數據庫應答 netca.rsp:創建監聽、本地服務名等網絡設置的應答
要注意的地方爲ORACLE_HOSTNAME=xx。
[root@db ~]# su - oracle
[oracle@db ~]$ cd /tmp/database && ll
[oracle@db database]$ cd /tmp/database/response && ll
total 80
-rwxrwxr-x 1 oracle oinstall 44533 Aug 27 2013 dbca.rsp
-rwxrwxr-x 1 oracle oinstall 25116 Aug 27 2013 db_install.rsp
-rwxrwxr-x 1 oracle oinstall 5871 Aug 27 2013 netca.rsp
[oracle@db response]$ vim db_install.rsp
#注:能夠經過egrep -v '^#|^$' /tmp/database/response/db_install.rsp查看。
[oracle@db response]$ cp /tmp/database/response/db_install.rsp /tmp/database/response/db_install.rsp.bak
cat > /tmp/database/response/db_install.rsp << EOF
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=sdata01
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/data/app/oraInventory
SELECTED_LANGUAGES=en,zh_CN,th,zh_TW
ORACLE_HOME=/data/app/oracle/product/11.2.0.4/db_1
ORACLE_BASE=/data/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.EEOptionsSelection=true
oracle.install.db.optionalComponents=oracle.rdbms.partitioning:11.2.0.4.0,oracle.oraolap:11.2.0.4.0,oracle.rdbms.dm:11.2.0.4.0,oracle.rdbms.dv:11.2.0.4.0,oracle.rdbms.lbac:11.2.0.4.0,oracle.rdbms.rat:11.2.0.4.0
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oinstall
oracle.install.db.CLUSTER_NODES=
oracle.install.db.isRACOneInstall=
oracle.install.db.racOneServiceName=
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=orcl
oracle.install.db.config.starterdb.SID=orcl
oracle.install.db.config.starterdb.characterSet=AL32UTF8
oracle.install.db.config.starterdb.memoryOption=true
oracle.install.db.config.starterdb.memoryLimit=
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.enableSecuritySettings=true
oracle.install.db.config.starterdb.password.ALL=oracle
oracle.install.db.config.starterdb.password.SYS=oracle
oracle.install.db.config.starterdb.password.SYSTEM=oracle
oracle.install.db.config.starterdb.password.SYSMAN=oracle
oracle.install.db.config.starterdb.password.DBSNMP=
oracle.install.db.config.starterdb.control=DB_CONTROL
oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=
oracle.install.db.config.starterdb.automatedBackup.enable=false
oracle.install.db.config.starterdb.automatedBackup.osuid=
oracle.install.db.config.starterdb.automatedBackup.ospwd=
oracle.install.db.config.starterdb.storageType=
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=
oracle.install.db.config.asm.diskGroup=
oracle.install.db.config.asm.ASMSNMPPassword=
MYORACLESUPPORT_USERNAME=
MYORACLESUPPORT_PASSWORD=
SECURITY_UPDATES_VIA_MYORACLESUPPORT=
DECLINE_SECURITY_UPDATES=true
PROXY_HOST=
PROXY_PORT=
PROXY_USER=
PROXY_PWD=
PROXY_REALM=
COLLECTOR_SUPPORTHUB_URL=
oracle.installer.autoupdates.option=SKIP_UPDATES
oracle.installer.autoupdates.downloadUpdatesLoc=
AUTOUPDATES_MYORACLESUPPORT_USERNAME=
AUTOUPDATES_MYORACLESUPPORT_PASSWORD=
EOF
#如下爲Oracle 11.2.04的說明:
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0//標註響應文件版本
oracle.install.option=INSTALL_DB_SWONLY//.只裝數據庫軟件
ORACLE_HOSTNAME=主機名
UNIX_GROUP_NAME=oinstall//指定oracle inventory目錄的全部者
INVENTORY_LOCATION=/u01/app/oraInventory指定產品清單oracle inventory目錄的路徑
SELECTED_LANGUAGES=en,zh_CN//指定語言
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_home1//設置ORALCE_HOME的路徑
ORACLE_BASE=/u01/app/oracle//指定ORALCE_BASE的路徑
oracle.install.db.InstallEdition=EE//安裝數據庫軟件的版本,企業版
oracle.install.db.EEOptionsSelection=true//手動指定企業安裝組件 選true對安裝大小影響不大因此選true
oracle.install.db.optionalComponents=oracle.rdbms.partitioning:11.2.0.4.0,oracle.oraolap:11.2.0.4.0,oracle.rdbms.dm:11.2.0.4.0,oracle.rdbms.dv:11.2.0.4.0,oracle.rdbms.lbac:11.2.0.4.0,oracle.rdbms.rat:11.2.0.4.0//若是上面選true,這些就是手動指定的組件
oracle.install.db.DBA_GROUP=dba//指定擁有DBA用戶組,一般會是dba組
oracle.install.db.OPER_GROUP=oper//指定oper用戶組
oracle.install.db.CLUSTER_NODES=//指定全部的節點
oracle.install.db.isRACOneInstall=false//是不是RACO方式安裝
oracle.install.db.racOneServiceName=
oracle.install.db.config.starterdb.type=//選擇數據庫的用途,通常用途/事物處理,數據倉庫
oracle.install.db.config.starterdb.globalDBName=指定GlobalName
oracle.install.db.config.starterdb.SID=//你指定的SID
oracle.install.db.config.starterdb.characterSet=AL32UTF8//設置數據庫編碼
oracle.install.db.config.starterdb.memoryOption=true//11g的新特性自動內存管理,也就是SGA_TARGET和PAG_AGGREGATE_TARGET都,不用設置了,Oracle會自動調配兩部分大小,這個要選true
oracle.install.db.config.starterdb.memoryLimit=上面是true的狀況下,指定Oracle自動管理內存的大小,這裏不用填或者填寫物理內存的40%左右等等自定義;
oracle.install.db.config.starterdb.installExampleSchemas=false是否載入模板示例
oracle.install.db.config.starterdb.enableSecuritySettings=true 是否啓用安全設置
oracle.install.db.config.starterdb.password.ALL=123456全部用戶名的密碼
oracle.install.db.config.starterdb.password.SYS=
oracle.install.db.config.starterdb.password.SYSTEM=
oracle.install.db.config.starterdb.password.SYSMAN=
oracle.install.db.config.starterdb.password.DBSNMP=
oracle.install.db.config.starterdb.control=DB_CONTROL數據庫本地管理工具DB_CONTROL,遠程集中管理工具GRID_CONTROL
oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=GRID_CONTROL須要設定grid control的遠程路徑URL
oracle.install.db.config.starterdb.automatedBackup.enable=false設置自動備份
oracle.install.db.config.starterdb.automatedBackup.osuid=.自動備份會啓動一個job,指定啓動JOB的系統用戶ID
oracle.install.db.config.starterdb.automatedBackup.ospwd=自動備份會開啓一個job,須要指定OSUser的密碼
oracle.install.db.config.starterdb.storageType=要求指定使用的文件系統存放數據庫文件仍是ASM
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=使用文件系統存放數據庫文件才須要指定數據文件、控制文件、Redo log的存放目錄
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=使用文件系統存放數據庫文件才須要指定備份恢復目錄
oracle.install.db.config.asm.diskGroup=使用ASM存放數據庫文件才須要指定存放的磁盤組
oracle.install.db.config.asm.ASMSNMPPassword=使用ASM存放數據庫文件才須要指定ASM實例密碼
MYORACLESUPPORT_USERNAME=指定metalink帳戶用戶名
MYORACLESUPPORT_PASSWORD=指定metalink帳戶密碼
SECURITY_UPDATES_VIA_MYORACLESUPPORT=用戶是否能夠設置metalink密碼
DECLINE_SECURITY_UPDATES=true是否設置安全更新,
PROXY_HOST=代理服務器名
PROXY_PORT=代理服務器端口
PROXY_USER=代理服務器用戶名
PROXY_PWD=代理服務器密碼
PROXY_REALM=
COLLECTOR_SUPPORTHUB_URL=
oracle.installer.autoupdates.option=SKIP_UPDATES 自動更新
oracle.installer.autoupdates.downloadUpdatesLoc=自動更新下載目錄
AUTOUPDATES_MYORACLESUPPORT_USERNAME=自動更新的用戶名
AUTOUPDATES_MYORACLESUPPORT_PASSWORD=自動更新的密碼
#注意:上面的ORACLE_BASE若是是其它目錄須要把/data改成好比/u01或/opt等便可
(oracle用戶) 開始執行安裝,第一次有報錯以下,
注意:-responseFile參數必須使用絕對路徑 。
注意: -responseFile是大寫的F。
[oracle@db ~]$ cd /tmp/database/ ; ls
doc install response rpm runInstaller sshsetup stage welcome.html
[oracle@db database]$ unset LANG LANGUAGE;unset DISPLAY;
/tmp/database/runInstaller -silent -force -ignoreSysPrereqs -ignorePrereq -showprogress -responseFile /tmp/database/response/db_install.rsp
#因爲oracle默認不支持CentOS,安裝時加參數-ignoreSysPrereqs 忽略系統檢查,或者修改OS系統標識即把/etc/redhat-release內容修改成redhat-6(若是是centos6就改成redhat-6,centos7就改成redhat-7)
Starting Oracle Universal Installer...
Checking Temp space: must be greater than 120 MB. Actual 778012 MB Passed
Checking swap space: must be greater than 150 MB. Actual 20479 MB Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2018-08-29_07-37-23PM. Please wait ...[oracle@rdata03 database]$ You can find the log of this install session at:
/data/app/oraInventory/logs/installActions2018-08-29_07-37-23PM.log
Prepare in progress.
.................................................. 9% Done.
Prepare successful.
Copy files in progress.
.................................................. 14% Done.
.................................................. 20% Done.
.................................................. 26% Done.
.................................................. 32% Done.
.................................................. 41% Done.
.................................................. 46% Done.
.................................................. 51% Done.
.................................................. 56% Done.
.................................................. 62% Done.
.................................................. 67% Done.
.................................................. 72% Done.
.................................................. 77% Done.
.................................................. 82% Done.
........................................
Copy files successful.
Link binaries in progress.
..........
Link binaries successful.
Setup files in progress.
.................................................. 87% Done.
.................................................. 94% Done.
Setup files successful.
The installation of Oracle Database 11g was successful.
Please check '/data/app/oraInventory/logs/silentInstall2018-08-29_07-37-23PM.log' for more details.
Execute Root Scripts in progress.
As a root user, execute the following script(s):
1. /data/app/oraInventory/orainstRoot.sh
2. /data/app/oracle/product/11.2.0.4/db_1/root.sh
.................................................. 100% Done.
Execute Root Scripts successful.
Successfully Setup Software.
安裝過程大概須要10分鐘左右(根據機型配置時間也不一樣),安裝過程當中有警告[WARNING] 是須要安裝一些i386 的包。查看log安裝便可,不用管它。
同時安裝時最好用screen防止xshell中斷也最好不要打開新的窗口,
root用戶執行上面說的兩個腳本,
第一個腳本執行成功,
[oracle@db database]$ su - root
Password:
[root@rdata03 ~]# sh /data/app/oraInventory/orainstRoot.sh
Changing permissions of /data/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /data/app/oraInventory to oinstall.
The execution of the script is complete.
第二個腳本執行成功,
[root@rdata03 ~]# sh /data/app/oracle/product/11.2.0.4/db_1/root.sh
Check /data/app/oracle/product/11.2.0.4/db_1/install/root_rdata03_2018-08-29_19-42-49.log for the output of root script
靜默配置監聽 oracle用戶,netca.rsp不須要修改,直接創建監聽,退出代碼是0說明成功,1說明失敗。
[oracle@db response]$ pwd
/tmp/database/response
[oracle@db response]$ ls
dbca.rsp db_install.rsp netca.rsp
[oracle@rdata03 database]$ which netca
/data/app/oracle/product/11.2.0.4/db_1/bin/netca
#注:-silent和-responseFile之間有一個空格不要有多個 由於實際測試有報錯,另僅寫netca也可不用寫絕對路徑也可。
[oracle@db response]$ netca -silent -responseFile /tmp/database/response/netca.rsp
Parsing command line arguments:
Parameter "silent" = true
Parameter "responsefile" = /tmp/database/response/netca.rsp
Done parsing command line arguments.
Oracle Net Services Configuration:
Profile configuration complete.
Oracle Net Listener Startup:
Running Listener Control:
/data/app/oracle/product/11.2.0.4/db_1/bin/lsnrctl start LISTENER
Listener Control complete.
Listener started successfully.
Listener configuration complete.
Oracle Net Services configuration successful. The exit code is 0
上面經過netca建立的監聽是動態監聽,接着最好配置一下靜態監聽,
注:HOST要根據實際的主機名來改爲實際的主機名。
[oracle@db response]$ cp $ORACLE_HOME/network/admin/listener.ora $ORACLE_HOME/network/admin/listener.ora.bak`date +%F`
echo 'SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /data/app/oracle/product/11.2.0.4/db_1)
(SID_NAME = orcl)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /data/app/oracle' > $ORACLE_HOME/network/admin/listener.ora
[oracle@db response]$ cp $ORACLE_HOME/network/admin/tnsnames.ora $ORACLE_HOME/network/admin/tnsnames.ora.bak`date +%F`
echo 'ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = db)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
(SERVER = DEDICATED)
)
)
' > $ORACLE_HOME/network/admin/tnsnames.ora
[oracle@db ~]$ lsnrctl reload && tnsping orcl && lsnrctl status
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 29-AUG-2018 20:01:27
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date 29-AUG-2018 19:46:37
Uptime 0 days 0 hr. 14 min. 50 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /data/app/oracle/product/11.2.0.4/db_1/network/admin/listener.ora
Listener Log File /data/app/oracle/diag/tnslsnr/rdata03/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rdata03)(PORT=1521)))
Services Summary...
Service "orcl" has 1 instance(s).
Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
注:裏面的orcl根據你安裝的數據庫實例名肯定。
查看監聽進程是否已經啓動,oracle用戶,
#經過netstat -tlnp 命令,看到
[oracle@db ~]$ netstat -luntp | grep tnslsnr
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 :::1521 :::* LISTEN 6962/tnslsnr
說明監聽器已經在1521端口上開始工做了。
配置靜默創建新庫(同時也創建一個對應的實例)oracle用戶,
[oracle@db oracle]$ mkdir -p /data/app/oracle/oradata && \
mkdir -p /data/app/oracle/flash_recovery_area
[oracle@db response]$ vim /tmp/database/response/dbca.rsp
#注:能夠經過egrep -v '^#|^$' /tmp/database/response/dbca.rsp查看。
[oracle@db response]$ cp /tmp/database/response/dbca.rsp /tmp/database/response/dbca.rsp.bak
cat > /tmp/database/response/dbca.rsp << EOF
[GENERAL]
RESPONSEFILE_VERSION = "11.2.0"
OPERATION_TYPE = "createDatabase"
[CREATEDATABASE]
GDBNAME = "orcl"
SID = "orcl"
TEMPLATENAME = "General_Purpose.dbc"
SYSPASSWORD = "oracle"
SYSTEMPASSWORD = "oracle"
DATAFILEDESTINATION = /data/app/oracle/oradata
RECOVERYAREADESTINATION=/data/app/oracle/flash_recovery_area
CHARACTERSET = "AL32UTF8"
[CONFIGUREDATABASE]
SYSDBAUSERNAME = "sys"
EOF
說明以下:
RESPONSEFILE_VERSION = "11.2.0" #不能更改
OPERATION_TYPE = "createDatabase" #不變 默認便可
GDBNAME = "orcl" #數據庫的名字,隨便怎麼改,不影響,自定義 好比"oracle11g.com"
SID = "orcl" #對應的實例名字instance_name,隨便怎麼改,不影響,自定義 好比"oracle11g.com"
TEMPLATENAME = "General_Purpose.dbc" #不變 默認便可 建庫用的模板文件
SYSPASSWORD = "oracle" #SYS管理員密碼 自定義
SYSTEMPASSWORD = "oracle" #SYSTEM管理員密碼 自定義
DATAFILEDESTINATION = /data/app/oracle/oradata #數據文件存放目錄 可自定義如/data目錄但用戶和組要是oracle:oinstall即mkdir /data ; chown -R oracle:oinstall /data ; chmod -R 775 /data; 固然此項默認是$ORACLE_BASE/oradata 此項原本是註釋掉的,而$ORACLE_BASE/oradata就是/data/app/oracle/oradata,故此項可不用動,即保持註釋掉即也可;
RECOVERYAREADESTINATION=/data/app/oracle/flash_recovery_area #恢復數據存放目錄 閃回區 可自定義
CHARACTERSET = "AL32UTF8" #字符集,重要!!! 建庫後通常不能更改,因此建庫前要肯定清楚,選AL32UTF8比較合適;
NATIONALCHARACTERSET= "AL16UTF16" #最好仍是保持默認的"AL16UTF16",這裏我選的UTF8可能出現了後面的PLSQL中文亂碼;
#MEMORYPERCENTAGE = "40" #服務器物理內存分配給oracle的內存比例,這裏先不選
#TOTALMEMORY = "3500" # //物理內存的60%左右,分配給oracle的總內存3500MB,可自行設定 或者註釋不選由於oracle會自行管理;
#-----------------------*** End of CREATEDATABASE section ***------------------------
SOURCEDB = "myhost:1521:orcl" #End of CREATEDATABASE sectio後面的不少沒有註釋掉的選項不用管。
(oracle用戶)執行靜默創建新庫,同時也創建一個對應的實例,
注意:-responseFile 參數必須使用絕對路徑。
[oracle@db oracle]$ mkdir -p /data/app/oracle/oradata && \
mkdir -p /data/app/oracle/flash_recovery_area
[oracle@db response]$ dbca -silent -responseFile /tmp/database/response/dbca.rsp
Copying database files
1% complete
3% complete
11% complete
18% complete
26% complete
37% complete
Creating and starting Oracle instance
40% complete
45% complete
50% complete
55% complete
56% complete
60% complete
62% complete
Completing Database Creation
66% complete
70% complete
73% complete
85% complete
96% complete
100% complete
Look at the log file "/data/app/oracle/cfgtoollogs/dbca/orcl/orcl.log" for further details.
檢查oracle進程,
[oracle@db ~]$ ps -ef | grep ora_ | grep -v grep | wc -l
23
[oracle@db ~]$ ps -ef | grep ora_ | grep -v grep
oracle 7952 1 0 Aug17 ? 00:00:09 ora_pmon_orcl
oracle 7954 1 0 Aug17 ? 00:03:42 ora_vktm_orcl
oracle 7958 1 0 Aug17 ? 00:00:03 ora_gen0_orcl
oracle 7960 1 0 Aug17 ? 00:00:03 ora_diag_orcl
oracle 7962 1 0 Aug17 ? 00:00:02 ora_dbrm_orcl
oracle 7964 1 0 Aug17 ? 00:00:03 ora_psp0_orcl
oracle 7966 1 0 Aug17 ? 00:00:31 ora_dia0_orcl
oracle 7968 1 0 Aug17 ? 00:00:03 ora_mman_orcl
oracle 7970 1 0 Aug17 ? 00:00:12 ora_dbw0_orcl
oracle 7972 1 0 Aug17 ? 00:00:13 ora_lgwr_orcl
oracle 7974 1 0 Aug17 ? 00:00:23 ora_ckpt_orcl
oracle 7976 1 0 Aug17 ? 00:00:08 ora_smon_orcl
oracle 7978 1 0 Aug17 ? 00:00:01 ora_reco_orcl
oracle 7980 1 0 Aug17 ? 00:00:14 ora_mmon_orcl
oracle 7982 1 0 Aug17 ? 00:00:26 ora_mmnl_orcl
oracle 7984 1 0 Aug17 ? 00:00:01 ora_d000_orcl
oracle 7986 1 0 Aug17 ? 00:00:00 ora_s000_orcl
oracle 8025 1 0 Aug17 ? 00:00:01 ora_qmnc_orcl
oracle 8040 1 0 Aug17 ? 00:00:13 ora_cjq0_orcl
oracle 8044 1 0 Aug17 ? 00:00:00 ora_q001_orcl
oracle 8072 1 0 Aug17 ? 00:00:02 ora_smco_orcl
oracle 8383 1 0 Aug17 ? 00:00:03 ora_q002_orcl
oracle 10943 1 0 08:32 ? 00:00:00 ora_w000_orcl
(oracle用戶) 這裏查看/etc/oratab配置文件,能夠看到配置文件的最後多了一行,
orcl:/data/app/oracle/product/11.2.0/dbhome_1:N
,這是配置文件裏說的標準格式$ORACLE_SID:$ORACLE_HOME:<N|Y>: 即其中的Y是Oracle隨開機啓動,N是開機不自動啓動,說明:第一個區域的值是sid,第二個區域的值是數據庫主目錄,第三個區域的值Y或N指定你是否想要dbstart和dbshut腳本啓動並關閉數據庫,若是不用dbstart腳本啓動數據庫,而是用本身的腳原本啓動,根本不須要oratab文件。
能夠根據狀況設爲Y即 orcl:/data/app/oracle/product/11.2.0/dbhome_1:Y,這裏先不設定。
[oracle@db ~]$ ll /etc/oratab
-rw-rw-r-- 1 oracle oinstall 725 Aug 17 19:16 /etc/oratab
[oracle@db ~]$ cat /etc/oratab
#
# This file is used by ORACLE utilities. It is created by root.sh
# and updated by the Database Configuration Assistant when creating
# a database.
# A colon, ':', is used as the field terminator. A new line terminates
# the entry. Lines beginning with a pound sign, '#', are comments.
#
# Entries are of the form:
# $ORACLE_SID:$ORACLE_HOME:<N|Y>:
#
# The first and second fields are the system identifier and home
# directory of the database respectively. The third filed indicates
# to the dbstart utility that the database should , "Y", or should not,
# "N", be brought up at system boot time.
#
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#
orcl:/data/app/oracle/product/11.2.0/dbhome_1:N
在這個時間,windows死機了則強制重啓電腦,而後打開VMware-->打開CentOS6.5-->ps -ef | grep ora_ | grep -v grep | wc -l 發現結果是0-->則先啓動監聽lsnrctl start-->再用sqlplus進行啓動便可,具體以下 ,
第一步:打開監聽
$ lsnrctl start
第二步:進入sqlplus
$ sqlplus /nolog
SQL>
第三步:使用sysdba角色登陸sqlplus
SQL> conn /as sysdba
第四步:啓動數據庫
SQL> startup
具體操做以下,
[oracle@db ~]$ ps -ef | grep ora_ | grep -v grep | wc -l
0
[oracle@db ~]$ lsnrctl start
[oracle@db ~]$ sqlplus /nolog
SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 1603411968 bytes
Fixed Size 2213776 bytes
Variable Size 973080688 bytes
Database Buffers 620756992 bytes
Redo Buffers 7360512 bytes
Database mounted.
Database opened.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options
[oracle@db ~]$ ps -ef | grep ora_ | grep -v grep | wc -l
23
可使用show parameter;或者select table_name from dba_tables;看看是否正常
[oracle@db ~]$ sqlplus / as sysdba
SQL> show parameter;
SQL> select table_name from dba_tables;
SQL> show user;
開啓強制日誌記錄,開啓歸檔(歸檔要在mount下才行),開啓閃回(閃回也要在mount下才行),增大線程和會話數。
[oracle@db ~]$ sqlplus / as sysdba
SQL>
shutdown immediate;
startup mount;
--開啓歸檔
alter database archivelog;
--開啓閃回
alter database flashback on;
alter database open;
--開啓強制日誌
alter database force logging;
--增長鏈接進程,默認是150,更改後重啓才能生效
show parameter processes;
alter system set processes=1500 scope=spfile;
--再次查看仍是150,是由於只有重啓後才能生效,可是注意此更改已經更改到了spfile文件若是此時咱們不重啓而直接查看spfile文件能夠看到已是*.processes=1500
show parameter processes;
--增長會話數,默認是248,更改後重啓才能生效
show parameter sessions ;
alter system set sessions=1500 scope=spfile;
--再次查看仍是248,是由於只有重啓後才能生效,可是注意此更改已經更改到了spfile文件若是此時咱們不重啓而直接查看spfile文件能夠看到已是*.sessions=1500
show parameter sessions ;
--默認爲200,更改後重啓才能生效
alter system set db_files=2000 scope=spfile;
--再次查看仍是200,是由於只有重啓後才能生效,可是注意此更改已經更改到了spfile文件
show parameter db_files;
--增長歸檔、閃回區,默認是4GB,修改後會當即生效
alter system set db_recovery_file_dest_size=50G;
show parameter db_recovery_file_dest;
shutdown immediate;
startup;
--查看修改後的參數
select status from v$instance;
select log_mode,open_mode,flashback_on from v$database;
select name,log_mode,force_logging from v$database;
show parameter processes;
show parameter sessions ;
show parameter db_files;
create pfile from spfile;
--在sqlplus裏切換用戶後要很是當心,以防在非想要執行的用戶下執行增刪改查而致使出錯。 --能夠修改sqlplus 的提示符:SQL> ,把這個改爲咱們用戶和實例名,這樣就不容易出錯。
--另外,sqlplus的行和頁也設置一下set linesize 9999 pagesize 9999;
查看原文件,
[oracle@db ~]$ cat $ORACLE_HOME/sqlplus/admin/glogin.sql
--
-- Copyright (c) 1988, 2011, Oracle and/or its affiliates.
-- All rights reserved.
--
-- NAME
-- glogin.sql
--
-- DESCRIPTION
-- SQL*Plus global login "site profile" file
--
-- Add any SQL*Plus commands here that are to be executed when a
-- user starts SQL*Plus, or uses the SQL*Plus CONNECT command.
--
-- USAGE
-- This script is automatically run
--
進行更改,
[oracle@db ~]$ cp $ORACLE_HOME/sqlplus/admin/glogin.sql $ORACLE_HOME/sqlplus/admin/glogin.sql.bak`date +%F`
cat >> $ORACLE_HOME/sqlplus/admin/glogin.sql << EOF
set sqlprompt "_USER'@'_CONNECT_IDENTIFIER > "
set linesize 9999 pagesize 9999
EOF
[oracle@db ~]$ tail -n 2 $ORACLE_HOME/sqlplus/admin/glogin.sql
set sqlprompt "_USER'@'_CONNECT_IDENTIFIER > "
set linesize 9999 pagesize 9999
[oracle@rac01 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Fri Sep 7 13:14:36 2018
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, Oracle Label Security,
OLAP, Data Mining, Oracle Database Vault and Real Application Testing options
SYS@orcl1 >
rman按期刪除歸檔,以避免歸檔爆滿了形成數據庫沒法正常工做,
[oracle@rdata01 ~]$ echo '#!/bin/bash
###################
. /etc/profile
. ~/.bash_profile
##################
echo `date +%F_%T` >> /home/oracle/deletearchivelog.log
rman target / <<EOF
crosscheck archivelog all;
delete noprompt expired archivelog all;
DELETE noprompt ARCHIVELOG ALL COMPLETED BEFORE "SYSDATE-1";
exit;
EOF' > deletearchivelog.sh
[oracle@rdata01 ~]$ chmod a+x deletearchivelog.sh
#注:若是上面的腳本deletearchivelog.sh中的. ~/.bash_profile表明的是rman在執行時要用到兩個環境變量
export ORACLE_HOME=/data/app/oracle/product/11.2.0/db_1
export ORACLE_SID=phydb
[oracle@rdata01 ~]$ crontab -l
0 3 * * * /home/oracle/deletearchivelog.sh > /home/oracle/deletearchivelog.log 2>&1
#須要root用戶
[root@rdata01 ~]# yum install -y vixie-cron && chkconfig crond on && chkconfig --list crond && service crond start
[root@rdata01 ~]# tailf /var/log/cron
Jul 4 15:20:01 rdata01 CROND[22239]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Jul 4 15:20:01 rdata01 CROND[22242]: (oracle) CMD (/home/oracle/deletearchivelog.sh >> /home/oracle/deletearchivelog.log 2>&1)
根據根據來設置是否開機啓動,若是要開啓則參數下面的方法,
3一、 開機自動啓動Oracle服務配置
A、 修改dbstart和dbshut腳本
[oracle@tsp-rls-dbserver ~]$ vi $ORACLE_HOME/bin/dbstart
[oracle@tsp-rls-dbserver ~]$ vi $ORACLE_HOME/bin/dbshut
找到文件中的ORACLE_HOME_LISTNER=$1,修改成:ORACLE_HOME_LISTNER=$ORACLE_HOME
B、 修改oratab文件
[oracle@tsp-rls-dbserver ~]$ vi /etc/oratab
將ORATSP:/home/oracle/app/product/11.2.0/dbhome_1:N
修改成:ORATSP:/home/oracle/app/product/11.2.0/dbhome_1:Y
C、 修改rc.local文件(root用戶)
[root@tsp-rls-dbserver deps]# vi /etc/rc.d/rc.local
文件尾部添加以下信息:
su oracle -lc "/home/oracle/app/product/11.2.0/dbhome_1/bin/emctl start dbconsole"
su oracle -lc "/home/oracle/app/product/11.2.0/dbhome_1/bin/lsnrctl start"
su oracle -lc "/home/oracle/app/product/11.2.0/dbhome_1/bin/dbstart"
根據根據來設置,若是要開啓則參數下面的方法,
執行命令:
[root@tsp-rls-dbserver deps]# /sbin/iptables -I INPUT -p tcp --dport 1521 -j ACCEPT
[root@tsp-rls-dbserver deps]# /sbin/iptables -I INPUT -p tcp --dport 1158 -j ACCEPT
保存設置命令:
[root@tsp-rls-dbserver deps]# /etc/rc.d/init.d/iptables save
查看端口打開狀況命令:
[root@tsp-rls-dbserver deps]# /etc/init.d/iptables status
重啓防火牆服務
[root@tsp-rls-dbserver deps]# /etc/rc.d/init.d/iptables restart
建立用戶和表空間,
create tablespace trade02 logging datafile '/data/app/oracle/oradata/trade02.dbf' size 2048M autoextend on next 500M maxsize unlimited extent management local segment space management auto;
CREATE TEMPORARY TABLESPACE trade02_temp TEMPFILE '/data/app/oracle/oradata/trade02_temp.dbf' SIZE 10240M AUTOEXTEND ON NEXT 500M MAXSIZE unlimited EXTENT MANAGEMENT LOCAL ;
CREATE USER trade02 IDENTIFIED BY oracle DEFAULT TABLESPACE trade02 TEMPORARY TABLESPACE trade02_temp;
ALTER TABLESPACE trade02 ADD DATAFILE '/data/app/oracle/oradata/trade02_0001.dbf' SIZE 10G AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED;
grant connect,resource,dba to trade02;
具體以下,
[oracle@db ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Fri Aug 18 15:42:27 2017
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options
SQL> create tablespace trade02 logging datafile '/data/app/oracle/oradata/trade02.dbf' size 2048M autoextend on next 500M maxsize unlimited extent management local segment space management auto;
Tablespace created.
SQL> CREATE TEMPORARY TABLESPACE trade02_temp TEMPFILE '/data/app/oracle/oradata/trade02_temp.dbf' SIZE 10240M AUTOEXTEND ON NEXT 500M MAXSIZE unlimited EXTENT MANAGEMENT LOCAL ;
Tablespace created.
SQL> CREATE USER trade02 IDENTIFIED BY oracle DEFAULT TABLESPACE trade02 TEMPORARY TABLESPACE trade02_temp;
User created.
SQL> ALTER TABLESPACE trade02 ADD DATAFILE '/data/app/oracle/oradata/trade02_0001.dbf' SIZE 10G AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED;
SQL> grant connect,resource,dba to trade02;
Grant succeeded.
sys用戶建立表和查詢表,
[oracle@db ~]$ sqlplus / as sysdba
SQL> create table STUDENT(ID int, NAME varchar(20));
Table created.
SQL> insert into STUDENT values(1, '張三');
1 row created.
SQL> select * from student;
ID NAME
---------- --------------------
1 張三
此時用PLSQL在windows機器上登陸trade02用戶試試,成功登陸,建立和查詢表OK,
PLSQL中文亂碼:
問題描述:
咱們能夠看到經過Xshell鏈接到Oracle服務器,插入中文而後查詢中文沒有亂碼,用PLSQL連上雲查詢也沒有亂碼,
在PLSQL裏面能夠插入中文也能夠提交,但用PLSQL查詢發現是亂碼,用XShell連上去發現也是亂碼,
[oracle@db ~]$ sqlplus trade02/oracle
SQL> create table WANG(ID int, NAME varchar(20));
Table created.
SQL> insert into wang values(1,'王');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from wang;
ID NAME
---------- --------------------
1 王
SQL> show user;
USER is "TRADE02"
SQL> INSERT INTO WANG VALUES(2,'中華55');
1 row created.
SQL> commit;
Commit complete.
SQL> SELECT * FROM WANG;
ID NAME
---------- --------------------
1 王
2 中華55
SQL> select * from wang;
ID NAME
---------- --------------------
3 ����
1 王
2 中華55
解決方法:本地windows電腦添加環境變量便可解決,
計算機--》鼠標右鍵--》屬性--》高級系統設置--》高級--》環境變量--》新建兩個變量 LANG=zh_CN.GBK
NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"--》而後從新PLSQL便可。
變量名:LANG
變量值:zh_CN.GBK
變量名:NLS_LANG
變量值:"SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
可能發生中文亂碼的緣由,
我認爲是在靜默建庫建實例的時間我把NATIONALCHARACTERSET選的UTF8,應該選"AL16UTF16",由於我查的咱們現有的測試環境,模擬盤和實盤都是"AL16UTF16",
Select * FROM nls_database_parameters where parameter like '%NLS%';
/opt/database/response/dbca.rsp
NATIONALCHARACTERSET= "UTF8" #最好仍是保持默認的"AL16UTF16",這裏我選的UTF8可能出現了後面的PLSQL中文亂碼;
查看Oracle server的字符集,
select userenv('language') from dual;
還有最後一種安裝方式就是拷貝安裝了,咱們直切拷貝本機的oracle目錄和oraInventory兩個目錄到別的機器上,或者咱們這個把這兩個目錄保存在一個地方,爲了之後能夠直接使用(乾淨的oracle產品,也就是剛剛安裝好的oracle)
最後的安裝oracle產品的兩種方法要注意了,我要配好全部的環境和相關依賴包的安裝,這些工做都得提早作好
在生產上提議使用靜默安裝和圖形化安裝
如今庫也建好了,那接下來就是看下oracle的一些簡單命令和一些設置了
su - oracle
咱們經過sqlplus / as sysdba的方式鏈接數據庫
還有一種方式就是
sqlplus / nolog 這個是啓動工具,可是不登陸
要使用
connect / as sysdba 的方式鏈接到sysdba超級用戶,connect能夠縮寫成conn
show user; 查看當前是哪一個用戶登陸
sysdba 數據的最高權限擁有者
alter user scott account unlock
給scott的用戶解鎖
conn scott/tiger
鏈接到scott,使用tiger密碼登陸
這個時候會提示密碼到期了,oracle默認的密碼是180天過時,可是隻是給你一個警告,讓你換密碼,可是即便你不換使用之前的密碼也是能夠的
這裏咱們會發現咱們登陸以後,回退鍵等按鍵沒法使用,這個時候咱們就要裝一個rlwrap的東西了
select * from tab;
返回當前用戶有哪些表,視圖等;
咱們使用 sqlplus / as sysdba;登陸
而後使用alter user scott account unlock;給scott用戶解鎖
還有一種狀況就是咱們在查看錶的時候有幾種狀況看着比較不舒服
一個就是當一行字符比較多的時候就亂行了
還有一種就是一個頁面有多行的時候會分頁,因此這裏咱們就要作一些操做
cd /home/oracle
vim login.sql(文件名必須爲login.sql)
set linesize 100 設定一行最多能夠顯示100個字符
set pagesize 100 設置一頁作多能夠顯示一百行
set long 50000
set timing on 在執行完sql以後末尾加上執行時間是多少,作一個時間統計
這個文件咱們是保存在/home/oracle目錄下的,因此這個美化的功能只能夠在/home/oracle目錄下鏈接oracle才能生效,在別的目錄下是不生效的,因此咱們要給它定義到配置文件中
咱們能夠查看一下show linesize;
咱們也能夠在終端設置這個參數,可是退出oracle終端的時候下次登陸就沒用了,因此咱們加一個環境變量
cd /home/oracle
vim .bashrc
添加一行
export SQL_PATH=/home/oracle
source .bashrc
添加這個環境變量的意義就在之後每次無論在任何目錄下啓動sqlplus,都到/home/oracle下讀取login.sql 文件
還有就是咱們在使用sqlplus的時候,咱們發現回退鍵以及上下鍵都不能使用,咱們須要裝一下rlwrap
裝完以後,咱們設置一下別名
cd /home/oracle
vim .bash_profile
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
再次登陸就可使用了
只須要其中的第一個和第二個文件。將2個文件解壓縮,而後將第二個文件的內容copy到第一個文件的對應目錄裏。即將2個文件合成一個文件。
oracle 安裝爲了咱們的生產環境作準備,必定要安裝服務器類,
安裝類型 必定選 高級配置 由於咱們不是小白且要配置語言防止亂碼 及若是要測試和聯繫用的話須要樣本數據。
要選擇企業版。SID 即server ID 服務ID,與全局數據庫名稱一致,可自定義,示例方案 是scott用戶的測試樣本數據,字符集 UTF-8,示例方案打勾沒勾沒練習用scott數據,計算機 右鍵 管理 服務,自動改成手動,其中服務器啓動慢,。
徹底卸載即把oracle軟件和實例所有都卸載掉。
Oracle11徹底卸載方法
在10g中要卸載CRS是件很是繁瑣的事。到了11g,oracle提供了卸載工具deinstall,用這個工具能夠卸載的很是乾淨。這個工具默認放在oracle用戶下的$ORACLE_HOME/deinstall/deinstall,RAC的話也是grid用戶下的$ORACLE_HOME/deinstall/deinstall 。google了下,發現只須要執行這個工具一次就能夠了。當中分別oracle用戶和grid用戶各執行了一次才卸載完成。
su - grid
運行過程當中可能須要填寫以下項:
指定要取消配置的全部單實例監聽程序[LISTENER]:LISTENER指定在此 Oracle 主目錄中配置的數據庫名的列表 [MYDATA,ORCL]: MYDATA,ORCL是否仍要修改 MYDATA,ORCL 數據庫的詳細資料? [n]: nCCR check is finished是否繼續 (y - 是, n - 否)? [n]: y
1.中止OEM,我在生產通常都不裝這個(Oracle用戶)
emctl stop dbconsole db
2.中止監聽服務(oracle用戶登陸)
[oracle@tsp-rls-dbserver ~]$ lsnrctl stop
3.中止數據庫(oracle用戶登陸)
[oracle@tsp-rls-dbserver ~]$ sqlplus / as sysdba <<EOF
shutdown immediate;
exit;
EOF
4.刪除oracle安裝路徑(root用戶登陸)
目錄位置記錄在oraInst.loc文件中,
$ more /etc/oraInst.loc
inventory_loc=/u01/app/oracle/oraInventory
inst_group=oinstall
[root@tsp-rls-dbserver deps]# rm -rf /home/oracle/app
[root@tsp-rls-dbserver deps]# rm -rf /home/oracle/oraInventory
5.刪除系統路徑文件(root用戶登陸)
[root@tsp-rls-dbserver deps]#
rm -rf /usr/local/bin/dbhome
rm -rf /usr/local/bin/oraenv
rm -rf /usr/local/bin/coraenv
6.刪除數據庫實例表(root用戶登陸)
[root@tsp-rls-dbserver deps]# rm -rf /etc/oratab
7.刪除數據庫實例lock文件(root用戶登陸)
[root@tsp-rls-dbserver deps]# rm -rf /etc/oraInst.loc
8.刪除oracle用戶及用戶組(root用戶登陸)
[root@tsp-rls-dbserver deps]# userdel -r oracle
[root@tsp-rls-dbserver deps]# groupdel oinstall
[root@tsp-rls-dbserver deps]# groupdel dba
#!/bin/bash
lsnrctl stop
sqlplus / as sysdba << EOF
shutdown immediate
exit
EOF
find $ORACLE_BASE/ -name $ORACLE_SID | xargs rm -rf
find $ORACLE_BASE/ -name $ORACLE_SID -exec rm -rf {} \;
find $ORACLE_BASE/* -name '*[Oo][Rr][Cc][Ll]*' | grep -v admin | grep -v oradata
find $ORACLE_BASE/* -name '*[Oo][Rr][Cc][Ll]*' | grep -v admin | grep -v oradata | xargs rm -rf
步驟一:關閉數據庫
1. lsnrctl stop ; sqlplus / as sysdba
2. shutdown immediate
步驟二:刪除實例相關文件(先查詢,而後檢查是否有非實例相關文件,而後根據狀況刪除)
1. find $ORACLE_BASE/ -name $ORACLE_SID
2. 用命令刪除查詢後的文件
find $ORACLE_BASE/ -name $ORACLE_SID -exec rm -rf {} \;
步驟三:刪除配置文件,假設咱們刪除的實例是YC(先查詢,而後檢查是否有非實例相關文件,而後根據狀況刪除)
好比是orcl的話,則
1. find $ORACLE_BASE/* -name '*[Oo][Rr][Cc][Ll]*' | grep -v admin | grep -v oradata
2. 用命令刪除查詢的文件
find $ORACLE_BASE/* -name '*[Oo][Rr][Cc][Ll]*' | grep -v admin | grep -v oradata | xargs rm -rf
步驟四:刪除實例配置文件中的信息
1. vim /etc/oratab
2. 找到orcl:/opt/oracle/db/product/11g:N
3. 將該行信息刪除,並保存文件
通過以上步驟能夠實現命令行乾淨的刪除實例
1、在oracle11G之前卸載oracle會存在卸載不乾淨,致使再次安裝失敗的狀況,在運行services.msc打開服務,中止Oracle的全部服務。
2、 oracle11G自帶一個卸載批處理\app\Administrator\product\11.2.0\dbhome_1\deinstall\deinstall.bat運行該批處理程序將自動完成oracle卸載工做,最後手動刪除\app文件夾(可能須要重啓才能刪除)
運行過程當中可能須要填寫以下項:
指定要取消配置的全部單實例監聽程序[LISTENER]:LISTENER指定在此 Oracle 主目錄中配置的數據庫名的列表 [MYDATA,ORCL]: MYDATA,ORCL是否仍要修改 MYDATA,ORCL 數據庫的詳細資料? [n]: nCCR check is finished是否繼續 (y - 是, n - 否)? [n]: y
3、運行regedit命令,打開註冊表。刪除註冊表中與Oracle相關內容,具體下:
刪除HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE目錄。刪除HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services中全部以oracle或OraWeb爲開頭的鍵。刪除HKEY_LOCAL_MACHINE/SYSETM/CurrentControlSet/Services/Eventlog/application中全部以oracle開頭的鍵。刪除HKEY_CLASSES_ROOT目錄下全部以Ora、Oracle、Orcl或EnumOra爲前綴的鍵。刪除HKEY_CURRENT_USER/SOFTWARE/Microsoft/windows/CurrentVersion/Explorer/MenuOrder/Start Menu/Programs中全部以oracle 開頭的鍵。刪除HKDY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI中除Microsoft ODBC for Oracle註冊表鍵之外的全部含有Oracle的鍵。刪除環境變量中的PATHT CLASSPATH中包含Oracle的值。刪除「開始」/「程序」中全部Oracle的組和圖標。刪除全部與Oracle相關的目錄,包括: (1)、c:\Program file\Oracle目錄。 (2)、ORACLE_BASE目錄。(3)、c:\Documents and Settings\系統用戶名、LocalSettings\Temp目錄下的臨時文件。
升級oracle11G從11.2.0.1到11.2.0.4,
因爲Oracle從11.2.0.2開始,Oracle database的補丁集合是完整的安裝包,將再也不須要安裝11.2.0.1版本。因此升級的方式和之前的補丁包不一樣。11.2.0.4的軟件須要安裝在一個全新的目錄,而不是在原有的11.2.0.1的目錄下打補丁。能夠將Oracle Database 安裝的新的OracleHome directory,當安裝結束後,舊的database 會遷移到新的Oracle homedirectory。
完整的備份數據庫 升級數據庫是一個有風險的過程,須要仔細規劃和慎重處理。首先要作數據庫的徹底備份,備份的內容包括數據文件,控制文件,歸檔文件,日誌文件,控制文件,參數文件,密碼文件等。能夠備份一下整個ORACLE_HOME目錄,若是升級有問題,還能夠還原回來。備份的方法可使用dump數據泵,tar,rman等。
如:RMAN全備
export ORACLE_SID=orcl
rman target /
RMAN>backup full database plus archivelog //全備數據庫,而且包括ArchiveLog。
備份老的ORACLE_HOME和oraInventory
[root@db01 ~]#tar –cvfp product.zip /opt/app/oracle/
[root@db01 ~]#tar –cvfp oraInventory.zip /opt/app/oraInventory/
1.數據庫運行的系統架構和版本
這裏是64位的硬件架構,建議選擇64位的oracle數據庫。
[oracle@db ~]$ getconf LONG_BIT
64
SQL> select name from v$database;
NAME
---------
ORCL
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Productio
2.文件系統的使用狀況
這裏數據庫的安裝到/u01分區,須要預留5G左右的空間作升級文件存放,若是不夠則添加掛載新硬盤空間,
[root@db ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 27G 17G 8.7G 66% /
tmpfs 1.9G 72K 1.9G 1% /dev/shm
/dev/sda1 485M 39M 421M 9% /boot
/dev/sdb1 60G 180M 56G 1% /u01
3.查看手中的數據庫升級包資源
數據庫的升級建議從小版本逐步升級,不能跨大版本升級。這樣會產生不可預料的錯誤。
先知道Oracle 7個更新文件的做用: 第一 和 二個包表示database ,
若是安裝或升級數據庫,只須要這2個文件便可。 第三個包表示grid, 用來升級RAC 的CRS。若是升級RAC 要先用這個文件。 第四個表示客戶端, 第五個表示gateways, 第六個表示 examples, 這個是咱們的示例文件安裝包。
1.(Oracle用戶)乾淨的關閉數據庫
關閉數據庫的方法不少,可是爲了升級的順利和生產的須要,建議使用以下命令:
shutdown immediate;
咱們能夠經過查看進程的方式肯定數據庫是否關閉;
ps -ef |grep ora_|grep -v grep
具體操做以下:
[oracle@db ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Tue Aug 22 03:41:52 2017
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options
[oracle@db ~]$ ps -ef |grep ora_|grep -v grep
2.(Oracle用戶)關閉數據庫的監聽
在數據庫的升級中,會對數據庫的監聽文件作從新的配置,建議正常的關閉監聽,以下:
lsnrctl stop
但在實際的應用中,須要查看監聽端口是否開放,來肯定監聽是否已經關閉,以下:
netstat -an |grep 1521
netstat -an |grep 55
具體操做以下:
[oracle@db ~]$ lsnrctl stop
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 22-AUG-2017 03:43:18
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
The command completed successfully
或 SQL> host lsnrctl stop
[oracle@db ~]$ netstat -an |grep 1521
3.(Oracle用戶)關閉EM 此項忽略,生產環境通常不安裝則不須要檢查
在升級中須要關閉EM,查看EM是否關閉能夠經過查看EM的默認端口1158是否開放:
netstat -an |grep 1158
而後根據須要關閉,以下:
SQL> host emctl stopdbconsole
4.(Oracle用戶)不對數據庫的任何原有文件作操做
本人在升級中,編輯數據庫的監聽文件,致使配置監聽和EM錯誤,故不對數據庫的任何原有文件作操做。
下面的檢查同Oracle的全新正常安裝即前面的3.1.1前提和3.1.3靜默安裝,
這次升級實際系統配置,徹底接着對上面的3.1.1和3.1.3靜默安裝的11.2.0.1數據庫,因爲虛擬磁盤不夠建立了/u01目錄並新添加了在vmware中新添加了一塊虛擬磁盤掛載到此目錄,
環境:在VMware中安裝CentOS6.5虛擬機,在此虛擬機裏面靜默安裝Oracle數據庫,
CPU:2x2=4核 (CPU大小可自定義)
內存:4G(官方最低要求1G)
硬盤:30G+60G(企業版安裝所需4.29G和1.7G數據文件,硬盤大小可自定義)
系統:CentOS release 6.5 (Final)
系統內核:Linux 2.6.32-431.el6.x86_64
Oracle:現有版本11.2.0.1,下面將升級到11.2.0.4,
1.(root用戶)檢查虛擬內存,待安裝目錄和/tmp目錄大小設置
2.(root用戶)檢查系統架構
3.(root用戶)設置yum源 #已配置過
4.(root用戶)selinux 關掉 #已配置過
5.(root用戶)防火牆關閉 #已配置過了
6.(root用戶)修改主機名(自定義) #已配置過
7.(root用戶)上傳oracle 11.2.0.4軟件軟件至/u01目錄
[root@db u01]# pwd
/u01
[root@db u01]# ll
total 2487224
drwx------ 2 root root 16384 Aug 22 01:00 lost+found
-rw-r--r-- 1 root root 1395582860 Aug 22 02:36 p13390677_112040_Linux-x86-64_1of7.zip
-rw-r--r-- 1 root root 1151304589 Aug 22 02:35 p13390677_112040_Linux-x86-64_2of7.zip
8.(root用戶)安裝軟件包 #已安裝過
9.(root用戶)創建必要的用戶和用戶組 #已配置過
10.(root用戶)配置內核參數 #已配置過
11.(root用戶)改文件限制 #已配置過
12.(root用戶)建立安裝數據庫軟件的目錄
[root@db u01]# id oracle
uid=501(oracle) gid=501(oinstall) groups=501(oinstall),502(dba)
[root@db u01]# mkdir -p /u01/app/oracle
[root@db u01]# mkdir -p /u01/app/oraInventory
[root@db u01]# chown -R oracle:oinstall /u01/app
[root@db u01]# chmod 775 /u01/app
[root@db u01]# ll -d /u01/app
drwxrwxr-x 4 oracle oinstall 4096 Aug 22 03:05 /u01/app
13. (root用戶) 安裝rlwrap #已安裝過
14.(root, oracle用戶)配置環境變量 #先保持原來的不變
root用戶,
[root@db opt]# vim /root/.bash_profile #先保持原來的不變
oracle用戶,
[root@db ~]# su – oracle
[oracle@db ~]$ vim /home/oracle/.bash_profile #先保持原來的不變
15.(root用戶)準備安裝包及其權限,
進入/opt 解壓oracle壓縮包
[root@db ~]# cd /u01
[root@db u01]# ll #注意是root用戶
total 2487228
drwxrwxr-x 4 oracle oinstall 4096 Aug 22 03:05 app
drwx------ 2 root root 16384 Aug 22 01:00 lost+found
-rw-r--r-- 1 root root 1395582860 Aug 22 02:36 p13390677_112040_Linux-x86-64_1of7.zip
-rw-r--r-- 1 root root 1151304589 Aug 22 02:35 p13390677_112040_Linux-x86-64_2of7.zip
[root@db u01]# unzip p13390677_112040_Linux-x86-64_1of7.zip #注意是root用戶
[root@db u01]# unzip p13390677_112040_Linux-x86-64_2of7.zip #注意是root用戶
解壓後修改文件夾權限
[root@db u01]# chown -R oracle:oinstall /u01/database/ #注意是root用戶
[root@db u01]# chmod -R 775 /u01/database/ #注意是root用戶
[root@db u01]# ll
total 2487232
drwxrwxr-x 4 oracle oinstall 4096 Aug 22 03:05 app
drwxrwxr-x 7 oracle oinstall 4096 Aug 27 2013 database
drwx------ 2 root root 16384 Aug 22 01:00 lost+found
-rw-r--r-- 1 root root 1395582860 Aug 22 02:36 p13390677_112040_Linux-x86-64_1of7.zip
-rw-r--r-- 1 root root 1151304589 Aug 22 02:35 p13390677_112040_Linux-x86-64_2of7.zip
16.(root用戶)安裝圖形化界面 #已安裝和配置
1.(Oracle用戶)配置靜默升級安裝文件db_install.rsp,
解壓後獲得database目錄,其中包含response目錄,該目錄中有三個rsp文件,用來做爲靜默安裝時的應答文件的模板。
三個文件做用分別是: db_install.rsp:安裝應答 dbca.rsp:建立數據庫應答 netca.rsp:創建監聽、本地服務名等網絡設置的應答
[oracle@db ~]$ cd /u01/database/response
[oracle@db response]$ ll
total 80
-rwxrwxr-x 1 oracle oinstall 44533 Aug 27 2013 dbca.rsp
-rwxrwxr-x 1 oracle oinstall 25312 Aug 22 23:24 db_install.rsp
-rwxrwxr-x 1 oracle oinstall 5871 Aug 27 2013 netca.rsp
[oracle@db response]$ egrep -v '^#|^$' db_install.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0 #保持不變
oracle.install.option=UPGRADE_DB #升級數據庫
ORACLE_HOSTNAME=db
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
SELECTED_LANGUAGES=en,zh_CN,th,zh_TW
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.EEOptionsSelection=true #要選true,實際測試選true或false對安裝大小沒有什麼影響
oracle.install.db.optionalComponents=oracle.rdbms.partitioning:11.2.0.4.0,oracle.oraolap:11.2.0.4.0,oracle.rdbms.dm:11.2.0.4.0,oracle.rdbms.dv:11.2.0.4.0,oracle.rdbms.lbac:11.2.0.4.0,oracle.rdbms.rat:11.2.0.4.0
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oinstall
oracle.install.db.CLUSTER_NODES= #若是是RAC的安裝,在這裏指定全部的節點
oracle.install.db.isRACOneInstall=
oracle.install.db.racOneServiceName=
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE #數據庫的用途,通常用途/事物處理,數據倉庫
oracle.install.db.config.starterdb.globalDBName=orcl #指定GlobalName
oracle.install.db.config.starterdb.SID=orcl
oracle.install.db.config.starterdb.characterSet=AL32UTF8
#11g的新特性自動內存管理,也就是SGA_TARGET和PAG_AGGREGATE_TARGET都#不用設置了,Oracle會自動調配兩部分大小
oracle.install.db.config.starterdb.memoryOption=true #oracle會自動管理內存 選true
oracle.install.db.config.starterdb.memoryLimit= #指定Oracle自動管理內存的大小,最小是256MB,實際上不用填就能夠
oracle.install.db.config.starterdb.installExampleSchemas=false #是否載入模板示例
oracle.install.db.config.starterdb.enableSecuritySettings=true #是否啓用安全設置
oracle.install.db.config.starterdb.password.ALL=oracle #設定全部數據庫用戶使用同一個密碼,其它數據庫用戶就不用單獨設置了。
oracle.install.db.config.starterdb.password.SYS=oracle
oracle.install.db.config.starterdb.password.SYSTEM=oracle
oracle.install.db.config.starterdb.password.SYSMAN=oracle
oracle.install.db.config.starterdb.password.DBSNMP=
oracle.install.db.config.starterdb.control=DB_CONTROL #數據庫本地管理工具DB_CONTROL,遠程集中管理工具GRID_CONTROL
oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=
oracle.install.db.config.starterdb.automatedBackup.enable=false #設置自動備份,和OUI裏的自動備份同樣。
oracle.install.db.config.starterdb.automatedBackup.osuid= #自動備份會啓動一個job,指定啓動JOB的系統用戶ID
oracle.install.db.config.starterdb.automatedBackup.ospwd= #自動備份會開啓一個job,須要指定OSUser的密碼
oracle.install.db.config.starterdb.storageType= #自動備份,要求指定使用的文件系統存放數據庫文件仍是ASM
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation= ##使用文件系統存放數據庫文件才須要指定數據文件、控制文件、Redo log的存放目錄
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation= ##使用文件系統存放數據庫文件才須要指定備份恢復目錄
oracle.install.db.config.asm.diskGroup= ##使用ASM存放數據庫文件才須要指定存放的磁盤組
oracle.install.db.config.asm.ASMSNMPPassword= ##使用ASM存放數據庫文件才須要指定ASM實例密碼
MYORACLESUPPORT_USERNAME= ##指定metalink帳戶用戶名
MYORACLESUPPORT_PASSWORD= ## 指定metalink帳戶密碼
SECURITY_UPDATES_VIA_MYORACLESUPPORT= ## 用戶是否能夠設置metalink密碼
DECLINE_SECURITY_UPDATES=true # 這裏必須爲 true 不然會失敗
PROXY_HOST= ##代理服務器名
PROXY_PORT= ##代理服務器端口
PROXY_USER= ##代理服務器用戶名
PROXY_PWD= ##代理服務器密碼
PROXY_REALM=
COLLECTOR_SUPPORTHUB_URL=
oracle.installer.autoupdates.option=SKIP_UPDATES
oracle.installer.autoupdates.downloadUpdatesLoc=
AUTOUPDATES_MYORACLESUPPORT_USERNAME=
AUTOUPDATES_MYORACLESUPPORT_PASSWORD=
2.(Oracle用戶)開始執行安裝,
安裝過程大概須要15分鐘左右(根據機型配置時間也不一樣),安裝過程當中有警告[WARNING] 是須要安裝一些i386 的包。查看log安裝便可,不用管它。安裝成功應有的輸出提示:Successfully Setup Software.
[oracle@db ~]$ cd /u01/database/ ; ls
install readme.html response rpm runInstaller sshsetup stage welcome.html
[oracle@db ~]$ unset LANG LANGUAGE ;unset DISPLAY
[oracle@db database]$ ./runInstaller -silent -force -ignoreSysPrereqs -ignorePrereq -showProgress -responseFile /u01/database/response/db_install.rsp #因爲oracle默認不支持CentOS,安裝時加參數-ignoreSysPrereqs 忽略系統檢查,,或者修改OS系統標識即把/etc/redhat-release內容修改成redhat-6(若是是centos6就改成redhat-6,centos7就改成redhat-7)
Starting Oracle Universal Installer...
Checking Temp space: must be greater than 120 MB. Actual 8795 MB Passed
Checking swap space: must be greater than 150 MB. Actual 3071 MB Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2017-08-22_11-35-43PM. Please wait ...[oracle@db database]$ [WARNING] [INS-13014] Target environment do not meet some optional requirements.
CAUSE: Some of the optional prerequisites are not met. See logs for details. /opt/app/oraInventory/logs/installActions2017-08-22_11-35-43PM.log
ACTION: Identify the list of failed prerequisite checks from the log: /opt/app/oraInventory/logs/installActions2017-08-22_11-35-43PM.log. Then either from the log file or from installation manual find the appropriate configuration to meet the prerequisites and fix it manually.
You can find the log of this install session at:
/opt/app/oraInventory/logs/installActions2017-08-22_11-35-43PM.log
The installation of Oracle Database 11g was successful.
Please check '/opt/app/oraInventory/logs/silentInstall2017-08-22_11-35-43PM.log' for more details.
As a root user, execute the following script(s):
1. /u01/app/oracle/product/11.2.0/dbhome_1/root.sh
Successfully Setup Software.
##########################################################
Start Database Upgrade Assistant to upgrade the database.
##########################################################
(root用戶)執行root.sh腳本,至此11.2.0.4的軟件就已經裝完了,
[root@db ~]# sh /u01/app/oracle/product/11.2.0/dbhome_1/root.sh
Check /u01/app/oracle/product/11.2.0/dbhome_1/install/root_db_2017-08-22_23-57-04.log for the output of root script
回到上一步按回車
Successfully Setup Software.
##########################################################
Start Database Upgrade Assistant to upgrade the database.
##########################################################
回車
1.(root, oracle用戶)開始配置新的ORACLEHOME環境變量,修改.bashprofile和/etc/oratab,
root用戶,
[root@db u01]# vim /root/.bash_profile #只更改/opt/爲/u01便可,其它不變
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:$GGS_HOME
export TNS_ADMIN=$ORACLE_HOME/network/admin/
[root@db u01]# source /root/.bash_profile
oracle用戶,
[root@db ~]# su – oracle
[oracle@db ~]$ vim /home/oracle/.bash_profile #更改1項新增長2項,以下,
export ORACLE_BASE=/u01/app/oracle #更改/opt/爲/u01便可
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export TNS_ADMIN=$ORACLE_HOME/network/admin/ #此項爲新增項
export CLASSPATH=$ORACLE_HOME/jre:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib #此項爲新增項
export ORACLE_SID=orcl
export ORALCE_OWNER=oracle
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORACLE_HOME/jdk/bin
export PATH
export LANG="en_US.UTF-8"
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:$GGS_HOME
alias sqlplus='rlwrap sqlplus' #注意:前面沒有export
alias rman='rlwrap rman' #注意:前面沒有export
[oracle@db ~]$ vim /home/oracle/.bash_profile
#PATH=$PATH:$HOME/bin #注意這裏要把原有的PATH=$PATH:$HOME/bin註釋掉。
[oracle@db ~]$ source /home/oracle/.bash_profile
在10g之後,通常狀況下環境變量中沒有必要設置LD_LIBRARY_PATH,可是一旦將ORACLE_HOME遷移到其餘目錄,則環境變量中還須要添加這個變量。
完成後執行:
$ env | grep ORA #查看環境變量是否完成
[oracle@db ~]$ env | grep ORA
ORALCE_OWNER=oracle
ORACLE_SID=orcl
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
oracle用戶,
[oracle@db ~]$ vim /etc/oratab #只更改/opt/爲/u01便可,其它不變
[oracle@db ~]$ egrep -v '^#|^$' /etc/oratab
orcl:/u01/app/oracle/product/11.2.0/dbhome_1:N
2.(oracle用戶)將參數文件copy到新的目錄下
[oracle@db ~]$ cd /opt/app/oracle/product/11.2.0/dbhome_1/dbs/ ; ll
total 24
-rw-rw---- 1 oracle oinstall 1544 Aug 17 19:15 hc_DBUA0.dat
-rw-rw---- 1 oracle oinstall 1544 Aug 22 22:09 hc_orcl.dat
-rw-r--r-- 1 oracle oinstall 2851 May 15 2009 init.ora
-rw-r----- 1 oracle oinstall 24 Aug 17 19:19 lkORCL
-rw-r----- 1 oracle oinstall 1536 Aug 17 19:20 orapworcl
-rw-r----- 1 oracle oinstall 2560 Aug 22 21:26 spfileorcl.ora
[oracle@db dbs]$ cp * /u01/app/oracle/product/11.2.0/dbhome_1/dbs/
3.(oracle用戶)拷貝監聽TNS配置文件
[oracle@db ~]$ cd /opt/app/oracle/product/11.2.0/dbhome_1/network/admin ; ll
total 20
-rw-r--r-- 1 oracle oinstall 526 Aug 18 14:16 listener.ora
drwxr-xr-x 2 oracle oinstall 4096 Aug 18 14:09 samples
-rw-r--r-- 1 oracle oinstall 187 May 7 2007 shrept.lst
-rw-r--r-- 1 oracle oinstall 223 Aug 17 16:25 sqlnet.ora
-rw-r----- 1 oracle oinstall 321 Aug 17 19:20 s.ora
[oracle@db admin]$ cp -R * /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/
1.執行預升級腳本檢查
[oracle@db ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.4.0 Production on Wed Aug 23 00:31:12 2017
Copyright (c) 1982, 2013, Oracle. All rights reserved.
SQL> CONN / AS SYSDBA
Connected to an idle instance.
SQL> startup upgrade
ORACLE instance started.
Total System Global Area 1603411968 bytes
Fixed Size 2253664 bytes
Variable Size 1006636192 bytes
Database Buffers 587202560 bytes
Redo Buffers 7319552 bytes
Database mounted.
Database opened.
SQL> @?/rdbms/admin/utlu112i.sql ---執行升級前檢查
Oracle Database 11.2 Pre-Upgrade Information Tool 08-23-2017 01:04:17
Script Version: 11.2.0.4.0 Build: 001
.
**********************************************************************
Database:
**********************************************************************
--> name: ORCL
--> version: 11.2.0.1.0
--> compatible: 11.2.0.0.0
--> blocksize: 8192
--> platform: Linux x86 64-bit
--> timezone file: V11
.
**********************************************************************
Tablespaces: [make adjustments in the current environment]
**********************************************************************
--> SYSTEM tablespace is adequate for the upgrade.
.... minimum required size: 892 MB
--> SYSAUX tablespace is adequate for the upgrade.
.... minimum required size: 641 MB
--> UNDOTBS1 tablespace is adequate for the upgrade.
.... minimum required size: 400 MB
--> TEMP tablespace is adequate for the upgrade.
.... minimum required size: 60 MB
.
**********************************************************************
Flashback: ON
**********************************************************************
FlashbackInfo:
--> name: /opt/app/oracle/flash_recovery_area
--> limit: 3882 MB
--> used: 459 MB
--> size: 3882 MB
--> reclaim: 136.828125 MB
--> files: 20
WARNING: --> Flashback Recovery Area Set. Please ensure adequate disk space in recover
y areas before performing an upgrade.
.
**********************************************************************
Update Parameters: [Update Oracle Database 11.2 init.ora or spfile]
Note: Pre-upgrade tool was run on a lower version 64-bit database.
**********************************************************************
--> If Target Oracle is 32-Bit, refer here for Update Parameters:
-- No update parameter changes are required.
.
--> If Target Oracle is 64-Bit, refer here for Update Parameters:
-- No update parameter changes are required.
.
**********************************************************************
Renamed Parameters: [Update Oracle Database 11.2 init.ora or spfile]
**********************************************************************
-- No renamed parameters found. No changes are required.
.
**********************************************************************
Obsolete/Deprecated Parameters: [Update Oracle Database 11.2 init.ora or spfile]
**********************************************************************
-- No obsolete parameters found. No changes are required
.
**********************************************************************
Components: [The following database components will be upgraded or installed]
**********************************************************************
--> Oracle Catalog Views [upgrade] VALID
--> Oracle Packages and Types [upgrade] VALID
--> JServer JAVA Virtual Machine [upgrade] VALID
--> Oracle XDK for Java [upgrade] VALID
--> Oracle Workspace Manager [upgrade] VALID
--> OLAP Analytic Workspace [upgrade] VALID
--> OLAP Catalog [upgrade] VALID
--> EM Repository [upgrade] VALID
--> Oracle Text [upgrade] VALID
--> Oracle XML Database [upgrade] VALID
--> Oracle Java Packages [upgrade] VALID
--> Oracle interMedia [upgrade] VALID
--> Spatial [upgrade] VALID
--> Expression Filter [upgrade] VALID
--> Rule Manager [upgrade] VALID
--> Oracle Application Express [upgrade] VALID
... APEX will only be upgraded if the version of APEX in
... the target Oracle home is higher than the current one.
--> Oracle OLAP API [upgrade] VALID
.
**********************************************************************
Miscellaneous Warnings
**********************************************************************
WARNING: --> Database is using a timezone file older than version 14.
.... After the release migration, it is recommended that DBMS_DST package
.... be used to upgrade the 11.2.0.1.0 database timezone version
.... to the latest version which comes with the new release.
WARNING: --> Database contains INVALID objects prior to upgrade.
.... The list of invalid SYS/SYSTEM objects was written to
.... registry$sys_inv_objs.
.... The list of non-SYS/SYSTEM objects was written to
.... registry$nonsys_inv_objs.
.... Use utluiobj.sql after the upgrade to identify any new invalid
.... objects due to the upgrade.
.... USER SYS has 2 INVALID objects.
WARNING: --> Database contains schemas with objects dependent on DBMS_LDAP package.
.... Refer to the 11g Upgrade Guide for instructions to configure Network ACLs.
.... USER APEX_030200 has dependent objects.
.
**********************************************************************
Recommendations
**********************************************************************
Oracle recommends gathering dictionary statistics prior to
upgrading the database.
To gather dictionary statistics execute the following command
while connected as SYSDBA:
EXECUTE dbms_stats.gather_dictionary_stats;
**********************************************************************
Oracle recommends removing all hidden parameters prior to upgrading.
To view existing hidden parameters execute the following command
while connected AS SYSDBA:
SELECT name,description from SYS.V$PARAMETER WHERE name
LIKE '\_%' ESCAPE '\'
Changes will need to be made in the init.ora or spfile.
**********************************************************************
Oracle recommends reviewing any defined events prior to upgrading.
To view existing non-default events execute the following commands
while connected AS SYSDBA:
Events:
SELECT (translate(value,chr(13)||chr(10),' ')) FROM sys.v$parameter2
WHERE UPPER(name) ='EVENT' AND isdefault='FALSE'
Trace Events:
SELECT (translate(value,chr(13)||chr(10),' ')) from sys.v$parameter2
WHERE UPPER(name) = '_TRACE_EVENTS' AND isdefault='FALSE'
Changes will need to be made in the init.ora or spfile.
**********************************************************************
2.鏈接數據庫執行手動升級
[oracle@db ~]$ exit
logout
[root@db ~]# vim /root/.bash_profile
[root@db ~]# source /root/.bash_profile
[root@db ~]# su - oracle
[oracle@db ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.4.0 Production on Wed Aug 23 00:31:12 2017
Copyright (c) 1982, 2013, Oracle. All rights reserved.
SQL> CONN / AS SYSDBA
Connected to an idle instance.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
執行:若集羣則SQL> alter system set cluster_DATABASE=false scope=spfile;
SQL> startup upgrade
ORACLE instance started.
Total System Global Area 1603411968 bytes
Fixed Size 2253664 bytes
Variable Size 1006636192 bytes
Database Buffers 587202560 bytes
Redo Buffers 7319552 bytes
Database mounted.
Database opened.
SQL> set echo on
SQL> spool /home/oracle/upgrade.log
SQL> set time on;
01:19:21 SQL> @?/rdbms/admin/catupgrd.sql
01:19:36 SQL> Rem
01:19:36 SQL> Rem $Header: rdbms/admin/catupgrd.sql /st_rdbms_11.2.0/3 2011/05/18 15:07:25 cmlim Exp $
01:19:36 SQL> Rem
01:19:36 SQL> Rem catupgrd.sql
01:19:36 SQL> Rem
01:19:36 SQL> Rem Copyright (c) 1999, 2011, Oracle and/or its affiliates.
01:19:36 SQL> Rem All rights reserved.
01:19:36 SQL> Rem
01:19:36 DOC>######################################################################
01:19:36 DOC>######################################################################
01:19:36 DOC>#
01:19:36 SQL>
01:19:36 SQL> SELECT TO_NUMBER('MUST_BE_11_2_0_4') FROM v$instance
01:19:36 2 WHERE substr(version,1,8) != '11.2.0.4';
01:19:36 SQL>
01:19:36 SQL> DOC
01:19:36 DOC>#######################################################################
01:19:36 DOC>#######################################################################
01:19:36 DOC> The following statement will cause an "ORA-01722: invalid number"
01:19:36 DOC> error if the database has not been opened for UPGRADE.
01:19:36 DOC>
01:19:36 DOC> Perform "ALTER SYSTEM CHECKPOINT" prior to "SHUTDOWN ABORT", and
01:19:36 DOC> restart using UPGRADE.
01:19:36 DOC>#######################################################################
01:19:36 DOC>#######################################################################
01:19:36 DOC>#
01:19:36 SQL>
01:19:36 SQL> SELECT TO_NUMBER('MUST_BE_OPEN_UPGRADE') FROM v$instance
01:19:36 2 WHERE status != 'OPEN MIGRATE';
01:19:36 SQL>
01:19:36 SQL> DOC
01:19:36 DOC>#######################################################################
01:19:36 DOC>#######################################################################
01:19:36 DOC> The following statement will cause an "ORA-01722: invalid number"
01:19:36 DOC> error if the Oracle Database Vault option is TRUE. Upgrades cannot
01:19:36 DOC> be run with the Oracle Database Vault option set to TRUE since
01:19:36 DOC> AS SYSDBA connections are restricted.
01:19:36 DOC>
01:19:36 DOC> Perform "ALTER SYSTEM CHECKPOINT" prior to "SHUTDOWN ABORT", relink
01:19:36 DOC> the server without the Database Vault option, and restart the server
01:19:36 DOC> using UPGRADE mode.
01:19:36 DOC>
01:19:36 DOC>
01:19:36 DOC>#######################################################################
01:19:36 DOC>#######################################################################
01:19:36 DOC>#
01:19:36 SQL>
01:19:36 SQL> SELECT TO_NUMBER('DATA_VAULT_OPTION_ON') FROM v$option
01:19:36 2 WHERE
01:19:36 3 value = 'TRUE' and parameter = 'Oracle Database Vault';
SELECT TO_NUMBER('DATA_VAULT_OPTION_ON') FROM v$option
*
ERROR at line 1:
ORA-01722: invalid number
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options
【報錯緣由】
該數據庫實例配置了Oracle Database Vault功能。
什麼是Oralce Database Vault:
OracleDatabase Vault 可幫助用戶解決現有的極爲棘手的安全問題,即防止內部的威脅,知足合規性要求以及實現職責劃分。Oracle Database Vault 能防止 DBA 查看應用程序數據,解決了必須保護涉及合做夥伴、員工和顧客的敏感業務信息或隱私數據的客戶最爲擔憂的問題。Oracle Database Vault 可防止高權限的應用程序 DBA 訪問其餘的應用程序、執行其權限以外的任務。Oracle Database Vault 能夠輕鬆快捷地保護現有應用程序,且不影響應用程序的功能。
【解決方法】
關閉Oracle Database Vault功能後,從新執行升級操做。
關閉Oracle Database Vault功能:什麼是Oralce Database Vault:
OracleDatabase Vault 可幫助用戶解決現有的極爲棘手的安全問題,即防止內部的威脅,知足合規性要求以及實現職責劃分。Oracle Database Vault 能防止 DBA 查看應用程序數據,解決了必須保護涉及合做夥伴、員工和顧客的敏感業務信息或隱私數據的客戶最爲擔憂的問題。Oracle Database Vault 可防止高權限的應用程序 DBA 訪問其餘的應用程序、執行其權限以外的任務。Oracle Database Vault 能夠輕鬆快捷地保護現有應用程序,且不影響應用程序的功能。
[oracle@db ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Wed Aug 23 01:28:00 2017
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options
SQL> col parameter for a30
SQL> col value for a20
SQL> SELECT * FROM V$OPTION WHERE PARAMETER = 'Oracle Database Vault';
PARAMETER VALUE
------------------------------ --------------------
Oracle Database Vault TRUE
# 關閉數據庫實例
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options
[oracle@db ~]$ emctl stop dbconsole
Environment variable ORACLE_UNQNAME not defined. Please set ORACLE_UNQNAME to database unique name.
[oracle@db ~]$ lsnrctl stop
SQL> alter system checkpoint;
SQL> shutdown abort;
SQL> exit
[oracle@db ~]$ cd $ORACLE_HOME/rdbms/lib/
[oracle@db lib]$ pwd
/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/lib
[oracle@db lib]$ chopt disable dv
Writing to /u01/app/oracle/product/11.2.0/dbhome_1/install/disable_dv.log...
/usr/bin/make -f /u01/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/ins_rdbms.mk dv_off ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
/usr/bin/make -f /u01/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/ins_rdbms.mk ioracle ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
[oracle@db lib]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Wed Aug 23 01:45:46 2017
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL> spool /home/oracle/upgrade.log
SQL> startup upgrade;
ORACLE instance started.
Total System Global Area 1603411968 bytes
Fixed Size 2253664 bytes
Variable Size 1006636192 bytes
Database Buffers 587202560 bytes
Redo Buffers 7319552 bytes
Database mounted.
Database opened.
SQL> SELECT * FROM V$OPTION WHERE PARAMETER = 'Oracle Database Vault';
PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
Oracle Database Vault
FALSE
接着再次執行升級OK,
SQL> set echo on
SQL> spool /home/oracle/upgrade.log
SQL> set time on;
02:09:05 SQL> @?/rdbms/admin/catupgrd.sql ---該腳本會運行30分鐘左右
Commit complete.
02:40:05 SQL>
02:40:05 SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
02:40:29 SQL>
02:40:29 SQL>
02:40:29 SQL> DOC
02:40:29 DOC>#######################################################################
02:40:29 DOC>#######################################################################
02:40:29 DOC>
02:40:29 DOC> The above sql script is the final step of the upgrade. Please
02:40:29 DOC> review any errors in the spool log file. If there are any errors in
02:40:29 DOC> the spool file, consult the Oracle Database Upgrade Guide for
02:40:29 DOC> troubleshooting recommendations.
02:40:29 DOC>
02:40:29 DOC> Next restart for normal operation, and then run utlrp.sql to
02:40:29 DOC> recompile any invalid application objects.
02:40:29 DOC>
02:40:29 DOC> If the source database had an older time zone version prior to
02:40:29 DOC> upgrade, then please run the DBMS_DST package. DBMS_DST will upgrade
02:40:29 DOC> TIMESTAMP WITH TIME ZONE data to use the latest time zone file shipped
02:40:29 DOC> with Oracle.
02:40:29 DOC>
02:40:29 DOC>#######################################################################
02:40:29 DOC>#######################################################################
02:40:29 DOC>#
02:40:29 SQL>
02:40:29 SQL> Rem Set errorlogging off
02:40:29 SQL> SET ERRORLOGGING OFF;
02:40:29 SQL>
02:40:29 SQL> REM END OF CATUPGRD.SQL
02:40:29 SQL>
02:40:29 SQL> REM bug 12337546 - Exit current sqlplus session at end of catupgrd.sql.
02:40:29 SQL> REM This forces user to start a new sqlplus session in order
02:40:29 SQL> REM to connect to the upgraded db.
02:40:29 SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining
and Real Application Testing options
以上catupgrd.sql腳本整整運行了31分鐘,執行完以後會shutdown immediate數據庫。這個時候咱們將要重啓數據庫運行utlrp.sql腳本編譯失效對象:
3.運行utlrp.sql編譯失效對象
[oracle@db ~]$ sqlplus / AS SYSDBA
SQL*Plus: Release 11.2.0.4.0 Production on Wed Aug 23 03:07:50 2017
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 1603411968 bytes
Fixed Size 2253664 bytes
Variable Size 1140853920 bytes
Database Buffers 452984832 bytes
Redo Buffers 7319552 bytes
Database mounted.
Database opened.
SQL> @?/rdbms/admin/utlrp
TIMESTAMP
--------------------------------------------------------------------------------
COMP_TIMESTAMP UTLRP_BGN 2017-08-23 03:09:23
DOC> The following PL/SQL block invokes UTL_RECOMP to recompile invalid
DOC> objects in the database. Recompilation time is proportional to the
DOC> number of invalid objects in the database, so this command may take
DOC> a long time to execute on a database with a large number of invalid
DOC> objects.
DOC>
DOC> Use the following queries to track recompilation progress:
DOC>
DOC> 1. Query returning the number of invalid objects remaining. This
DOC> number should decrease with time.
DOC> SELECT COUNT(*) FROM obj$ WHERE status IN (4, 5, 6);
DOC>
DOC> 2. Query returning the number of objects compiled so far. This number
DOC> should increase with time.
DOC> SELECT COUNT(*) FROM UTL_RECOMP_COMPILED;
DOC>
DOC> This script automatically chooses serial or parallel recompilation
DOC> based on the number of CPUs available (parameter cpu_count) multiplied
DOC> by the number of threads per CPU (parameter parallel_threads_per_cpu).
DOC> On RAC, this number is added across all RAC nodes.
DOC>
DOC> UTL_RECOMP uses DBMS_SCHEDULER to create jobs for parallel
DOC> recompilation. Jobs are created without instance affinity so that they
DOC> can migrate across RAC nodes. Use the following queries to verify
DOC> whether UTL_RECOMP jobs are being created and run correctly:
DOC>
DOC> 1. Query showing jobs created by UTL_RECOMP
DOC> SELECT job_name FROM dba_scheduler_jobs
DOC> WHERE job_name like 'UTL_RECOMP_SLAVE_%';
DOC>
DOC> 2. Query showing UTL_RECOMP jobs that are running
DOC> SELECT job_name FROM dba_scheduler_running_jobs
DOC> WHERE job_name like 'UTL_RECOMP_SLAVE_%';
DOC>#
PL/SQL procedure successfully completed.
TIMESTAMP
--------------------------------------------------------------------------------
COMP_TIMESTAMP UTLRP_END 2017-08-23 03:11:07
DOC> The following query reports the number of objects that have compiled
DOC> with errors.
DOC>
DOC> If the number is higher than expected, please examine the error
DOC> messages reported with each object (using SHOW ERRORS) to see if they
DOC> point to system misconfiguration or resource constraints that must be
DOC> fixed before attempting to recompile these objects.
DOC>#
OBJECTS WITH ERRORS
-------------------
0
DOC> The following query reports the number of errors caught during
DOC> recompilation. If this number is non-zero, please query the error
DOC> messages in the table UTL_RECOMP_ERRORS to see if any of these errors
DOC> are due to misconfiguration or resource constraints that must be
DOC> fixed before objects can compile successfully.
DOC>#
ERRORS DURING RECOMPILATION
---------------------------
0
Function created.
PL/SQL procedure successfully completed.
Function dropped.
PL/SQL procedure successfully completed.
該腳本耗時約爲3分鐘左右。
至此數據庫已經升級完成,
7、升級後的檢查確認
1.查看各組件版本號:
測試是否成功:
[oracle@db response]$ sqlplus / AS SYSDBA
SQL*Plus: Release 11.2.0.4.0 Production on Wed Aug 23 18:56:23 2017
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining
and Real Application Testing options
SQL> select name from v$database; #確認數據庫的SID是否正確。
SQL> show user; #確認當前是否爲sys用戶。
SQL> select tablespace_name, bytes/1024/1024 from dba_data_files; #確認表空間大小是否正確.
SQL> @$ORACLE_HOME/rdbms/admin/utlu112i.sql
Oracle Database 11.2 Pre-Upgrade Information Tool 08-23-2017 18:58:39
Script Version: 11.2.0.4.0 Build: 001
.
**********************************************************************
Database:
**********************************************************************
--> name: ORCL
--> version: 11.2.0.4.0
--> compatible: 11.2.0.0.0
--> blocksize: 8192
--> timezone file: V11
.
Database already upgraded; to rerun upgrade use rdbms/admin/catupgrd.sql.
SQL> select * from v$version;或者select * from dba_registry; 或 select comp_name,status,version from dba_server_registry;
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE 11.2.0.4.0 Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production
#下面這個步驟網文中沒有,這是尚觀視頻中提到的,做用不明.
SQL> @$ORACLE_HOME/rdbms/admin/catalog.sql
#最後,重啓數據庫沒有問題就是升級成功了。
SQL> select status from v$instance;
STATUS
------------
OPEN #注意,成功打開數據庫後,這裏將是OPEN,而非OPEN MIGRATE
Shutdown and Enable Oracle database Vault option and START the database
打開Oracle Database Vault功能,
SQL> shutdown immediate;
[oracle@db ~]$ chopt enable dv
[oracle@db ~]$ . oraenv
[oracle@db ~]$ dev
[oracle@db ~]$ sqlplus / as sysdba
SQL> startup
SQL> SELECT * FROM V$OPTION WHERE PARAMETER = 'Oracle Database Vault';
PARAMETER VALUE
---------------------------------------------------------------- --------------------------------------
Oracle Database Vault TRUE
[oracle@db response]$ sqlplus trade02/oracle #測試也可正常登陸普通用戶
SQL*Plus: Release 11.2.0.4.0 Production on Wed Aug 23 18:55:15 2017
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining
and Real Application Testing options
SQL>
2.檢查無效對象
SQL> select * from dba_objects where status !='VALID';
no rows selected
SQL> SELECT count(*) FROM dba_objects WHERE status='INVALID';
0
3.升級成功後刪除原來的目錄,經過EMCA重建EM
此EM原本就沒有故這一步可忽略,
[oracle@db01 /]$ rm -rf /opt/app/oracle
手工建立EM資料庫:
####emca -repos drop
[oracle@db01 /]$ emca -reposdrop
####emca -repos create
[oracle@db01 /]$ emca -reposcreate
###emca -config dbcontrol db
[oracle@db01 /]$ emca-config dbcontrol db
4.開啓集羣(只限集羣用戶)
單實例不用執行此語句,恢復數據庫爲集羣數據庫,非集羣數據庫不用執行,
SQL> alter system set cluster_DATABASE=true scope=spfile;
5.打開監聽,而後用PL/SQL developer鏈接和查詢沒有問題,
[oracle@db ~]$ lsnrctl start
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 23-AUG-2017 03:46:09
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Starting /u01/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 11.2.0.4.0 - Production
System parameter file is /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Log messages written to /opt/app/oracle/diag/tnslsnr/db/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=db)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date 23-AUG-2017 03:46:10
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File /opt/app/oracle/diag/tnslsnr/db/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=db)(PORT=1521)))
Services Summary...
Service "orcl" has 1 instance(s).
Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
PL/SQL developer用普通用戶trade02登陸執行下面的語句,正常,
select * from wang where id=1 or id=2 or id=6; select comp_name,status,version from dba_server_registry;