本文为您介绍了DB2数据库从AIX系统迁移到LINUX的详细方法进行介绍,对在AIX系统上的操作和在LINUX上的操作进行了分别说明,供您参考。
假设我们有一个IBM DB2数据库,这个数据库里有很多表(可能上百张甚至更多),又有很多索引、外键约束、触发器。最要命的是还有一些含有自增字段的表(含有GENERATED ALWAYS AS IDENTITY定义的字段的表)。我们也没有关于这些数据库对象的准确创建脚本(笔者经常碰到客户有这种情况)。
现在我们要把这个数据库迁移到不同的操作系统(比如从AIX到LINUX),我们应该怎么办呢?因为操作系统不同,所以使用BACKUP/RESTORE命令显然是不行了。那么是不是可以使用db2move命令呢?也不行,首先db2move命令没有办法迁移索引、外键约束、触发器,更不能迁移含自增字段数据的表。那么对每张表都进行export/import操作?天哪,这简直是一场灾难,几百张表要做到什么时候啊,更何况import命令并不能保证自增字段的数据和原来一模一样!下面笔者提供一种方案,感觉还是比较奏效的
假设数据库名为sample,运行在AIX上,我们的目标是迁移到LINUX上。为简单起见,所有数据库对象都在DB2INST1模式下,db2inst1用户拥有必须的所有权限,密码也是db2inst1
(一)AIX系统上的操作:
1) 首先我们用db2look命令得到数据库对象的DDL脚本:
db2look -d SAMPLE -z DB2INST1 -e -o sample.ddl -i db2inst1 -w db2inst1
2) 使用文本编辑器编辑生成的sample.ddl,将创建表及索引的脚本语句,创建外键约束的语句,创建触发器的语句分开,制作成三个DDL脚本,分别是
sample_tabs.ddl
sample_foriegnkeys.ddl
sample_triggers.ddl#p#
3) 使用下面的SQL语句生成导出所有数据的脚本:exort.sql
db2 “select ‘export to ‘ || rtrim(tabname) || ‘.ixf of ixf select * from ‘ || rtrim(tabname) || ‘;’ from syscat.tables where tabschema = ‘DB2INST1′” > export.sql
4) 编辑生成的export.sql,把头和尾那些信息去掉,只保留必要的export命令.
5) 使用下面的SQL语句生成倒入所有数据的脚本(我们使用LOAD命令,而且必须使用)
db2 “select ‘load from ‘ || rtrim(tabname) || ‘.ixf of ixf insert into ‘ || rtrim(tabname) || ‘;’ from syscat.tables where tabschema = ‘DB2INST1′” > load.sql
6) 编辑生成的load.sql,把头和尾的信息去掉,只保留必要的load命令.搜索sample_tabs.ddl文件中哪些表含有自增字段(含有GENERATED ALWAYS AS IDENTITY定义的字段的表),并把load.sql中含有自增字段的表的load命令加入modified by identityoverride语句(加在of ixf和 insert之间,例如:
load from MYTABLE.ixf of ixf modified by identityoverride insert into MYTABLE;)
注意:load命令中的modified by identityoverride可以保证导入数据时那些自增字段的值和原数据库中的数据一致.
7) 使用db2 -tvf export.sql命令,导出所有表的数据。
(二)将sample_tabs.ddl,sample_foriegnkeys.ddl,sample_triggers.ddl,load.sql及所有导出的.ixf数据文件复制到LINUX机器上.
(三)LINUX系统上的操作:
1) 使用CREATE>
如何为SAP安装多个DB2 9数据库服务器?
DB2forLinux,Unix,andWindowsVersion8之前,SAP客户只能在一台物理机器上安装每个DB2版本的一个拷贝,因为安装路径是硬编码的。 尽管DB2Version8提供了替换的修订包映像,但是这些映像只用于测试,在生产环境中SAP不支持它们。 对于DB29,客户可以在一台物理机器上安装多个DB2软件拷贝。 数据库的安装是相互独立的。 它们可以是不同级别的,可以安装在任何有效路径上。 每个拷贝可以独立更新,而不会相互影响。 所有装有DB29的SAPR/33.1I版本的环境都支持这一特性。 另外,从SAPNetWeaver7.1开始,SAP安装程序充分利用这个特性,将DB2软件安装在实例所有者的主目录中。 本文解释如何在一台Linux或UNIX机器上设置多个DB2系统,并让SAP应用程序与安装的不同数据库软件一起运行。 在一个系统上安装多个DB2拷贝多个DB29拷贝共存的好处对于DB29,客户可以在主机上多次安装DB2软件,并给一个SAPDB2实例分配不同的DB2安装。 安装的每个DB2软件实例都独立运行。 另外,以完整的安装映像形式提供每个修订包,这样就可以选择是在以前的映像上安装它,还是作为新映像单独安装。 有了这一改进,客户就可以让不同的SAP应用程序运行在同一主机不同级别的DB2上。 例如,您可以用一个新的修订包部署和测试SAP应用程序,然后将生产系统转移到新安装上。 它还提供了一种轻松地返回到以前的补丁级别的方法。 每个实例都可以独立地更新。 您不需要将修订包应用于以前的版本上并应用于所有实例,但是老方法仍然得到支持。 例如,假设客户有实例I1、I2和I3。 他安装DB29的最初版本并相应地更新所有实例。 然后安装DB29FixPack1;他可以选择在已经安装的最初版本上安装,或者在另一个路径上安装。 然后,将实例I1和I2指向新路径进行更新。 然后,在新路径上安装DB29FixPack2。 此时,也能够通过指向新路径将包括I3在内的所有实例都更新为FixPack2。 可以在同一台物理机器上同时安装Version8和Version9,也可以安装Version9的多个级别的修订包。 与以前的DB2版本的差异这个新特性使DB2出现了许多变化:不能使用操作系统实用程序(例如paged、rpm、sMIT或sisal)查询DB2产品。 相反,要使用一个新命令db2ls跟踪机器上安装的DB2软件。 它提供关于安装的DB2产品的信息,包括版本和安装的时间。 示例:%/opt/ibm/db2/V9.1_01/install/db2lsInstallPathLevelFixPackSpecialInstallNumberInstallDate---------------------------------------------------------------/opt/ibm/db2/V9.1_019.1.0.00TueJul1114:28EDT/opt/ibm/db2/V9.1_029.1.0.11ThuSep716:52EDT用户不能使用本机操作系统实用程序(例如ramp或smit)卸载DB2软件。 要想卸载DB2产品,应该运行db2_deinstall命令,这个命令位于安装目录下。 示例:%/opt/ibm/db2/V9.1_01/install/db2_deinstall-a
DB2如何卸载?
Following are the steps to remove DB2 from Unix/ DB[首先删除数据库](1)su - db2inst1(2)db2 list db directory(3)db2 drop db Instance【删除实例】(1)su - root(2)cd /instance(3)./db2ilist(4)./db2idrop -f das【删除das】(1)su - root(2)cd /instance(3)./daslist(4)./dasdrop 【卸载】(1)su - root
linux 如何编译安装mysql?
展开全部不同linux版本,安装不同版本的mysql方法各不相同,下面以CentOS 6.5编译安装MySQL 5.6.16介绍:一.准备工作安装各个依赖包[root@WebServer ~]# yum -y install gcc gcc-devel gcc-c++ gcc-c++-devel autoconf* automake* zlib* libxml* ncurses-devel ncurses libgcrypt* libtool* cmake openssl openssl-devel bison bison-devel unzip 2.新建mysql组和用户[root@WebServer ~]# groupadd mysql[root@WebServer ~]# useradd -g mysql -s /sbin/nologin mysql 3.目录准备[root@WebServer ~]# mkdir -p /webserver/mysql/etc[root@WebServer ~]# mkdir -p /webserver/mysql/data[root@WebServer ~]# mkdir -p /webserver/mysql/tmp[root@WebServer ~]# chown -R /webserver/mysql 4.解压MySQL并进入安装目录[root@WebServer ~]# tar zxvf [root@WebServer ~]# cd mysql-5.6.16 二.编译并安装1.编译MySQL[root@WebServer mysql-5.6.16]# cmake -DCMAKE_INSTALL_PREFIX=/webserver/mysql \> -DSYSCONFDIR=/webserver/mysql/etc \> -DMYSQL_DATADIR=/webserver/mysql/data \> -DMYSQL_TCP_PORT=3306 \> -DMYSQL_UNIX_ADDR=/webserver/mysql/tmp/ \> -DMYSQL_USER=mysql \> -DEXTRA_CHARSetS=all \> -DWITH_READLINE=1 \> -DWITH_SSL=system \> -DWITH_EMBEDDED_SERVER=1 \> -DENABLED_LOCAL_INFILE=1 \> -DWITH_INNOBASE_STORAGE_Engine=1 \> -DENABLE_DOWNLOADS=1 2.如果出现以下错误则需要[root@WebServer mysql-5.6.16]# cd source_downloads/[root@WebServer source_downloads]# unzip [root@WebServer source_downloads]# ./configure[root@WebServer source_downloads]# make[root@WebServer source_downloads]# cd .. 然后删除mysql-5.6.16目录下的重新使用cmake进行编译安装2.安装[root@WebServer mysql-5.6.16]# make && make install 编译过程会比较漫长,编译时间取决于机器的性能三配置1.客户端库文件的链接(未执行此步骤的话,在PHP编译时会提示找不到MySQL文件)[root@WebServer mysql-5.6.16]# ln -s /webserver/mysql/lib/.18 /usr/lib64/.18 ps:我使用的是64位CentOS,如果使用的是32位请使用ln -s /webserver/mysql/lib/.18 /usr/lib/.18 启动文件的配置[root@WebServer mysql-5.6.16]# cp support-files/ /etc/init.d/mysqld[root@WebServer mysql-5.6.16]# chmod +x /etc/init.d/mysqld[root@WebServer mysql-5.6.16]# vim /etc/init.d/mysqldbasedir=/webserver/mysqldatadir=/webserver/mysql/data//修改以上这2行的路径即可 3.设置MySQL配置文件[root@WebServer mysql-5.6.16]# cp support-files/ /webserver/mysql/etc/[root@WebServer mysql-5.6.16]# rm -rf /etc/[root@WebServer mysql-5.6.16]# ln -s /webserver/mysql/etc/ /etc/ 4.初始化数据库[root@WebServer mysql-5.6.16]# cd /webserver/mysql[root@WebServer mysql]# ./scripts/mysql_install_db --user=mysql --basedir=/webserver/mysql --datadir=/webserver/mysql/data 5.链接MySQL命令(这一步可以让我们方便很多,可以不用写出命令的路径,也可以写入/etc/profile的PATH中)[root@WebServer ~]# cd /usr/sbin[root@WebServer sbin]# ln -s /webserver/mysql/bin/* . 6.启动MySQL并设置为开机启动[root@WebServer sbin]# service mysqld start ;chkconfig mysqld onStarting MySQL.. SUCCESS! 7.设置MySQL root用户的密码[root@WebServer ~]# mysqladmin -u root password 这里将MySQL的root密码设置为,强烈不建议将数据库的密码设的简单8.删除用户密码为空的用户[root@WebServer ~]# mysql -u root -pEnter password:mysql> use mysql;mysql> select Host,User,Password from user;+-----------+------+-------------------------------------------+| Host| User | Password|+-----------+------+-------------------------------------------+| localhost | root | *6BB4837EBEE4568DDA7DC67ED2CA2AD9 || webserver | root ||| 127.0.0.1 | root ||| ::1| root ||| localhost |||| webserver |||+-----------+------+-------------------------------------------+6 rows in set (0.00 sec)mysql> delete from user where password=;Query OK, 5 rows affected (0.00 sec)mysql> flush PRIVILEGES;Query OK, 0 rows affected (0.00 sec)mysql> select Host,User,Password from user;+-----------+------+-------------------------------------------+| Host| User | Password|+-----------+------+-------------------------------------------+| localhost | root | *6BB4837EBEE4568DDA7DC67ED2CA2AD9 |+-----------+------+-------------------------------------------+1 row in set (0.00 sec)mysql> exit;完毕。
发表评论