您好,登錄后才能下訂單哦!
ORACLE數據庫系統是美國ORACLE公司(甲骨文)提供的以分布式數據庫為核心的一組軟件產品,是目前最流行的客戶/服務器(CLIENT/SERVER)或B/S體系結構的數據庫之一。比如SilverStream就是基于數據庫的一種中間件。ORACLE數據庫是目前世界上使用最為廣泛的數據庫管理系統,作為一個通用的數據庫系統,它具有完整的數據管理功能;作為一個關系數據庫,它是一個完備關系的產品;作為分布式數據庫它實現了分布式處理功能。但它的所有知識,只要在一種機型上學習了ORACLE知識,便能在各種類型的機器上使用它。
Oracle 12c 中引入了一個新功能就是Oracle Multitenant,這個功能可以在多租戶容器數據庫中,創建并維護許多個可插拔數據庫。Oracle Multitenant是Oracle企業版中需要額外付費的組件。然而,在所有Oracle版本中都可以在一個可插拔數據庫中免費使用它。
多租戶容器數據庫(CDB)是指能夠容納一個或者多個可插拔數據庫的數據庫。容器是指CDB中的數據文件和元數據的集合。可插拔數據庫是指可以通過克隆另一個數據庫輕松創建的數據容器。如果有必要,也可將可插拔數據庫從一個CDB傳送到另一個CDB。
所有含有一組主數據文件和元數據的CDB都是根容器。每個CDB也會含有種子容器,它是用于創建其它可插拔數據庫的模板。每個CDB都由一個根容器、一個種子容器和0個、1個或多個可插拔數據庫構成。
安裝系統:CentOS 7
IP地址:192.168.100.135
安裝所需硬盤大小:40G 或重新掛載一塊40G硬盤 (安裝就需要15G左右,大小當然越大越好)
內存:4G(不建議少于4G)
SWAP(虛擬內存) : 8G (不建議少于8G)
Oracle 數據庫軟件包,無需解壓縮,可直接調用。
百度網盤:鏈接:https://pan.baidu.com/s/1v1h3_wrB6er8HCpONh9xRQ 密碼:a0h2
[root@oracle ~]# systemctl stop firewalld.service
[root@oracle ~]# systemctl disable firewalld.service
[root@oracle ~]# setenforce 0
步驟:
[root@localhost ~]# cd /dev
[root@localhost dev]# fdisk /dev/sdb
n
p
回車
回車
回車
w
[root@localhost dev]# mkfs -t xfs /dev/sdb1
[root@localhost dev]# mkdir /orc
[root@localhost dev]# vim /etc/hostname
HOSTNAME=oracle #修改主機名,便于管理,修改完成后保存退出
[root@localhost dev]# vim /etc/hosts
192.168.100.135 oracle #末尾插入一行
[root@oracle ~]# mount /dev/sdb1 /orc
[root@oracle ~]# df -h
[root@oracle ~]# yum -y install binutils compat-libcapl compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel
[root@oracle ~]# vim /etc/sysctl.conf
#末行添加
fs.aio-max-nr = 1048576 #異步IO請求數目,推薦值是:1048576(1024*1024也就是1024K個)
fs.file-max = 6815744 #打開的文件句柄的最大數量,防止文件描述符耗盡的問題
kernel.shmall = 2097152 #共享內存總量 頁為單位,內存除以4K所得
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128 #數值對應含義:SEMMSL: 每個信號集的最大信號數量
#SEMMNS:用于控制整個 Linux 系統中信號的最大數
#SEMOPM:內核參數用于控制每個semop系統調用可以執行的信號操作的數量
#SEMMNI:內核參數用于控制整個 Linux 系統中信號集的最大數量
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 #套接字發送緩沖區大小的最大值
#修改完成后保存退出
[root@oracle ~]# sysctl -p #使其生效
[root@oracle ~]# groupadd oinstall
[root@oracle ~]# groupadd dba
[root@oracle ~]# useradd -g oinstall -G dba oracle
[root@oracle ~]# passwd oracle
更改用戶 oracle 的密碼 。
新的 密碼:
123123
[root@oracle ~]# mkdir -p /orc/app/oracle
[root@oracle ~]# chown -R oracle.oinstall /orc/app/
[root@oracle ~]# chmod -R 755 /orc/app/oracle/
[root@oracle oracle]# chown -R oracle:oinstall /home/oracle/database/
[root@oracle oracle]# chmod -R 755 /home/oracle/database/
[root@oracle ~]# vim /home/oracle/.bash_profile
#刪除末尾兩行數據并插入以下內容
umask 022 #權限,設置的是反掩碼
ORACLE_BASE=/opt/app/oracle #指定基目錄
ORACLE_HOME=/opt/app/oracle/product/12.2.0/dbhome_1/ #指定數據存放路徑
ORACLE_SID=orcl #指定實例名稱
NLS_LANG="SIMPLIFIED CHINESE_CHINA".UTF8 #簡體中文語言字符集
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$ORACLE_HOME/bin
LANG=zh_CN.UTF-8
export PATH LANG NLS_LANG ORACLE_BASE ORACLE_HOME ORACLE_SID
#修改完成后保存退出
#使用pam_limits認證模塊
[root@oracle ~]# vim /etc/pam.d/login
#在第7行左右下插入以下內容
session required /lib/security/pam_limits.so
session required pam_limits.so
#修改完成后保存退出
[root@oracle ~]# vim /etc/security/limits.conf #編輯對資源的限制
#在末尾插入
oracle soft nproc 2047 #但用戶可用使用的進程數量
oracle hard nproc 16384
oracle soft nofile 1024 #用戶可打開的文件數量
oracle hard nofile 65536
oracle soft stack 10240 #堆棧設置
#修改完成后保存退出
[root@oracle ~]# vim /etc/profile #修改環境變量配置文件
#末尾插入
if [ $USER = "oracle" ]
then
if [$SHELL = "/bin/ksh" ]
then
ulimit -p 16384 #緩沖區大小
ulimit -n 65536 #文件數
else
ulimit -u 16384 -n 65536 #進程數 文件數
fi
fi
#修改完成后保存退出
Oracle 數據庫軟件包,無需解壓縮,可直接調。
百度網盤:鏈接:https://pan.baidu.com/s/1v1h3_wrB6er8HCpONh9xRQ 密碼:a0h2
下載文件后掛載到 /opt 下面
[root@oracle ~]# xhost + #允許所有用戶訪問Xserver
access control disabled, clients can connect from any host
[root@oracle ~]# chmod -R 777 /opt/database/
[root@oracle ~]# su - oracle #切換用戶
[oracle@oracle ~]$ export DISPLAY=:0.0
[oracle@oracle ~]$ cd /opt/database/
[oracle@oracle database]$ ls
install response rpm runInstaller sshsetup stage welcome.html
[oracle@oracle ~]$ ./runInstaller #執行安裝腳本
正在啟動 Oracle Universal Installer...
點擊單實例數據庫安裝,下一步
典型安裝,自行設置口令 ,下一步
#另開一個終端,以ROOT身份登錄
[root@oracle abc]# /orc/app/oraInventory/orainstRoot.sh
[root@oracle abc]# /orc/app/oracle/product/12.2.0/dbhome_1/root.sh
首先需要理解的是控制文件的概念和基本管理
控制文件:為二進制文件,初始化大小由CREATE DATABASE指定,可以使用RMAN備份。
- 記錄了當前數據庫的結構信息,同時也包含數據文件及日志文件的信息以及相關的狀態,歸檔信息等等。
- 在參數文件中描述其位置,個數等等。通常采用分散放開,多路復用的原則。在mount階段被讀取,open階段一直被使用。
- 維護數據庫一致性(數據庫啟動時會比較控制文件與聯機日志文件中的ckpt,即起始scn號,如相等則正常啟動,否則需要介質恢復)。
- 一個控制文件只能屬于一個數據庫。
- 控制文件的任意修改將寫入到初始化參數中指定的所有控制文件中,讀取時則僅讀取第一個控制文件。
- 控制文件只能連接一個數據庫,控制文件的大小一般不要超過MB,最多為個,最少一個,互為鏡像.
-
控制文件中包含的內容
- 數據庫的名字、ID、創建的時間戳
- 表空間的名字
- 聯機日志文件、數據文件的位置、個數、名字
- 聯機日志的Sequence號碼
- 檢查點的信息
- 撤銷段的開始或結束
- 歸檔信息
- 備份信息
-
數據庫啟動從nomount狀態啟動到mount狀態時必須讀取控制文件,以獲取數據文件和日志文件的位置;如果控制文件實效,數據庫將無法啟動;而且數據庫實時運行過程中,系統也在不停向控制文件中寫入stop scn以及checkpoint scn,如果控制文件無法寫入,數據庫也會宕機。遇到這種情況如果有備份的控制文件,只需要在nomount狀態將正確的備份控制文件覆蓋到已實效的控制文件,然后啟動數據庫到open狀態即可解決問題。因此系統默認至少同時有幾個相同的控制文件互為備份,而且相同的控制文件最好是放在不同的磁盤目錄,分散風險。
-
12c安裝完成后默認情況下,控制文件有2個,由上述可知,如果Oracle在安裝完成后沒有更改控制文件的話,會存在很大的安全隱患,所以建議優化控制文件等。
準備工作:
需要使用root用戶,給/opt 777權限,以便于Oracle用戶讀寫操作
[root@HOSTNAMEoracle ~]# chmod 777 /opt/進入Oracle
[root@HOSTNAMEoracle ~]# su - oracle
[oracle@HOSTNAMEoracle ~]$ sqlplus / as sysdba
SQL> select name from v$controlfile;
#控制文件中存放,創建數據庫信息、重做日志信息、數據文件及歸檔日志文件記錄等信息
SQL> select type,record_size,records_total,records_used from v$controlfile_record_section;
SQL> alter system set
2 control_files='/orc/app/oracle/oradata/orcl/control01.ctl',
3 '/opt/control02.ctl' scope=spfile; #變更控制文件02的路徑,增加安全性
參數更改完畢后需要關閉Oracle數據庫,在/orc/app/oracle/oradata/orcl控制文件的路徑中進行更改,并重啟Oracle才能生效
SQL> shutdown immediate; #關閉數據庫
SQL> ho cp /orc/app/oracle/oradata/orcl/control02.ctl /opt/control02.ctl #使用 ho命令在不退出數據庫的情況下執行系統命令
SQL> startup #開啟數據庫
SQL> select name from v$controlfile; #查看控制文件位置
SQL> alter database backup controlfile to '/opt/control.bak'; #執行備份
數據庫已更改。
SQL> ho ls /opt #在sql環境中運行系統命令
control02.ctl control.bak ORCLfmap rh
Oracle數據庫在運行當中,用戶更改的數據首先會存放在數據庫高速緩沖區當中,為了提升磁盤讀寫,oracle機制不會頻繁的將緩沖區的數據寫到磁盤,而是等到檢查點或者數據高速緩沖區達到一定數量時才會寫入數據庫文件;倘若在檢查點或者數據量等條件還沒滿足系統就掛了,那么此時用戶提交的數據就會丟失,因為數據還在內存里,為了防止數據丟失,oracle提出了重做日志。
-
日志的模式:
在線日志:在線日志模式,不會主動提交日志,服務器關閉就會丟失部分數據。切換日志組時會自動提交文件并保存,后切換的日志組內寫入的文件會丟失。
歸檔日志:只要寫入數據就會提交到硬盤進行保存。
LGWR的觸發條件
- 在事務提交的時候(COMMIT)
- Redo Log Buffer 三分之一滿
- Redo Log Buffer 多于一兆的變化記錄
- 在DBWn寫入數據文件之前
#查看重做日志組的組號,序列,大小,個數數量,歸檔狀態,日志組狀態
SQL> select group#,sequence#,bytes,members,archived,status from v$log;
新安裝完Oracle數據庫后,查看下重做日志文件狀態,確認歸檔文件模式是否開啟。如果沒有開啟,建議開啟,增加安全性,防止部分數據丟失。
#查看歸檔日志模式
SQL> archive log list;
SQL> shutdown immediate; #關閉Oracle數據庫
SQL> startup mount; #啟動實例,加載數據庫但是并不打開數據庫
SQL> alter database archivelog; #啟用歸檔日志模式
SQL> alter database open; #啟動打開數據庫
SQL> archive log list; #查看歸檔日志模式
SQL> set line 120; //設置顯示寬度120
SQL> col member for a50; //member列顯示寬度50字符寬度
SQL> select group#,status,type,member from v$logfile; //使用logfile視圖查看
PS:status 含義
1:空白 正在使用
2:stale 內容不完整
3:invalid 無法訪問 如剛建立
4:deleted 文件已不再有用
/orc/app/oracle/oradata/orcl/ //控制文件和重做日志文件都在此路徑
SQL> alter database add logfile group 4
2 ('/orc/app/oracle/oradata/orcl/redo04a.log',
3 '/opt/redo04b.log') size 10m;
數據庫已更改。
SQL> alter database drop logfile group 4;
數據庫已更改。
#當前日志組不可刪除 解決方法:切換日志組: alter system switch logfile;
SQL> alter database add logfile member
2 '/opt/redo01b.log' to group 1,
3 '/opt/redo02b.log' to group 2;
數據庫已更改。
SQL> alter database drop logfile member
2 '/opt/redo02b.log';
數據庫已更改。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。