MySQL DBA从小白到大神实战-13 深入分析Online DDL原理

用oak对表sbtest1做添加字段和增加索引的Online DDL

用sysbench工具准备测试环境

# 创建数据库
mysql> create database lyj;

# 用sysbench工具准备测试环境
sysbench /usr/local/share/sysbench/tests/include/oltp_legacy/insert.lua \
--oltp-table-size=1000000 --mysql-table-engine=innodb --db-driver=mysql \
--mysql-user=root --mysql-password=root123 --mysql-port=3306 \
--mysql-host=10.245.231.202 --mysql-db=lyj \
--events=0 --time=60 --oltp-tables-count=2 --report-interval=10 --threads=2 prepare

sysbench /usr/local/share/sysbench/tests/include/oltp_legacy/insert.lua \
--oltp-table-size=1000000 --mysql-table-engine=innodb --db-driver=mysql \
--mysql-user=root --mysql-password=root123 --mysql-port=3306 \
--mysql-host=10.245.231.202 --mysql-db=lyj \
--events=0 --time=60 --oltp-tables-count=2 --report-interval=10 --threads=2 run

那些12c中惹祸的特性关闭列表

12cR2已经发布一段时间,这里给出一张12c下新出现的可能惹祸特性的列表,可以结合11g的列表一起使用。
我们的宗旨不是要废掉所有新特性,只是把那些还不太成熟的又默认自动生效的积极特性关起来。

alter system set "_optimizer_aggr_groupby_elim"=false;
alter system set "_drop_stat_segment"=1;
alter system set "_common_data_view_enabled"=false; 
alter system set "_optimizer_dsdir_usage_control"=0;    // disable SQL Plan Directive
alter system set optimizer_adaptive_features=false;
alter system set "_optimizer_adaptive_plans"=false;
alter system set "_optimizer_gather_feedback"=false;
alter system set "_optimizer_enable_extended_stats"=false;
alter system set "_optimizer_ads_use_result_cache"=false;
alter system set "_use_single_log_writer"=true scope=spfile; //Multiple log writers feature in Oracle Database 12c can cause instance recovery fails and unexpected

转载自:AskMaclean

ORA-27086 unable to lock file - already in use

故障现象: nas存储通过nfs挂载到Linux主机上,使用expdp直接备份到nfs上时偶尔会报以下错误

;;; 
Export: Release 11.2.0.4.0 - Production on Wed Apr 12 16:58:22 2017
......
ORA-39000: bad dump file specification
ORA-31641: unable to create dump file "/oradata/hknfs/erpnogg_expdp/erpnogg_expdp_20170412165822_01.dmp"
ORA-27086: unable to lock file - already in use
Linux-x86_64 Error: 37: No locks available
Additional information: 10

解决办法: 卸载nfs挂载存储,重新挂载的时候加上nolock参数(存储上的锁文件功能也取消)

umount /oradata/hknfs
mount -t nfs -o nolock 10.230.51.200:/cybackup /oradata/hknfs

vi /etc/fstab
#------------------------------------------------------------------------
10.230.51.200:/cybackup /oradata/hknfs          nfs     nolock       1 1
#------------------------------------------------------------------------

原因分析: nas存储将逻辑卷nfs共享出去,一旦服务器挂载使用,存储就会自动将该逻辑卷锁住,保护逻辑卷内不被其他服务器挂载,达到保护数据作用,但是数据库添加挂载目录中创建数据文件,数据库需要对该数据文件获取锁,但是该锁已经被存储占用,这个时候就需要设置存储在挂载的时候不锁住,使用nolock参数。

MySQL DBA从小白到大神实战-12 MySQL构架设计与容量规划

用sysbench压测MySQL,通过orzdba监控工具分析机器的容量

编译安装sysbench

# 安装依赖包(在上节中的mha机器上安装)
yum -y install make automake libtool pkgconfig libaio-devel vim-common
yum -y install mysql-devel

# 编译源码安装,下载地址:https://codeload.github.com/akopytov/Sysbench/zip/1.0.5
unzip sysbench-1.0.5.zip
cd sysbench-1.0.5
./autogen.sh
./configure --with-mysql-includes=/usr/include/mysql --with-mysql-libs=/usr/lib64/mysql   # 注意修改路径
make && make install

Hexo文章的密码访问

前言

工作中有些文档中的部分内容,虽然机密性不高,但也不便在网上直接公开发布。 这时可以通过以下的小技巧来实现简单的文档密码保护。

方法实现

因Hexo中Markdown语言和html是混用的,所以可直接在Markdown中直接插入以下这段script(建议放到<!-- more -->段后面)。
这里用到了windows对象的alert()方法和prompt()方法。prompt()方法的作用即是显示一个可提示用户输入的对话框,而其本身的返回值就是你输入的那个字符串。因此只需要将其与你默认的密码比较一下就好,如果不正确,则直接将当前页面的loaction属性设为上一个页面即可。

<script>
    if("123"==prompt("请输入文档密码"))
    {
        alert("密码正确");
    }
    else
    {
        alert("密码错误返回主页");
        location="/";
    }
</script>

GoldenGate 12.1.2 新特性参数部分解释

LOGALLSUPCOLS

Writes all supplementally logged columns to the trail, including those required for conflict detection and resolution and the scheduling columns required to support integrated Replicat. (Scheduling columns are primary key, unique index, and foreign key columns.) You configure the database to log these columns with GGSCI commands.
使用该参数可以记录所有附加日志信息并写入trail文件中。

UPDATERECORDFORMAT COMPACT

Combines the before and after images of an UPDATE operation into a single record in the trail. This parameter is valid for Oracle databases version 12c and later to support Replicat in integrated mode. Although not a required parameter, UPDATERECORDFORMAT COMPACT is a best practice and significantly improves Replicat performance.
UPDATERECORDFORMAT参数可以控制抽取进程兼容更新操作的前镜像和后镜像信息并写入到一个trail文件中,但是一定要注意的是该参数必须在数据库版本是11.2.0.4或者12c版本。

数据库GI PSU,SPU(CPU),Bundle Patches 和 Patchsets 补丁号码快速参考 (文档 ID 1922396.1)

原文件地址(需登陆MOS):
https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=247921994816714&id=1922396.1

Base Releases

12.2.0.1.0 12.2.0.1.0 Download Page
12.1.0.1.0 开一个非技术SR来获取物理介质或下载链接,根据Doc ID 1071023.1
11.2.0.1.0 11.2.0.1.0 Download Page
Older Versions 开一个非技术SR来获取物理介质或下载链接,根据Doc ID 1071023.1
注意: 对于11.2.0.2或者更高的patchsets, 请参照patch的readme中”Software Availability”部分下的”Table 1 Installation Types and Associated Zip Files”来查找具体哪些zip文件需要下载。

Oracle Database 11g工作中常用的命令和脚本整理

设置Oracle用户密码永不过期

alter profile default limit PASSWORD_LIFE_TIME unlimited;

# 查看设置
select * from dba_profiles where resource_name like 'PASSWORD_LIFE_TIME%';

设置Oracle用户登陆失败次数限制

# 设置登陆失败次数限制为100,错误登陆数超过100会导致用户被锁
alter profile default limit FAILED_LOGIN_ATTEMPTS 100;

# 无限制
alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited;

# 查看登陆失败限制设置
select * from dba_profiles where resource_name like 'FAILED_LOGIN_ATTEMPTS%';

Oracle expdp中INCLUDE参数限制4000个字符的解决办法

使用expdp的include参数,当需要包含大量表时,一旦字符超4000时就会报错

expdp DADM/passwd DIRECTORY=DMP_DIR SCHEMAS=DADM
DUMPFILE=dadm_tables_data.dmp CONTENT=DATA_ONLY 
INCLUDE=TABLE:"IN ('CBTRFCC','CBTFCCN','CGTGCDD','CGDSALC',
...
'CGTRSGR','CBTFCCE','CGTREPD','CPDORPG')"

UDE-00014 : invalid value for parameter, 'include'.

使用以下技巧可以解决

CREATE TABLE list_of_tables ( tbl_name VARCHAR2(30) );
INSERT INTO list_of_tables ( 'CBTRFCC' );
INSERT INTO list_of_tables ( 'CBTFCCN' );
...
INSERT INTO list_of_tables ( 'CPDORPG' );
COMMIT;

expdp DADM/passwd DIRECTORY=DMP_DIR SCHEMAS=DADM DUMPFILE=dadm_data.dmp 
CONTENT=DATA_ONLY include=TABLE:"IN (SELECT tbl_name FROM list_of_tables)"