`
sjk2013
  • 浏览: 2183438 次
文章分类
社区版块
存档分类
最新评论

RAC 修改 DB 实例名 步骤

 
阅读更多

在我之前的2Blog 里提到了RAC ASM实例名和 DB实例名的问题。

RACASM实例名节点的对应关系

http://blog.csdn.net/tianlesoftware/archive/2011/03/23/6272244.aspx

RAC 修改 ASM实例名 的步骤

http://blog.csdn.net/tianlesoftware/archive/2011/03/25/6275827.aspx

我们在这一篇,主要讨论RAC 平台下DB 实例名的修改问题。

对于单实例下DB 实例名的修改,可以使用NID命令。 这个在我的blog

RMAN 备份异机恢复 并创建新DBID

http://blog.csdn.net/tianlesoftware/archive/2011/03/11/6240983.aspx

的最后一部分有说明。 NID 命令会帮我们更新控制文件里的信息。 所以,如果不用NID命令,那么我们手工的用创建控制文件的方式来实现。

方法一:修改控制文件的方法来修改实例名的步骤:

1)关闭其他节点,只保留一个节点。在剩下的节点上,将控制文件生成到trace里。使用命令:

alter database backup control file to trace ;

生成trace 文件的好处的好处是我们可以通过这个trace文件看到控制文件的生成语句。 可以对其进行修改。

关于控制文件,具体参考:

Oracle 控制文件

http://blog.csdn.net/tianlesoftware/archive/2009/12/09/4974440.aspx

2 将第一步生成的trace文件复制一份成crctl.sql。修改这个这个文件中数据库的名称。 改成我们想设置的名称。

3)修改pfile文件。

4)关闭所有节点,

5)用新的pfile重新创建spfile

6)用修改之后的spfile,将其中一个节点启动到nomount状态。

7)重建控制文件:执行第二部修改过的sql脚本。 当然,也可以直接编写控制文件的创建脚本。 即忽略第一步和第二步。

8)修改tnsnames.ora listener.ora 文件

9)更新OCR信息

srvctl remove database -d <old_database_name>
srvctl add database -d <new_db_name> -o $ORACLE_HOME
srvctl add instance -d <new_db_name> -i <instance name on node 1> -n Node1
srvctl add instance -d <new_db_name> -i <instance name on node 2> -n Node2

10)启动所有节点。

方法二:使用NID命令修改实例名的方法:

1)将cluster_database设置为false,将节点1启动到mount,其他节点关闭。

2)使用NID 修改db name:

$nid target=sys/oracle dbname=dave

3)创建pfile,并修改相关参数,如listener.oratnsnames.ora,并生成新的spfile

4)更新OCR

srvctl remove database -d <old_database_name>
srvctl add database -d <new_db_name> -o $ORACLE_HOME
srvctl add instance -d <new_db_name> -i <instance name on node 1> -n Node1
srvctl add instance -d <new_db_name> -i <instance name on node 2> -n Node2

5)在其中一个节点上open resetlogs打开DB 其他节点正常启动

6)启动cluster_database 参数

我之前的的环境是实例名有点怪。 所以我们在这里将演示2种情况。 先将2个节点的实例名对应的方式。 然后修改下实例名。

. RAC 实例名相同,只修改每个节点的实例名

这个测试就是讲我们当前环境下的2个节点实例名换一下。

[oracle@rac1 u01]$ sh crs_stat.sh

Name Target State Host

------------------------------ ---------- --------- -------

ora.rac.db ONLINE ONLINE rac2

ora.rac.rac1.inst ONLINE ONLINE rac2

ora.rac.rac2.inst ONLINE ONLINE rac1

--两个节点上的名称反了,在第一个测试中将他们的顺序切换一下

ora.rac.taf.cs ONLINE ONLINE rac2

ora.rac.taf.rac1.srv ONLINE ONLINE rac2

ora.rac.taf.rac2.srv ONLINE ONLINE rac1

ora.rac1.ASM1.asm ONLINE ONLINE rac1

ora.rac1.LISTENER_RAC1.lsnr ONLINE ONLINE rac1

ora.rac1.gsd ONLINE ONLINE rac1

ora.rac1.ons ONLINE ONLINE rac1

ora.rac1.vip ONLINE ONLINE rac1

ora.rac2.ASM2.asm ONLINE ONLINE rac2

--ASM实例的,在之前的测试中已经更换过来了

ora.rac2.LISTENER_RAC2.lsnr ONLINE ONLINE rac2

ora.rac2.gsd ONLINE ONLINE rac2

ora.rac2.ons ONLINE ONLINE rac2

ora.rac2.vip ONLINE ONLINE rac2

因为不需要修改实例名,所以不需要重建控制文件,操作步骤和前面的列出来的相同。 把重建控制文件的那部分去掉就ok了。

在这里补充一点知识:

DB_NAME是数据库名,它的长度不能超过8个字节,超过8个会被截断。对于RAC环境,各个节点之间的DB_NAME都是相同的,INSTANCE_NAME不同。对于Data Guard环境,DB_NAME相同,DB_UNIQUE_NAME不同。

DB_NAME记录在datafileredo logcontrol file中。这个记录方式就是通过DBID因为DBID就是用DB_NAME加算法来生成的。

更多信息参考:

DBID,SID,DB_NAME,DB_DOMAIN,INSTANCE_NAME,DB_UNIQUE_NAME,SERVICE_NAMES 及监听参数的说明

http://blog.csdn.net/tianlesoftware/archive/2010/12/20/6086066.aspx

INSTANCE_NAME会影响进程的命名:

[oracle@rac1 u01]$ ps -ef |grep pmon

oracle 7453 26076 0 10:38 pts/2 00:00:00 grep pmon

oracle 28004 1 0 10:06 ? 00:00:00 asm_pmon_+ASM1

oracle 28844 1 0 10:06 ? 00:00:00 ora_pmon_rac2

[oracle@rac1 u01]$ export ORACLE_SID=rac2

[oracle@rac1 u01]$ sqlplus / as sysdba;

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Mar 28 10:24:41 2011

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, Real Application Clusters, OLAP and Data Mining options

SQL> select instance_name from v$instance;

INSTANCE_NAME

----------------

rac2

SQL> show parameter spfile

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

spfile string +DATA/rac/spfilerac.ora

SQL> show parameter db_name

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

db_name string rac

SQL> show parameter instance_name

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

instance_name string rac2

SQL> create pfile from spfile;

File created.

在上面的操作中,我们生成了pfile文件。 pfile和口令文件的名称和instance_name要保持一致 如果在生成时,没有写明目录,默认会生成到$ORACLE_HOME/dbs 下。

[oracle@rac1 u01]$ cd $ORACLE_HOME/dbs

[oracle@rac1 dbs]$ ls

ab_+ASM1.dat hc_+ASM1.dat hc_rac2.dat initdw.ora initrac2.ora orapwrac2 ab_+ASM2.dat hc_+ASM2.dat init+ASM1.ora init.ora orapw+ASM1

1.1 重名了pfile文件和口令文件, 并修改pfile文件instance_name参数

RACspfile 文件是保存在共享存储上的。 所以我们先讲这个共享存储上的spfile转成pfile 修改完之后,在转成spfile

重命名:

节点1

[oracle@rac1 dbs]$ mv initrac2.ora initrac1.ora

[oracle@rac1 dbs]$ mv orapwrac2 orapwrac1

节点2

[oracle@rac2 dbs]$ mv orapwrac1 orapwrac2

[oracle@rac2 dbs]$ mv initrac1.ora initrac2.ora

[oracle@rac2 dbs]$ cat initrac2.ora

SPFILE='+DATA/rac/spfilerac.ora'

节点2的参数文件是直接指向了我们的spfile,即共享位置上。 我这里只是修改了一下文件的名称。 指向的内容并没有改变。 在下一步,我们在节点1上用pfile 创建新的spfile就可以了。

修改pfile参数

initrac1.ora 文件里添加实例的信息:

[oracle@rac1 dbs]$ cat initrac1.ora |grep instance_name

rac1.instance_name=rac1

rac2.instance_name=rac2

1.2 shutdown 所有实例

[oracle@rac1 dbs]$ srvctl stop instance -d rac -i rac1

[oracle@rac1 dbs]$ srvctl stop instance -d rac -i rac2

[oracle@rac1 dbs]$ sh /u01/crs_stat.sh

Name Target State Host

------------------------------ ---------- --------- -------

ora.rac.db OFFLINE OFFLINE

ora.rac.rac1.inst OFFLINE OFFLINE

ora.rac.rac2.inst OFFLINE OFFLINE

ora.rac.taf.cs OFFLINE OFFLINE

ora.rac.taf.rac1.srv OFFLINE OFFLINE

ora.rac.taf.rac2.srv OFFLINE OFFLINE

ora.rac1.ASM1.asm ONLINE ONLINE rac1

ora.rac1.LISTENER_RAC1.lsnr ONLINE ONLINE rac1

ora.rac1.gsd ONLINE ONLINE rac1

ora.rac1.ons ONLINE ONLINE rac1

ora.rac1.vip ONLINE ONLINE rac1

ora.rac2.ASM2.asm ONLINE ONLINE rac2

ora.rac2.LISTENER_RAC2.lsnr ONLINE ONLINE rac2

ora.rac2.gsd ONLINE ONLINE rac2

ora.rac2.ons ONLINE ONLINE rac2

ora.rac2.vip ONLINE ONLINE rac2

1.3 用修改之后的pfile创建spfile

[oracle@rac1 u01]$ export ORACLE_SID=rac1

[oracle@rac1 u01]$ sqlplus / as sysdba;

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Mar 28 13:15:47 2011

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to an idle instance.

SQL> create spfile='+DATA/rac/spfilerac.ora' from pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initrac1.ora';

File created.

注意,这里的spfile 要指定到共享设备上,不然会默认创建到$ORACLE_HOME/dbs目录下。

1.4 更新OCR

[oracle@rac1 dbs]$ srvctl stop instance -d rac -i rac1

[oracle@rac1 dbs]$ srvctl stop instance -d rac -i rac2

[oracle@rac1 dbs]$ srvctl remove database -d rac

Remove the database rac? (y/[n]) y

[oracle@rac1 dbs]$ srvctl add database -d rac -o $ORACLE_HOME

[oracle@rac1 dbs]$ srvctl add instance -d rac -i rac1 -n rac1

[oracle@rac1 dbs]$ srvctl add instance -d rac -i rac2 -n rac2

[oracle@rac1 rac1]$ sh /u01/crs_stat.sh

Name Target State Host

------------------------------ ---------- --------- -------

ora.rac.db ONLINE ONLINE rac2

ora.rac.rac1.inst ONLINE ONLINE rac1

ora.rac.rac2.inst ONLINE ONLINE rac2

--名称修改过来了

ora.rac1.ASM1.asm ONLINE ONLINE rac1

ora.rac1.LISTENER_RAC1.lsnr ONLINE ONLINE rac1

ora.rac1.gsd ONLINE ONLINE rac1

ora.rac1.ons ONLINE ONLINE rac1

ora.rac1.vip ONLINE ONLINE rac1

ora.rac2.ASM2.asm ONLINE ONLINE rac2

ora.rac2.LISTENER_RAC2.lsnr ONLINE ONLINE rac2

ora.rac2.gsd ONLINE ONLINE rac2

ora.rac2.ons ONLINE ONLINE rac2

ora.rac2.vip ONLINE ONLINE rac2

1.5 正常启动所有实例

[oracle@rac1 dbs]$ srvctl start instance -d rac -i rac1

[oracle@rac1 dbs]$ srvctl start instance -d rac -i rac2

[oracle@rac1 rac1]$ sh /u01/crs_stat.sh

Name Target State Host

------------------------------ ---------- --------- -------

ora.rac.db ONLINE ONLINE rac2

ora.rac.rac1.inst ONLINE ONLINE rac1

ora.rac.rac2.inst ONLINE ONLINE rac2

--已经换过来了

ora.rac1.ASM1.asm ONLINE ONLINE rac1

ora.rac1.LISTENER_RAC1.lsnr ONLINE ONLINE rac1

ora.rac1.gsd ONLINE ONLINE rac1

ora.rac1.ons ONLINE ONLINE rac1

ora.rac1.vip ONLINE ONLINE rac1

ora.rac2.ASM2.asm ONLINE ONLINE rac2

ora.rac2.LISTENER_RAC2.lsnr ONLINE ONLINE rac2

ora.rac2.gsd ONLINE ONLINE rac2

ora.rac2.ons ONLINE ONLINE rac2

ora.rac2.vip ONLINE ONLINE rac2

1.6 验证:

节点1

[oracle@rac1 u01]$ export ORACLE_SID=rac1

[oracle@rac1 u01]$ sqlplus / as sysdba;

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Mar 28 13:51:21 2011

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, Real Application Clusters, OLAP and Data Mining options

SQL> show parameter instance_name

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

instance_name string rac1

节点2

[oracle@rac2 mapper]$ export ORACLE_SID=rac2

[oracle@rac2 mapper]$ sqlplus / as sysdba;

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Mar 28 13:52:42 2011

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, Real Application Clusters, OLAP and Data Mining options

SQL> show parameter instance_name

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

instance_name string rac2

SQL>

实验一的测试,结束。 在实验二中,我们将测试修改RAC的实例名,即重建控制文件。

. 使用NID修改RAC 实例名

在这个测试里,我们把的实例名从rac 修改成dave

2.1cluster_database 设置为false后,将节点1启动到mount状态,节点2关闭

[oracle@rac1 u01]$ export ORACLE_SID=rac1

[oracle@rac1 u01]$ sqlplus / as sysdba;

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Mar 28 15:40:38 2011

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> alter system set cluster_database=false scope=spfile;

System altered.

--要先设置该参数后,在将DB启动到mount状态,不然报如下错误:

--NID-00120: Database should be mounted exclusively

SQL> shutdown immediate

ORA-01109: database not open

Database dismounted.

ORACLE instance shut down.

SQL> startup mount;

ORACLE instance started.

Total System Global Area 285212672 bytes

Fixed Size 1218992 bytes

Variable Size 121636432 bytes

Database Buffers 159383552 bytes

Redo Buffers 2973696 bytes

Database mounted.

SQL>

关闭节点2

[oracle@rac1 admin]$ srvctl stop instance -d rac -i rac2

2.2使用NID 修改db name:

[oracle@rac1 admin]$ export ORACLE_SID=rac1

[oracle@rac1 admin]$ nid target=sys/oracle dbname=dave

DBNEWID: Release 10.2.0.1.0 - Production on Mon Mar 28 15:50:45 2011

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to database RAC (DBID=2334616217)

Connected to server version 10.2.0

Control Files in database:

+DATA/rac/controlfile/current.260.746634201

+FRA/rac/controlfile/current.256.746634203

Change database ID and database name RAC to DAVE? (Y/[N]) => y

--输入y

Proceeding with operation

Changing database ID from 2334616217 to 809910293

Changing database name from RAC to DAVE

Control File +DATA/rac/controlfile/current.260.746634201 - modified

Control File +FRA/rac/controlfile/current.256.746634203 - modified

Datafile +DATA/rac/datafile/system.256.746634087 - dbid changed, wrote new name

Datafile +DATA/rac/datafile/undotbs1.258.746634089 - dbid changed, wrote new name

Datafile +DATA/rac/datafile/sysaux.257.746634087 - dbid changed, wrote new name

Datafile +DATA/rac/datafile/users.259.746634089 - dbid changed, wrote new name

Datafile +DATA/rac/datafile/undotbs2.264.746634255 - dbid changed, wrote new name

Datafile +DATA/rac/tempfile/temp.263.746634229 - dbid changed, wrote new name

Control File +DATA/rac/controlfile/current.260.746634201 - dbid changed, wrote new name

Control File +FRA/rac/controlfile/current.256.746634203 - dbid changed, wrote new name

Instance shut down

Database name changed to DAVE.

Modify parameter file and generate a new password file before restarting.

Database ID for database DAVE changed to 809910293.

All previous backups and archived redo logs for this database are unusable.

Database is not aware of previous backups and archived logs in Recovery Area.

Database has been shutdown, open database with RESETLOGS option.

--注意,测试DB 已经被shutdown,需要使用resetlogs打开

Succesfully changed database name and ID.

DBNEWID - Completed succesfully.

2.3 在两个节点上修改pfile和相关参数,如口令文件,listener.oratnsnames.ora 等。

SQL> create pfile from spfile;

File created.

默认情况下,文件或生成在$ORACLE_HOME/dbs

最好指定到其他目录。 因为如果指定到了默认目录下,启动RAC的时候,就使用了这个参数,所有指定到其他位置就ok了。

节点1

[oracle@rac1 dbs]$ cat initrac1.ora

*.control_files='+DATA/rac/controlfile/current.260.746634201','+FRA/rac/controlfile/current.256.746634203'

*.core_dump_dest='/u01/app/oracle/admin/rac/cdump'

*.db_name='dave'

rac1.instance_name='dave1'

rac2.instance_name='dave2'

dave2.instance_number=2

dave1.instance_number=1

rac2.instance_number=2

rac1.instance_number=1

*.log_archive_dest_1='LOCATION=+FRA/rac/'

*.remote_listener='LISTENERS_RAC'

*.undo_management='AUTO'

*.user_dump_dest='/u01/app/oracle/admin/rac/udump'

...

这里我省略了一些内容,我修改了3个参数,像其他一些有关目录的参数,没有修改。

[oracle@rac1 dbs]$ mv initrac1.ora initdave1.ora

[oracle@rac1 dbs]$ mv orapwrac1 orapwdave1

检查下tnsnames.ora listener.ora, 如果有变跟,就修改一下。

节点2

[oracle@rac2 dbs]$ mv initrac2.ora initdave2.ora

[oracle@rac2 dbs]$ mv orapwrac2 orapwdave2

修改指定的映射文件

[oracle@rac2 dbs]$ cat initdave2.ora

SPFILE='+DATA/rac/spfiledave.ora'

检查下tnsnames.ora listener.ora, 如果有变跟,就修改一下。

2.4 重新创建spfile

SQL> create spfile='+DATA/rac/spfiledave.ora' from pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initdave1.ora';

2.5 更新OCR信息

[oracle@rac1 admin]$ srvctl remove database -d rac

Remove the database rac? (y/[n]) y

[oracle@rac1 admin]$ srvctl add database -d dave -o $ORACLE_HOME

[oracle@rac1 admin]$ srvctl add instance -d dave -i dave1 -n rac1

[oracle@rac1 admin]$ srvctl add instance -d dave -i dave2 -n rac2

注意一点,如果在实例上配置了Service sid TAF,那么删除db也会删除这个TAF的配置,需要重新配置。

具体参考:

Oracle RAC Failover 详解

http://blog.csdn.net/tianlesoftware/archive/2010/03/03/5340788.aspx

2.6 启动所有实例

节点1

[oracle@rac1 u01]$ export ORACLE_SID=dave1

[oracle@rac1 u01]$ sqlplus / as sysdba;

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Mar 28 17:01:12 2011

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to an idle instance.

SQL> startup mount;

ORACLE instance started.

Total System Global Area 285212672 bytes

Fixed Size 1218992 bytes

Variable Size 88082000 bytes

Database Buffers 192937984 bytes

Redo Buffers 2973696 bytes

Database mounted.

SQL> alter database open resetlogs;

Database altered.

SQL> select name from v$database;

NAME

---------

DAVE

SQL> select instance_name from v$instance;

INSTANCE_NAME

----------------

dave1

SQL> select instance_name from gv$instance;

INSTANCE_NAME

----------------

dave1

dave2

在节点1上发现一个问题:

SQL> show parameter spfile

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

spfile string

我们直接startup 的时候,使用的是本地的pfile文件,而不是共享设备上的spfile

按正常情况,先是找spfile,在找pfile。因为我们本地没有spfile,所以就使用本地的pfile启动了。 而对于RAC 环境,需要使用共享设置上的spfile 所以这里我们还是需要将$ORACLE_HOME/dbspfile 文件,改成指向共享设备的指针。

[oracle@rac1 dbs]$ cat initdave1.ora

SPFILE='+DATA/rac/spfiledave.ora'

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORACLE instance started.

Total System Global Area 285212672 bytes

Fixed Size 1218992 bytes

Variable Size 88082000 bytes

Database Buffers 192937984 bytes

Redo Buffers 2973696 bytes

Database mounted.

Database opened.

SQL> show parameter spfile

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

spfile string +DATA/rac/spfiledave.ora

使用了共享设备的spfile,这个问题搞定。

在节点2上直接启动即可:

[oracle@rac2 mapper]$ export ORACLE_SID=dave2

[oracle@rac2 mapper]$ sqlplus / as sysdba;

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Mar 28 17:04:28 2011

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to an idle instance.

SQL> startup

ORACLE instance started.

Total System Global Area 285212672 bytes

Fixed Size 1218992 bytes

Variable Size 88082000 bytes

Database Buffers 192937984 bytes

Redo Buffers 2973696 bytes

Database mounted.

Database opened.

SQL> select name from v$database;

NAME

---------

DAVE

SQL> select instance_name from v$instance;

INSTANCE_NAME

----------------

dave2

SQL>

不要忘记启动该参数:

SQL> alter system set cluster_database=true scope=spfile;

System altered.

SQL> show parameter cluster_database

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

cluster_database boolean TRUE

cluster_database_instances integer 2

SQL>

[oracle@rac1 dbs]$ sh /u01/crs_stat.sh

Name Target State Host

------------------------------ ---------- --------- -------

ora.dave.dave1.inst ONLINE ONLINE rac1

ora.dave.dave2.inst ONLINE ONLINE rac2

ora.dave.db ONLINE ONLINE rac2

ora.rac1.ASM1.asm ONLINE ONLINE rac1

ora.rac1.LISTENER_RAC1.lsnr ONLINE ONLINE rac1

ora.rac1.gsd ONLINE ONLINE rac1

ora.rac1.ons ONLINE ONLINE rac1

ora.rac1.vip ONLINE ONLINE rac1

ora.rac2.ASM2.asm ONLINE ONLINE rac2

ora.rac2.LISTENER_RAC2.lsnr ONLINE ONLINE rac2

ora.rac2.gsd ONLINE ONLINE rac2

ora.rac2.ons ONLINE ONLINE rac2

ora.rac2.vip ONLINE ONLINE rac2

小结:

在这篇文章里,整理了2种方法,其实对于生产环境,很少会去修改实例名。 所以我这里也仅是测试。

这个实验本来是上周五做的。结果SA的同事直接把ESX服务器给重启了。RAC的共享存储又没有起来。 下班了也找不到人,周末又要回合肥。就懒得折腾了。 做了7个小时,回来又是7个小时。人都散架了。 老了啊。 回来的时候是卧铺的上铺。 没票了。 在那狭小的空间窝了6个多小时。手机又给玩没了电。

感慨:做长途旅行必备的工具:手机,足够的电源。 最好是3+块电板。 我坐那趟车是从新疆乌鲁木齐到杭州的,从那边过来要近3天的时间。 这么长时间,不把人坐疯了。

---------------------------------------------------------------------------------------------------

Blog http://blog.csdn.net/tianlesoftware

网上资源: http://tianlesoftware.download.csdn.net

相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx

DBA1 群:62697716(); DBA2 群:62697977() DBA3 群:62697850()

DBA 超级群:63306533(); DBA4 群: 83829929 DBA5群: 142216823

聊天 群:40132017

--加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics