使用dataguard将单实例数据库转换为rac数据库
我们常常将oracle rac数据库通过dataguard容灾到一个单实例数据库中。当生产库出现问题后能够将生产库切换到dgserver上。而当生产库rac修复完毕后。我们相同能够通过dg将数据回切到生产库中。
此次測试将单实例数据库通过dg转换为rac数据库,这个单实例是刚创建的,并非由rac通过dg生成的。
在做dg之前须要安装完毕grid,不须要创建数据库实例。在日志应用的时候必须仅仅能是一个实例应用。
详细环境例如以下:
单实例库:
数据库版本号:11.2.0.4.0
sid:suq
db_unique_name=suq
ip:192.168.56.35
hostname:11g1
rac数据库:
数据库版本号:11.2.0.4.0
sid:suq1、suq2
db_unique_name=suq1
ip地址规划:
#PUBLIC
192.168.56.110 suq1
192.168.56.112 suq2
#VIP
192.168.56.111 suq1-vip
192.168.56.113 suq2-vip
#PRIV
172.168.1.21 suq1-priv
172.168.1.23 suq2-priv
#SCAN
192.168.56.25 suq-cluster-scan
详细过程例如以下:
1.配置一些rac和dg的基本參数,包含:
改动主库force logging、创建standby logfile、创建password文件而且复制到rac下、加入主库和备库的服务命名:
alter database force logging;
alter database add standby logfile group 4 ('/opt/oracle/oradata/suq/stand_redo04.log') size 50m;
alter database add standby logfile group 5 ('/opt/oracle/oradata/suq/stand_redo05.log') size 50m;
alter database add standby logfile group 6 ('/opt/oracle/oradata/suq/stand_redo06.log') size 50m;
alter database add standby logfile group 7 ('/opt/oracle/oradata/suq/stand_redo07.log') size 50m;
##
primary=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.35)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = suq)
)
)
standby=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.111)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = suq1)
(UR = A)
)
)
注意:standby端即rac端的ip地址写的是suq1的vip地址,并且须要加上(UR=A)选项,否则通过sqlplus连接不到rac实例。
2.生成standby端的oracle 參数文件。这一步參数里面的内容及其重要。必须写正确。特别是rac和dg的參数。眼下我的rac有三个磁盘组
[grid@suq2 ~]$ asmcmd lsdg
State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 4096 1048576 3435 3329 0 3329 0 N BACKUP/
MOUNTED EXTERN N 512 4096 1048576 4305 1988 0 1988 0 N DATADG/
MOUNTED EXTERN N 512 4096 1048576 1458 1058 0 1058 0 Y SYSTEMDG/
以下是我写好的一个參数文件:
suq.__db_cache_size=335544320
suq.__java_pool_size=4194304
suq.__large_pool_size=4194304
suq.__oracle_base='/u01/app'
suq.__pga_aggregate_target=335544320
suq.__sga_target=503316480
suq.__shared_io_pool_size=0
suq.__shared_pool_size=146800640
suq.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/suq'
*.audit_trail='none'
*.compatible='11.2.0.4.0'
*.control_files='+DATADG/suq/control.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='suq'
*.db_recovery_file_dest='+BACKUP'
*.db_recovery_file_dest_size=5218762752
*.diagnostic_dest='/u01/app/oracle'
*.memory_target=838860800
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
#### rac parameter
suq1.local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.56.111)(PORT=1521))'
suq2.local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.56.113)(PORT=1521))'
suq1.undo_tablespace='UNDOTBS1'
suq2.undo_tablespace='UNDOTBS2'
suq1.remote_listener='suq-cluster-scan:1521'
suq2.remote_listener='suq-cluster-scan:1521'
suq1.instance_name=suq1
suq2.instance_name=suq2
suq1.instance_number=1
suq2.instance_number=2
*.cluster_database=true
*.cluster_database_instances=2
*.db_create_file_dest='+DATADG'
*.db_create_online_log_dest_1='+DATADG'
suq1.thread=1
suq2.thread=2
### dg parameter
*.db_unique_name=suq1
*.log_archive_config='dg_config=(suq,suq1)'
*.standby_file_management='AUTO'
*.db_file_name_convert='/opt/oracle/oradata/suq','+DATADG/suq/datafile'
*.log_file_name_convert='/opt/oracle/oradata/suq','+DATADG/suq/datafile'
*.log_archive_dest_1='location=+datadg/suq/archivelog valid_for=(all_logfiles,all_roles) db_unique_name=suq1'
*.log_archive_dest_2='service=primary lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=suq'
*.fal_server=primary
*.fal_client=standby
注意:suq1、suq2的local_listener和remote_listener必须配置正确。否则打开库之后scan ip可能失效
3.配置主库的dg參数:
alter system set log_archive_config='dg_config=(suq,suq1)' scope=both; alter system set log_archive_dest_1='location=/opt/arch valid_for=(all_logfiles,all_roles) db_unique_name=suq' scope=both; alter system set log_archive_dest_2='service=standby lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=suq1' scope=both; alter system set fal_server=suq1 scope=both; alter system set fal_client=suq scope=both;
4.在保证全部须要的文件夹都已经创建完毕的情况下,将备库启动到nomount。而且測试tnsnames的连通性:
SQL>startup nomount pfile='/home/oracle/initsuq1.ora'
ORACLE instance started. Total System Global Area 835104768 bytes
Fixed Size 2257840 bytes
Variable Size 553651280 bytes
Database Buffers 272629760 bytes
Redo Buffers 6565888 bytes
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
[oracle@suq1 ~]$ lsnrctl status LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 26-JUL-2015 21:27:45 Copyright (c) 1991, 2013, Oracle. All rights reserved. Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date 26-JUL-2015 18:58:27
Uptime 0 days 2 hr. 29 min. 17 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/11.2.0/grid/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/suq1/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.110)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.111)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "suq1" has 1 instance(s).
Instance "suq1", status BLOCKED, has 1 handler(s) for this service...
The command completed successfully [oracle@11g1 ~]$ sqlplus sys/manager@standby as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Sun Jul 26 21:48:08 2015 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options SQL> exit [oracle@suq1 ~]$ sqlplus sys/manager@primary as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Sun Jul 26 21:50:25 2015 Copyright (c) 1982, 2013, Oracle. 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 SQL> exit
5.使用duplicate 创建standby database:
[oracle@11g1 arch]$ rman target / Recovery Manager: Release 11.2.0.4.0 - Production on Sun Jul 26 22:28:11 2015 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. connected to target database: SUQ (DBID=1469685490) RMAN> connect auxiliary sys/manager@standby connected to auxiliary database: SUQ (not mounted) RMAN> duplicate target database for standby from active database; Starting Duplicate Db at 26-JUL-15
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=141 instance=suq1 device type=DISK contents of Memory Script:
{
backup as copy reuse
targetfile '/opt/oracle/product/OraHome11204/dbs/orapwsuq' auxiliary format
'/u01/app/oracle/product/11.2.0/db_1/dbs/orapwsuq1' ;
}
executing Memory Script Starting backup at 26-JUL-15
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=147 device type=DISK
Finished backup at 26-JUL-15 contents of Memory Script:
{
backup as copy current controlfile for standby auxiliary format '+DATADG/suq/control.ctl';
}
executing Memory Script Starting backup at 26-JUL-15
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
copying standby control file
output file name=/opt/oracle/product/OraHome11204/dbs/snapcf_suq.f tag=TAG20150726T222820 RECID=3 STAMP=886112900
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
Finished backup at 26-JUL-15 contents of Memory Script:
{
sql clone 'alter database mount standby database';
}
executing Memory Script sql statement: alter database mount standby database contents of Memory Script:
{
set newname for tempfile 1 to
"+DATADG/suq/datafile/temp01.dbf";
switch clone tempfile all;
set newname for datafile 1 to
"+DATADG/suq/datafile/system01.dbf";
set newname for datafile 2 to
"+DATADG/suq/datafile/sysaux01.dbf";
set newname for datafile 3 to
"+DATADG/suq/datafile/undotbs01.dbf";
set newname for datafile 4 to
"+DATADG/suq/datafile/users01.dbf";
backup as copy reuse
datafile 1 auxiliary format
"+DATADG/suq/datafile/system01.dbf" datafile
2 auxiliary format
"+DATADG/suq/datafile/sysaux01.dbf" datafile
3 auxiliary format
"+DATADG/suq/datafile/undotbs01.dbf" datafile
4 auxiliary format
"+DATADG/suq/datafile/users01.dbf" ;
sql 'alter system archive log current';
}
executing Memory Script executing command: SET NEWNAME renamed tempfile 1 to +DATADG/suq/datafile/temp01.dbf in control file executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME Starting backup at 26-JUL-15
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile file number=00001 name=/opt/oracle/oradata/suq/system01.dbf
output file name=+DATADG/suq/datafile/system01.dbf tag=TAG20150726T222829
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:45
channel ORA_DISK_1: starting datafile copy
input datafile file number=00002 name=/opt/oracle/oradata/suq/sysaux01.dbf
output file name=+DATADG/suq/datafile/sysaux01.dbf tag=TAG20150726T222829
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:45
channel ORA_DISK_1: starting datafile copy
input datafile file number=00003 name=/opt/oracle/oradata/suq/undotbs01.dbf
output file name=+DATADG/suq/datafile/undotbs01.dbf tag=TAG20150726T222829
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
channel ORA_DISK_1: starting datafile copy
input datafile file number=00004 name=/opt/oracle/oradata/suq/users01.dbf
output file name=+DATADG/suq/datafile/users01.dbf tag=TAG20150726T222829
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 26-JUL-15 sql statement: alter system archive log current contents of Memory Script:
{
switch clone datafile all;
}
executing Memory Script datafile 1 switched to datafile copy
input datafile copy RECID=3 STAMP=886113015 file name=+DATADG/suq/datafile/system01.dbf
datafile 2 switched to datafile copy
input datafile copy RECID=4 STAMP=886113015 file name=+DATADG/suq/datafile/sysaux01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=5 STAMP=886113015 file name=+DATADG/suq/datafile/undotbs01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=6 STAMP=886113015 file name=+DATADG/suq/datafile/users01.dbf
Finished Duplicate Db at 26-JUL-15 RMAN> exit Recovery Manager complete.
6.standby开启实时应用:
SQL> alter database recover managed standby database disconnect from session; SQL> alter database recover managed standby database cancel; SQL> alter database open read only; Database altered. SQL> alter database recover managed standby database using current logfile disconnect from session; Database altered.
注意:我在做到这一步的时候一開始发现主库怎么也不向备库发送归档文件,也没有不论什么报错信息。搞了非常长时间。后来将log_archive_dest_state_2又一次设置为enable后就正常了。
7.switch over。将备库转换为主库,分别在主库我备库进行角色转换:
主库: SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE; SWITCHOVER_STATUS
--------------------
SESSIONS ACTIVE 注:当SWITCHOVER_STATUS的值为TO STANDBY or SESSIONS ACTIVE的时候表示主库能够支持SWITCHOVER. SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN; Database altered. 备库: SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE; SWITCHOVER_STATUS
--------------------
SESSIONS ACTIVE 注:仅仅有SWITCHOVER_STATUS的值为TO PRIMARY or SESSIONS ACTIVE的状态时。表示备库当前支持switch over操作。 SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY with session shutdown; Database altered. SQL> select status from v$instance; STATUS
------------
MOUNTED SQL> alter database open; Database altered.
8.到这一步,rac的一个节点已经能够正常打开数据库了,可是节点2须要的redo,undo表空间都还没有。须要手工创建:
SQL> alter database add logfile thread 2 group 8 ('+DATADG/suq/datafile/redo08.log') size 50m;
Database altered.
SQL> alter database add logfile thread 2 group 9 ('+DATADG/suq/datafile/redo09.log') size 50m;
Database altered.
SQL> alter database add logfile thread 2 group 10 ('+DATADG/suq/datafile/redo10.log') size 50m;
Database altered.
SQL> create undo tablespace undotbs2 datafile '+DATADG/suq/datafile/undotbs02.dbf' size 20m;
Tablespace created.
SQL> alter database enable public thread 2;
Database altered.
SQL> @?
/rdbms/admin/catclust.sql
Package created.
Package body created.
PL/SQL procedure successfully completed.
View created.
Synonym created.
Grant succeeded.
View created.
Grant succeeded.
Synonym created.
View created.
Grant succeeded.
Synonym created.
View created.
Grant succeeded.
Synonym created.
View created.
Grant succeeded.
Synonym created.
View created.
Grant succeeded.
Synonym created.
View created.
Grant succeeded.
Synonym created.
View created.
Grant succeeded.
Synonym created.
View created.
Grant succeeded.
View created.
Grant succeeded.
Synonym created.
Synonym created.
Synonym created.
Synonym created.
Synonym created.
Synonym created.
Synonym created.
Synonym created.
Synonym created.
Synonym created.
Synonym created.
Synonym created.
View created.
Grant succeeded.
Synonym created.
View created.
Grant succeeded.
Synonym created.
PL/SQL procedure successfully completed.
节点2打开数据库。測试数据库是否正常:
[oracle@suq2 ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Mon Jul 27 09:54:00 2015 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to an idle instance. SQL> startup
ORACLE instance started. Total System Global Area 835104768 bytes
Fixed Size 2257840 bytes
Variable Size 553651280 bytes
Database Buffers 272629760 bytes
Redo Buffers 6565888 bytes
Database mounted.
Database opened.
SQL> SQL> select * from v$active_instances。 INST_NUMBER INST_NAME
----------- --------------------------------------------------
1 suq1:suq1 2 suq2:suq2 SQL> select * from v$Log; GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
1 1 35 52428800 512 1 NO CURRENT 288331 27-JUL-15 2.8147E+14
2 1 33 52428800 512 1 YES INACTIVE 281944 27-JUL-15 282047 27-JUL-15
3 1 34 52428800 512 1 YES ACTIVE 282047 27-JUL-15 288331 27-JUL-15
8 2 4 52428800 512 1 NO CURRENT 288227 27-JUL-15 2.8147E+14
9 2 2 52428800 512 1 YES INACTIVE 286810 27-JUL-15 286815 27-JUL-15
10 2 3 52428800 512 1 YES ACTIVE 286815 27-JUL-15 288227 27-JUL-15
8.此时的数据库是能够正常打开使用了,一般还需将參数文件写到asm中,并且此时的数据库都是本地管理,并没有注冊到grid中,还须要手工注冊:
[grid@suq1 admin]$ srvctl config database
[grid@suq1 admin]$
[grid@suq1 admin]$ crsctl stat res -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.BACKUP.dg
ONLINE ONLINE suq1
ONLINE ONLINE suq2
ora.DATADG.dg
ONLINE ONLINE suq1
ONLINE ONLINE suq2
ora.LISTENER.lsnr
ONLINE ONLINE suq1
ONLINE ONLINE suq2
ora.SYSTEMDG.dg
ONLINE ONLINE suq1
ONLINE ONLINE suq2
ora.asm
ONLINE ONLINE suq1 Started
ONLINE ONLINE suq2 Started
ora.gsd
OFFLINE OFFLINE suq1
OFFLINE OFFLINE suq2
ora.net1.network
ONLINE ONLINE suq1
ONLINE ONLINE suq2
ora.ons
ONLINE ONLINE suq1
ONLINE ONLINE suq2
ora.registry.acfs
ONLINE ONLINE suq1
ONLINE ONLINE suq2
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE suq2
ora.cvu
1 ONLINE ONLINE suq2
ora.oc4j
1 ONLINE ONLINE suq2
ora.scan1.vip
1 ONLINE ONLINE suq2
ora.suq1.vip
1 ONLINE ONLINE suq1
ora.suq2.vip
1 ONLINE ONLINE suq2 [oracle@suq1 ~]$ srvctl add database -d suq -o /u01/app/oracle/product/11.2.0/db_1
[oracle@suq1 ~]$ srvctl config database
suq
[oracle@suq1 ~]$ srvctl add instance -d suq -n suq1 -i suq1
[oracle@suq1 ~]$ srvctl add instance -d suq -n suq2 -i suq2 SQL> create spfile='+datadg' from pfile; File created.
[root@suq1 cssd]# srvctl modify database -d suq -p '+datadg/suq1/parameterfile/spfile.325.886161615'
[oracle@suq1 dbs]$ srvctl config database -d suq -a
Database unique name: suq
Database name:
Oracle home: /u01/app/oracle/product/11.2.0/db_1
Oracle user: oracle
Spfile: +datadg/suq1/parameterfile/spfile.325.886161615
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: suq
Database instances: suq1,suq2
Disk Groups:
Mount point paths:
Services:
Type: RAC
Database is enabled
Database is administrator managed
查看一下监听,有可能还须要改动services_name參数:
SQL> alter system set service_names=suq scope=both;
到此,单实例已经转换完毕了rac数据库。能够重新启动一下机器,看看数据库是否能自己主动启动,资源是否正常。
good luck。
使用dataguard将单实例数据库转换为rac数据库的更多相关文章
- Oracle 单实例 迁移到 RAC 实例 -- 使用RMAN 异机恢复
Oracle 官网有关单实例迁移到RAC的一个步骤说明: How to Convert 10g Single-Instance database to 10g RAC using Manual Con ...
- Django中把SQLite数据库转换为Mysql数据库的配置方法
我们在学习和开发Django的时候,一般是使用SQLite作为数据库.在正式讲网站部署上线是用MySQL数据库比较多.MySQL支持高并发的访问,而且相对于SQLite,MySQL性能更好.下面讲讲如 ...
- sqlite数据库转换为mysql数据库
SQLite工具我用的SQLiteStudio2.1.5 下载地址 http://sqlitestudio.pl/?act=download SQLiteStudio打开数据库文件,点工具->导 ...
- DataGuard 单实例到RAC搭建
背景简介: 本文为针对一次windows平台RAC数据库迁移至Linux平台RAC的笔记,基本步骤为: 1.搭建windows RAC到Linux 单实例数据库的DataGuard 2.做switch ...
- 【RAC】将单实例备份集恢复为rac数据库
[RAC]将单实例备份集恢复为rac数据库 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识, ...
- Oracle - 通过dg,完成单实例到rac的迁移
一.概述 本文将介绍如何给单实例搭建一个rac dg,以及如何对其进行角色转换,完成从单实例到rac的迁移.预先具备的知识(rac搭建,单实例-单实例dg搭建) 二.实验环境介绍 主库(已有数据库实例 ...
- Oracle 单实例数据库安装和real application clusters数据库安装的区别
在想了解Oracle单实例数据可和RAC数据库前,请确保你已经知道了数据库和实例的关系,如果不了解,请参考Oracle 数据库实例和数据库. 单实例数据库模式 单实例模式下,一个数据库只能通过一个实例 ...
- kingbaseES R3 集群备库转换为单实例库案例
案例说明: 在生产环境需要将集群中架构转换为单实例环境,本案例以备库转换为单实例库为案例,介绍了两种方案,一种在数据库数据量小的环境下采用 sys_dumpall 导出导入方式建立单实例库:另外一种是 ...
- RAC数据库的ORA-27123: Unable To Attach To Shared Memory Segment Linux-x86_64 Error: 22: Invalid argument
RAC数据库的 ORA-27123: Unable To Attach To Shared Memory Segment Linux-x86_64 Error: 22: Invalid argumen ...
随机推荐
- Python开发:网络编程
Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法. 高级别的网络 ...
- 九度oj 题目1102:最小面积子矩阵
题目描述: 一个N*M的矩阵,找出这个矩阵中所有元素的和不小于K的面积最小的子矩阵(矩阵中元素个数为矩阵面积) 输入: 每个案例第一行三个正整数N,M<=100,表示矩阵大小,和一个整数K接下来 ...
- 九度oj 题目1019:简单计算器
题目描述: 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值. 输入: 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之 ...
- 【Luogu】P3391文艺平衡树(Splay)
题目链接 ddosvoid和自为风月马前卒教了我这道题 他们好强啊 如果我们要反转区间[l,r] 我们首先把l的前驱旋转到根节点 再把r的后继旋转到根节点的右儿子 那么此时根节点的右儿子的左儿子所代表 ...
- 【Luogu】P1967货车运输(最大生成森林+倍增LCA)
题目链接 倍增LCA是个什么蛇皮原理啊,循环完了还得再往上跳一次才能到最近公共祖先 合着我昨天WA两次就是因为这个 建最大生成森林,因为图不一定是联通的,所以不一定是一棵树.这个地方用克鲁斯卡尔就好了 ...
- BZOJ3572 [Hnoi2014]世界树 【虚树 + 树形dp】
题目 世界树是一棵无比巨大的树,它伸出的枝干构成了整个世界.在这里,生存着各种各样的种族和生灵,他们共同信奉着绝对公正公平的女神艾莉森,在他们的信条里,公平是使世界树能够生生不息.持续运转的根本基石. ...
- BZOJ2707 [SDOI2012]走迷宫 【概率dp + tarjan + 高斯消元】
题目 Morenan被困在了一个迷宫里.迷宫可以视为N个点M条边的有向图,其中Morenan处于起点S,迷宫的终点设为T.可惜的是,Morenan非常的脑小,他只会从一个点出发随机沿着一条从该点出发的 ...
- UVa10539
http://vjudge.net/problem/UVA-10539 先打出来sqrt(n)以内的素数表,然后对于每个素数x,他对答案的贡献就是最大的p使x^p<=n,即log(x,n).注意 ...
- 【Codevs1922】骑士共存问题(最小割,二分图最大独立集转最大匹配)
题意: 在一个n*n个方格的国际象棋棋盘上,马(骑士)可以攻击的棋盘方格如图所示.棋盘上某些方格设置了障碍,骑士不得进入. 对于给定的n*n个方格的国际象棋棋盘和障碍标志,计算棋盘上最多可以放置多少个 ...
- Laravel 视图中的url
<a href="{{ url('url') }}">url</a> <a href="{{ action('StudentControll ...