0%

1
2
好久没写东西了,今天写一篇凑个数吧,来公司一年多了,感觉自己到了一个小瓶颈期了。 以前每天很多新东西,都是忙着学,感觉没时间写博客总结一下,大部分都是写笔记,现在又是没东西可以写,每天干着95%都是重复的工作,大部分时间在运维,但我内心是把自己当做dba的,毕竟当初老大把我从java开发拉倒系统组^_^
上次一个技术把表中的数据删除,这次是另一个技术把正确的包给覆盖了,我给恢复了,哈哈哈---有用的话看一下

参考博客:https://blog.csdn.net/wyzxg/article/details/6761458
虽然包恢复原理一样,但是操作差异一点,因为我的数据是12.2c的

###正文1:表数据删除恢复

1
2
3
4
5
6
7
--1、查询删除数据时间点之前的数据
select * from 表名 as of timestamp to_timestamp('2016-08-11 16:12:11','yyyy-mm-dd hh24:mi:ss'); --(若没有数据 ,将时间继续提前)
--2、启用行移动功能
alter table 表名 enable row movement;
--3、恢复数据(激动人心的时刻)
flashback table 表名 to timestamp to_timestamp('2016-08-11 16:12:11','yyyy-mm-dd hh24:mi:ss');
大功告成,数据恢复成功;

###正文2:包被覆盖错了,想要闪回package

注意这里需要使用dba权限,否则查看不到

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
--错误包:XXX_PKG 正确时间:中午12点
SELECT OBJECT_ID
FROM all_objects
WHERE OBJECT_NAME = 'XXX_PKG';
--如果包直接被删除了,不是被覆盖,那只能先闪回查询对象表
SELECT OBJECT_ID
FROM all_objects AS OF TIMESTAMP TO_TIMESTAMP('2018-06-26 12:00:00', 'YYYY-MM-DD HH24:MI:SS')
WHERE OBJECT_NAME = 'XXX_PKG';
--查到2个对象id,一个包头,一个包体
93163
94602
--根据对象id查询包头和包体内容
SELECT source
FROM source$ AS OF TIMESTAMP TO_TIMESTAMP('2018-06-26 12:00:00', 'YYYY-MM-DD HH24:MI:SS')
where obj# = 93163;
SELECT source
FROM source$ AS OF TIMESTAMP TO_TIMESTAMP('2018-06-26 12:00:00', 'YYYY-MM-DD HH24:MI:SS')
where obj# = 94602;
--然后确认没问题,用查到的sql内容重新覆盖就好
1
2
3
4
5
6
7
8
9
10
注意:一般package body的内容比较多,怎么复制下来呢?
spool /home/oracle/xxx_pkg.sql

SELECT source
FROM source$ AS OF TIMESTAMP TO_TIMESTAMP('2018-06-26 12:00:00', 'YYYY-MM-DD HH24:MI:SS')
where obj# = 93163;

spool off
exit
ll /home/oracle/

###知识点
简单总结一下,这里就是利用了oracle的闪回查询功能,非常的简单,一看就懂了,但是oracle闪回有很多种包括删除表和数据库,闪回事务等等。
最重要的是要理解
SQL> show parameter undo_retention;

NAME TYPE VALUE

阅读全文 »

oracle 12c pdb refresh 简单介绍

闲话

1
2
好久没有写博客,虽然忙但时间还是有的,就是感觉没东西写,学到的东西小的记笔记,大的写成文档,没有那种自己领悟很深的东西来写博客,就写一下pdb refresh凑个篇数 ^_^
感兴趣的看一下

:smiling_imp:

正文

环境:

       oracle12.2单实例clone到12.2 rac,我需要把测试环境pdb复制到正式,但是他们测试系统还没有开发结束就急着上线,后面开发的数据库代码需要技术手动插入正式,听说过pdb刷新,就想能不能就解决这个问题,于是学习了一波…结果搞明白了,但是用处不是太大,哈哈:sob:


克隆

先决条件:

      1.目标位置具有建库权限

      2.源pdb启用归档或者read only

      3.源pdb使用本地undo

      4.尽量目标库为al32utf8

      6.有dblink连接

      7.刷新模式必须为2个不同的cdb容器中的pdb

         其他不重要…

1
2
3
4
5
6
7
8
9
10
11
12
--源库开启归档或者read only
SQL> alter pluggable database open read only;

--目标库创建源库的dblink,这里使用的tns:srm_test需要提前创建好
SQL> conn /as sysdba;
SQL> create public database link srmtest_dblink connect to srm identified by xxxx using 'srm_test';

--进行hot远程克隆,并且制定刷新模式为 手动
SQL> create pluggable database srm_pro from srm_test@srmtest_dblink refresh mode manual;

--克隆完成,打开目标pdb
SQL> alter pluggable database srm_pro open; --默认为open read write模式
阅读全文 »

闲话

优点:

  • 快速高效
  • 支持markdown
  • 布局自定义简单,无广告
  • 部署简单

因为想开始写博客,但又找不到好的博客平台,平时都看博客园和开源中国看博客文章,但博客园的那个皮肤是真有点难受,所以就想自己打个博客平台用着,然后blog的话还是发表到博客园,博客园叫 姚刚,有兴趣的关注一下,以后会出一些关于运维和oracle的文章


**本次环境:
个人笔记本+centos6.9 + node.js v8.9.4 + theme(NexT.Mist v5.1.4)+ githup + gitment **

因为第一次开始搭建,主要记录一下操作步骤,可能对原理和其他分析不太全面,请原谅,有不当的或错误的见解希望指正。反正博客刚开始也没有访问量,所以就不打算购买域名,将个人博客部署到githup就好。

正文

安装git

阅读全文 »

今天在看oracle自启动脚本,突然有点时间,总结一下!!!

第一次写博客,大家随便看看就好,有错误麻烦提醒下,不喜欢别喷,主要是锻炼自己,形成写博客的好习惯。

刚毕业,现在还没转正,在干运维和自学dba,零零碎碎学了很多东西,很早就想写博客,但没时间和懂得不够深刻全面,写了很多简单的笔记,所以从今天开始练习写博客,养成思考和坚持学习的好习惯


系统服务(rhel6/oracle linux6/centos6 都一样)

1
[oracle@srm-yg ~]$ service oracle start        # 将oracle启动加到系统服务
这个oracle服务是哪里来的,系统有哪些服务?
1
[oracle@srm-yg ~]$ ls /etc/init.d/    #查看系统服务

这下面所有的可执行文件都是系统服务,你可以使用 service xxx start/stop/… 来使用它,但系统启动和关闭时不会开启和关闭所有服务。

** 例子: 添加 oracle 服务 和 tomcat 服务**

阅读全文 »

前提,两文件系统可以  免秘钥ssh登录
1、两边都安装unison,在一边新建配置文件

1
vim /home/srmweb/.unison/webapp.prf

配置参数(附件有)
单项同步,以force目录为基准,force=a, a是什么,b就是什么
反之#force为双向同步,a+b+,a-b-,b+a+,b-a-

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
batch = true  #表示全自动模式,接受缺省动作,并执行
fastcheck = true
#表示同步时使用文件的创建时间来比较两地文件,如果这个选项为false,
#unison则将比较两地文件的内容.建议设置为true
group = false  #保持同步过来的文件组信息,注意,同步目录是否一个组
ignore = Path WEB-INF/aurora.plugin.quartz/*  #忽略文件
log = true
logfile = /home/srm23/unison/logs/webapp.log #记得创建日志路径
maxthreads = 300
owner = false   #保持同步过来的文件属主,注意,同步目录是否一用户
perms = -1   #保持同步过来的文件读写权限
repeat = 60  #间隔60秒后,开始新的一次同步检查
retry = 3    #失败重试
root = /usr/srm23/webapp/webRoot    #这个是本地的
root = ssh://mascloud@192.168.116.22//home/mascloud/webapp/Web    #这个是远程的
#force = /usr/srm23/webapp/webRoot   # 以本地的这个目录为准
#force是基准目录,单双向同步选择

rsync = true
silent = false   #终端中不显示任何信息,除非出现错误
times = true    #同步修改时间
xferbycopying = true    #不变目录,扫描 时可以忽略

2、编写运行脚本(附件)

1
2
3
4
5
6
7
8
新建或编辑
/home/srmweb/unison/scripts/webapp.sh
检测unison状态
#!/bin/bash
result=`ps -ef | grep "/usr/bin/unison webapp" | grep -v grep`;
if [ -z "$result" ];then
/usr/bin/unison webapp;
fi

3、设置定时任务

1
2
3
crontab -e

*/1 * * * * sh /home/srmweb/unison/scripts/webapp.sh >/dev/null 2>&1
阅读全文 »

####1.概述

1
2
第一次部署,很多不懂和可能理解错误的地方,如有误导请谅解!
作为小白,完全不懂cas,首先百度了解概念,然后去官网看一下,架构图非常清晰,但对于认证的原理不太懂,交给技术吧,然后就结合百度和官网文档进行部署,其实很简单,但是还是遇到很多问题,所以简单记录一下。

官网链接

架构说明

认证方式

1
2
3
4
5
6
#环境
os version: CentOS release 6.9 (Final)
java version: "1.8.0_141"
Server version: Apache Tomcat/7.0.81
cas server version: version: 4.2.7 #20181016最新版本为6.0.x:要求jdk11
db version: oracle12.2.0.1|mysql 5.7.4

15397538113481539754416921

1
2
上面左边是架构图:    cas主要分为client和server,client一般拦截保护资源的访问请求重定向到cas server,再通过支持的协议进行交互,到达sso的目的。client、协议、认证方式都支持多种,比如ldap认证、数据库认证、ad认证,cas server是严重依赖spring Freamwork。
上面右边是web流程图: 主要是browser和client和server的交互流程,偏重开发,我本次主要部署cas server。

####2.准备war包
参考地址

maven工程下载地址

阅读全文 »