Oracle的靜默安裝 升級和卸載 參考規范 20180912 V1
一、Oracle的安裝
Oracle產品的三種安裝方式分別為:
1.圖形化(Java向導)安裝引導
2.使用應答文件靜默安裝
3.直接將裝好的oracle復制一份放到另一台服務器安裝
注意:
#方法2和方法3的安裝前提是:配置好Oracle安裝所需要的前提
1、基礎環境配置
無論是圖形化安裝,靜默安裝還是拷貝安裝,都首先需要把基礎環境配置好。
1.1 操作系統配置
環境: 在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.4
1.2 檢查安裝目錄大小
(root用戶)檢查虛擬內存和/tmp目錄大小,待安裝目錄設置。
1.2.1 swap大小設置
要求如下,
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的大小,
[root@db ~]# free -g
total used free shared buffers cached
Mem: 7 7 0 0 0 5
-/+ buffers/cache: 1 5
Swap: 7 0 7
如果swap空間不足(not sufficient),
#1、用dd命令創建一個16G的文件
#比如原有的swap為3G,現在再直接用dd從磁盤中取出16G來做為swap,這樣總計內存將會是19G,
[root@db ~]# dd if=/dev/zero of=/var/swapfile bs=1G count=16
#2、將它創建為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
#3、激活並使用/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
#4、設置系統啟動后自動激活虛擬交換文件。
#cp /etc/fstab /etc/fstab.bak && \
echo '/var/swapfile swap swap defaults 0 0' >> /etc/fstab && \
mount -a
1.2.2 待安裝目錄大小
檢查待安裝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
1.2.3 /tmp目錄大小
/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% /
1.3 檢查系統架構
(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)
1.4 關閉selinux和防火牆
(root用戶)關閉selinux和防火牆
[root@db ~]# setenforce 0 && \
sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config && \
iptables -F && \
service iptables stop && \
chkconfig iptables off
1.5 配置靜態IP地址
需要靜態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
1.6 配置yum源
(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 ~
1.7 安裝依賴包
(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
1.8 配置主機名和hosts
(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
1.9 操作系統語言環境
[root@db ~]# cp /etc/sysconfig/i18n /etc/sysconfig/i18n`date +%F_%T`
echo 'LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"' > /etc/sysconfig/i18n
1.10 配置NTP時間同步
[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
1.11 配置內核參數
(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 #新增 默認發送緩沖區大小
1.12 配置資源限制
(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 #--最大鎖定內存地址空間,對所有用戶生效
1.13 創建用戶和組
(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
1.14 配置安裝目錄
(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/
1.15 配置環境變量
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
1.16 上傳安裝包並解壓
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/
1.17 安裝rlwrap
(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
2、圖形化安裝
(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
保存的就是應答文件,這個我們可以使用這個文件使用靜默方式來安裝
3、靜默的安裝
說到靜默安裝,就不得不提到響應文件(Response File),在Oracle安裝目錄下會提供響應文件模板,這個響應文件其實就是配置文件,里面可以配置一些安裝細節,在DBCA圖形界面中能夠看到的安裝選項,在響應文件中都有體現。你可以通過響應文件來設置安裝企業版、個人版、標准版、安裝的語言包,字符集等。
解壓后得到database目錄,其中包含response目錄,該目錄中有三個rsp文件,用來作為靜默安裝時的應答文件的模板。
三個文件作用分別是: db_install.rsp:安裝應答 dbca.rsp:創建數據庫應答 netca.rsp:建立監聽、本地服務名等網絡設置的應答
3.1 靜默安裝數據庫軟件
3.1.1 配置db_install.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等即可
3.1.2 執行db_install.rsp
(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
3.2 靜默配置監聽
靜默配置監聽 oracle用戶,netca.rsp不需要修改,直接建立監聽,退出代碼是0說明成功,1說明失敗。
3.2.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
3.2.2 創建靜態監聽
上面通過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端口上開始工作了。
3.3 靜默安裝數據庫(創建實例)
配置靜默建立新庫(同時也建立一個對應的實例)oracle用戶,
3.3.1 配置響應文件dbca.rsp
[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后面的很多沒有注釋掉的選項不用管。
3.3.2 執行響應文件dbca.rsp
(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;
3.4 數據庫配置和優化
3.4.1 歸檔閃回,進程會話
開啟強制日志記錄,開啟歸檔(歸檔要在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;
3.4.2 環境變量和防錯
--在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 >
3.4.3 rman定期刪除歸檔
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.4.4 開機啟動Oracle服務
根據根據來設置是否開機啟動,如果要開啟則參數下面的方法,
31、 開機自動啟動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"
3.4.5 開放防火牆端口
根據根據來設置,如果要開啟則參數下面的方法,
執行命令:
[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
3.5 簡單測試一下
創建用戶和表空間,
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;
4、拷貝安裝
還有最后一種安裝方式就是拷貝安裝了,我們直切拷貝本機的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'
再次登錄就可以使用了
5、Windows安裝方法
只需要其中的第一個和第二個文件。將2個文件解壓縮,然后將第二個文件的內容copy到第一個文件的對應目錄里。即將2個文件合成一個文件。
oracle 安裝為了我們的生產環境做准備,一定要安裝服務器類,
安裝類型 一定選 高級配置 因為我們不是小白且要配置語言防止亂碼 及如果要測試和聯系用的話需要樣本數據。
要選擇企業版。SID 即server ID 服務ID,與全局數據庫名稱一致,可自定義,示例方案 是scott用戶的測試樣本數據,字符集 UTF-8,示例方案打勾沒勾沒練習用scott數據,計算機 右鍵 管理 服務,自動改為手動,其中服務器啟動慢,。
二、Oracle的卸載
6、Linux環境下的卸載
6.1 完全卸載
完全卸載即把oracle軟件和實例全部都卸載掉。
6.1.1 deinstall方法
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
6.1.2 手動卸載方法
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
6.2 只卸載實例
#!/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. 將該行信息刪除,並保存文件
經過以上步驟可以實現命令行干凈的刪除實例
7、windows下卸載
一、在oracle11G以前卸載oracle會存在卸載不干凈,導致再次安裝失敗的情況,在運行services.msc打開服務,停止Oracle的所有服務。
二、 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
三、運行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目錄下的臨時文件。
三、Oracle的升級
8、升級Oracle從11.2.0.1到11.2.0.4
升級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。
8.1 備份數據庫
完整的備份數據庫 升級數據庫是一個有風險的過程,需要仔細規划和慎重處理。首先要做數據庫的完全備份,備份的內容包括數據文件,控制文件,歸檔文件,日志文件,控制文件,參數文件,密碼文件等。可以備份一下整個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/
8.2 查看數據庫的運行環境,設置數據庫的升級方案
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, 這個是我們的示例文件安裝包。
8.3 執行升級前的環境准備
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用戶)安裝圖形化界面 #已安裝和配置
8.4 靜默升級安裝11.2.0.4
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.
##########################################################
回車
8.5 配置新環境變量,拷貝參數文件和監聽文件
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/
8.6 執行升級
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分鍾左右。
至此數據庫已經升級完成,
七、升級后的檢查確認
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;