【小张和Oracle数据库】Java两年半练习生裁员后竟然找到了一份DBA的工作?

一、引言

大家好,我叫张小念(小名念念),家里人都叫宝儿。

一个java两年半的练习生,经历了起起伏伏的疫情时代,终于在java一行也算是入了门。

但是,计划永远赶不上变化,

有一天经理突然发消息说:“哎呀,疫情时代没赚到钱,部门要裁一批人… ”

【小张和Oracle数据库】Java两年半练习生裁员后竟然找到了一份DBA的工作?_第1张图片

巴拉巴拉说了一大堆,也就是说念念也没有抵得了这波潮~

小念心想:哇靠,疫情的时候这么难都没裁人,咋还放开了还润了…

管他呢,拿了补偿直接出去旅游,先玩了再说…


就这样,小念同学在这2个月去了苏州,大理 又趁着空隙回了趟老家…

终于,2个月后的某一天,小张同学终于想着要找工作了,

说干就干,直接上招聘软件开聊约面试

就这样找了两个月,也去了面试,一共也就5家面试。

毕竟张同学的简历是中途转行自学进来的,现在的招聘软件第一条就是计算机专业…所以很多家公司连面试的机会都没有。

在这样不找工作,直接吃老本了,这个时候,小张已然有点着急了。

赶紧在群里面问问最近有小伙伴再找工作吗?

嘿,没想到还真有~

详细一聊发现,这孩子已经找了半年了,张小念瞬间觉得自己又行了,赶紧躺着开了一局王者农药~

又过了大半个月,终于在家里面的催促,疯狂投递简历

只要是计算机行业的,投!再投!疯狂投!

几天之后,念宝无意又仔细的阅读了这篇巨大的招聘要求,此时心里只有一句

【小张和Oracle数据库】Java两年半练习生裁员后竟然找到了一份DBA的工作?_第2张图片

因为这个招聘要求是:

1.踏实肯干,抗压能力强

2.熟练使用维护Oracle数据库

3.精通Linux,Unix

4.熟练使用C#,Java语言

5.熟练shell脚本

念念心想,这尼玛要求太高了, 我就是个初级…

就在念念陷入绝望之际,奇迹出现了------几天之后那边的HR打电话询问念念啥时候能过去面试一下。

这有面试还说啥,直接开干,面试的结果居然也出乎意料,当即就要求他第二天就来上班。

这念念回家不时的掐一下自己,在现在互联网如此恶劣的情况下,这个面试竟然这么快就拍板了~


二、开干:数据字典应用实例

念念上班的第一天,公司的部门主管见了他,并让他进行一个月的试用期工作,跟他说:

“考虑到你刚来公司,这一个月给你安排一点轻松的活,主要是想要让你熟悉一公司的数据库系统,因此你这一个月主要是把公司的Oracle数据库的配置和结构等做成文档发给我。”

这一个有一个惊喜,直接把念念干晕了,这真的是祖宗显灵了~

但是一开始工作念念就遇到了麻烦,发现前任DBA早已离开了公司,而且啥资料都没有留下,真的是干干净净的来,干干净净的走啊。而且很多工作是由公司的It来做的,但是公司没有设置这一职位,所以很多工作都是要从头开始,而且就只有念念一个人开干。

不管怎样,还是要干的不是吗?公司已经提供了平台,就算念念之前没搞过Oracle现在也得连夜学习突击,硬着头皮上了。


直接先链接到数据库,链接之后

先想着拿到公司Oracle数据库的基础信息

于是念念想到了数据字典v$database

SELECT name,created,log_mode,open_mode from v$database;
NAME CREATED LOG_MODE OPEN_MODE
HELOWIN 2016/1/4 1:28 NOARCHIVELOG READ WRITE

此时:

​ 念念发现,公司数据库名字叫helowin,创建时间居然是2016年,数据库运行模式在归档模式

,数据库的状态是可读可写【也就是正常状态】。


之后想着看看Oracle运行在的计算机的主机名字,实例名和oracle数据库的版本。

SELECT host_name,instance_name,version FROM v$instance;
HOST_NAME INSTANCE_NAME VERSION
d26786b358b3 helowin 11.2.0.1.0

这个时候晓得了运行在d26786b358b3这个机器上面,实例名字还是helowin,后面是版本号。


因为公司购买了一些商业软件,这对Oracle数据库管理系统有一些特殊的要求,于是念念利用数据字典v$version继续发起了查询

SELECT banner FROM v$version
BANNER
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

显示的是一些信息。


接下来利用数据字典来获取控制文件的名字

SELECT name FROM v$controlfile
NAME
/home/oracle/app/oracle/oradata/helowin/control01.ctl
/home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl

这里可以清楚的看到,数据库有两个控制文件,放在了同一个磁盘下的不同目录。


为了获取公司Oracle数据库的重做日志和配置信息

念念想到了数据字典v$log.

SELECT group#,members,bytes,status,archived FROM v$log
GROUP# MEMBERS BYTES STATUS ARCHIVED
1 1 52428800 INACTIVE NO
2 1 52428800 CURRENT NO
3 1 52428800 INACTIVE NO

这个时候,宝儿看到了oracle一共有三组重做日志,

每个重做日志组中只有一个成员,

每个重做日志成员大小为50MB,都没有被归档【ARCHIVED=no】

数据库当前正在操作的重做日志为2组【STATUS=CURRENT】


当然他也想知道每个重做日志【成员】文件所存放的具体位置。

于是他又想到了数据字典v$logfile。

SELECT group#,member FROM v$logfile
GROUP# MEMBER
3 /home/oracle/app/oracle/oradata/helowin/redo03.log
2 /home/oracle/app/oracle/oradata/helowin/redo02.log
1 /home/oracle/app/oracle/oradata/helowin/redo01.log

这个时候就是显示的存放地址了。


为了评估公司的Oracle数据库的备份和恢复策略并确定归档文件的操作位置


archive log list

如果这个命令报错的话,查看一下这个文章解决问题。

解决办法:亲测好用

Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     24
Current log sequence           26

接下来,念念又想知道公司的Oracle数据库到底有多少表空间以及每个表空间的状态,这个时候,他想起来数据字典dba_tablespace。

于是:

SELECT tablespace_name,block_size,status,contents,logging FROM dba_tablespaces;
SYSTEM 8192 ONLINE PERMANENT LOGGING
SYSAUX 8192 ONLINE PERMANENT LOGGING
UNDOTBS1 8192 ONLINE UNDO LOGGING
TEMP 8192 ONLINE TEMPORARY NOLOGGING
USERS 8192 ONLINE PERMANENT LOGGING
EXAMPLE 8192 ONLINE PERMANENT NOLOGGING
WATERBOSS 8192 ONLINE PERMANENT LOGGING
DOG_DATA 8192 ONLINE PERMANENT LOGGING

由此可见,一共有7个表空间,数据大小都为8KB,

都是联机状态,除了TEMPEXAMPLE这两个表,其他的都受重做日志的保护!

其中temp为临时表(排序时用),而UNDOTBS1为还原表空间,其他都是永久的表空间。


当念念以及知道以上表空间的信息之后,

他当然也想了解每个表存放在哪个磁盘上面以及文件的名字等信息。

此时他想起来数据字典【dba_data_files】


SELECT file_id,file_name,tablespace_name,bytes/1024/1024 MB FROM dba_data_files;
FILE_ID FILE_NAME TABLESPACE_NAME MB
5 /home/oracle/app/oracle/oradata/helowin/example01.dbf EXAMPLE 100
4 /home/oracle/app/oracle/oradata/helowin/users01.dbf USERS 5
3 /home/oracle/app/oracle/oradata/helowin/undotbs01.dbf UNDOTBS1 95
2 /home/oracle/app/oracle/oradata/helowin/sysaux01.dbf SYSAUX 680
1 /home/oracle/app/oracle/oradata/helowin/system01.dbf SYSTEM 690
6 /home/oracle/app/oracle/product/11.2.0/dbhome_2/dbs/c:waterboss.dbf WATERBOSS 100
7 /home/oracle/app/oracle/product/11.2.0/dbhome_2/dbs/c:dogdata.dbf DOG_DATA 100

上述结果显示了文件名,文件的位置,以及文件的所属空间,最后那个大小,就是把字节变成MB显示最后的单位也是MB咯。


最后,念宝儿想知道公司的oracle数据库系统上到底有多少用户和什么时候创建。

这个时候字典表就是dba_users;

于是


SELECT username,created FROM dba_users;

USERNAME CREATED
WATERUSER 2023/5/25 15:43
DOG 2023/5/30 15:32
SYSMAN 2009/8/15 0:40
SYSTEM 2009/8/15 0:17
SYS 2009/8/15 0:17
MGMT_VIEW 2009/8/15 0:42
DBSNMP 2009/8/15 0:24
SPATIAL_WFS_ADMIN_USR 2009/8/15 0:39
SPATIAL_CSW_ADMIN_USR 2009/8/15 0:40
HR 2014/8/23 6:26
APEX_PUBLIC_USER 2009/8/15 0:43
OE 2014/8/23 6:26
DIP 2009/8/15 0:19
SH 2014/8/23 6:26
IX 2014/8/23 6:26
MDDATA 2009/8/15 0:36
PM 2014/8/23 6:26
BI 2014/8/23 6:26
XS$NULL 2009/8/15 0:31
ORACLE_OCM 2009/8/15 0:19
SCOTT 2009/8/15 0:50
OLAPSYS 2009/8/15 0:36
SI_INFORMTN_SCHEMA 2009/8/15 0:31
OWBSYS 2009/8/15 0:49
ORDPLUGINS 2009/8/15 0:31
XDB 2009/8/15 0:29
ANONYMOUS 2009/8/15 0:29
CTXSYS 2009/8/15 0:29
ORDDATA 2009/8/15 0:31
OWBSYS_AUDIT 2009/8/15 0:49
APEX_030200 2009/8/15 0:43
APPQOSSYS 2009/8/15 0:24
WMSYS 2009/8/15 0:25
EXFSYS 2009/8/15 0:29
ORDSYS 2009/8/15 0:31
MDSYS 2009/8/15 0:31
FLOWS_FILES 2009/8/15 0:43
OUTLN 2009/8/15 0:17

三、新的开始

经过不懈努力,张小念终于把公司的数据库的基本结构摸清楚了,

然后他就开始写了他人生中也是公司有史以来第一份Oracle数据库文档

他用了两周多的时间完成了这里程碑式的意义的重要文档,其中当然自己也添加了很多精彩的分析和注释。

交给经理的时候,经理满意的点了点头。

这个时候,宝儿知道了,他的暂时性危机算是解除了,接下来的路将更为凶险…

但是,Java练习生有什么可以畏惧的呢? 小张这样想到…


ok 那先这样

你可能感兴趣的:(Oracle数据库,java,数据库,oracle)