當前位置:首頁 » 網頁前端 » dba日常shell腳本
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

dba日常shell腳本

發布時間: 2022-10-05 16:34:27

❶ linux運維方向前景怎麼樣,是不是很累啊。還有資料庫DBA好學嗎請大蝦賜教

最累的只能是開發了,運維累不累那要看在什麼樣的公司,發展中的公司肯定比較忙,已經發展穩定的公司肯定就比較清閑..
DBA,在國內沒有很牛B的學歷和關系不容易入門,也就是說純DBA的工作不好找(只有大型上市公司,才有專門的DBA職位),但是如果起步了進入了這個行業,那工資是相當高的.

❷ 如何寫exp和imp腳本命令

EXP/IMP備份(導出/導入備份)
exp hely=y 說明:
USERID 用戶名/口令
FULL 導出整個文件 (N)
BUFFER 數據緩沖區的大小
OWNER 所有者用戶名列表
FILE 輸出文件 (EXPDAT.DMP)
TABLES 表名列表
COMPRESS 導入一個范圍 (Y)
RECORDLENGTH IO 記錄的長度
GRANTS 導出許可權 (Y)
INCTYPE 增量導出類型
INDEXES 導出索引 (Y)
RECORD 跟蹤增量導出 (Y)
ROWS 導出數據行 (Y)
PARFILE 參數文件名
CONSTRAINTS 導出限制 (Y)
CONSISTENT 交叉表一致性
LOG 屏幕輸出的日誌文件
STATISTICS 分析對象 (ESTIMATE)
DIRECT 直接路徑 (N)
TRIGGERS 導出觸發器 (Y)
FEEDBACK 顯示每 x 行 (0) 的進度
FILESIZE 各轉儲文件的最大尺寸
QUERY 選定導出表子集的子句

下列關鍵字僅用於可傳輸的表空間
TRANSPORT_TABLESPACE 導出可傳輸的表空間元數據 (N)
TABLESPACES 將傳輸的表空間列表
imp hely=y 說明:
USERID 用戶名/口令
FULL 導入整個文件 (N)
BUFFER 數據緩沖區大小
FROMUSER 所有人用戶名列表
FILE 輸入文件 (EXPDAT.DMP)
TOUSER 用戶名列表
SHOW 只列出文件內容 (N)
TABLES 表名列表
IGNORE 忽略創建錯誤 (N)
RECORDLENGTH IO 記錄的長度
GRANTS 導入許可權 (Y)
INCTYPE 增量導入類型
INDEXES 導入索引 (Y)
COMMIT 提交數組插入 (N)
ROWS 導入數據行 (Y)
PARFILE 參數文件名
LOG 屏幕輸出的日誌文件
CONSTRAINTS 導入限制 (Y)
DESTROY 覆蓋表空間數據文件 (N)
INDEXFILE 將表/索引信息寫入指定的文件
SKIP_UNUSABLE_INDEXES 跳過不可用索引的維護 (N)
ANALYZE 執行轉儲文件中的 ANALYZE 語句 (Y)
FEEDBACK 顯示每 x 行 (0) 的進度
TOID_NOVALIDATE 跳過指定類型 id 的校驗
FILESIZE 各轉儲文件的最大尺寸
RECALCULATE_STATISTICS 重新計算統計值 (N)

下列關鍵字僅用於可傳輸的表空間
TRANSPORT_TABLESPACE 導入可傳輸的表空間元數據 (N)
TABLESPACES 將要傳輸到資料庫的表空間
DATAFILES 將要傳輸到資料庫的數據文件
TTS_OWNERS 擁有可傳輸表空間集中數據的用戶
導入注意事項:
(1) 資料庫對象已經存在
一般情況, 導入數據前應該徹底刪除目標數據下的表, 序列, 函數/過程,觸發器等;
資料庫對象已經存在, 按預設的imp參數, 則會導入失敗
如果用了參數ignore=y, 會把exp文件內的數據內容導入
如果表有唯一關鍵字的約束條件, 不合條件將不被導入
如果表沒有唯一關鍵字的約束條件, 將引起記錄重復
(2) 資料庫對象有主外鍵約束
不符合主外鍵約束時, 數據會導入失敗
解決辦法: 先導入主表, 再導入依存表
disable目標導入對象的主外鍵約束, 導入數據後, 再enable它們
(3) 許可權不夠
如果要把A用戶的數據導入B用戶下, A用戶需要有imp_full_database許可權
(4) 導入大表( 大於80M ) 時, 存儲分配失敗
默認的EXP時, compress = Y, 也就是把所有的數據壓縮在一個數據塊上.
導入時, 如果不存在連續一個大數據塊, 則會導入失敗.
導出80M以上的大表時, 記得compress= N, 則不會引起這種錯誤.
(5) imp和exp使用的字元集不同
如果字元集不同, 導入會失敗, 可以改變unix環境變數或者NT注冊表裡NLS_LANG相關信息.
導入完成後再改回來.
(6) imp和exp版本不能往上兼容
imp可以成功導入低版本exp生成的文件, 不能導入高版本exp生成的文件
使用方法:
例題格式及說明:
1.普通資料庫全部導出和導入
exp 用戶/密碼@dbName file=路徑.dmp full=y --還有其他的參數,看需要進行填寫
$ exp user/pwd file=/dir/xxx.dmp log=xxx.log full=y commit=y ignore=y --全部導出
$ imp user/pwd file=/dir/xxx.dmp log=xxx.log fromuser=dbuser touser=dbuser2 --全部導入

2.指定用戶全部導出
/home/oracle/proct/9.2.0.4/bin/exp userid=用戶/密碼 --說明:本地的資料庫登入(可以指定其他資料庫,則需添加@dbName)
owner=導出的用戶名 file=導出路徑存放目錄.dmp log=導出的日誌信息.log --主要:這是不能使用full=y或則會出錯(默認該用戶全導出)

3.文件參數導出
$ exp parfile=username.par // 在參數文件中輸入所需的參數
參數文件username.par 內容
userid=username/userpassword
buffer=8192000
compress=n
grants=y
file=/oracle/test.dmp
full=y
4.制定表導出(分區表導出及條件表導出)
$ exp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1,table2 --或tables(table1,table2,.....)
$ exp user/pwd file=/dir/xxx.dmp log=xxx.log tables=(T1: table1,T2: table2,.....) --T1是分區表
$ exp scott/tiger tables=emp query=/"where job=/'salesman/' and sal/<1600/" file=/directory/scott2.dmp 或根據參數文件進行導出

5.導入(一張或多張表)
$ imp user/pwd file=/dir/xxx.dmp log=xxx.log tables=(table1,table2) fromuser=dbuser
touser=dbuser2 commit=y ignore=y
$ imp user/pwd file=/dir/xxx.dmp log=xxx.log fromuser=dbuser touser=dbuser2
commit=y ignore=y

6.只導出數據對象不導出數據
$ exp user/pwd file=/dir/xxx.dmp log=xxx.log owner=user rows=n --rows=n/y說明是否導出數據行

7.分割多個文件導出和導入
$ exp user/pwd file=1.dmp,2.dmp,3.dmp,… filesize=1000m log=xxx.log full=y
$ imp user/pwd file=1.dmp,2.dmp,3.dmp,… filesize=1000m tables=xxx fromuser=dbuser
touser=dbuser2 commit=y ignore=y

8.增量導出和導入
a.完全增量導出(inctype=complete) // 備份整個資料庫
$ exp user/pwd file=/dir/xxx.dmp log=xxx.log inctype=complete
b.增量型增量導出 導出上一次備份後改變的數據(inctype=incremental)。
$ exp user/pwd file=/dir/xxx.dmp log=xxx.log inctype=incremental
c.累計型增量導出(Cumulative) 只導出自上次"完全"導出之後資料庫中變化的信息。
$ exp user/pwd file=/dir/xxx.dmp log=xxx.log inctype=cumulative
d.增量導入:
$ imp usr/pwd FULL=y inctype=system/restore/inctype --(SYSTEM: 導入系統對象,RESTORE: 導入所有用戶對象)

9.使用sysdba進行導出和導入
1. 命令行方式:
A: Windows平台:
C:/> exp 'sys/sys@instance as sysdba' tables=scott.emp file=e:/emp.dmp
B: Unix & Linux平台(這時的"'"需要用到轉義字元"/"):
$ exp /'sys/change_on_install@instance as sysdba/' tables=scott.emp file=/home/oracle/emp.dmp
C: 表空間導入和導出
$ imp /'usr/pwd@instance as sysdba/' tablespaces=xx transport_tablespace=y
file=xxx.dmp datafiles=xxx.dbf
2. 交互輸入方式:
exp tables=scott.emp --不輸入連接字元串,直接回車
Export: Release 10.2.0.3.0 - Proction on Fri Jun 25 07:39:46 2004 Copyright (c) 1982, 2005, Oracle. All rights reserved.
Username: sys/change_on_install@instance as sysdba --輸入連接字元串.
3.如果是寫在參數文件中,則連接字元串需要用雙引號了:USERID="sys/change_on_install@instance as sysdba"

10.表空間傳輸(建議:10g以上使用,但我試了在9i沒有找到相對應的檢查表空是否傳輸的語句,10g 支持跨平台的表空間傳輸)
注意:
l.索引在待傳輸表空間集中而表卻不在。(注意,如果表在待傳輸表空間集中,而索引不在並不違反自包含原則,當然如果你堅持這樣傳輸的話,會造成目標庫中該表索引丟失)。
2.分區表中只有部分分區在待傳輸表空間集(對於分區表,要麼全部包含在待傳輸表空間集中,要麼全不包含)。
3.待傳輸表空間中,對於引用完整性約束,如果約束指向的表不在待傳輸表空間集,則違反自包含約束;但如果不傳輸該約束,則與約束指向無關。
4.對於包含LOB列的表,如果表在待傳輸表空間集中,而Lob列不在,也是違反自包含原則的。
a.查看錶空間包含那些XML文件
select distinct p.tablespace_name
from dba_tablespaces p, dba_xml_tables x, dba_users u, all_all_tables t
where t.table_name = x.table_name
and t.tablespace_name = p.tablespace_name
and x.owner = u.username
b.檢測一個表空間是否符合傳輸標準的方法:
sql > exec sys.dbms_tts.transport_set_check('tablespace_name',true);
SQL > select * from sys.transport_set_violations;
c.簡要使用步驟
1.設置表空間為只讀(假定表空間名字為APP_Data 和APP_Index)
SQL > alter tablespace app_data read only;
SQL > alter tablespace app_index read only;
2.發出EXP 命令
SQL> host exp userid='''sys/password as sysdba''' transport_tablespace=y
tablespaces=(app_data, app_index)
以上需要注意的是:(或則參考我自己寫的 表空間導入和導出例題)
·為了在SQL中執行EXP,USERID 必須用三個引號,在UNIX 中也必須注意避免"/"的使用
·在816 和以後,必須使用sysdba 才能操作
·這個命令在SQL中必須放置在一行(這里是因為顯示問題放在了兩行)
3.拷貝.dbf數據文件(以及.dmp 文件)到另一個地點,即目標資料庫可以是cp(unix)或(windows)或通過ftp 傳輸文件(一定要在bin方式)
4.把本地的表空間設置為讀寫
$ alter tablespace app_data read write;
$ alter tablespace app_index read write;
5.在目標資料庫附加該數據文件 (直接指定數據文件名)
(表空間不能存在,必須建立相應用戶名或者用fromuser/touser)
$ imp file=expdat.dmp userid=」」」sys/password as sysdba」」」
transport_tablespace=y datafiles=(「c:/app_data.dbf,c:/app_index.dbf」)
tablespaces=app_data,app_index tts_owners=hr,oe
6.設置目標資料庫表空間為讀寫
$ alter tablespace app_data read write;
$ alter tablespace app_index read write;
11.優化IMP/EXP的速度(修改參數配置文件)
EXP:
加大large_pool_size,可以提高exp 的速度
採用直接路徑的方式(direct=y),數據不需要經過內存進行整合和檢查.
設置較大的buffer,如果導出大對象,小buffer 會失敗。
export文件不在ORACLE 使用的驅動器上,不要export到NFS 文件系統
UNIX環境:用管道模式直接導入導出來提高imp/exp 的性能
IMP:
建立一個indexfile,在數據import完成後在建立索引
將import 文件放在不同的驅動器上
增加DB_BLOCK_BUFFERS
增加LOG_BUFFER
用非歸檔方式運行ORACLE:ALTER DATABASE NOARCHIVELOG;
建立大的表空間和回滾段,OFFLINE 其他回滾段,回滾段的大小為最大表的1/2
使用 COMMIT=N
使用ANALYZE=N
單用戶模式導入
UNIX環境:用管道模式直接導入導出來提高imp/exp 的性能

12.通過unix/Linux PIPE管道加快exp/imp速度
步驟如下:
通過管道導出數據:
1.通過mknod -p 建立管道
$ mknod /home/exppipe p // 在目錄/home下建立一個管道exppipe注意參數p
2.通過exp 和gzip 導出數據到建立的管道並壓縮
$ exp test/test file=/home/exppipe & gzip < /home/exppipe > exp.dmp.gz
$ exp test/test tables=bitmap file=/home/newsys/test.pipe &
gzip < /home/newsys/test.pipe > bitmap.dmp.gz
3.導出成功完成之後刪除建立的管道
$ rm -rf /home/exppipe
4.shell腳本可以這樣寫(我只是寫主要的)
unix下:
mkfifo /home/exp.pipe
chmod a+rw exp.pipe
compress < exp.pipe > exp.dmp.Z &
su -u oracle -c "exp userid=ll/ll file=/home/exp.pipe full=y buffer=20000000"
rm exp.pipe
linux下:
mknod /home/exppipe p
$ imp test/test file=/home/exppipe fromuser=test touser=macro &
gunzip < exp.dmp.gz > /home/exppipe
$ rm –fr /home/exppipe

❸ 為什麼這個SQL Server DBA學習PowerShell

我下一個任務是快速查看我所有服務上的空閑空間。為了完成任務,我不得不踏足WMI的世界,這提供一個對象模型來暴露運行在你的機器上的服務或者應用程序的數據。這里的第一個障礙是搞清楚WMI提供了些什麼。只要你開始尋找你就會意識到WMI對象模型是巨大的,您需要花點時間去瀏覽它並找出什麼對象能幹什麼。MSDN是獲取WMI類文檔最好的地方。

瀏覽Win32 WMI類

對於一個DBA最有用的WMI類就是Win32類,您可以使用如下的一行代碼獲取所有可用的win32類。

# Browse Win32 WMI classes

get-wmiobject -list | where {$_.name -like "win32*"} | Sort-Object
我最初發現有趣的類是:

Win32_LogicalDisk-給出你磁碟驅動器的當前狀況

Win32_QuickFixEngineering-枚舉計算機上所有已經安裝的修復程序

下面的例子會著重使用它們及一些其它的有趣的類。

檢查磁碟空間

最簡單的檢查磁碟空間的方式是使用Win32_LogicalDisk類。DriveType=3指所有本地磁碟。Win32_LogicalDisk不會顯示掛載點的信息。

復制代碼
# Check disk space on local disks on local server

Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=3"

# Check disk space on a remote server.

Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=3" –ComputerName ServerName
復制代碼
在進一步發掘以後,與其從Win32_LogicalDisk的輸出中計算空閑空間百分比,不如使用更容易的PerfFormattedData_PerfDisk_LogicalDisk類和它的屬性PercentFreeSpace。在下面的例子中,我檢查自由空間低於20%的驅動器。使用這個類檢查磁碟空間的另一個理由是它會顯示掛載點信息。

復制代碼
# Checking disk space

foreach ($svr in get-content "C:\AllServers.txt")

{

$svr; Get-WmiObject Win32_PerfFormattedData_PerfDisk_LogicalDisk -ComputerName $svr | where{$_.Name -ne "_Total" -and $_.PercentFreeSpace -lt 20} | select-object Name, PercentFreeSpace | format-list

}

❹ DBA 為什麼要會SHELL

SQL SERVER 是可視化的資料庫,一般用SQL SERVER 的公司,都是網路、硬體維護員、系統維護員 兼 資料庫管理員,不會專屬請一個SQL SERVER資料庫管理員,SQL SERVER 的管理 備份等都和操作QQ一樣,可視化的。

資料庫管理員能具備開發能力那更好,沒有的話一般也要會寫存儲過程、觸發器和基本的SQL查詢。

現在真正需要資料庫管理員的,一般是在LINUX/UNIX下管理 ORACLE 等命令式的資料庫。 熟悉 LINUX/UNIX 的操作指令,會寫SHELL,了解ORACLE 的體系結構,會在命令行下用指令操作 ORACLE, 大企業的資料庫不會裝在WINDOWS下的,LINUX一般也不會啟動圖形界面,都是遠程連過去用 指令操作。

如何刪除大量oracle中的小trace文件

要先看看資料庫的alert日誌,有沒有錯誤。所有mp目錄下的trace文件大部分是錯誤補充文件,如果alert日誌沒什麼問題,那麼直接操作系統級別刪除就行。不過我說的是各個mp目錄下的,比如amp,bmp,cmp下的,如果是其他目錄下的我不知道,是什麼文件。不過個人建議,可以保留一部分(10-15內生成的),畢竟這東西很小不佔用什麼空間,沒准哪天查什麼錯誤或者問題用到。

❻ 運維和dba有區別嗎

有區別。
1.DBA是面向資料庫的(資料庫管理員,或者資料庫架構師),專門搞資料庫方面的。

比如搭建資料庫架構,優化表、存儲過程、等等這些的性能,會細化到某個語句或者節點上
2.影響資料庫性能檢測和日常維護
3.資料庫安全性,尤其是注入攻擊,死鎖這些,DBA必須都得會
4.資料庫熱備,還原,資料庫遷移
5.mysql,sqlserver。。。一大堆資料庫的研究部署工作
DBA是個細化具體的職業,在中國的大企業很牛逼,小企業不重視,一般企業也用不到,對技術的要求非常高,他們一般都是讓程序員或者運維去搞定資料庫的事情,不願意花錢養一個DBA。。。
運維。。。(面向「大中小型企業」的全能「人才」,我說的是廣義的「運維「)
資料庫日常監測和維護
linux,windows伺服器監測和維護,包括熱備,故障處理,磁碟陣列,性能調優,負載均衡等等。。。。。。
部署網站,應用
Nginx、Tomcat、LVS、Keepalived、Haproxy安裝、配置、維護及調優。。等等一大堆
shell,perl等腳本的自動化運維,有的要懂C++或者python
要精通Linux系統如centos、ubuntu精通Apache、Redis、MySQL、FTP、DNS、Squid等常用服務的安裝、配置和維護
網路維護,網路設備故障檢修
打雜,修燈泡,修Pc,通廁所
陪老闆喝酒。。。。。。
等等
運維和DBA都挺偉大的,運維在中國的中小企業已經完全淪為打雜的職業,敲得了代碼,修得通網路,弄的了伺服器,搞的了電腦。。。雜碎事一大堆。
大企業運維就很專業了,泡在機房裡面,一般只是和伺服器,資料庫相關的打交道,及時處理故障,沒有小企業那種亂七八糟的事情
真正的運維和中國中小企業的傳統運維完全不是一碼事,這個職業在中國已經被垃圾的互聯網公司損毀了

❼ oracle rman備份腳本怎麼寫

在ORACLE資料庫中,RMAN備份的腳本非常多,下面介紹一例shell腳本如何通過RMAN備份,以及FTP上傳RMAN備份文件以及歸檔日誌文件的腳本。
fullback.sh 裡面調用RMAN命令做資料庫備份,它使用的cmdfile為/home/oracle/backup/bin/fullback.rcv,同時在/home/oracle/backup/logs目錄下生成日誌文件。
1: [oracle@DB-Server bin]$ more fullback.sh
2:
3: #!/bin/bash
4:
5: export ORACLE_BASE=/u01/app/oracle
6:
7: export ORACLE_SID=gps
8:
9: ORACLE_HOME=$ORACLE_BASE/proct/10.2.0/db_1; export ORACLE_HOME
10:
11: TMP=/tmp; export TMP
12:
13: TMPDIR=$TMP; export TMPDIR
14:
15: PATH=/usr/sbin:$PATH; export PATH
16:
17: PATH=$ORACLE_HOME/bin:$PATH; export PATH
18:
19: LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
20:
21: CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
22:
23: export CLASSPATH
24:
25: TODAY=`date +%Y_%m_%d`
26:
27: rman nocatalog target / cmdfile /home/oracle/backup/bin/fullback.rcv log /home/oracle/backup/logs/fullbackup_$TODAY.log
28:
29: /home/oracle/backup/bin/ftpbackup.sh
30:
fullback.rcv文件非常簡單, 如下所示:
1: [oracle@DB-Server bin]$ more /home/oracle/backup/bin/fullback.rcv
2:
3: run{
4:
5: allocate channel c4 type disk;
6:
7: backup as compressed backupset
8:
9: skip inaccessible
10:
11: tag fullbackupwitharchivelog
12:
13: (database);
14:
15: backup current controlfile;
16:
17: backup spfile;
18:
19: sql "alter system archive log current";
20:
21: delete noprompt obsolete;
22:
23: release channel c4;
24:
25: }
26:
RMAN生成的備份文件,需要通過FTP上傳到FTP伺服器,一則資料庫伺服器沒有這么多空間存儲多天的備份,二則是出於容災、數據安全需要。
下面腳本中FTP伺服器,用戶名密碼均使用xxx替代,在實際環境中,使用具體的信息替代即可。
1: [oracle@DB-Server bin]$ more ftpbackup.sh
2:
3: #!/bin/sh、
4:
5: rm -f /home/oracle/.netrc
6:
7: date_yesterday=`date -d'yesterday' +%Y_%m_%d`
8:
9: date_today=`date +%Y_%m_%d`
10:
11: echo "default login xxxx password xxxxxx" >> /home/oracle/.netrc
12:
13: echo "macdef init" >> /home/oracle/.netrc
14:
15: echo "binary" >> /home/oracle/.netrc
16:
17: echo "cd archivelog" >> /home/oracle/.netrc
18:
19: echo "mkdir $date_yesterday" >> /home/oracle/.netrc
20:
21: echo "cd $date_yesterday" >> /home/oracle/.netrc
22:
23: echo "lcd /u04/flash_recovery_area/gps/archivelog/$date_yesterday" >> /home/oracle/.netrc
24:
25: echo "mput *" >> /home/oracle/.netrc
26:
27: echo "cd .." >> /home/oracle/.netrc
28:
29: echo "mkdir $date_today" >>/home/oracle/.netrc
30:
31: echo "cd $date_today" >>/home/oracle/.netrc
32:
33: echo "lcd /u04/flash_recovery_area/gps/archivelog/$date_today" >>/home/oracle/.netrc
34:
35: echo "mput * ">>/home/oracle/.netrc
36:
37: echo "cd .." >>/home/oracle/.netrc
38:
39: echo "cd ../backupset" >> /home/oracle/.netrc
40:
41: echo "mkdir $date_today" >> /home/oracle/.netrc
42:
43: echo "cd $date_today" >> /home/oracle/.netrc
44:
45: echo "lcd /u04/flash_recovery_area/gps/backupset/$date_today" >> /home/oracle/.netrc
46:
47: echo "mput *" >> /home/oracle/.netrc
48:
49: echo "cd .." >> /home/oracle/.netrc
50:
51: echo "cd ../autobackup" >> /home/oracle/.netrc
52:
53: echo "mkdir $date_today" >> /home/oracle/.netrc
54:
55: echo "cd $date_today" >> /home/oracle/.netrc
56:
57: echo "lcd /u04/flash_recovery_area/gps/autobackup/$date_today" >> /home/oracle/.netrc
58:
59: echo "mput *" >> /home/oracle/.netrc
60:
61: echo "quit" >> /home/oracle/.netrc
62:
63: echo "" >> /home/oracle/.netrc
64:
65: chmod 600 /home/oracle/.netrc
66:
67: ftp -i -v xxx.xxx.xxx.xxx 8021 >>/home/oracle/backup/logs/ftp$date_today.log 2>&1
68:
另外,關於歸檔日誌也需要每隔2小時上傳一次到FTP伺服器,2小時上傳一次歸檔日誌的shell腳本如下所示:
1: [oracle@DB-Server bin]$ more ftp2hours.sh
2:
3: #!/bin/sh
4:
5: rm -f /home/oracle/.netrc
6:
7: date_yesterday=`date -d'yesterday' +%Y_%m_%d`
8:
9: date_today=`date +%Y_%m_%d`
10:
11: echo "default login xxxx password xxxx" >> /home/oracle/.netrc
12:
13: echo "macdef init" >> /home/oracle/.netrc
14:
15: echo "binary" >> /home/oracle/.netrc
16:
17: echo "cd archivelog" >> /home/oracle/.netrc
18:
19: echo "mkdir $date_today" >>/home/oracle/.netrc
20:
21: echo "cd $date_today" >>/home/oracle/.netrc
22:
23: echo "lcd /u04/flash_recovery_area/gps/archivelog/$date_today" >>/home/oracle/.netrc
24:
25: echo "mput * ">>/home/oracle/.netrc
26:
27: echo "quit" >> /home/oracle/.netrc
28:
29: echo "" >> /home/oracle/.netrc
30:
31: chmod 600 /home/oracle/.netrc
32:
33: ftp -i -v xxx.xxx.xxx.xxx 8021 >>/home/oracle/backup/logs/ftp2hours.$date_today.log 2>&1
34:
最後需要將RMAN備份生成的日誌文件,以及FTP上傳備份文件以及歸檔日誌的記錄通過郵件形式發送給DBA或系統管理員,
1: [oracle@DB-Server bin]$ more chkbackandmail.sh
2: #!/bin/bash
3: rm -f /home/oracle/backup/bin/sendmail.pl
4: date_today=`date +%Y_%m_%d`
5: subject="Oracle Backup Alert Service on $date_today"
6: content="Dear colleagues,
7:
8: Attached please find the logs of xxx(xxx.xxx.xxx.xxx) oracle database backup and transfer to FTP Server(xxx.xxx.xxx.xxx), please
9: review the file and check whether the backup succeeded or not,and double check all backups have been mped to tape, many tha
10: nks
11:
12:
13:
14:
15: Best regards
16: Oracle Alert Services
17:
18: "
19: file="/home/oracle/backup/logs/fullbackup_$date_today.log,/home/oracle/backup/logs/ftp$date_today.log"
20: echo "#!/usr/bin/perl" >> /home/oracle/backup/bin/sendmail.pl
21: echo "use Mail::Sender;" >> /home/oracle/backup/bin/sendmail.pl
22: echo "\$sender = new Mail::Sender {smtp => 'xxx.xxx.xxx.xxx', from => '[email protected]'}; ">> /home/oracle/backup/bin/sendmai
23: l.pl
24: echo "\$sender->MailFile({to => '[email protected]',">> /home/oracle/backup/bin/sendmail.pl
25: echo "cc=>'[email protected],[email protected],[email protected]'," >> /home/oracle/backup/b
26: in/sendmail.pl
27: echo "subject => '$subject',">> /home/oracle/backup/bin/sendmail.pl
28: echo "msg => '$content',">> /home/oracle/backup/bin/sendmail.pl
29: echo "file => '$file'});">> /home/oracle/backup/bin/sendmail.pl
30: perl /home/oracle/backup/bin/sendmail.pl
最後在Crontab 作業裡面配置調用這些shell腳本。例如如下所示,在1:01分執行fullback.sh ,每隔兩個小時(例如0:50、2:50...)執行一次ftp2hours.sh, 在每天早上8:40執行chkbackandmail.sh 發送fullback.sh 以及ftp2hour.sh的執行日誌記錄。

❽ 黑馬程序員Linux運維培訓怎麼樣

1、什麼是運維工程師?

運維工程師,伺服器與系統安全穩定的掌舵者!當一個產品(如Web網站、APP軟體、網路游戲等)正式上線後,產品、開發、測試類的工作就正式結束了,接下來的維護和管理工作就會全部移交給運維工程師。

運維工程師的主要工作職責就是負責伺服器的架構設計以及雲計算平台管理,保障軟體的穩定運行。沒有開發以及測試類工作復雜且工作解決方案相對固定。更重要的是沒有年齡以及學歷的限制,隨著工作年限和工作經驗地增長,也會越老越吃香。

2、運維工程師工作場景

運維學科2019全年所有班級就業率93.5%,平均薪資8.7k起,最高薪資25k* 14薪

三、運維課程

1、第一階段:Linux運維基礎功

運維基礎:運維發展史、計算機概述、計算機組成、操作系統學完此階段可掌握的核心能力:熟練掌握Linux操作系統的安裝(CentOS7.6)、配置、基礎命令、VIM編輯器、用戶管理、許可權管理、自有服務、進程檢測與控制、阿里雲平台管理、開源CMS項目上線部署實戰。

Linux操作系統:Linux系統概述、虛擬機、CentOS7.6系統安裝,Linux基礎命令

Linux下文件管理(上):文件命名規則、目錄管理、文件管理、文件復制與剪切、重命名、Linux文件打包與壓縮、文件處理命令

Linux下文件管理(下):VIM編輯器介紹、VI與VIM的區別、VIM安裝與配置、四種工作模式(命令模式,編輯模式,末行模式,可視化模式)、相關VIM指令、VIM擴展功能、VIM總結

Linux下用戶管理:用戶和組的相關概念、用戶組管理、用戶管理、用戶密碼設置、切換用戶、Linux用戶管理實戰

Linux下許可權管理:許可權的基本概念、許可權在生產環境中的作用、Linux許可權類別(rwx)、Linux文件所有者類別(ugo)、普通許可權設置(字母+數字)、文件屬主與屬組設置、高級許可權、ACL許可權控制、umask

Linux下自有服務+軟體包管理:自由服務概述、systemctl管理服務命令、ntp時間同步服務、firewalld防火牆、crond計劃任務、設備掛載與解掛、rpm包管理工具

Linux進程檢測與控制:進程與程序的概念、進程管理命令(top命令,free命令,df命令,ps命令,netstat命令,kill命令與killall命令)、進程優先順序設置

阿里雲平台管理與開發CMS項目上線部署實戰:雲計算平台概述、阿里雲平台注冊、登錄與管理、項目背景、LAMP環境概述、YUM指令、LAMP環境搭建、開源CMS項目上線部署實戰

學完此階段可解決的現實問題:能夠根據企業實際項目需求實現伺服器部署與架構。

學完此階段可擁有的市場價值:熟練掌握之後,可以滿足市場對初級運維工程師的需求,但是市場就業工資相對較低,還是建議繼續學習就業班課程。

2、第二階段:Linux系統服務篇

Linux高級指令:基礎命令回顧、find命令之高級搜索、tree命令、scp文件上傳與下載、計劃任務crontab + tar實現定時備份、用戶管理高級、文件許可權管理高級

Linux下軟體包管理:軟體包管理任務背景、Linux下軟體包概述、RPM包管理工具、YUM包管理工具、YUM源配置(公網YUM源,本地YUM源、自建YUM源倉庫)、源碼安裝概述、源碼安裝三步走、源碼安裝實戰

Linux遠程管理服務SSH:SSH任務背景、SSH服務概述,yum源配置,SSH服務安裝與配置實戰,公私鑰概念,SSH免密碼登錄

Linux數據同步RSYNC:RSYNC任務背景、RSYNC介紹、RSYNC基本語法、本機同步與遠程同步、把RSYNC作為系統服務、RSYNC結合INOTIFY實現實時同步、RSYNC託管XINETD

Linux下文件共享服務FTP、NFS、SAMBA:文件共享任務背景、FTP服務介紹、FTP工作模式(主動模式+被動模式)、FTP服務搭建、客戶端工具(ftp、lftp使用)、FTP訪問控制、NFS服務介紹、NFS服務搭建、配置文件詳解、NFS任務背景及解決方案、SAMBA服務介紹、SAMBA服務搭建、配置文件詳解、文件共享服務總結

DNS域名管理服務:DNS服務介紹、DNS的作用、DNS服務搭建、正向解析、反向解析、多域搭建、NTP時間伺服器、主從DNS架構

源碼構建LAMP環境及部署業務應用:LAMP任務背景、Web伺服器環境准備、軟體編譯回顧、編譯安裝MySQL、編譯安裝Apache、編譯安裝PHP、後期配置、Web應用系統部署實戰

Linux下日誌管理服務RSYSLOG:日誌管理任務背景、查看日誌、日誌管理服務(RSYSLOG概述,日誌列表,日誌級別,相關符號,配置文件)、RSYSLOG本地日誌管理、RSYSLOG遠程日誌管理、日誌管理應用實踐

Linux 磁碟管理:磁碟管理任務背景、磁碟管理概述、fdisk命令詳解、Linux分區概述、Linux分區實戰、邏輯卷介紹、邏輯卷基本概念(PV、VG、PE、LV)、邏輯卷LVM應用操作實戰、RAID介紹、RAID常見級別、軟硬RAID、軟RAID應用實踐

Shell腳本編程:Shell概述、變數、Shell流程式控制制、Shell數組、Shell函數、Shell特殊用法、正則表達式、Shell編程實戰

資料庫DBA:MySQL概述,MySQL5.7安裝,MySQL配置,MySQL基本操作、SQL語句詳解、MySQL索引、MySQL備份與還原、MySQL主從復制、MHA高可用架構、MySQL企業級應用實戰

學完此階段課掌握的核心能力:

1、了解Linux系統運行原理,實現Linux伺服器的維護與管理;

2、了解Linux系統相關服務,能根據企業需求實現企業運維工作。

學完此階段可解決的現實問題:能實現企業Linux伺服器的日常維護與管理,搭建SSH、文件共享、DNS、Apache等服務、能獨立完成系統日誌分析、Shell腳本編程、資料庫DBA等相關工作。

學完此階段可擁有的市場價值:熟練學習和掌握後,可滿足企業運維的初中級需求。

3、第三階段:千萬級商城系統架構設計

源碼構建企業級LNMP架構及電商系統上線部署:千萬級商城系統架構設計任務背景、Web項目開發流程、Linux伺服器環境准備、LNMP環境概述、MySQL資料庫服務搭建、Nginx軟體服務搭建、PHP軟體服務搭建、Web商城項目部署上線

大型WEB服務軟體Nginx部署介紹使用:Nginx軟體概述、Nginx平滑升級、nginx.conf配置文件詳解、虛擬主機配置、Nginx默認官方模塊詳解(GZIP壓縮,客戶端緩存,反向代理,基於IP/用戶的訪問控制,目錄顯示)、日誌管理、日誌輪轉、第三方日誌管理軟體GoAccess、Location區塊、URL重寫、第三方模塊安裝與配置、Nginx安全管理、Nginx其他衍生版本(Tengine,OpenResty)

WEB高可用集群架構設計及實現(keepalived):WEB高可用集群架構設計任務背景、單點資料庫遷移、HA高可用集群概述、Keepalived軟體介紹、Keepalived組成和原理、VRRP協議、安裝與配置Keepalived、Nginx服務高可用實踐、Keepalived擴展內容(非搶占模式、VIP腦裂、單播模式)

WEB負載均衡伺服器集群架構設計及實現LB(Nginx/LVS/HAProxy):WEB負載均衡伺服器集群架構設計任務背景、為什麼需要LB負載均衡技術、LB負載均衡架構圖、負載均衡分類、常見負載均衡實現方式、LB負載均衡環境准備、Nginx負載均衡實現、負載均衡演算法、Session共享解決方案、高可用負載實踐; LVS概述、LVS工作原理、LVS核心組件、LVS三種工作模式(NAT模式、DR模式、TUN隧道模式)、LVS/NAT原理和特點、LVS/DR原理和特點、LVS/TUN原理和特點、LVS的十種調度演算法、LVS/NAT模式部署實踐、LVS/DR模式部署實踐; HAProxy概述、HAProxy安裝與部署、haproxy.cfg配置文件詳解、常見問題分析、HAProxy調度演算法、HAProxy負載均衡應用實踐

MyCAT讀寫分離:MySQL讀寫分離任務背景、讀寫分離的目的、讀寫分離常見的實現方式、搭建M-S主從復制、代碼實現讀寫分離、MyCAT實現讀寫分離實戰(JDK配置、MyCAT配置文件詳解、讀寫分離實踐、高可用實踐、分庫分表、MyCAT企業級案例實踐)

非關系型資料庫NoSQL(Memcache/Redis/MongoDB):非關系型資料庫任務背景、Web項目訪問流程、優化方案、緩存技術引入、memcached介紹、memcached安裝與部署、telnet客戶端使用、memcached指令詳解、memcached tools工具使用、LRU失效機制、PHP memcached擴展安裝、Session入memcached、緩存項目的熱點數據; Redis介紹、Redis應用場景、Redis源碼安裝、客戶端工具使用、Redis數據結構詳解、數據持久化操作(快照+AOF)、企業級案例(主從,安全限制,PHP Redis擴展,Session入Redis);MongoDB任務背景、MongoDB安裝和配置、數據結構類型操作CURD、MongoDB安全設置、PHP擴展、桌面管理軟體、企業級日誌統計實踐

JAVA項目架構設計實戰(LNTM架構):Java項目任務背景、Tomcat概述、Tomcat安裝與部署、Tomcat企業級管理、Host虛擬主機配置、Server Status伺服器狀態、應用管理、Nginx動靜分離、Nginx+Tomcat負載均衡、Maven概述、Maven項目打包、Maven項目部署

存儲(NAS/SAN/GlusterFS/Ceph):存儲概述、Linux存儲分層、存儲的分類(DAS,NAS,SAN)、存儲類型的分類(文件存儲、塊存儲、對象存儲)、SAN的分類、IP-SAN之iscsi實現; 分布式存儲、Glusterfs介紹、raid級別回顧、常見卷的模式、Glusterfs集群、環境准備、集群部署、創建glusterfs存儲卷、客戶端使用、卷的刪除、常見卷類型(stripe模式、distributed模式、distributed-replica模式、dispersed模式、distributed-dispersed模式)、其它卷類型、glusterfs分部署存儲應用實戰; 認識Ceph、Ceph架構原理圖、Ceph集群、Ceph集群組件、Ceph集群環境准備、Ceph集群部署實踐、RADOS原生數據存取、Ceph文件存儲、Ceph塊存儲、Ceph對象存儲、Ceph對象存儲+owncloud打造雲盤系統、Ceph Dashboard(拓展)

配置自動化(Ansible/SaltStack):自動化運維任務背景、認識ansible、ansible安裝與配置、伺服器分組、ansible模塊(hostname模塊,file模塊,模塊,yum模塊,service模塊,command和shell模塊,scriYAML格式pt模塊)、playbook介紹、playbook實例、playbook編排應用、roles介紹、roles的目錄結構、roles應用案例; saltstack介紹、saltstack安裝與配置、saltstack遠程執行命令、grains、pillar、配置管理文件、配置管理目錄、配置管理命令、配置管理計劃任務、其他命令、salt-ssh使用

企業級監控平台(Zabbix/Prometheus):企業級監控任務背景、監控的目的、主流的開源監控平台、Zabbix概述、Zabbix伺服器安裝、Zabbix監控本機與遠程主機、模板、監控項與應用集、圖形、觸發器、報警、Zabbix代理、主動監控與被動監控、Zabbix應用部署實戰; 認識Prometheus、Prometheus原理架構圖、Prometheus監控安裝部署、Prometheus監控遠程主機、遠程MySQL、Grafana介紹、Grafana安裝與登錄、Prometheus結合Grafana實現Linux系統監控、CPU監控、MySQL監控等等、Grafana報警系統實踐

企業級日誌分析(ELK/Kafka):ELK任務背景、ELK概述、elasticsearch部署、elasticsearch基礎概念、elaticsearch基礎API操作、ES查詢語句、elasticsearch-head、logstash簡介、logstash部署、日誌採集、採集messages日誌、採集多日誌源、kibana介紹、kibana部署、kibana漢化、通過kibana查看集群信息、通過kibana查看logstash收集的日誌索引、通過kibana做可視化圖形、filebeat介紹、filebeat收集日誌、filebeat傳輸給logstash、filebeat收集nginx日誌、filebeat日誌過濾

CI/CD(Git、Gitlab、Jenkins):CI/CD任務背景、版本控制概念、Git安裝、Git身份設置、Git創建本地倉庫、Git暫存區、Git版本控制、Git分支管理、擴展:Windows版Git; Github概述、GitHub注冊、創建項目、遠程倉庫、免密push、分支、多人協作; GitLab介紹、GitLab下載、安裝與配置、GitLab配置、倉庫管理、持續集成(CI)、持續交付(CD)、藍綠部署、滾動更新、灰度發布

運維安全(SSL與CA認證/防火牆/ VPN/JumpServer與Teleport跳板機):運維安全任務背景、運維安全概述、硬碟分區加密(擴展)、對稱加密、非對稱加密、數字簽名、SSL與CA認證、SSL介紹、CA認證介紹、https應用實踐; 防火牆概述、iptables的應用、iptables防火牆結構、iptables基本語法、iptables四表五鏈、企業級防火牆規則設置、firewalld包過濾、firewalld與iptables的區別、firewalld防火牆規則設置、firewall-config圖形模式; VPN任務背景、隧道介紹、net-to-net隧道通訊、VPN介紹、IPSec協議、libreswan實現net-to-netVPN、三網路VPN互聯、roadwarrior VPN(libreswan實現點對網VPN,openvpn實現點對網vpn,使用pptpd實現VPN),PAM認證,LDAP,開源堡壘機jumpserver,輕量級開源堡壘機teleport(拓展)

學完此階段可掌握的核心能力:

1、 具備Linux伺服器架構設計能力,保證應用架構合理可控;

2、具備監控檢查系統軟硬體運行狀態,保證系統安全穩定運行的能力;

3、具備CI/CD持續集成/持續支付能力;

4、具備配置自動化以及日誌分析能力;

5、具備解決復雜問題和技術難點的能力。

學完此階段可解決的現實問題:

1、掌握Java、PHP伺服器架構能力;

2、能夠獨立搭建企業級高可用伺服器(集群、高可用、負載均衡、緩存、存儲);

3、掌握阿里雲/華為雲產品實戰;

4、能使用Zabbix/Prometheus搭建企業級監控;

5、能夠熟練掌握CI/CD持續集成/持續支付工具;

6、能夠使用Ansible/SaltStack實現運維自動化;

7、能使用ELK實現企業級日誌分析;

8、能夠掌握常見運維安全防護手段。

學完此階段可擁有的市場價值:熟練掌握和學習後,可滿足Linux運維行業中高級需求。

4、第四階段:Linux雲計算運維

KVM虛擬化:KVM任務背景、計算機工作原理、虛擬化概述與分類、KVM環境准備、KVM安裝、使用KVM安裝虛擬機、KVM基礎管理命令、KVM配置文件、KVM克隆、KVM網路管理、快照、設備管理、存儲池管理、磁碟鏡像管理、虛擬機快速創建腳本

公有雲運維(阿里雲[ECS/RDS/SLB/CDN/OSS/NFS]):公有雲任務背景、阿里雲概述、VPC專有網路、阿里雲安全組、雲伺服器ECS、自定義鏡像、阿里雲SLB、阿里雲RDS、阿里雲存儲(NAS與OSS)、CDN、域名與域名解析、SSL證書、數據傳輸DTS、雲監控、DDOS高防、容器服務、公有雲企業級案例應用實踐

私有雲運維之OpenStack平台:私有雲任務背景、OpenStack概述、OpenStack組件及其作用(Compute 計算服務、Networking 網路服務、Object Storage 對象存儲、Block Storage 塊存儲服務、Identity 身份認證、Image Service 鏡像服務、Dashboard UI頁面、Metering 測量服務、Orchestration 編排部署、Database Service 雲資料庫)、OpenStack自動部署、OpenStack手工部署、OpenStack雲平台應用實踐

Docker容器技術:Docker容器技術任務背景、PAAS平台介紹、認識容器、Docker介紹、Docker內核技術(NameSpace,Control Group,LXC與docker區別)、Docker環境准備、Docker軟體安裝、Docker Daemon管理、鏡像、容器、倉庫、Docker存儲驅動、Docker應用實踐、Dockerfile概述、使用Dockerfile構建鏡像、單宿主機容器互聯方式、Docker網路、Docker的Web管理平台、Docker三劍客(Docker machine、Docker compose、Docker swarm)、Docker容器應用部署實踐

Kubernetes(K8S)容器編排工具:Kubernetes(K8S)容器編排任務背景、認識容器編排、Kubernetes概述、Kubernetes架構、集群部署方式、Kubeadm部署Kubernetes集群、集群與節點信息、節點標簽、namespace命名空間、工作負載(workloads)、pod概述、pod分類、pod的YAML格式、pod資源限制、pod調度、pod生命周期、pod控制器、service、ingress controller、kubernetes存儲卷、ceph集群部署、ConfigMap、Secret、PV與PVC、API網關 kong、包管理方案 helm2、存儲解決方案 GlusterFS、服務網格 istio、監控解決方案 heapster、應用實踐 gitlab-ce、應用實踐 jenkins、應用實踐 kafka、應用實踐 zookeeper應用實踐 配置中心Apollo

綜合案例:Docker+K8S企業級項目應用實踐

學完此階段可掌握的核心能力:

1、熟練掌握虛擬化技術;

2、掌握公有雲與私有雲架構實戰;

3、熟練使用容器與容器編排工具;

4、熟練掌握企業級雲計算技術應用實踐。

學完此階段可解決的現實問題:

1、能夠使用KVM實現虛擬化;

2、能夠掌握公有雲與私有雲伺服器架構實戰;

3、能夠熟練使用Docker容器;

4、能夠熟練使用Kubernetes(K8S)容器編排工具;

5、能夠熟練掌握Docker+Kubernetes(K8S)項目架構設計

學完此階段可擁有的市場價值:熟練掌握和學習後,可滿足Linux雲計算架構工程師的高級需求。

5、第五階段:Python CMDB運維開發(DevOps)

HTML5:HTML簡介、HTML標簽詳解、字元編碼的奧秘、HTML5新特性與常用標簽

CSS3:CSS簡介、CSS的引入方式、CSS基本選擇器、CSS屬性、盒子模型、CSS浮動、CSS3新特性與常用屬性、CSS應用案例

Bootstrap:Bootstrap環境搭建、全局樣式、網頁排版、表單、圖片及輔助類、網頁布局、Bootstrap組件、CMDB後檯布局實戰

JavaScript/Ajax/jQuery:JavaScript簡介、Javascipt語法基礎、BOM模型、DOM模型、Ajax概述、Ajax中的get與post請求、Ajax案例、jQuery框架概述、jQuery選擇器、jQuery事件、jQuery與Ajax、JavaScript應用實踐

Python基礎:Python概述、Python環境部署、變數、標識符和關鍵字、輸入和輸出、數據類型轉換、條件控制語句和循環語句、容器類型、函數、文件操作

Python高級:面向對象、異常處理、模塊和包、Python與MySQL應用實踐

Django框架:Django框架介紹、Django模型、ORM及資料庫操作、視圖及模板、Django中間件

綜合項目:Python+Django實現CMDB企業自動化運維平台

學完此階段可掌握的核心能力:

1、掌握Web前端開發相關技術如HTML5/CSS3/JavaScript;

2、掌握Python運維相關模塊;

3、掌握Python Django框架;

4、具備一定的Python運維開發能力。

學完此階段可解決的現實問題:

1、具備一定的編程思維,為未來系統架構師鋪路搭橋;

2、能夠熟練掌握Python運維相關模塊實現運維管理;

3、能夠使用Python+Django開發企業自動化運維平台。

學完此階段可擁有的市場價值:熟練掌握和學習後,可滿足Linux運維行業的高級需求。

❾ linux應該如何去學習

1、想要學習好Linux就要將它當成興趣,興趣才是最好的老師。良好的興趣才是學習成功好的開始,想要學習好首先就要足夠喜歡它。我們要了解市場上Linux的發展勢頭,了解Linux的相關情況,相信學習好Linux一定要是非常不錯的選擇。
2、學習合適的Linux發行版本,在開始學習Linux之前,首先就是選擇一個適合自己的版本,Linux旗下發行版本有伺服器版本以及桌面版本,而且桌面版本也可以做服務的,為了以後找工作需要的。常見的Linux發行版本有centos
redhat ubuntu等。
3、選擇好Linux學習版本之後,還需要合適的學習資料以及內容,可以到相關的Linux社群看看專業人員的學習機器以及學習手冊,了解真正相關的知識。
4、學習Linux架構以及命令,linux下都是通過命令來執行的,要學會用man和命令幫助,熟悉各種常見命令的操作。
5、學習shell腳本,對於專業的Linux人員來說,shell腳本是必須要掌握的。shell腳本是linux下強大的工具,可以通過各種命令組合完成自己的工作,提升自己的工作效率。