2020年6月11日 星期四

SAP - Basis 初探


SAP - Systems Applications and Products
BASIS - Business Application Software Integrated solution
ABAP -  Advanced Business Application Programming, originally Allgemeiner Berichts-Aufbereitungs-Prozessor, German for "general report creation processor"

什麼是BASIS?

Basis是一系列的程式和工具,做為SAP applications 和DB/OS/通訊協定之間的界面。
藉由BASIS,SAP applications(如FI, CO, MM....) 可以在其上執行與彼此溝通,無論使用何種OS 與 DB。

如今,Basis被稱為Netweaver。
BASIS的別名是SAP Application Server Technology,NetWeaver的別名是SAP Web Application Server。

添加 java stack(J2EE, ,JSP...開發的應用程序)後,增強了業務流程的安全性標準。
ABAP和Java stack 可以在一個平台上執行。
Netweaver支援標準協議,例如HTTP,SMTP,XML,SOAP,SSO,WEBDAV,WSDL,WMLSSO,SSL,X.509和Unicode格式。

Basis是SAP applications and ABAP的 OS。
Basis提供服務,例如與OS的溝通,DB溝通,記憶體管理,收集應用程式的執行時的資料,Web請求,交換業務資料等。
 
Basis支援各種操作系統與資料庫
(Unix, Microsoft windows server, AS400, z/OS, etc) and databases (Oracle, DB2, Informix, Maxdb, Microsoft SQL Server, etc).

BASIS是一組工具 - 提供下列功能:

  • 系統管理與監控
  • Common monitoring tool CCMS(Computing Centre Management System) ,可從一個地方監控R/3系統的警報。]
  • 伺服器端的ABAP和Java 腳本
  • DB的管理與監控
  • 資源管理,如memory,buffer 等
  • 用於用戶管理的authorization和profile management工具
  • 對系統和business objects的Internet訪問控制
  • TMS(Transport Management System)將各種修改從DEV系統轉移到PRD系統
  • Client-Server 架構與配置
  • Presentation layer的GUI設計

SAP Basis 顧問的職責:

SAP Basis apps/OS/DB的middleware的工具,SAP Basis顧問必須能執行以下任務。
  • 監控SAP ap server,ABAP dump和system log 分析
  • Performance tuning
  • DB維護,DB備份排程與還原
  • 安裝R/3,Netwwaver,Solution Manager...
  • 維護SAP License
  • 安裝SAP landscape, TMS...
  • Client creating, client copying, client deletion...
  • Background jobs scheduling, job monitoring, job deletion...
  • 維護profile and operation mode
  • 安裝patch,升級和安裝附加組件
  • 系統複製,系統刷新等
  • Basis天天都會學到新東西






2020年5月28日 星期四

Oracle DB - datapump expdp/impdp 指令參考


rm HR1_EMP_TBLS.dmp ;expdp system DIRECTORY=DATA_PUMP_DIR TABLES=HR1.EMPLOYEES,HR1.EMPLOYEES_TEST DUMPFILE=HR1_EMP_TBLS.dmp


$ cat hr1.par
TABLES=HR1.EMPLOYEES,HR1.EMPLOYEES_TEST
REMAP_TABLE=HR1.EMPLOYEES:SPC_EMPLOYEES,HR1.EMPLOYEES_TEST:SPC_EMPLOYEES_TEST
REMAP_SCHEMA=HR1:HR

impdp system DIRECTORY=DATA_PUMP_DIR parfile=hr1.par exclude=index,statistics DUMPFILE=HR1_EMP_TBLS.dmp

impdp system DIRECTORY=DATA_PUMP_DIR parfile=hr1.par exclude=index,statistics  TABLE_EXISTS_ACTION=TRUNCATE DUMPFILE=HR1_EMP_TBLS.dmp


以下引用自 
IT 研究室 ( 前IT DBA's 資訊站)


Oracle data pump 指令參照


預測dmp檔佔多少空間
expdp test/test directory=expdp_dir logfile=test_dmp.log estimate_only=y
                ESTIMATE=BLOCKS  (預設)
                ESTINATE=STATISTICS  (依照表格的STATISTICS預測空間大小)
指定dump時用幾個執行緒
expdp test/test  directory=expdp_dir dumpfile=test.dmp logfile=test_dmp.log parallel=4

排除某個表格
expdp test/test schemas=TEST exclude=TABLE:"in\('TEST'\)" directory=expdp_dir dumpfile=expdp.dmp logfile=expdp.log

排除某個USER
expdp \'/ as sysdba\' full=y EXCLUDE=SCHEMA:"in\('TEST'\)" directory=dp dumpfile=full.dmp logfile=full.log

排除一
expdp \'/ as sysdba\' full=y EXCLUDE=SCHEMA:"in\('WKSYS'\)" directory=dp dumpfile=full.dmp logfile=full.log CONTENT=METADATA_ONLY

expdp \'/ as sysdba\' full=y EXCLUDE=SCHEMA:"in\('WKSYS','OLAPSYS','TSMSYS','SYSMAN','OUTLN','WK_TEST'\)" directory=dp dumpfile=full.dmp logfile=full.log


匯出所有METADATA
expdp \'/ as sysdba\' SCHEMAS=TEST,JAYCHU directory=dp dumpfile=full.dmp logfile=full.log CONTENT=METADATA_ONLY
by default, the datapump points to $ORACLE_BASE_admin/SID/dpdump

--export table
drop directory expdp_dir ;
create directory expdp_dir as '/na02/sysage/0825';
expdp \'/ as sysdba\' tables=MISUSER.ST02PF directory=expdp_dir content=all dumpfile=ST02PF.dmp logfile=ST02PF.log

create directory expdp_dir as '/na02/sysage/0825';
impdp \'/ as sysdba\' tables=MISUSER.ST02PF directory=expdp_dir content=all dumpfile=ST02PF.dmp logfile=ST02PF_imp.log TABLE_EXISTS_ACTION=replace
--

impdp \'/ as sysdba\'  DIRECTORY=dp REMAP_SCHEMA=JAYCHU:JAYCHU123  SQLFILE=JAYCHU123.sql LOGFILE=impdp.log DUMPFILE=full.dmp INCLUDE=GRANT,TABLE
                       ESTIMATE=STATISTICS
test:
impdp \'/ as sysdba\'  DIRECTORY=dp REMAP_SCHEMA=JAYCHU:JAYCHU123 LOGFILE=impdp.log DUMPFILE=full.dmp INCLUDE=GRANT,TABLE  ESTIMATE=STATISTICS


(PS: CONTENT=DATA_ONLY is invalid for SQL_FILE jobs.)
   
impdp \'/ as sysdba\'  DIRECTORY=dp REMAP_SCHEMA=JAYCHU:JAYCHU123  PARALLEL=4 LOGFILE=impdp.log DUMPFILE=full.dmp
                       CONTENT= ALL, (METADATA_ONLY), DATA_ONLY
                       INCLUDE=TABLE_DATA or TABLE or PROCEDURE or FUNCTION or TRIGGER or GRANT or INDEXES or CONSTRAINT
                       EXCLUDE=TABLE_DATA or TABLE or PROCEDURE or FUNCTION or TRIGGER or GRANT or INDEXES or CONSTRAINT(可自行斟酌須排除schema object type)
                       remap_tablespace=old_tablespace:new_tablespace
                       TABLE_EXISTS_ACTION   匯入之物件已經存在時所要採取的動作. : (SKIP , TRUNCATE , REPLACE)
                                                                                    ^^^^ default

create directory expdp_dir as '/na02/sysage/0825';
expdp \'/ as sysdba\' full=y  PARALLEL=4 flashback_time=\"TO_TIMESTAMP\(\'2010-07-19 20:40:00\', \'YYYY-MM-DD HH24:MI:SS\'\)\"  dumpfile=full0719.dmp

create directory expdp_dir as '/na02/sysage/0719';
impdp \'/ as sysdba\' DIRECTORY=expdp_dir PARALLEL=4 dumpfile=full0719.dmp logfile=venus_impdp_1.log CONTENT=DATAONLY TABLE_EXISTS_ACTION=REPLACE INCLUDE=INDEXES&



查看job
col OWNER_NAME for a10
col JOB_NAME for a20
col OPERATION for a6
col JOB_MODE for a6
col STATE for a10
col DEGREE for 9.9
col ATTACHED_SESSIONS for 9
col DATAPUMP_SESSIONS for 9

select * from dba_datapump_jobs;

查看expdp進度
col opname for a30
select opname , sofar , totalwork , ROUND(SOFAR/TOTALWORK*100,2) "%_Complete" from v$session_longops where sofar !=totalwork and opname like '%EXPORT%';

impdp進度
col opname for a30
select opname , sofar , totalwork , ROUND(SOFAR/TOTALWORK*100,2) "%_Complete" from v$session_longops where sofar !=totalwork and opname like '%IMPORT%';

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年4月27日 星期一

Oracle DB - Oracle 19c Multitenant 多租戶

--Oracle 19c Multitenant 多租戶
--共用: Common Users(SYS, SYSTEM, C##USERNAME), spfile, instance, Alert Log
--分開: Profile, Local Users, Tablespace


https://www.dbasolved.com/2013/06/common-user-vs-local-user-12c-edition/
Common User vs. Local User – 12c Edition


CREATE USER C##DAVIDLU
  IDENTIFIED BY <password>
  HTTP DIGEST DISABLE
  DEFAULT TABLESPACE USERS
  TEMPORARY TABLESPACE TEMP
  PROFILE DEFAULT
  ACCOUNT UNLOCK;

2020年4月16日 星期四

桌面應用 - 用ActivePresente製作教學影片


ActivePresenter  https://atomisystems.com
是一套免費軟體,對於老師,教育訓練人員,產品技術服務人員都很實用。主要功能有二




1.桌面螢幕錄影軟體
ActivePresenter的功能完整,第一個功能是把 ActivePresenter當作一款面螢幕錄影軟體來使用。可以全螢幕錄影或局部錄影,同時錄下系統的聲音,或麥克風的聲音。
錄影過程中的滑鼠或操作點擊,都會在影片專案中紀錄下來!

2. 影片編輯器
ActivePresenter的影片後製功能也不錯用,可以剪接影片。也有內建實用的教學特效素材,來製作簡報或影片。例如聚光燈效果來聚焦,強調某個重要操作動作。或是加上滑鼠游標,來做說明軌跡等。製作好的成品,可以輸出成各種格式的影片檔案。


參考資訊:
最強免費螢幕錄影軟體 ActivePresenter 教學影片神器 
https://www.playpcesor.com/2016/01/activepresenter.html
作者: 電腦玩物原創作者 esor huang(異塵行者)Esor Huang 1月 11, 2016

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年2月10日 星期一

Quest TOAD 12.1 的常用功能


TOAD 12.1 的常用功能
*Schema Browser 查看與修改DB Objects (Copy Data to another schems....好用)
Administer NLS Parameters 查看DB/Instance/Session的NLS參數
Administer Oracle Parameters 查看資料庫parameter設置
Administer Redo Log Manager 查看管理Online redo log files
Compare Compare Data 數據比較, 比如兩個表的數據比較,個人感覺用處小,直接一個 minus 實現了
*Compare Data Dupliates 找出重複的data (同一個表中,依據選定的欄位組合,找出重複的資料)
*Compare Schemas 對比兩個schema (比對PRD/DEV apps schema的差異)
*Compare Single Objects 單一對象的比較, 其實就是對象的創建的script之間的比較 (比對PRD/HIS Table欄位差異)
Diagnose Alert Log Viewer 查看Alert Log
Diagnose Code Analysis 分析sql statement,並教怎麼寫code
*Diagnose DB Health Check 顯示當前資料庫的運行情況 (Buffer Cache Hit Ratio, Library Cache Miss Ratio, Dictionary Cache Miss Ratio, Shared Pool Usage)
Diagnose Log Miner 從online or archived redo log files 挖出執行過的SQL歷程
*Diagnose Log Switch Frequency Map 查看Log Switch的頻率
Diagnose Tablespace Map 以圖形化的方式呈現tablespace的使用狀況
Diagnose Trace File Browser 在Toad中查看DB trace files
*Export Generate Schema Script 產生Schema為單位的DDL Script
Import Generate Data 由Toad產生亂數的測試資料塞入資料庫的table中
*Monitor Database Browser Database 的全部內容, 包括參數, 表空間, 數據文件 (SGA, Shared Pool....)
Monitor Database Monitor 各種資料庫監視的內容(可以自設threshold)
Monitor Database Probe 資料庫的監測(有點類似簡易版的Spotlight畫面,但效能差,幾乎無法更新畫面)
*Monitor Index Monitoring 可選定特定的index,查看是否被使用
*Monitor Instance Manager 監控Node, Listener, Database/有異常可以發並發Alert郵件
*Monitor Session Browser 查看與 kill session, 另外還有針對 session 的 wait event 等
*Monitor SQL Tracker 打開這個, 你在toad中的所有操作, 都會有對應的SQL語句被輸出
*Monitor Top Session Finder 監控session,以cpu/memory/io的角度找出top session
*Optimize Rebuild Table 重建表,很詳細的設置,自動化非常好用 (rename, create, insert, create index, gather statistics....)
*Utilities Automation Designer 流程工具,可以建置較複雜的維護計畫
*Utilities Compare Files         圖形化的diff
*Report SQL Query Builder 圖形化介面來幫助撰寫sql statement
*Report Reports Manager 各種預設或自定義的DB報表, (Invalid Objects, Unusable Indexes....)