Oracle 12c 使用SQL*Plus來建立與移動應用程式Seeds
可以使用多種方法來建立應用程式seeds,包括使用CDB seed,克隆現有的PDB或Non-CDB,與附加一個解除安裝的PDB。也可以從應用程式容器中刪除應用程式seeds。
為了在應用程式容器中建立新的應用程式seed,可以執行帶有as seed子句的create pluggable database語句。可以使用應用程式種子為應用程式提供一個應用程式容器。通常在應用程式seed建立之前應用程式容器的應用程式被安裝在應用程式root中。在應用程式seed建立之後它將與應用程式root進行同步,因此應用程式被安裝在應用程式seed中。當建立應用程式seed之後,使用應用程式seed建立的任何PDB都安裝應用程式。當應用程式root中的應用程式被升級或打補丁後,應用程式seed必須使用應用程式root進行同步來應用這些改變。
透過執行帶有as seed子句的create pluggable database語句來建立應用程式seed。
一個應用程式容器可以有零或一個應用程式seed。當使用as seed子句建立應程式seed時,不用指定它的名字。應用程式seed名字總是以application_container_name$SEED命名,其中application_container_name是應用程式seed的應用程式容器的名字。例如,在salesact應用程式容器中的應用程式seed它的名字必須是salesact$SEED。
當建立一個新的應用程式seed時,必須為在create pluggable database語句中為應用程式容器指定管理員。這個語句將在應用程式容器中建立一個本地使用者的管理員,並且被授予pdb_dba角色。
建立應用程式seed的所需要滿足的條件:
.CDB必須存在
.CDB必須處於讀寫模式
.應用程式seed所屬的應用程式容器必須處於讀寫模式
.當前使用者必須是一個公共使用者,應用程式seed所屬的應用程式root是當前容器
.當前使用者有create pluggable database系統許可權
.在應用程式容器中對於包含應用程式的應用程式seed,應用程式必須安裝在應用程式root
建立應用程式seed
可以透過執行帶有as seed子句的create pluggable database語句來建立應用程式。應用程式容器中的應用程式seed類似於CDB中的seed。一個應用程式seed能用來快速與簡單的建立滿足應用程式容器要求的應用程式PDB。建立應用程式seed的操作如下:
1.在SQL*Plus中,確保當前容器是應用程式root。
2.執行帶有as seed子句的create pluggable database語句來建立應用程式seed。根據需要還可以指定其它子句。在建立完應用程式seed後,它處於mounted模式,狀態為new。可以透過查詢v$pdbs檢視的open_mode列來檢查應用程式seed的開啟模式。可以透過查詢cdb_pdbs或者dba_pdbs檢視的status列來檢視應用程式seed的狀態。還會為應用程式seed建立預設的服務名。服務名與應用程式seed同名並且可以被用來訪問應用程式seed。
3.以讀寫模式來開啟新的應用程式seed
4.為了將新應用程式seed整合到應用程式容器中必須以讀寫模式來開啟新的應用程式seed。如果試圖以只讀模式來開啟新的應用程式seed將會返回錯誤資訊。在應用程式seed以讀寫模式開啟後,它的狀態將為normal。
5.執行一個或多個以下操作:
5.a 如果使用CDB seed中建立應用程式seed,那麼將容器切換到應用程式seed,並且執行帶有sync子句的alter pluggable database語句來同步應用程式seed。同步使用應用程式root來例項化應用程式seed中的一個或多個應用程式root的應用程式。
5.b 如果使用應用程式root中建立應用程式seed,那麼將容器切換到應用程式seed,然後執行pdb_to_apppdb.sql指令碼來將應用程式root轉換為應用程式PDB。
當透過克隆一個應用程式PDB來建立應用程式seed時這些操作不需要執行。
6.關閉應用程式seed,然後以只讀模式來開啟它。
7.備份應用程式seed。
使用CDB seed來建立應用程式seed
這個例子假設滿足以下條件:
.應用程式seed將被建立在名為salesact的應用程式容器中。
.對應用程式seed不使用儲存限制,因此不指定storage子句。
.應用程式seed不建立預設表空間。
.不指定path_prefix子句。
.不指定file_name_convert與create_file_dest子句。可以對CDB啟用OMF或設定pdb_file_name_convert初始化引數。與CDB相關的檔案將會基於OMF配置或引數設定被複制到新目錄中。
.在目標目錄中沒有與新temp檔案同名的檔案存在,將會建立新的temp檔案,因此不用指定tempfile reuse子句。
.不需要預先定義Oracle角色被授予給pdb_dba角色。
執行的語句如下:
先切換到應用程式容器salesact中
SQL> alter session set container=salesact; Session altered. SQL> select name,open_mode from v$pdbs; NAME OPEN_MODE -------------------------------------------------------------------------------------------------------------------------------- ---------- SALESACT READ WRITE
執行語句來使用CDB seed來在應用程式容器salesact中建立應用程式seed,並開啟應用程式seed。
SQL> create pluggable database as seed admin user actseedadm identified by "xxzx7817600"; Pluggable database created. SQL> select name,open_mode from v$pdbs; NAME OPEN_MODE -------------------------------------------------------------------------------------------------------------------------------- ---------- SALESACT READ WRITE SALESACT$SEED MOUNTED SQL> alter pluggable database salesact$seed open; Pluggable database altered. SQL> select name,open_mode from v$pdbs; NAME OPEN_MODE -------------------------------------------------------------------------------------------------------------------------------- ---------- SALESACT READ WRITE SALESACT$SEED READ WRITE
切換容器到應用程式seed(salesact$SEED)中,使用應用程式root中的所有應用程式來同步應用程式seed。
SQL> alter session set container=salesact$seed; Session altered. SQL> select name,open_mode from v$pdbs; NAME OPEN_MODE -------------------------------------------------------------------------------------------------------------------------------- ---------- SALESACT$SEED READ WRITE SQL> alter pluggable database application all sync; Pluggable database altered.
關閉應用程式seed(salesact$seed),然後以只讀模式來開啟應用程式seed。
SQL> alter pluggable database close immediate; Pluggable database altered. SQL> select name,open_mode from v$pdbs; NAME OPEN_MODE -------------------------------------------------------------------------------------------------------------------------------- ---------- SALESACT$SEED MOUNTED SQL> alter pluggable database open read only; Pluggable database altered. SQL> select name,open_mode from v$pdbs; NAME OPEN_MODE -------------------------------------------------------------------------------------------------------------------------------- ---------- SALESACT$SEED READ ONLY
因為應用程式容器名為salesact,所以應用程式seed名為salesact$seed。在建立應用程式seed時一起建立了一個本地管理使用者並且被授予了pdb_dba公共角色。如果這個使用者在建立應用程式seed時沒有授予管理許可權,那麼使用sys與system公共使用者來管理應用程式seed。當建立應用程式seed時,將使用應用程式root來同步應用程式seed。因此應用程式seed將包含安裝在應用程式root中的應用程式與應用程式公共物件它們是這些應用程式的一部分。當使用應用程式seed來建立新的應用程式PDB時,應用程式PDB也會包含這些安裝的應用程式與應用程式公共物件。
使用應用程式PDB建立應用程式seed
這個例子假設滿足以下條件:
.在應用程式容器salesact中建立了應用程式seed。
.將在應用程式PBD(salesapppdb)所在的應用程式容器中建立應用程式seed。
.對應用程式seed不使用儲存限制,因此不指定storage子句。
.應用程式seed不包含預設表空間。
.不指定path_prefix子句。
.不指定file_name_convert與create_file_dest子句。可以啟用OMF或設定pdb_file_name_convert初始化引數。與應用程式root相關的檔案會基於OMF的配置或初始化引數設定被複制到新目錄中。
.在目標目錄中沒有與新temp檔案同名的檔案存在,因此不需要使用tempfile reuse子句。
切換容器到應用程式容器(salesact),並執行以下命令來建立應用程式seed。
SQL> create pluggable database as seed from salesapppdb; Pluggable database created. SQL> select name,open_mode from v$pdbs; NAME OPEN_MODE -------------------------------------------------------------------------------------------------------------------------------- ---------- SALESACT READ WRITE SALESAPPPDB READ WRITE SALESACT$SEED MOUNTED
然後開啟應用程式seed,再關閉應用程式seed,最後再以只讀方式開啟應用程式seed。
SQL> alter pluggable database salesact$seed open; Pluggable database altered. SQL> select name,open_mode from v$pdbs; NAME OPEN_MODE -------------------------------------------------------------------------------------------------------------------------------- ---------- SALESACT READ WRITE SALESAPPPDB READ WRITE SALESACT$SEED READ WRITE SQL> alter pluggable database salesact$seed close immediate; Pluggable database altered. SQL> select name,open_mode from v$pdbs; NAME OPEN_MODE -------------------------------------------------------------------------------------------------------------------------------- ---------- SALESACT READ WRITE SALESAPPPDB READ WRITE SALESACT$SEED MOUNTED SQL> alter pluggable database salesact$seed open read only; Pluggable database altered. SQL> select name,open_mode from v$pdbs; NAME OPEN_MODE -------------------------------------------------------------------------------------------------------------------------------- ---------- SALESACT READ WRITE SALESAPPPDB READ WRITE SALESACT$SEED READ ONLY
因為應用程式容器名為salesact,所以應用程式seed名字預設為salesact$seed。應用程式seed是使用應用程式pdb而建立的,因此應用程式seed就包含了安裝在應用程式root中的應用程式與應用程式公共物件,它們是這些應用程式的一部分。當使用應用程式seed來建立新的應用程式pdb時,應用程式pdb也會包含安裝的應用程式與應用程式公共物件。
使用應用程式root來建立應用程式seed
這個例子假設滿足以下條件:
.應用程式seed將建立在應用程式容器(salesact)中。應用程式seed使用對應用程式容器的root進行克隆進行建立。
.對應用程式seed不使用儲存限制,因此不使用storage子句。
.應用程式seed不包含預設表空間。
.不使用path_prefix子句。
.不使用file_name_convert與create_file_dest子句。可以啟用OMF或設定pdb_file_name_convert初始化引數。基於OMF配置或初始化引數的設定與應用程式root相關的檔案會被複制到新目錄中。
.在目標目錄中沒有與新temp檔案同名的檔案存在,因此不需要使用tempfile reuse子句。
切換到應用程式容器(salesact)中,執行下面的命令來建立應用程式seed。
SQL> create pluggable database as seed from salesact; Pluggable database created. SQL> select name,open_mode from v$pdbs; NAME OPEN_MODE -------------------------------------------------------------------------------------------------------------------------------- ---------- SALESACT READ WRITE SALESACT$SEED MOUNTED SALESAPPPDB READ WRITE
開啟應用程式seed,切換容器到應用程式seed,然後執行pdb_to_apppdb.sql指令碼將應用程式root轉換為應用程式pdb。
SQL> alter pluggable database salesact$seed open; Warning: PDB altered with errors. SQL> select name,open_mode from v$pdbs; NAME OPEN_MODE -------------------------------------------------------------------------------------------------------------------------------- ---------- SALESACT READ WRITE SALESACT$SEED READ WRITE SALESAPPPDB READ WRITE SQL> alter session set container=salesact$seed; Session altered. SQL> @$ORACLE_HOME/rdbms/admin/pdb_to_apppdb.sql ... SQL> BEGIN 2 execute immediate '&open_sql &restricted_state'; 3 EXCEPTION 4 WHEN OTHERS THEN 5 BEGIN 6 IF (sqlcode <> -900) THEN 7 RAISE; 8 END IF; 9 END; 10 END; 11 / PL/SQL procedure successfully completed. SQL> SQL> WHENEVER SQLERROR CONTINUE; SQL> alter pluggable database close immediate instances=all; Pluggable database altered. SQL> select name,open_mode from v$pdbs; NAME OPEN_MODE -------------------------------------------------------------------------------------------------------------------------------- ---------- SALESACT$SEED MOUNTED 1 row selected. SQL> alter pluggable database open read only instances=all; Pluggable database altered. SQL> select name,open_mode from v$pdbs; NAME OPEN_MODE -------------------------------------------------------------------------------------------------------------------------------- ---------- SALESACT$SEED READ ONLY 1 row selected.
因為應用程式容器名為salesact,所以應用程式seed名為salesact$seed。應用程式seed是使用應用程式root進行建立的。因此應用程式seed包含安裝在應用程式root中的應用程式與應用程式公共物件,它們是這些應用程式的一部分。當使用應用程式seed來建立新應用程式PDB時,應用程式pdb也會包含安裝的應用程式與應用程式公共物件。
從應用程式容器中拔出應用程式seed
拔出應用程式seed就是斷開應用程式seed與應用程式容器的關聯。當不再需要應用程式seed時可以將其刪除。拔出應用程式seed類似於拔出PDB。為了拔出應用程式seed,連線到它的應用程式root並使用alter pluggable database語句來指定生成xml檔案或.pdb檔案。當指定xml檔案後,在解除安裝完成後生成的xml檔案會包含描述應用程式seed的後設資料。
SQL> alter pluggable database salesact$seed close immediate instances=all; Pluggable database altered. SQL> select name,open_mode from v$pdbs; NAME OPEN_MODE -------------------------------------------------------------------------------------------------------------------------------- ---------- SALESACT READ WRITE SALESACT$SEED MOUNTED SALESAPPPDB READ WRITE 3 rows selected. SQL> alter pluggable database salesact$seed unplug into '/tts/plug/salesact_seed.xml'; Pluggable database altered.
刪除應用程式seed
當不再需要應用程式seed時,可以執行drop pluggable database語句來刪除。當刪除應用程式seed時,CDB的控制檔案會被修改來刪除與被刪除應用程式seed的所有相關資訊,但是歸檔重做日誌與備份不會被刪除,但可以使用RMAN來刪除它們。
SQL> drop pluggable database salesapppdb including datafiles; Pluggable database dropped.
建立應用程式PDB
可以在應用程式root容器中執行create pluggable database語句來建立應用程式PDB。建立應用程式pdb與在CDB root中建立PDB都是使用相同的SQL語句。當在應用程式root中執行create pluggable database語句時新建立的PDB為應用程式PDB。SQL語句必須在應用程式root中執行並且對應用程式root中所定義的應用程式資料庫有顯式依賴性。建立應用程式PDB的操作如下:
1.在SQL*Plus中,確保當前容器為應用程式root
2.執行create pluggable database語句。在應用程式PDB完成建立之後,它處於mounted模式並且狀態為NEW。可以透過查詢v$pdbs檢視的open_mode列來檢視應用程式pdb的開啟模式,可以透過查詢cdb_pdbs或dba_pdbs檢視的status列來檢視應用程式pdb的狀態。對於新建立的應用程式PDB也會建立一個預設的服務名,服務名與應用程式PDB同名並且可以被用來訪問應用程式PDB。
3.以讀寫模式來開啟應用程式PDB
4.為了將新的應用程式PDB整合到應用程式容器必須以讀寫模式來開啟新的應用程式PDB。如果試圖以只讀模式來開啟應用程式PDB將會返回錯誤資訊。在應用程式PDB以讀寫模式開啟後它的狀態將變為NORMAL。
5.切換容器為應用程式PDB
6.執行alter pluggable database ... sync來同步應用程式PDB。同步使用應用程式PDB來例項化應用程式PDB中的一個或多個應用程式root中的應用程式。
7.關閉應用程式PDB,然後以只讀模式開啟。
8.備份應用程式PDB。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2144845/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 12c使用SQL*Plus來建立與刪除應用程式容器OracleSQL
- 使用 .NET MAUI 建立移動應用——Get StartUI
- Oracle 12c 使用Non-CDB來建立PDBOracle
- 轉享:使用HTML5建立移動應用HTML
- SQL Server建立應用程式角色與標準角色SQLServer
- SQL Server建立使用者函式與應用SQLServer函式
- 機器學習與移動應用開發的未來機器學習
- 【SQL/PLUS】Oracle PL/SQL程式設計用set serveroutput onSQLOracle程式設計Server
- Oracle 12c 手動建立CDBOracle
- Oracle 12c 檢視CDB&PDBs資訊(SQL*PLUS)OracleSQL
- 12c 使用SQL命令手工建立CDB數SQL
- 新移動框架中企業自建應用的來源是【移動輕應用管理】框架
- 使用OEM,SQL*Plus,iSQL*Plus 管理Oracle例項SQLOracle
- 使用Xamarin開發移動應用示例——數獨遊戲(一)專案的建立與除錯遊戲除錯
- Oracle 12c 建立 SCOTT 使用者Oracle
- Oracle 12c中建立使用者Oracle
- 用VC程式來建立SQL Server ODBC資料來源 (轉)C程式SQLServer
- Oracle 11g系列:SQL Plus與PL/SQLOracleSQL
- Oracle 12c 建立與刪除CDB、PDBsOracle
- 分析:移動應用廣告的未來探索
- 【譯】移動應用開發:如何建立自定義Android程式碼模板Android
- 使用Xamarin開發移動應用示例——數獨遊戲(二)建立遊戲介面遊戲
- Oracle 12c如何建立scott使用者Oracle
- MyBatis-Plus:建立動態資料來源MyBatis
- Oracle使用SQL*Plus生成html檔案OracleSQLHTML
- oracle sql應用OracleSQL
- 為什麼選用 React 建立混合型移動應用?React
- 移動應用程式開發簡介!
- Oracle 12c 手動建立CDB和非CDBOracle
- Laravel 使用 sql 語句 和 sql 檔案 來建立執行資料庫遷移LaravelSQL資料庫
- 《iOS應用開發指南——使用HTML5、CSS3和JavaScript》——1.3 移動應用程式≠桌面應用程式iOSHTMLCSSS3JavaScript
- 使用SQL*PlusSQL
- Oracle 12C 建立使用者連線pdbOracle
- Oracle 12C -- 使用seed PDB建立新的pdbOracle
- impdp自動建立使用者前提條件與應用場景
- 《iOS應用開發指南——使用HTML5、CSS3和JavaScript》——1.3節移動應用程式≠桌面應用程式iOSHTMLCSSS3JavaScript
- Airplus:移動支付為使用者帶來方便,但普及慢AI
- 為什麼移動Web應用程式很慢Web