oracle容器資料庫
❶ oracle 11g 和 12c 有什麼區別
oracle11g和12c的區別如下:
1、對應關系。
在oracle12c前,實例與資料庫是一對一或多對一關系(RAC):即一個實例只能與一個資料庫相關聯,資料庫可以被多個實例所載入。當進入oracle12C後,實例與資料庫可以是一對多的關系。
2、版本完善程度。
oracle11g在DBA管理上較完善,提升了對資料庫的管控能力,且提供了許多自動特性,相對來說oracle11g升級較為簡單,而oracle12c則相較於oracle11g沒有這么平滑。
3、新特性。
oracle12c的新特性是實現雲資料庫的支持,提供雲平台管理,這是oracle11g所沒有的功能,同時oracle12c增加了CDB和PDB的概念,功能較oracle11g更加齊全。
4、多分區支持。
oracle12c可以對多個分區同時進行維護操作,比如將一年的12個分區MERGE到1個新的分區中,比如將一個分區SPLIT成多個分區,多個分區同時操作自動並行完成,而oracle11g無法實現這個功能。
❷ oracle12c 什麼是容器資料庫
1.找到 tnsname.ora 此文件在oracle安裝目錄文件夾/(net80/admin)/admin/
2.打開該文件並輸入如下:(Database資料庫名,ipaddress:ip地址,1521是埠),如我的目錄是 D:\DevSuiteHome_2\NETWORK\ADMIN ,因為oracle版本不同9i可能是D:\DevSuiteHome_2\net80\ADMIN。
Database =
(description =
(address_LIST =
(address = (protocol = tcp)(host = IPaddress)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = Database_Name)
)
)
3.輸入上列文件並且保存後在dos模式下輸入
sqlplus username/password@databasename
sqlplus 打開sqlplus工具
username/password@databasenameme
用戶名/密碼@資料庫名
❸ oracle資料庫和mysql資料庫的區別
區別如下:
一、並發性
並發性是oltp資料庫最重要的特性,但並發涉及到資源的獲取、共享與鎖定。
mysql:
mysql以表級鎖為主,對資源鎖定的粒度很大,如果一個session對一個表加鎖時間過長,會讓其他session無法更新此表中的數據。
雖然InnoDB引擎的表可以用行級鎖,但這個行級鎖的機制依賴於表的索引,如果表沒有索引,或者sql語句沒有使用索引,那麼仍然使用表級鎖。
oracle:
oracle使用行級鎖,對資源鎖定的粒度要小很多,只是鎖定sql需要的資源,並且加鎖是在資料庫中的數據行上,不依賴與索引。所以oracle對並發性的支持要好很多。
二、一致性
oracle:
oracle支持serializable的隔離級別,可以實現最高級別的讀一致性。每個session提交後其他session才能看到提交的更改。oracle通過在undo表空間中構造多版本數據塊來實現讀一致性,
每個session查詢時,如果對應的數據塊發生變化,oracle會在undo表空間中為這個session構造它查詢時的舊的數據塊。
mysql:
mysql沒有類似oracle的構造多版本數據塊的機制,只支持read commited的隔離級別。一個session讀取數據時,其他session不能更改數據,但可以在表最後插入數據。
session更新數據時,要加上排它鎖,其他session無法訪問數據。
三、事務
oracle很早就完全支持事務。
mysql在innodb存儲引擎的行級鎖的情況下才支持事務。
四、數據持久性
oracle
保證提交的數據均可恢復,因為oracle把提交的sql操作線寫入了在線聯機日誌文件中,保持到了磁碟上,
如果出現資料庫或主機異常重啟,重啟後oracle可以考聯機在線日誌恢復客戶提交的數據。
mysql:
默認提交sql語句,但如果更新過程中出現db或主機重啟的問題,也許會丟失數據。
五、提交方式
oracle默認不自動提交,需要用戶手動提交。
mysql默認是自動提交。
六、邏輯備份
oracle邏輯備份時不鎖定數據,且備份的數據是一致的。
mysql邏輯備份時要鎖定數據,才能保證備份的數據是一致的,影響業務正常的dml使用。
七、熱備份
oracle有成熟的熱備工具rman,熱備時,不影響用戶使用資料庫。即使備份的資料庫不一致,也可以在恢復時通過歸檔日誌和聯機重做日誌進行一致的回復。
mysql:
myisam的引擎,用mysql自帶的mysqlhost熱備時,需要給表加讀鎖,影響dml操作。
innodb的引擎,它會備份innodb的表和索引,但是不會備份.frm文件。用ibbackup備份時,會有一個日誌文件記錄備份期間的數據變化,因此可以不用鎖表,不影響其他用戶使用資料庫。但此工具是收費的。
innobackup是結合ibbackup使用的一個腳本,他會協助對.frm文件的備份。
八、sql語句的擴展和靈活性
mysql對sql語句有很多非常實用而方便的擴展,比如limit功能,insert可以一次插入多行數據,select某些管理數據可以不加from。
oracle在這方面感覺更加穩重傳統一些。
九、復制
oracle:既有推或拉式的傳統數據復制,也有dataguard的雙機或多機容災機制,主庫出現問題是,可以自動切換備庫到主庫,但配置管理較復雜。
mysql:復制伺服器配置簡單,但主庫出問題時,叢庫有可能丟失一定的數據。且需要手工切換叢庫到主庫。
十、性能診斷
oracle有各種成熟的性能診斷調優工具,能實現很多自動分析、診斷功能。比如awr、addm、sqltrace、tkproof等
mysql的診斷調優方法較少,主要有慢查詢日誌。
十一、許可權與安全
mysql的用戶與主機有關,感覺沒有什麼意義,另外更容易被仿冒主機及ip有可乘之機。
oracle的許可權與安全概念比較傳統,中規中矩。
十二、分區表和分區索引
oracle的分區表和分區索引功能很成熟,可以提高用戶訪問db的體驗。
mysql的分區表還不太成熟穩定。
十三、管理工具
oracle有多種成熟的命令行、圖形界面、web管理工具,還有很多第三方的管理工具,管理極其方便高效。
mysql管理工具較少,在linux下的管理工具的安裝有時要安裝額外的包(phpmyadmin, etc),有一定復雜性。
❹ 無法連接Oracle資料庫使用Docker容器後問題,怎麼解決
oracle在導入數據時報1659的錯誤的原因主要是資料庫表空間剩餘空間不足引起的。
分析原因
1、表空間剩餘空間不足。
使用下面語句,查看錶空間剩餘空間
select Upper(f.tablespace_name) "表空間名",
d.tot_grootte_mb "表空間大小(M)",
d.tot_grootte_mb - f.total_bytes "已使用空間(M)",
to_char(round((d.tot_grootte_mb - f.total_bytes) /
d.tot_grootte_mb * 100, 2),'990.99') || '%' "使用比",
f.total_bytes "空閑空間(M)",
f.max_bytes "最大塊(M)"
from (select tablespace_name,
round(sum(bytes) / (1024 * 1024), 2) total_bytes,
round(max(bytes) / (1024 * 1024), 2) max_bytes
from sys.dba_free_space
group by tablespace_name) f,
(select dd.tablespace_name,
round(sum(dd.bytes) / (1024 * 1024), 2) tot_grootte_mb
from sys.dba_data_files dd
group by dd.tablespace_name) d
where d.tablespace_name = f.tablespace_name
order by f.tablespace_name;
表空間剩餘空間不足時,可以根據原資料庫表空間大小增加表空間。
alter tablespace 表空間名 add datafile '數據文件名' size 數據文件大小;
2、剩餘表空間還很多。
使用下面語句查看原資料庫表表定義,找到initial_extent值大的表,將這些表的
創建語句導出後修改initial_extent值,在目標資料庫中創建後再導入數據,導入時
增加參數ignore=y。
select table_name, initial_extent
from user_tables
where initial_extent is not null
order by initial_extent desc
如果找不到原資料庫,可以使用
imp userid/userid@service_name file=dmp文件名 indexfile=index文件名 rows=n full=Y
命令將dmp文件中創建表的語句導入到indexfile文件中,查看indexfile如下:
REM CREATE TABLE "TEST"."DM_KJKM_COPY" ("KJZDMB_DM" VARCHAR2(100)
REM ENABLE, "KMID" NUMBER(20, 0), "KMBM" VARCHAR2(100), "KMMC"
REM VARCHAR2(500), "KMQC" VARCHAR2(1000), "KMLB_DM" VARCHAR2(100),
REM ...
使用文本編輯工具,查找INITIAL將過大的初始值改為65536後,將REM去除後,在資料庫中創建後再使用exp導入數據,導入時增加參數ignore=y。
❺ oracle資料庫問題,急等、。。。
1、簡單的說:資料庫可以理解為一個獨立的數據容器,SID就是其名字,表空間是資料庫中的存放單元,一個資料庫中可以建很多個表空間,表空間之間相互獨立,每個表空間中的數據存放在表空間對應的數據文件中,為了訪問資料庫,需要建立用戶,用戶可以訪問哪些表空間是通過許可權來控制的。
以上關系似乎有點復雜,其實可以這么說:資料庫和SID是一一對應的,資料庫和表空間是一對多關系,資料庫和用戶也是一對多關系,用戶和表空間之間是多對多的關系。
2、建立一個完整的資料庫,首先通過創建資料庫,然後通過DatabaseConsole創建表空間和用戶並為用戶指定表空間分配許可權,然後通過SqlPlus或其他工具(如Toad)執行SQL語句創建表並插入數據即可。
詳細的還是建議看Oracle教程吧。
❻ 討論什麼時候需要建立oracle資料庫
資料庫實例是相當於一個容器,沒這個容器就無法在裡面存儲東西的。
解釋:這個實例是oracle的特點之一,通過不同的實例可以每次根據實際需要只啟動相應的庫即可,不需要每次啟動都把所有的oracle程序全,可以說是一種數據上的優化,提高oracle的執行效率。
備註:如果每次啟動就把所有的實例起來,即影響oracle的執行效率,又影響電腦的性能,所有建議用到那個啟動那個。
❼ 查看oracle12c是不是容器資料庫
1.找到 tnsname.ora 此文件在oracle安裝目錄文件夾/(net80/admin)/admin/
2.打開該文件並輸入如下:(Database資料庫名,ipaddress:ip地址,1521是埠),如我的目錄是 D:\DevSuiteHome_2\NETWORK\ADMIN ,因為oracle版本不同9i可能是D:\DevSuiteHome_2\net80\ADMIN。
Database =
(description =
(address_LIST =
(address = (protocol = tcp)(host = IPaddress)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = Database_Name)
)
)
3.輸入上列文件並且保存後在dos模式下輸入
sqlplus username/password@databasename
sqlplus 打開sqlplus工具
username/password@databasenameme
用戶名/密碼@資料庫名