当前位置:首页 » 网页前端 » 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下强大的工具,可以通过各种命令组合完成自己的工作,提升自己的工作效率。