[linux] docker容器save、load


1、查看要保存的镜像

docker images

2、保存镜像

docker save zeven0707/jenkins:v4 -o /data/jenkins.tar

3、在新的服务器加载镜像

docker load -i jenkins.tar

4、启动镜像

docker run -dti --names=jenkins -p 10000:8080 -p 50000:50000 zeven0707/jenkins:v4

点击阅读

[Oracle]oracle 事物隔离级别(isolation level)


1、oracle支持两种事务隔离级别

ISOLATION_LEVEL = {SERIALIZABLE | READ COMMITTED}

2、ISOLATION_LEVEL参数仅为会话级别的参数,不能配置在初始化文件中

SERIALIZABLE:指定当前会话的事物隔离级别为串行化,在这个模式下,如果执行一条dml语句去更新某一行,而这一行切好被另一个串行化的事物去更新没有提交,那么这条dml语句会失败。
READ COMMITTED:默认级别的事物隔离级别。如果当前执行的dml中需要的行别其他事物锁住,dml语句会等待锁释放。

点击阅读

[Oracle]oracle archive log


1、archive log 语法

ARCHIVE LOG {LIST | STOP} | {START | NEXT | ALL | integer } [TO destination]

停止或者启动在线重做日志的自动归档,手动归档指定的redo log files,或者显示redo log文件信息。

2、list:查看当前redo log file的归档范围,当前日志组文件的序列号,当前的归档地址,如果数据库使用归档模式并且自动归档,显示如下

1
2
3
4
5
6
7
ARCHIVE LOG LIST
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /vobs/oracle/dbs/arch
Oldest online log sequence 221
Next log sequence to archive 222
Current log sequence 222

上面显示当前的日志序列号和下一个日志序列号相同,表示automatic archival已经归档了所有的日志组到当前的日志组。

如果是使用了归档模式,但是禁用了自动归档,那么显示可能如下:

1
2
3
Oldest online log sequence            222
Next log sequence to archive 222
Current log sequence 225

启动非归档模式,使用list查看是看不到Next log sequence to archive的信息的。

2、stop:禁用自动归档。

如果实例在归档模式并且redo log文件组满了,数据库会处于停止状态,直到redo日志文件被归档(手动归档archive log next或者archive log all)(该参数在11g已经被弃用)

3、start:启用自动归档(该参数在11g已经被弃用)。

启动后台进程arch执行自动归档。如果arch被启动和一个文件名被提供,指定的文件名变为新的默认归档地址。如果log_archive_start设置为true,实例自动的时候自动arch进程自动启动。(log_archive_start参数在10g已经被弃用,但是这个参数还被保留,在10g之后不管该参数为flase还是true,数据库都是自动归档的)

4、next:手动归档下一个被填满但是未归档的redo log file。

5、all:手动归档所有的被填满但是未归档的redo log file。

6、由非归档模式启动到归档模式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
11:35:35 SYS@ boston> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 565
Current log sequence 567
11:35:58 SYS@ boston> shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
11:36:11 SYS@ boston> startup mount
ORACLE instance started.
Total System Global Area 1603411968 bytes
Fixed Size 2253664 bytes
Variable Size 587205792 bytes
Database Buffers 1006632960 bytes
Redo Buffers 7319552 bytes
Database mounted.
11:36:34 SYS@ boston> alter database archivelog;
Database altered.
Elapsed: 00:00:00.04
11:37:10 SYS@ boston> alter database open;
Database altered.
Elapsed: 00:00:02.41
11:37:21 SYS@ boston> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 565
Next log sequence to archive 567
Current log sequence 567

点击阅读

[Oracle]oracle查看被弃用的参数


SELECT name from v$parameter WHERE isdeprecated = 'TRUE' ORDER BY name;

11GR2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
14:20:09 SYS@ boston> SELECT name from v$parameter WHERE isdeprecated = 'TRUE' ORDER BY name;
NAME
--------------------------------------------------------------------------------
active_instance_count
background_dump_dest
buffer_pool_keep
buffer_pool_recycle
commit_write
cursor_space_for_time
fast_start_io_target
global_context_pool_size
instance_groups
lock_name_space
log_archive_local_first
log_archive_start
max_enabled_roles
parallel_automatic_tuning
parallel_io_cap_enabled
parallel_server
parallel_server_instances
plsql_debug
plsql_v2_compatibility
remote_os_authent
resource_manager_cpu_allocation
serial_reuse
sql_trace
standby_archive_dest
user_dump_dest

25 rows selected.

点击阅读

[Oracle]oracle后台进程pmon、smon、dbw、lgwr、ckpt、mmon、mmnl、reco、arcn


1、pmon group

pmon组包括:pmon、cleanup main process(clmn)、cleanup helper process(clnn)进程
这些进程用于监控和清理其他进程。pmon group监视buffer cache的清理和客户端进程资源的释放。例如,pmon group可以重置活动事务表的状态,释放不需要的锁,从活动进程列表中移除终止进程的id。

1.1、PMON进程:全称process monitor process。

检查其他后端进程是否终止。如果一个服务进程或者dispatcher进程非正常终止,pmon group执行进程恢复。进程终止有很多种:系统杀掉或者alter system kill session语句杀掉。

1.2、CLMN进程:cleanup main process。

pomn进程委派给clmn清除工作。clmn周期性执行已经超时的终止进程、终止会话、事物、网络连接、空闲会话、附加事物、附加网络连接的清理工作。

1.3、clnn:cleanup helper process。

clmn进程委派clnn完成清理工作。clnn进程协助清理终止的进程和会话
可以通过查看V$CLEANUP_PROCESS或者 V$DEAD_CLEANUP视图来查看clmn清理的元数据。如果V$CLEANUP_PROCESS.STATE 值为busy,那么表示当前正在执行清理工作。
数据库资源隔离:pmon group可以自动的隔离损坏的未修复的资源,这样可以避免实例强制终止。可以通过 V$QUARANTINE视图查看元数据。

2、PMAN:process manager

监视shared server、pooled server、job queue等进程
pman监控、启动、停止下面的进程:
  Dispatcher and shared server processes
  Connection broker and pooled server processes for database resident connection pools
  Job queue processes
  Restartable background processes

3、LREG:listener registration process。

用于注册oralce实例信息和分配器信息到oracle net listener。当实例启动,LREG轮询listener来确定是否正常运行。如果listener运行,LREG传递给它相关参数。如果没有运行,LREG进程周期性尝试连接它。

** 在12c之前,pmon进程执行监听注册。

4、SMON:system monitor process。

smon负责各个系统级别的清理工作
执行实例恢复(如果实例在启动时有必要的话)。在rac数据库,一个数据库实例的smon进程能够执行一个失败的实例的恢复。
恢复被终止的事物(因为file-read或者表空间离线错误在实例恢复的过程中跳过的事务),当表空间或者文件online之后,smon恢复事务。
清理不用的临时段。例如:当创建索引的时候分配extent,如果操作失败,smon清理临时空间。
合并属于字典管理的表空间的相邻空闲段

5、DBW:database writer process。

dbw把db buffer的内容写入数据文件。一个进程DBW0对于大多数系统就足够用了,但是可以配置多个进程:DBW1-DBW9,DBWa-DBWz,BW36-BW99来提高系统修改数据的性能。但是对于单处理器的系统来说,配置多个进程也不起作用。
DBW写脏块的条件:
当服务进程在buffer内找不到可用的buffer块时,服务进程发信号给DBW让其刷脏块。DBW可以在执行其他进程时异步刷新脏块。
DBW周期性执行刷脏来推进checkpoint,checkponit位置用于redo线程实例恢复开始的位置。checkpoint的日志位置由buffer cache最老的脏块决定。
在许多情况下,dbw刷脏是遍历所有磁盘的。因此,DBW相比于顺序写的LGWR性能慢。

6、LGWR:log wirter process。

写redo的buffer数据到online redo log。
执行条件:
用户commit
online redo log switch
每3s执行一次
redo log buffer占用了buffered data的1/3或者是占用了1M
DBW

7、ckpt:checkpoint process

将checkpoint information更新到控制文件和数据文件的头信息里,并向dbw进程发送信号使其写数据到磁盘。
checkpoint information包括信息:检查点、scn、开始恢复的在线redo日志的位置

8、mmon:manageability monitor process

执行和automatic workload repository(awr)相关的任务。
mmnl:manageability monitor lite process:当ash的buffer满了,把sga下的ash的buffer数据写到磁盘。

9、RECO:recoverer process

自动连接到存在可疑分布式事务的其他的数据库。当RECO重建了数据库之间的连接,它自动解决可疑事务,移除每个数据库的等待事务表的任意行(与前面解决事务相关的行)。

10、ARCn:Archiiver processes

在redo log切换之后,拷贝online redo log到离线存储。该进程还能用于收集事务redo数据传送到standby数据库目的地。

点击阅读

[Oracle]DNS配置oracle scan ip


1、关闭防火墙开启相应的服务

1
2
[root@localhost  ~]#setenforce  0
[root@localhost ~]#iptables -F

2、主节点安装dns

yum -y install bind bind-chroot bind-utils

3、修改配置文件

3.1、/etc/named.conf—–主配置文件,服务器主要运行参数

修改dns主配置文件

1
2
3
4
5
6
7
8
9
options {
listen-on port 53 { 192.168.168.178;127.0.0.1 };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
forwarders { 8.8.8.8; };

3.2、/etc/named.rfc1912.zones—–区域文件,主要指定要解析哪个域名

vim /etc/named.rfc1912.zones

1
2
3
4
5
6
7
8
9
10
11
12
// 首先对文件中正向解析的区域进行修改
zone "oracle.com" IN {
type master;
file "node.conf";
allow-update { none; };
};
// 设置好域名格式以及相应的数据文件接下来进行反向解析区域的配置
zone "168.168.192.in-addr.arpa" IN{
type master;
file "node.txt";
allow-update { none; };
}

3.3、配置完成之后校验一下文件配置是否正确

1
2
3
[root@node4 named]# named-checkconf
[root@node4 named]#
没有任何输出表示 /etc/named.conf没有语法错误

3.4、/var/named/xxx.xx ——-数据文件,用来正向和反向的解析

主文件及区域文件修改完成后接下来进行数据文件的修改,切换到/var/named目录下,对数据文件进行相应的选项配置

1
2
cd /var/named/
cp named.empty node.conf

首先对其正向解析的数据文件进行配置
vim node.conf

1
2
3
4
5
6
7
8
9
10
11
12
$TTL 3H
@ IN SOA dns.oracle.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS dns.oracle.com.
dns IN A 192.168.168.178
scan IN A 192.168.168.111
scan IN A 192.168.168.112
scan IN A 192.168.168.113

对反向解析的数据文件进行配置,反向解析数据文件里面只有SOA、NS、PTR资源记录,所有A记录都要改为PTR记录,名称为IP地址,IP地址可以写全也可以简写,如果写全则是IP地址反写加上.in-addr.arpa.例如:116.2.16.172.in-addr.arpa. PTR资源记录的值为域名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cp named.empty  node.txt
vim node.txt

$TTL 3H
@ IN SOA dns.oracle.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS dns.oracle.com.
178 IN PTR dns.oracle.com.
111 IN PTR scan.oracle.com.
112 IN PTR scan.oracle.com.
113 IN PTR scan.oracle.com.

3.5、解析文件参数详解

区域解析库文件第一个记录必须是SOA记录,必须有NS记录并且正解区域要有NS记录的A记录,反解则不需要有NS记录对应的A记录。
$TTL表示宏定义,TTL(Time- To-Live),dns记录在本地DNS服务器上保留的时间
@符号可代表区域文件/etc/named.conf里面定义的区域名称,即:”gfs.com.”。
2018030422 ;标识序列号,十进制数字,不能超过10位,通常使用日期
2H ;刷新时间,即每隔多久到主服务器检查一次,此处为2小时,实验环境可以设置小一点
4M ;重试时间,应该小于刷新时间,此处为4分钟,实验环境可以设置小一点
1D ;过期时间,此处为1天
2D ;主服务器挂后,从服务器至多工作的时间,此处为2天)
这个文件里所有的域名结尾的点号一定不能省略。
区域解析库文件是放在/var/named目录下,由named进程是以named用户运行,因此区域解析库文件的属组应设置为named。

(1)A记录(Address)正向解析
A记录是将一个主机名(全称域名FQDN)和一个IP地址关联起来。这也是大多数客户端程序默认的查询类型。
(2)PTR记录(Pointer)反向解析
PTR记录将一个IP地址对应到主机名(全称域名FQDN)。这些记录保存在in-addr.arpa域中。
(3)CNAME记录(Canonical Name)别名
别名记录,也称为规范名字(Canonical Name)。这种记录允许您将多个名字映射到同一台计算机。
(4)MX记录(Mail eXchange)
MX记录是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据 收信人的地址后缀来定位邮件服务器。MX记录也叫做邮件路由记录,用户可以将该域名下的邮件服务器指向到自己的mail server上,然后即可自行操控所有的邮箱设置。
当有多个MX记录(即有多个邮件服务器)时,则需要设置数值来确定其优先级。通过设置优先级数字来指明首选服务器,数字越小表示优先级越高。
(5)NS记录(Name Server)
NS(Name Server)记录是域名服务器记录,也称为授权服务器,用来指定该域名由哪个DNS服务器来进行解析。
将网站的NS记录指向到目标地址,在设置NS记录的同时还需要设置目标网站的指向,否则NS记录将无法正常解析
NS记录优先于A记录。即,如果一个主机地址同时存在NS记录和A记录,则A记录不生效。
(6)AAAA记录 IPV6解析记录
该记录是将域名解析到一个指定的IPV6的IP上。

3.6、相应的数据配置文件完成后对数据文件的属主进行修改

1
2
3
4
[root@localhost  named]#chown  named  node._
[root@node4 named]# ll node._
\-rw-r-----. 1 named root 286 Nov 22 16:12 node.conf
\-rw-r-----. 1 named root 310 Nov 22 16:12 node.txt

3.7、配置完成后检测解析文件是否正确

1
2
3
[root@node4 named]# named-checkzone "oracle.com" node.conf
zone gfs.com/IN: loaded serial 0
OK

3.8、检测反向解析库配置有没有错误

1
2
3
[root@node4 named]# named-checkzone "168.168.192.in-addr.arpa" node.txt
zone 30.0.10.in-addr.arpa/IN: loaded serial 0
OK

4、修改完成后启动dns服务

systemctl start named.service

5、在客户端配置dns信息

5.1、修改 /etc/NetworkManager/NetworkManager.conf 文件,防止重启网卡后dns被重置,在main部分添加 “dns=none” 选项

1
2
3
[main]
plugins=ifcfg-rh
dns=none

5.2、NetworkManager重新装载上面修改的配置

systemctl restart NetworkManager.service

5.3、之后修改/etc/resolv.conf配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[root@node2 ~]# more /etc/resolv.conf

# Generated by NetworkManager

nameserver 192.168.168.178

[root@node2 ~]# /etc/init.d/network restart
Restarting network (via systemctl): [ OK ]
[root@node2 ~]# more /etc/resolv.conf
# Generated by NetworkManager

nameserver 202.106.0.20
nameserver 8.8.8.8
[root@node2 ~]#
[root@node2 ~]# ls
anaconda-ks.cfg Desktop Documents Downloads initial-setup-ks.cfg Music Pictures Public Templates Videos
[root@node2 ~]# vim /etc/NetworkManager/NetworkManager.conf
[root@node2 ~]#
[root@node2 ~]# systemctl restart NetworkManager.service
[root@node2 ~]# vim /etc/resolv.conf
[root@node2 ~]#
[root@node2 ~]# more /etc/resolv.conf
# Generated by NetworkManager

nameserver 192.168.168.178
[root@node2 ~]# /etc/init.d/network restart
Restarting network (via systemctl): [ OK ][root@node2 ~]# more /etc/resolv.conf

# Generated by NetworkManager

nameserver 192.168.168.178

5.4、测试dns是否能正常解析

正向解析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[root@node2 ~]#  dig -t A scan.oracle.com

; \<\<>> DiG 9.9.4-RedHat-9.9.4-61.el7_5.1 \<\<>> -t A scan.oracle.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER\<\<- opcode: QUERY, status: NOERROR, id: 40900
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;scan.oracle.com. IN A

;; ANSWER SECTION:
scan.oracle.com. 10800 IN A 192.168.168.111
scan.oracle.com. 10800 IN A 192.168.168.112
scan.oracle.com. 10800 IN A 192.168.168.113

;; AUTHORITY SECTION:
oracle.com. 10800 IN NS dns.oracle.com.

;; ADDITIONAL SECTION:
dns.oracle.com. 10800 IN A 192.168.168.178

;; Query time: 3 msec
;; SERVER: 192.168.168.178#53(192.168.168.178)
;; WHEN: 一 9月 16 16:35:48 CST 2019
;; MSG SIZE rcvd: 126

反向解析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@node2 ~]# dig -x 192.168.168.111

; \<\<>> DiG 9.9.4-RedHat-9.9.4-61.el7_5.1 \<\<>> -x 192.168.168.111
;; global options: +cmd
;; Got answer:
;; ->>HEADER\<\<- opcode: QUERY, status: NOERROR, id: 6223
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;111.168.168.192.in-addr.arpa. IN PTR

;; ANSWER SECTION:
111.168.168.192.in-addr.arpa. 10800 IN PTR scan.oracle.com.

;; AUTHORITY SECTION:
168.168.192.in-addr.arpa. 10800 IN NS dns.oracle.com.

;; ADDITIONAL SECTION:
dns.oracle.com. 10800 IN A 192.168.168.178

;; Query time: 2 msec
;; SERVER: 192.168.168.178#53(192.168.168.178)
;; WHEN: 一 9月 16 16:36:14 CST 2019
;; MSG SIZE rcvd: 120

多次ping域名scan.oracle.com,解析为不同的ip地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[root@dax-mysql-slave ~]# ping scan.oracle.com
PING scan.oracle.com (192.168.168.111) 56(84) bytes of data.
^C
\--- scan.oracle.com ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1037ms

[root@dax-mysql-slave ~]# ping scan.oracle.com
PING scan.oracle.com (192.168.168.111) 56(84) bytes of data.
^C
\--- scan.oracle.com ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

[root@dax-mysql-slave ~]# ping scan.oracle.com
PING scan.oracle.com (192.168.168.112) 56(84) bytes of data.
^C
\--- scan.oracle.com ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

[root@dax-mysql-slave ~]# ping scan.oracle.com
PING scan.oracle.com (192.168.168.113) 56(84) bytes of data.
64 bytes from dax-mysql-slave (192.168.168.113): icmp_seq=1 ttl=64 time=0.041 ms
^C
\--- scan.oracle.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.041/0.041/0.041/0.000 ms

点击阅读

[Oracle]oracle adg role transaction(角色切换)


1、如果保护模式使maximum protection mode,在主库宕掉的情况下使用failover必须将备库的保护模式切换为maximium performance才能执行切换操作

ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;

2、手动执行switchover进行角色切换

2.1、确认主库的状态,是否可以切换为备库角色

SELECT SWITCHOVER_STATUS FROM V$DATABASE;
只有值为TO STANDBY或者SESSIONS ACTIVE才表示主库可以被切换为备库,如果不是这两个值,则不能进行切换(可能redo transport配置问题或者功能异常)

2.2、开始主库执行切换

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;
如果2.1查到的值为to standy,那么执行上面的语句可以省略WITH SESSION SHUTDOWN

2.3、关闭数据库,并启动到mount状态

1
2
SQL> SHUTDOWN ABORT;
SQL> STARTUP MOUNT;

2.4、从库查询切换状态是否可以切换为主库

1
2
3
4
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
-----------------
TO_PRIMARY

只有值为TO_PRIMARY或者SESSIONS ACTIVE才表示备库可以切换为主库角色,如果不是这两个值,需要确认redo apply是否激活和redo transport状态是否正常。

2.5、备库执行切换为主库角色

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
如果2.4查到的值为to_primary,可以省略WITH SESSION SHUTDOWN

2.6、打开新的主库

ALTER DATABASE OPEN;

2.7、在新的从库启用redo apply

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

3、当主库宕机无法启动,使用failover的方式切换备库为主库

3.1、如果主库是处在mount状态,没办法open的情况下,可以使用下面命令把未传送到备库的archive和redo发送到备库,以确保数据不丢失

SQL> ALTER SYSTEM FLUSH REDO TO target_db_name;
target_db_name为备库的DB_UNIQUE_NAME

3.2、如果主库不能够被mount,但是主库的操作系统可以被正常访问,备库查看每个日志线程的最高日志序列号

1
2
3
4
03:48:57 SYS@ cbislave> SELECT UNIQUE THREAD# AS THREAD, MAX(SEQUENCE#) OVER (PARTITION BY thread#) AS LAST from V$ARCHIVED_LOG;
THREAD LAST
---------- ----------
1 45

主库的归档日志对应为
-rw-r----- 1 oracle oinstall 172M Sep 6 03:48 1_45_1017616040.dbf
把当前45号及以后的归档拷贝到从库,并把丢失的日志注册到从库,注册命令如下:
SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';

3.3、查看和解决归档日志间隙

查看视图v$ARCHIVE_GAP,来查看备库是否有redo gap

1
2
3
4
SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
THREAD# LOW_SEQUENCE# HIGH_SEQUENCE#
---------- ------------- --------------
1 90 92

上面例子中线程1存在序列号为90、91、92的归档日志间隙,如果可以在主库找到对应的归档日志,拷贝到备库,进行日志注册
SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';

3.4、如果3.2和3.3的步骤都没办法操作(比如主节点没办法访问),那么只能执行后面的切换,会丢失数据

3.5、备库停止redo apply

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

3.6、结束应用所有收到的redo data

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;

如果这一步没有报错,进行下一步操作。如果提示错误,一些收到的redo data没有被应用,试着解决提示的错误在执行下一步。如果3.2、3.3、3.4提到的日志间隙没有解决也会提示对应的日志间隙的错误。如果错误不能解决,在备库执行下面语句(面临数据丢失)
SQL> ALTER DATABASE ACTIVATE PHYSICAL STANDBY DATABASE;

3.7、备库查看切换状态

1
2
3
4
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
-----------------
TO PRIMARY

值为TO PRIMARY或者session active表示可以切换为主库角色。

3.8、备库切换为主库角色

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
3.7查到的值为to_primary,可以省略WITH SESSION SHUTDOWN

3.9、打开新的主库

SQL> ALTER DATABASE OPEN;

3.10、新的主库起来之后建议执行以下全库备份

4、经过上面3的步骤之后,旧的主库(如果能起来的话)不可用了,但是可以使用flashback database方法切换为备库

4.1、在新的主库(旧的备库)上查看旧的备库切换为新的额主库的scn值

SQL> SELECT TO_CHAR(STANDBY_BECAME_PRIMARY_SCN) FROM V$DATABASE;

4.2、在旧的主库上执行闪回,将其闪回到4.1查询到的scn号

1
2
3
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> FLASHBACK DATABASE TO SCN standby_became_primary_scn;

4.3、下面切换旧的主库为物理备库

1
2
3
4
SQL> ALTER DATABASE CONVERT TO PHYSICAL STANDBY;
如果语句执行成功,会将当前的控制文件转换为standby控制文件
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;

4.4、开始向新的备库(旧的主库)传输redo

在新的主库上先执行下面语句

4.4.1、查看归档地址状态

SQL> SELECT DEST_ID, DEST_NAME, STATUS, PROTECTION_MODE, DESTINATION,ERROR,SRL FROM V$ARCHIVE_DEST_STATUS;

4.4.2、如果有必要启用地址

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_n=ENABLE;

4.4.3、执行日志切换,确保新的备库可以收到redo

1
2
SQL> ALTER SYSTEM SWITCH LOGFILE;
SQL> SELECT DEST_ID, DEST_NAME, STATUS, PROTECTION_MODE, DESTINATION, ERROR,SRL FROM V$ARCHIVE_DEST_STATUS;

4.5、新的备库启动redo apply

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;

点击阅读

[Oracle]oracle exp-11.2.0.1导出空表的临时解决方案


1、如果是新建表,可以在新建表之前,关闭oracle11g的延迟创建段功能

1
2
3
4
5
6
7
8
9
10
11
11:19:05 SYS@ boston> show parameter deferred
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
deferred_segment_creation boolean TRUE
11:19:11 SYS@ boston> alter system set deferred_segment_creation=false;
System altered.
Elapsed: 00:00:00.06
11:19:20 SYS@ boston> show parameter deferred
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
deferred_segment_creation boolean FALSE

创建新表默认分配segment

1
2
3
4
5
6
7
11:20:32 TE@ boston> create table test4 (id int);
Table created.
Elapsed: 00:00:00.20
11:21:38 TE@ boston> select table_name,segment_created from user_tables where table_name='TEST4';
TABLE_NAME SEG
------------------------------ ---
TEST4 YES

2、如果是在deferred_segment_creation为true的情况下创建的表,那么只能手动给表添加segment

1
2
3
4
5
6
7
8
9
10
11:22:12 TE@ boston> select table_name,segment_created from user_tables where segment_created='NO';
TABLE_NAME SEG
------------------------------ ---
TEST1 NO
在sql查询语句中直接拼接上allocate extent语句
11:25:32 TE@ boston> select 'alter table '||table_name||' allocate extent;' from user_tables where segment_created='NO';
'ALTERTABLE'||TABLE_NAME||'ALLOCATEEXTENT;'
-----------------------------------------------------------
alter table TEST1 allocate extent;
Elapsed: 00:00:00.14

然后手动执行拼接后的sql,如果语句较多可以编辑到文档中

1
2
3
11:25:58 TE@ boston> alter table TEST1 allocate extent;
Table altered.
Elapsed: 00:00:00.10

执行完成之后,查看空表已经被分配了新的段

1
2
3
4
5
6
11:26:13 TE@ boston> select table_name,segment_created from user_tables;

TABLE_NAME SEG
------------------------------ ---
TEST1 YES
TEST4 YES

点击阅读

[Oracle]oracle exp版本11.2.0.1和11.2.0.4区别


1、对于没有分配segment的空表来说,使用不同版本exp导出时,结果存在差异

exp-11.2.0.1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[oracle@dax-mysql-master bin]$ ./exp te/te12345678@boston177 file=/tmp/daochu.dmp log=/tmp/daochu.log
Export: Release 11.2.0.1.0 - Production on Wed Sep 4 22:46:08 2019
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export done in ZHS16GBK character set and AL16UTF16 NCHAR character set
About to export specified users ...
. exporting pre-schema procedural objects and actions
. exporting foreign function library names for user TE
. exporting PUBLIC type synonyms
. exporting private type synonyms
. exporting object type definitions for user TE
About to export TE's objects ...
. exporting database links
. exporting sequence numbers
. exporting cluster definitions
. about to export TE's tables via Conventional Path ...
. . exporting table TEST1
EXP-00003: no storage definition found for segment(0, 0)
. exporting synonyms
. exporting views
. exporting stored procedures
. exporting operators
. exporting referential integrity constraints
. exporting triggers
. exporting indextypes
. exporting bitmap, functional and extensible indexes
. exporting posttables actions
. exporting materialized views
. exporting snapshot logs
. exporting job queues
. exporting refresh groups and children
. exporting dimensions
. exporting post-schema procedural objects and actions
. exporting statistics
Export terminated successfully with warnings.

11.2.0.1版本的exp导出时,如果表没有被分配segment,导出时会提示错误EXP-00003

exp-11.2.0.3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[oracle@node3 bin]$ ./exp te/te12345678@boston177 file=/tmp/daochu.dmp log=/tmp/daochu.log
Export: Release 11.2.0.3.0 - Production on Thu Sep 5 11:02:34 2019
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export done in ZHS16GBK character set and AL16UTF16 NCHAR character set
About to export specified users ...
. exporting pre-schema procedural objects and actions
. exporting foreign function library names for user TE
. exporting PUBLIC type synonyms
. exporting private type synonyms
. exporting object type definitions for user TE
About to export TE's objects ...
. exporting database links
. exporting sequence numbers
. exporting cluster definitions
. about to export TE's tables via Conventional Path ...
. . exporting table TEST1 0 rows exported
. exporting synonyms
. exporting views
. exporting stored procedures
. exporting operators
. exporting referential integrity constraints
. exporting triggers
. exporting indextypes
. exporting bitmap, functional and extensible indexes
. exporting posttables actions
. exporting materialized views
. exporting snapshot logs
. exporting job queues
. exporting refresh groups and children
. exporting dimensions
. exporting post-schema procedural objects and actions
. exporting statistics
Export terminated successfully without warnings.

使用11.2.0.3以及高版本的11.2.0.4导出数据都可以直接导出未分配segment的空表

点击阅读

Proudly powered by Hexo and Theme by Lap
本站访客数人次
© 2020 zeven0707's blog