2024年4月16日 星期二
使用ChatGPT來學習oracle 特定主題
DL
我是一個資料庫初學者,請用容易理解的方式,告訴我五個優點,三個缺點,關於使用oracle partitioned table
ChatGPT
當然!Oracle 分區表有許多優點和一些挑戰。我來分別談談它們。
優點:
性能提升: 分區可以使資料庫的查詢和操作更有效率。當你需要查詢或操作特定區域的資料時,分區可以幫助系統僅針對必要的部分進行處理,從而提升效能。
簡化管理: 分區表可以幫助你更輕鬆地管理大量資料,因為你可以針對不同的需求獨立地管理每個分區。這使得資料的刪除、移動、備份和恢復等操作更容易進行。
更好的維護: 透過分區,你可以更容易地執行維護任務,比如只針對某些分區進行索引重建或統計更新,而不需要對整個表進行操作,這可以節省時間和系統資源。
增強的故障恢復能力: 使用分區表可以使故障恢復更有效率。當發生故障時,你可以更快地恢復單個分區,而不需要恢復整個表,這可以減少系統停機時間。
提供更好的安全性: 你可以將不同的分區設置不同的安全性要求,以控制不同用戶對資料的訪問權限。這可以提高資料的安全性。
缺點:
複雜性增加: 管理分區表可能比單一表更加複雜,特別是在設計和維護方面。需要更多的計劃和注意事項,以確保分區的正確使用。
可能增加成本: 分區表可能需要更多的硬體資源和更高的設置成本,特別是當你需要額外的儲存空間來支持分區表時。
不當使用可能導致效能下降: 如果分區策略不當,可能會導致效能下降。例如,過多的分區可能會增加系統的管理負擔,而過少的分區則可能無法有效地提升效能。
希望這幫得上忙!如果有其他問題,歡迎隨時問我。
DL
請對你回答中的兩個項目,舉例說明,能夠列出指令更佳: 1. 更好的維護:刪除、移動。 2. 複雜性增加: 管理分區表可能比單一表更加複雜,特別是在設計和維護方面。需要更多的計劃和注意事項,以確保分區的正確使用。
ChatGPT
當然,讓我來進一步說明。
更好的維護:
刪除:
假設你有一個分區表,其中包含了過去五年的銷售資料,每個分區代表一年的資料。現在你需要刪除最舊的兩年資料以釋放空間。使用分區表,你可以輕鬆地執行這個任務,只需刪除對應的分區即可,而不需要影響其他年份的資料。
sql
Copy code
ALTER TABLE sales DROP PARTITION sales_2017;
ALTER TABLE sales DROP PARTITION sales_2018;
移動:
假設你想要將分區表中的某些資料移動到不同的存儲位置,比如將 2019 年的銷售資料移動到更快的 SSD 硬碟上。你可以輕鬆地使用分區表來完成這個任務。
sql
Copy code
ALTER TABLE sales MOVE PARTITION sales_2019 TABLESPACE ssd_tablespace;
複雜性增加:
管理分區表需要更多的計劃和注意事項,這是因為你需要考慮分區策略、分區鍵、分區的大小等因素,以確保分區的正確使用。例如,如果你的分區策略過於細緻,可能會導致過多的分區,增加管理複雜性。相反,如果分區策略不夠細緻,可能無法充分發揮分區的效能優勢。
sql
Copy code
-- 定義分區表
CREATE TABLE sales (
sales_id NUMBER,
sales_date DATE,
amount NUMBER
)
PARTITION BY RANGE (sales_date)
(
PARTITION sales_2019 VALUES LESS THAN (TO_DATE('2020-01-01', 'YYYY-MM-DD')),
PARTITION sales_2020 VALUES LESS THAN (TO_DATE('2021-01-01', 'YYYY-MM-DD')),
PARTITION sales_2021 VALUES LESS THAN (TO_DATE('2022-01-01', 'YYYY-MM-DD'))
);
在上面的例子中,定義了一個按照銷售日期分區的分區表,分區鍵為銷售日期。管理這樣的分區表需要確保分區的定義與實際業務需求相符,並且需要不斷評估和調整分區策略以滿足系統的需求。
DL
謝謝,兩個問題: 1.移動例子中的指令,可以使用online的方式,讓移動的過程中不影響該partition的使用嗎? 2.使用partitioned table,在index的維護上,請列出五點特別需要注意的項目。
ChatGPT
當然,我來回答你的問題:
移動分區時使用Online方式:
在 Oracle 中,你可以使用 ALTER TABLE ... MOVE PARTITION 命令來移動分區,但默認情況下,這會導致該分區在移動期間不可用,可能會對系統造成影響。不過,你可以通過在命令中添加 UPDATE INDEXES 子句以使用 Online 方式,從而在移動過程中不影響該分區的使用。
sql
Copy code
ALTER TABLE sales MOVE PARTITION sales_2019 TABLESPACE ssd_tablespace UPDATE INDEXES ONLINE;
這樣,當移動分區時,相關的索引也會在線上被更新,從而使得該分區在移動過程中仍然可以被查詢和操作。
使用 Partitioned Table,在 Index 的維護上需要注意的項目:
在管理 Partitioned Table 的索引時,有幾個特別需要注意的事項:
分區索引的管理: 確保分區索引的適當管理,包括定期的統計信息更新、重建索引等。可以使用 ALTER INDEX ... REBUILD PARTITION 命令來對特定分區的索引進行重建。
索引分區與資料分區的一致性: 當修改了資料分區的結構或內容時,確保相應的索引分區也被更新以保持一致性。否則,可能會導致索引不再有效或不一致。
注意索引與分區策略的配合: 確保索引的建立與分區策略相符,以充分發揮索引的效能優勢。比如,使用本地索引(local index)來與分區表配合,以避免全局索引(global index)的性能問題。
考慮索引重建的影響: 當修改了分區表的結構或內容時,特別是當新增或移除分區時,需要考慮索引重建的影響,確保索引的維護不會對系統性能造成過大的影響。
定期監控與調整: 定期監控索引的使用情況和性能,根據實際情況進行調整索引的設計和維護策略,以確保系統的正常運作和性能優化。
這些都是在管理 Partitioned Table 索引時需要特別注意的事項,確保系統的穩定性和效能。
DL
請對注意索引與分區策略的配合,舉實例說明,能有指令的範例更佳。
ChatGPT
當然,讓我舉個例子來說明注意索引與分區策略配合的重要性。
假設你有一個分區表 sales,其中存儲了每天的銷售資料,分區方式是按照銷售日期進行分區。現在你想要為這個表建立索引以加快查詢速度,而你選擇了在銷售日期上建立索引。
sql
Copy code
CREATE INDEX sales_date_idx ON sales(sales_date);
這個索引的建立方式是全局索引(global index),它將所有分區的銷售資料都納入同一個索引結構中。
然而,如果你的分區表非常大,而且銷售資料是不斷增加的,使用全局索引可能會導致性能問題。因為當你查詢某個特定日期的銷售資料時,系統需要掃描整個索引結構,而不僅僅是單個分區,這會增加查詢的時間。
為了改善這個情況,你可以考慮使用本地索引(local index)。本地索引與分區表的分區策略配合得更好,每個分區都有自己的索引,只包含該分區的銷售資料。
sql
Copy code
CREATE INDEX sales_date_idx ON sales(sales_date) LOCAL;
這樣一來,在查詢某個特定日期範圍內的銷售資料時,系統只需要掃描該日期範圍所對應的分區,而不需要查詢整個索引結構,從而提高了查詢效率。
這個例子表明了使用本地索引與分區表的分區策略配合得更好,能夠更有效地提升查詢性能。因此,在設計索引時,特別是針對分區表,需要考慮索引與分區策略的配合,以達到最佳的效果。
DL
更進一步地問,既然分區表搭配全局索引會產生性能問題,那麼時候才需要為分區表建立全局索引呢?
ChatGPT
建立全局索引通常在以下情況下是合適的:
跨分區的查詢需求: 如果你的查詢經常涉及到跨越多個分區的資料,而且這些查詢效能要求不高,那麼使用全局索引可能是合適的。全局索引可以提供對整個表的全局查詢支持。
特定的資料分佈: 如果你的資料在分區間的分佈比較均勻,而且沒有明顯的熱點(hotspot)分區,那麼使用全局索引可能會比較合適。這樣可以避免由於本地索引的分區不均勻而導致的性能問題。
不常查詢的分區: 如果某些分區的資料很少被查詢,而且這些分區的查詢性能要求不高,那麼使用全局索引可能是一個更簡單的選擇。這樣可以避免為這些不常查詢的分區建立本地索引所帶來的管理成本。
總的來說,全局索引在需要對整個分區表進行全局查詢或者資料分佈比較均勻的情況下是合適的。然而,在大多數情況下,特別是當分區表的資料量很大時,使用本地索引通常會更有效率,因為它們能夠更好地利用分區表的分區策略,提升查詢性能。
DL
我有另外一個資料庫B,在使用相同的作業系統,相同版本的Oracle資料庫軟體時,我希望將資料庫A中的分區表的較舊的分區,遷移到資料庫B,請問有哪些方式? 最簡單的方式為何? 能夠列出指令更佳。
ChatGPT
將分區表的較舊分區從一個資料庫遷移到另一個資料庫是一個常見的需求。以下是一些常見的方法:
使用資料庫鏡像或複製技術: 如果你使用的是 Oracle Enterprise Edition,你可以考慮使用 Oracle Data Guard 或 GoldenGate 等技術來實現資料庫的鏡像或複製。這樣可以將整個資料庫的資料與結構複製到另一個資料庫,包括分區表及其資料。這是最簡單的方式之一,因為它提供了一個完整的資料庫複製,而不需要單獨處理分區表。
使用資料庫連接和資料匯出/匯入: 可以使用 Oracle 的資料庫連接功能,將分區表中的資料匯出到文件中,然後在目標資料庫中使用資料匯入功能將資料加載進去。這種方法比較適合於小型資料量的分區表。
下面是使用 expdp 和 impdp 工具將分區表的資料匯出和匯入的示例指令:
在資料庫 A 上匯出分區表的資料:
sql
Copy code
expdp system/password DIRECTORY=DATA_PUMP_DIR DUMPFILE=sales_partition.dmp TABLES=sales:SALES_PARTITION CONTENT=DATA_ONLY QUERY="WHERE sales_date < TO_DATE('2023-01-01', 'YYYY-MM-DD')"
在資料庫 B 上匯入資料:
sql
Copy code
impdp system/password DIRECTORY=DATA_PUMP_DIR DUMPFILE=sales_partition.dmp REMAP_SCHEMA=A:B TABLE_EXISTS_ACTION=APPEND
在上述指令中,sales 是分區表的名稱,sales_date 是分區鍵,TO_DATE('2023-01-01', 'YYYY-MM-DD') 是要匯出的分區的界限日期。 REMAP_SCHEMA 選項用於將資料匯入到資料庫 B 中的不同架構中(如果需要的話)。 TABLE_EXISTS_ACTION=APPEND 告訴匯入工具將資料附加到現有的表中。
這些方法中,鏡像或複製技術是最簡單的,因為它提供了完整的資料庫複製,而匯出/匯入方法則比較適合於特定的資料移動需求。
2020年8月19日 星期三
SQL ordered by Physical Reads (UnOptimized)
• UnOptimized Read Reqs = Physical Read Reqts - Optimized Read Reqs
• %Opt - Optimized Reads as percentage of SQL Read Requests
• %Total - UnOptimized Read Reqs as a percentage of Total UnOptimized Read Reqs
• Total Physical Read Requests: 5,170,636
• Captured SQL account for 14.3% of Total
• Total UnOptimized Read Requests: 5,170,636
• Captured SQL account for 14.3% of Total
• Total Optimized Read Requests: 1
• Captured SQL account for 0.0% of Total
UnOptimized Reads in Oracle Database 11gR2
https://www.perftuning.com/blog/unoptimized-reads-in-oracle-database-11gr2/
AWR 中 ,这行 SQL ordered by Physical Reads (UnOptimized) 是什么意思?
http://www.itpub.net/thread-2072381-1-1.html
Exadata的东西,不用关心:)
是普通的 VMWARE 虚拟机上的数据库,
对,什么硬件都会有这个信息,但是非exadata没有参考意义
2020年5月22日 星期五
DR - 使用 VMware vSphere Replication
參考 Oracle Databases on VMware Best Practices Guide Version 1.0 May 2016
據本文章,基於VMware架構的Oracle DB服務,DR可以分為三種層級來實現:
1. Application - Oracle Data Guard, Oracle GoldenGate, Oracle Streams, Quest Shareplex, DBvisit
Standby.
2. Storage - EMC MirrorView
3. vSphere - vSphere Replicaton
- 同一ESXi主機的datastore or 跨主機的datastore Sync的效能為 40 MB/S ~ 80 MB/S。
- VR Appliance/Server 工作的時候會吃運算和I/O效能,需要注意。
- 硬體規格,軟體版本,與相關配置需要匹配,否則夠成功Replication,但是不一定可以Recovery。
- 在虛擬層實施DR機制,可以使用異質硬體環境進行配置。
- RPO為5分鐘~24小時,RTO非常短。
- 以單一虛擬機器為最小單位進行DR。
- 不需要DBA介入,可以線上建立DR機制。
- vSphere Standard Edition 即可提供 vSphere Replication 功能。
- Enabling Multiple Point in Time Instances - vSphere Replication 最多支援 24 個快照執行個體。復原虛擬機器後,可將其還原為特定快照。
![]() |
| 在虛擬層實施DR機制,可以使用異質硬體環境進行配置。 |
![]() |
| Enabling Multiple Point in Time Instances - vSphere Replication 最多支援 24 個快照執行個體。復原虛擬機器後,可將其還原為特定快照。 |
![]() |
| vSphere Standard Edition 即可提供 vSphere Replication 功能。 |
2020年3月3日 星期二
Oracle DB - Restore PRD DB to QAS env
cat /usr/openv/netbackup/bp.conf
SERVER = dao-nbu
CLIENT_NAME = daoqas
CONNECT_OPTIONS = localhost 1 0 2
su - oraqas
/usr/openv/netbackup/bin/oracle_link
ll $ORACLE_HOME/lib|grep libobk
/usr/openv/netbackup/bin/bplist -C daoprd -t 4 -R /
cd /oracle/QAS/112_64/dbs
mv initQAS.ora initQAS_bak.ora
create pfile='/oracle/QAS/112_64/dbs/initQAS.ora' from spfile;
vi /oracle/QAS/112_64/dbs/initQAS.ora
#*.db_name='QAS'
*.db_name=PRD
*.db_unique_name=QAS
sqlplus / as sysdba
startup nomount pfile=/oracle/QAS/112_64/dbs/initQAS.ora
# rman catalog rman/rman@catalogdb
RMAN>
set dbid=9876555555
connect target /
RMAN>
RUN {
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so64';
SEND 'NB_ORA_SERV=dao-nbu, NB_ORA_CLIENT=daoprd';
RESTORE controlfile;
RELEASE CHANNEL ch00;
}
sqlplus / as sysdba
alter database mount;
RUN {
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so64';
SEND 'NB_ORA_SERV=dao-nbu.dao.com, NB_ORA_CLIENT=daoprd';
set newname for datafile 1 to '/oracle/QAS/sapdata1/system_1/system.data1';
set newname for datafile 2 to '/oracle/QAS/sapdata1/undo_1/undo.data1';
set newname for datafile 3 to '/oracle/QAS/sapdata1/sysaux_1/sysaux.data1';
SET UNTIL TIME "TO_DATE('2020/02/19 04:00:00','YYYY/MM/DD HH24:MI:ss')";
restore database;
switch datafile all;
RECOVER DATABASE;
}
cd /home/oraqas
vi restoredb_20200219.rman
# cd /home/oraqas
# rman target / nocatalog cmdfile=restoredb_20200219.rman log=restoredb_20200219-1.log &
sqlplus / as sysdba
alter database open resetlogs;
cd $ORACLE_HOME/dbs
mv spfileQAS.ora spfileQAS.ora.20200115bak
SQL> create spfile from pfile;
CREATE TEMPORARY TABLESPACE psaptemp1 TEMPFILE '/oracle/QAS/sapdata1/temp_1/temp1.data1' SIZE 3000M;
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE psaptemp1;
DROP TABLESPACE psaptemp INCLUDING CONTENTS AND DATAFILES;
select tablespace_name from dba_temp_files;
shutdown immediate
su - oraqas
sqlplus / as sysdba
SQL> STARTUP MOUNT
nid TARGET=sys DBNAME=QAS
sqlplus / as sysdba
SQL> startup mount
SQL> alter system set db_name=QAS scope=spfile;
SQL> alter database noarchivelog;
SQL> shutdown immediate
SQL> startup
SQL> ALTER DATABASE OPEN RESETLOGS;
SQL> shutdown immediate
SQL> startup
select DBID,NAME,DB_UNIQUE_NAME,OPEN_MODE,DATABASE_ROLE from v$database;
2020年1月31日 星期五
Oracle DB - 如果不小心設了sga_max_size,如何完整啟動 Automatic Memory Management
1.啟動AMM
ALTER SYSTEM SET memory_target='805306368' SCOPE=BOTH;ALTER SYSTEM SET sga_target='0' SCOPE=BOTH;
ALTER SYSTEM SET pga_aggregate_target='0' SCOPE=BOTH;
2. 取消sga_max_size parameter(使用AMM不需要此參數)
CREATE PFILE = '$ORACLE_HOME/dbs/my_pfile.ora' FROM SPFILE;show parameter spfile
--$ORACLE_HOME/dbs/spfileSID.ora
vi $ORACLE_HOME/dbs/my_pfile.ora
找到*.sga_max_size這個值,刪除之
CREATE SPFILE = '$ORACLE_HOME/dbs/my_spfile.ora' FROM PFILE = '$ORACLE_HOME/dbs/my_pfile.ora';
shutdown immediate
cd $ORACLE_HOME/dbs
mv spfileSID.ora spfileSID.ora.bck
mv my_spfile.ora spfileSID.ora
startup
Oracle DB - 如何完整關閉 AMM (Automatic Memory Management)
SQL> show parameter memory
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
memory_max_target big integer 2G
memory_target big integer 512M
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sga_max_size big integer 2G
sga_target big integer 0
SQL> show parameter pga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 0
SQL> ALTER SYSTEM SET memory_target='0' SCOPE=BOTH;
System altered.
SQL> ALTER SYSTEM SET memory_max_target='0' SCOPE=spfile;
System altered.
SQL> ALTER SYSTEM SET sga_max_size = 786432000 SCOPE=SPFILE;
System altered.
SQL> ALTER SYSTEM SET sga_target = 524288000 SCOPE=BOTH;
System altered.
SQL> ALTER SYSTEM SET pga_aggregate_target=100288000 SCOPE=BOTH;
System altered.
SQL> show parameter memory
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
memory_max_target big integer 2G
memory_target big integer 0
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sga_max_size big integer 2G
sga_target big integer 512M
SQL> show parameter pga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 100288000
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORA-00843: Parameter not taking MEMORY_MAX_TARGET into account
ORA-00849: SGA_TARGET 788529152 cannot be set to more than MEMORY_MAX_TARGET 0.
--如果不小心設了memory_max_target and memory_target,如何完整關閉 Automatic Memory Management
--僅用 ASMM(Automatic Shared Memory Management)
SQL> ALTER SYSTEM SET memory_target='0' SCOPE=BOTH;
System altered.
SQL> ALTER SYSTEM SET memory_max_target='0' SCOPE=spfile;
System altered.
SQL> ALTER SYSTEM SET sga_max_size = 786432000 SCOPE=SPFILE;
System altered.
SQL> ALTER SYSTEM SET sga_target = 524288000 SCOPE=BOTH;
System altered.
SQL> ALTER SYSTEM SET pga_aggregate_target=100288000 SCOPE=BOTH;
System altered.
SQL> create pfile='/tmp/my_pfile.ora' from spfile;
File created.
vi /tmp/my_pfile.ora
找到
*.memory_max_target
*.memory_target
刪除之
CREATE SPFILE = '/tmp/my_spfile.ora' FROM PFILE = '/tmp/my_pfile.ora';
shutdown immediate
cd $ORACLE_HOME/dbs
mv spfileSID.ora spfileSID.ora.bck
cp -p /tmp/my_spfile.ora spfileSID.ora
startup
SQL> startup
ORACLE instance started.
Total System Global Area 784998400 bytes
Fixed Size 2257352 bytes
Variable Size 520097336 bytes
Database Buffers 255852544 bytes
Redo Buffers 6791168 bytes
Database mounted.
Database opened.
SQL> show parameter memory
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
memory_max_target big integer 0
memory_target big integer 0
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sga_max_size big integer 752M
sga_target big integer 512M
SQL> show parameter pga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 100288000
2019年11月15日 星期五
Perl script 錯誤訊息 Can't locate Mail/Sendmail.pm 解決辦法
在新的Linux Server(Oracle Enterprise Linux Server 6.8))上配置tablespace空間告警的perl script後,測試時報錯如下
[oracle@testdb88 ~]$ ~/perl/mailTableSpaceSize.pl bypass
Can't locate Mail/Sendmail.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /home/oracle/perl/mailTableSpaceSize.pl line 6.
BEGIN failed--compilation aborted at /home/oracle/perl/mailTableSpaceSize.pl line 6.
Perl腳本mailTableSpaceSize.pl如下所示,其中使用了Mail::Sendmail郵件模塊。
#!/usr/bin/perl
use DBI;
use Mail::Sendmail;
use MIME::QuotedPrint;
use MIME::Base64;
use Encode;
use Number::Format qw(:subs);
use DateTime qw();
出現這個錯誤是因為Perl沒有安裝Mail::Sendmail模組,安裝此模組問題即可解決,可以使用下面幾種方式安裝。 (使用cpan安裝,Server要能夠連上網路,否則無法下載相關package。
perl -MCPAN -e shell
install Mail::Sendmail
cpanm
cpanm Mail::Sendmail
make
make test
make install
https://metacpan.org/pod/Mail::Sendmail
How to install CPAN modules
https://www.cpan.org/modules/INSTALL.html
Perl 教程
https://www.runoob.com/perl/perl-tutorial.html
[oracle@testdb88 ~]$ ~/perl/mailTableSpaceSize.pl bypass
Can't locate Mail/Sendmail.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /home/oracle/perl/mailTableSpaceSize.pl line 6.
BEGIN failed--compilation aborted at /home/oracle/perl/mailTableSpaceSize.pl line 6.
Perl腳本mailTableSpaceSize.pl如下所示,其中使用了Mail::Sendmail郵件模塊。
#!/usr/bin/perl
use DBI;
use Mail::Sendmail;
use MIME::QuotedPrint;
use MIME::Base64;
use Encode;
use Number::Format qw(:subs);
use DateTime qw();
出現這個錯誤是因為Perl沒有安裝Mail::Sendmail模組,安裝此模組問題即可解決,可以使用下面幾種方式安裝。 (使用cpan安裝,Server要能夠連上網路,否則無法下載相關package。
[Best]
CPAN shellperl -MCPAN -e shell
install Mail::Sendmail
cpanm
cpanm Mail::Sendmail
[Traditional]
perl Makefile.PLmake
make test
make install
[Manual]
Copy Sendmail.pm to Mail/ in your Perl lib directory.參考資訊:
Neil Bowers / Mail-Sendmail-0.80 ++ / Mail::Sendmailhttps://metacpan.org/pod/Mail::Sendmail
How to install CPAN modules
https://www.cpan.org/modules/INSTALL.html
Perl 教程
https://www.runoob.com/perl/perl-tutorial.html
2019年11月12日 星期二
Oracle Database Offerings 版本與縮寫 Oracle Multitenant - # of PDBs 多租戶
Oracle數據庫19c | 每個CDB最多3個PDB,無需許可多租戶
- 對於所有產品,如果您沒有獲得Oracle Multitenant的許可,則給定容器數據庫中隨時可以有多達3個用戶創建的PDB。
- EE:額外費用選項; 如果您已獲得Oracle Multitenant的許可,則最多可以創建252個PDB。
- EE-ES:額外費用選項; 如果您已獲得Oracle Multitenant的許可,則最多可以創建4096個PDB
- DBCS EE-HP,DBCS EE-EP和ExaCS:包含選項; 您最多可以創建4096個PDB。
Oracle Database Offerings
| Offering | 提供型態 | 縮寫 | 說明 |
| Oracle Database Standard Edition 2 | On-Premises | SE2 | Oracle數據庫標準版2包含開發工作組,部門級和Web應用程序所必需的功能。 |
| Oracle Database Enterprise Edition | On-Premises | EE | Oracle數據庫企業版為開發應用程序提供了性能,可用性,可擴展性和安全性,例如大容量在線事務處理(OLTP)應用程序,查詢密集型數據倉庫和要求苛刻的Internet應用程序。
可以通過購買Oracle數據庫選件和Oracle管理包來增強Oracle數據庫企業版。 |
| Oracle Database Enterprise Edition on Engineered Systems | On-Premises | EE-ES | 在本地工程系統(Oracle數據庫雲服務器或Oracle數據庫機)上安裝的Oracle數據庫企業版軟件。
包括Oracle數據庫的所有組件。您可以通過購買Oracle數據庫選件和Oracle管理包來進一步增強此功能。 EE-ES的許可策略取決於它是安裝在Oracle數據庫雲服務器還是Oracle數據庫機上。請務必注意這些差異,這些差異將在本指南的後續部分中進行記錄。 |
| Oracle Database Personal Edition | On-Premises | PE | Oracle數據庫個人版支持單用戶開發和部署環境,這些環境要求與Oracle數據庫標準版2和Oracle數據庫企業版完全兼容。
包括Enterprise Edition隨附的所有組件以及所有Oracle Database選項,但Oracle RAC One Node和Oracle Real Application Clusters選項無法與Personal Edition一起使用。 Personal Edition僅在Linux和Windows平台上可用。 Oracle管理包不能與個人版一起使用。 |
| Offering | 提供型態 | 縮寫 | 說明 |
| Oracle Database Cloud
Service Standard Edition | Cloud | DBCS SE | 包括Oracle數據庫標準版2軟件。 |
| Oracle Database Cloud
Service Enterprise Edition | Cloud | DBCS EE | 包括Oracle數據庫企業版軟件。 |
| Oracle Database Cloud
Service Enterprise Edition - High Performance | Cloud | DBCS EE-HP | 包括Oracle數據庫企業版軟件以及許多Oracle數據庫選件和Oracle管理包。 |
| Oracle Database Cloud
Service Enterprise Edition - Extreme Performance | Cloud | DBCS EE-EP | 包括Oracle數據庫企業版軟件以及適用於Oracle數據庫雲服務的所有Oracle數據庫選件和Oracle管理包。 |
| Oracle Database Exadata
Cloud Service | Cloud | ExaCS | 包括Oracle數據庫企業版軟件以及適用於Oracle數據庫數據庫雲服務器的所有Oracle數據庫選件和Oracle管理包。 ExaCS的許可政策也適用於客戶的Oracle Database Exadata Cloud。 |
2019年10月1日 星期二
在 Red Hat Enterprise Linux/CentOS 7 上安裝 Zabbix Server 4.2
Install Zabbix 4.2 在 RHEL7
常見的開源監控軟體,有Zabbix、Nagios、Prometheus.......。
其中 Zabbix Server非常容易安裝,參考原廠安裝手冊,以下分享整個安裝過程與詳細指令。一個小時內可以完成安裝設定。
安裝元件介紹
使用標準的LAMP組合
- RHEL7
- Apache
- MySQL (Mariadb 5.5)
- PHP
- zabbix-4.2-2.el7 rpm pacakge
關閉Linux防火牆
systemctl stop firewalldsystemctl disable firewalld
SELinux
To do this edit the "/etc/selinux/config" file, making sure the SELINUX flag is set as follows.If SELinux is configured after installation, the server will need a reboot for the change to take effect.
SELINUX=permissive
getenforce
setenforce permissive
getenforce
Frontend installation prerequisites
Zabbix frontend requires additional packages not available in basic installation. You need to enable repository of optional rpms in the system you will run Zabbix frontend on:ll /etc/yum.repos.d/
vi public-yum-ol7.repo
[root@aot-zbx02 yum.repos.d]# vi public-yum-ol7.repo
[ol7_optional_latest]
name=Oracle Linux $releasever Optional Latest ($basearch)
baseurl=https://yum.oracle.com/repo/OracleLinux/OL7/optional/latest/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1
安裝MariaDB
yum repolistyum list mariadb*
yum install mariadb*
安裝 php, httpd
yum install nmap httpd policycoreutils-python net-snmp net-snmp-utils php-bcmath php-mbstring php-xml curl curl-devel net-snmp-devel perl-DBIyum install php php-gd php-ldap php-mysql php-odbc php-pdo php-pear php-pecl-memcache php-soap php-xmlrpc
Start MariaDB
systemctl start mariadbsystemctl enable mariadb
systemctl status mariadb
修改資料庫root密碼 (選用)
mysqladmin -uroot password 1234qwerAdding Zabbix repository
rpm -Uvh http://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-2.el7.noarch.rpmInstall Zabbix Server, Zabbix Forntend and Zabbix Agent
yum install zabbix-server-mysql zabbix-web-mysql zabbix-agentCreating database
MySQL - Character set utf8 and utf8_bin collation is required for Zabbix server to work properly with MySQL database.mysql -uroot
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
Importing data
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -pzabbix zabbixmysql -uzabbix -pzabbix zabbix
mysql> SELECT
table_name AS `Table`,
round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB`
FROM information_schema.TABLES
WHERE table_schema = "zabbix";
Configure database for Zabbix server
vi /etc/zabbix/zabbix_server.confLogFileSize=10
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
Starting Zabbix server process
systemctl start zabbix-serversystemctl enable zabbix-server
systemctl status zabbix-server
Zabbix frontend configuration
For RHEL 7 and later the Apache configuration file for Zabbix frontend is located in /etc/httpd/conf.d/zabbix.conf.vi /etc/httpd/conf.d/zabbix.conf
# php_value date.timezone Europe/Riga
php_value date.timezone Asia/Taipei
systemctl start httpd
systemctl enable httpd
Frontend installation steps
Allow you to access your newly installed Zabbix.Note that a Zabbix proxy does not have a frontend; it communicates with Zabbix server only.
http://zabbix-frontend-hostname/zabbix
Enter password of zabbix
Configure and start Zabbix Agent
vi /etc/zabbix/zabbix_agentd.conf
LogFileSize=10
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server
systemctl start zabbix-agent
systemctl status zabbix-agent
systemctl enable zabbix-agent
All jobs are completed
Zabbix frontend is available at http://zabbix-frontend-hostname/zabbix in the browser. Default username/password is Admin/zabbix.
參考資訊~~原廠手冊
https://www.zabbix.com/documentation/4.2/manual/installation/install_from_packages/rhel_centos
2019年7月15日 星期一
Oracle DB - Database 版本與授權
- Oracle產品版本
從2015年12月開始 Database 大致上分為2種版本:
企業版Enterprise Edition (EE)
價位高,全功能、無使用限制(譬如可用 RAC(extra cost), Data Guard, Online table redefinition, Flashback, Diagnostics Pack, Tuning Pack等功能)。
標準版Standard Edition 2 (SE2)
價位約為EE的三分之一,禁止安裝到支援超過2 Socket(CPU插槽)的機器上,最大支援 16 CPU threads per database instance。
- Oracle的授權計算方式
採NUP(Named User Plus) 或 Processor(處理器/CPU),兩者擇一。
1. 採Processor計價
EE版 processor數=CPU*(Core數/每CPU)*CoreFactor,有小數時無條件進位。假設有1台DB Server,有1CPU,6核,CoreFactor=0.25。Processor數=1*6*0.25=1.5。小數點無條件進位 所以要買 2 Processors。
SE2版 processor數=occupied socket=主機版上有插CPU的socket數,也就是說直接依CPU數計算。
2. 採User計價
Oracle稱此User計價的方式為Named User Plus License,簡稱NUP,分成兩類:
設備: 自動運作,且存取Oracle DB。
真人: 有操作電腦並使用到Oracle DB的真人。
各版本的最低採購量。EE版:25 NUP/Processor,SE/SE1版:5 NUP/Customer。
- 如果在虛擬機器上面安裝Oracle DB,譬如Oracle on VMware,可否用限制vCPU的方式節省license費用呢??
The answer is: Oracle on VMware要計算所有ESXi host cores (VM Cluster內都要買oracle license)
For example, let’s say we have a vSphere Cluster dedicated to run Oracle workloads called “OraCluster” with 3 ESXi servers, each ESXi server having 2 socket x 10 cores each. The processor is Intel Family.
Total no of effective cores for licensing Oracle workloads in “MyCluster” using Enterprise Edition (EE)
= Absolute number of cores in cluster * Processor Core Factor
= ( 3 servers * 2 sockets per server ) * ( 10 cores/socket ) * ( Processor Core Factor for Intel Family )
= 6 * 10 * 0.5
= 30 Effective cores liable for Oracle licensing
參考資訊:
https://blogs.vmware.com/apps/2017/01/oracle-vmware-vsan-dispelling-licensing-myths.html
https://blog.xuite.net/chiouchienchung/twblog/174429884-%E7%94%B2%E9%AA%A8%E6%96%87Oracle%E7%9A%84%E7%89%88%E6%9C%AC%E8%88%87%E6%8E%88%E6%AC%8A%EF%BC%8C%E4%BB%A5DB%E7%82%BA%E4%BE%8B
https://jaychu649.blogspot.com/2018/03/oracle-on-vmware.html
2019年7月9日 星期二
Oracle DB - 現行版本生命週期與支援說明
Oracle Database 現行版本
1. 11gR1(11.2) - 11.2.0.4
2. 12cR1(12.1) - 12.1.0.2
3. 12cR2(12.2) - 12.2.0.1
4. 18c - 12.2.0.2
5. 19c - 12.2.0.3
以目前使用的11.2.0.4 版本來說,是2009年9月released。
2019/09~2014/12 - Premier Support 期
2015/01~2020/12 - Extended Support 期
2021/01~ - Sustaining Support 期
簡單來說:
1. Premier Support 可以獲得完整的支援。
2. Extended Support 除了無法獲得對大部分3rd party產品的相容性,可以獲得完整的支援。 但必須留意Extended Support是必須另外購買的,不包含在Premier Support 合約中。
如果沒有購買Extended Support,則Oracle只提供Sustaining Support相關服務。
3. Sustaining Support 可以access KB,可以開SR,但無法使用最新的軟體更新與Patch,只能使用Premier Suppport期(Pre-existing)的。
參考資訊:
訂閱:
文章 (Atom)







