源码先锋

源码先锋

部署Oracle 19C RAC

admin 163 107

Oracle19CRAC是一个具有高稳定性、高可用性、可扩展、高安全性的数据库实现方式,可以满足业务的发展需要。

Oracle19CRAC环境在数据库和实例之间存在一对多的关系,Oracle19CRAC环境可以有多个实例,这些实例访问共享存储上的一组存储文件。集群的每个节点都本地安装了网格基础设施GI(Grid),OracleClusterware和Oracle自动存储管理(ASM)一起构成了Oracle的网格基础结构。Oracle19CRAC的实例是一组处理数据库文件的进程和内存,缓存融合CacheFusion是ORACLERAC(RealApplicationCluster)集群中的一种无磁盘缓存一致性机制,它直接把数据库的副本从持有实例的内存缓存提供给请求实例的内存缓存。缓存融合和集群接口都使用专用网络互连进行集群节点间的通信。

Oracle19CRAC安装步骤如下:

1.软件下载:

从Oracle官网下载软件:

_193000_grid_home

_193000_db_home

_193000_examples

下载完成后放入创建出来的相应目录中。

jdk解压放入/usr/local/,并重命名成java目录。

_193000_grid_home放到创建后的$GRID_HOME变量设置的目录中。

_193000_db_home放入之后设置的Oracle安装目录$ORACLE_HOME变量的目录中。

注意:下载后的安装软件只需放入一个Oracle节点即可。一般我是放置到racnode1的节点相应目录。

2.主机规划及网络、网口规划:

操作系统:(7.6.1810)

Oraclerac1:192.168.163.149(ens33)192.168.239.149(ens34)用户名:root,密码:(实验暂时用简单密码,生产需更换成复杂密码)

Oraclerac2:192.168.163.150(ens33)192.168.239.150(ens34)用户名:root,密码:(实验暂时用简单密码,生产需更换成复杂密码)

ens33(NAT)设置成仅NAT网络地址转换模式,设置成Public公共网络的IP地址。客户端连接的时候直接连接、对外提供服务访问公共网络IP地址。客户端软件一般连接SCAN(SingleClientAccessNetwork)的地址。

ens37(仅主机)设置成仅主机模式,设置成Private私有网络的IP地址,用来提供内网节点间通信、集群管理和CacheFusion缓存融合、OracleAutoStorageManage(ASM)自动存储管理的功能。

Openfiler1:共享存储设备,这里采用openfiler软件模拟的共享存储。192.168.163.151(eth0)(关闭外网)192.168.239.151(eth1)用户名:root,密码:(实验暂时使用简单密码,生产需更换成复杂密码)

3.网络规划:

网卡ens33连接公共网络,使用IP地址段是192.168.163.128/24网关使用192.168.163.2模拟的Windows10电脑客户端使用192.168.163.1的IP地址。

网卡ens34用于oraclerac专用互连和网络存储服务器以便进行共享iscsi访问。供Oracle用来传输clustermanager和cachefusion的相关数据,使用的IP地址段是192.168.239.128/24网关使用192.168.239.2。

4.存储规划:

存储(openfiler):192.168.239.151(eth1)(仅主机)用户名:root,密码:自己设置。

WebadministratorGUIURL::openfiler密码:password(这个WEBUI界面的用户名和密码是默认的)

5.IP规划:

其中2个节点的RAC,分成racnode1和racnode2。

还有一个存储节点是openfiler1。以下文件是/etc/hosts的内容:

192.168.163.149

192.168.163.150

192.168.239.149

192.168.239.150

192.168.163.151

192.168.239.151

192.168.163.152

192.168.163.153

192.168.163.154

192.168.163.155

192.168.163.156

注意:

节点配置:

节点racnode1和racnode2都是2核心8G内存2000G(不立即分配磁盘)的配置。

数据库集群名称是racdb,实例名是racdb1和racdb2。

网络配置:

racnode1节点公网IP:192.168.163.149私网IP:192.168.239.149虚拟IP:192.168.163.152

racnode2节点公网IP:192.168.163.150私网IP:192.168.239.150虚拟IP:192.168.163.153

openfiler1节点公网IP:192.168.163.151私网IP:192.168.239.151虚拟IP:不需要。openfiler1一般网卡eth1公网IP地址可以设置ONBOOT=no。存储走内部网络,可以提高网络传输速度和稳定性,公网关闭即可。

SCAN名称是:racnode-cluster-scanIP地址是:192.168.163.154~156。

6.Oracle软件组件规划:

软件组件分成两种:GridInfrastructure和OracleRAC组件。

GridInfrastructure组件:操作系统用户是grid,主组是oinstall,辅助组是asmadmin、asmdba、asmoper。主目录路径是/home/grid。Oracle基目录设置是/u01/app/grid,Oracle主目录设置是/u01/app/19.3.0.0/grid。

OracleRAC组件:操作系统用户是oracle,主组是oinstall,辅助组是dba、oper、asmdba。Oracle主目录是/home/oracle。Oracle基目录是/u01/app/oracle,Oracle主目录设置是/u01/app/oracle/product/19.3.0.0/dbhome_1。

7.存储组件规划:

存储组件分成3种:OCR/VT(集群注册表/表决磁盘VotingDisk)、数据库文件、快速恢复区(FRA)。

存储组件文件系统采用ASM(OracleAutoStorageManager)自动存储管理。

卷大小OCR/VT设置3块100G的卷大小,ASM卷组名是+CRS,ASM冗余级别是Normal。在Openfiler中的卷组名分别是racdb-crs1、racdb-crs2、racdb-crs3。

卷大小数据文件设置3块400G的卷大小,ASM卷组名是+DATA,ASM冗余级别是Normal。在Openfiler中的卷组名分别是racdb-data1、racdb-data2、racdb-data3。

卷大小快速恢复区设置3块100G的卷大小,ASM卷组名是+FRA,ASM冗余级别是Normal。在Openfiler中的卷组名分别是racdb-fra1、racdb-fra2、racdb-fra3。

Oracle中冗余方式分成External、Normal、High等。三种模式需要的磁盘组中磁盘分别为1、3、5。

其中External代表使用外部共享存储设备或者是磁盘的系统底层RAID实现数据高可用。

其中Normal代表正常的冗余模式。提供2份镜像来保护数据(镜像数据一次),有效磁盘空间是所有磁盘设备空间总和的1/2。

其中High代表高安全性的冗余模式。提供3份镜像来保护数据(镜像数据2次),用来提高性能和数据的安全,最少需要3块硬盘。有效磁盘空间是所有磁盘设备空间总和的1/3。冗余级别提高了,是以牺牲硬件的代价来保证的。

本次安装我采用openfiler软件虚拟出9个iscsi-target中划分的LUN分区,分别3块磁盘充当CRS、DATA数据库文件、FRA快速恢复区文件。

CRS的磁盘是racdb-crs1~3,DATA数据库文件的磁盘是racdb-data1~3、快速恢复区FRA的磁盘是racdb-fra1~3。

8.网卡IP配置如下:

[root@racnode1~]BOOTPROTO=dhcp

BOOTPROTO=none

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

ONBOOT=no

ONBOOT=yes

IPADDR=192.168.163.149

NETMASK=255.255.255.0

GATEWAY=192.168.163.2

DNS2=202.106.46.151

DNS1=192.168.163.149

DNS2=192.168.163.150

[root@racnode1~]BOOTPROTO=dhcp

BOOTPROTO=none

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

ONBOOT=no

ONBOOT=yes

IPADDR=192.168.239.149

NETMASK=255.255.255.0

DNS1=192.168.163.149

DNS2=192.168.163.150

9.关闭网卡IPV6设置:

sysctl-p

systemctldisableNetworkManager

10.用户和组的说明:

安装过程中涉及到10个用户组和用户,说明如下:

组角色权限

oinstall安装和升级ORACLE软件

dbasysdba创建、删除、修改、启动、关闭数据库,切换日志归档模式,备份恢复数据库

opersysoper启动、关闭、修改、备份、恢复数据库,修改归档模式

asmdbasysdba自动存储管理管理ASM实例

asmopersysoper自动存储管理启动、停止ASM实例

asmadminsysadmin挂载、卸载磁盘组,管理其他存储设备

backupdbasysbackup启动关闭和执行备份恢复(19c)

dgdbasysdg管理DataGuard(19c)

kmdbasyskmsyskm加密管理相关操作

racdbarac管理

11.用户创建和密码设置:

/usr/sbin/groupadd-g50001oinstall

/usr/sbin/groupadd-g50002dba

/usr/sbin/groupadd-g50003oper

/usr/sbin/groupadd-g50004backupdba

/usr/sbin/groupadd-g50005dgdba

/usr/sbin/groupadd-g50006kmdba

/usr/sbin/groupadd-g50007asmdba

/usr/sbin/groupadd-g50008asmoper

/usr/sbin/groupadd-g50009asmadmin

/usr/sbin/groupadd-g50010racdba

/usr/sbin/useradd-u50011-goinstall-Gdba,asmdba,asmoper,asmadmin,racdbagrid

/usr/sbin/useradd-u50012-goinstall-Gdba,oper,backupdba,dgdba,kmdba,asmdba,asmadmin,racdbaoracle

echo"oracle"|passwd--stdinoracle(实验暂时用简单密码,生产需更换成复杂密码)

echo"oracle"|passwd--stdingrid(实验暂时用简单密码,生产需更换成复杂密码)

chage-M-1grid

12.RAC两个节点和存储节点都需要设置主机名进行/etc/hosts文件修改:

注意:不能出现环回(loopback)地址。

vim/etc/:

yuminstallbind*bind-utilsbind-chroot-y

cp-rp/usr/share/doc//sample/var/*/var/named/chroot/var/

编辑主配置文件,添加876的zone参数

vim/var/named/chroot/etc/:

options

{

directory"/var/named";

listen-onport53{any;};

allow-query{any;};

};

zone"876"{

typemaster;

file"876";

};

zone"163.168.192."{

typemaster;

file"192.168.163.ptr";

};

zone"239.168.192."{

typemaster;

file"192.168.239.ptr";

};

新建876的域名解析文件

vim/var/named/chroot/var/named/876

$TTL1D

@(

0;serial

1D;refresh

1H;retry

1W;expire

3H);minimum

NS@

配置DNS反向解析

拷贝配置文件模板,新建域名解析反向解析文件

cp-p/var/named/chroot/var/named//var/named/chroot/var/named/192.168.239.ptr

:

$TTL1D

@(

0;serial

1D;refresh

1H;retry

1W;expire

3H);minimum

@

149

150

151

禁用bind默认启动方式,改用bind-chroot方式启动

systemctlstopnamed

systemctlstartnamed-chroot

systemctlrestartnamed-chroot

14.两个节点(racnode1和racnode2)和存储节点关闭selinux和系统防火墙:

systemctlstopfirewalld

mv/etc//root

vim/etc/ssh/:

UseDNSno

LoginGraceTime0

systemctlrestartsshd

17.配置共享存储openfiler:

openfiler汉化:

使用Vmwareworkstations软件创建虚拟机,添加另外的磁盘设备。

下载_64-的安装包和

汉化包,并且按照需要进行共享存储模拟软件的汉化。

登录图形界面:

浏览器地址栏中输入

输入账号:openfiler

输入密码:password

配置openfiler存储过程,需要有openfiler使用经验。只要映射出9个LUN分区即可。

18.两个节点(racnode1和racnode2)设置开机自动登录和挂载:

vim/etc//,在文件末尾添加以下内容:

/usr/bin/systemctlenableiscsid

/usr/bin/systemctlenableiscsi

/usr/bin/systemctldaemon-reload

/usr/bin/systemctlstartiscsid

/usr/bin/systemctlstartiscsi

/usr/sbin/:3260

/usr/bin/systemctlstartiscsid

/usr/bin/systemctlstartiscsi

/usr/bin/systemctlenableiscsid

/usr/bin/systemctlenableiscsi

if[`/usr/bin/|grep'received'|awk-F'''{print$4}'`=3][`/usr/sbin/

:3260|wc-l`=9];then

/usr/sbin/::3260-l;

/usr/sbin/::3260-l;

/usr/sbin/::3260-l;

/usr/sbin/::3260-l;

/usr/sbin/::3260-l;

/usr/sbin/::3260-l;

/usr/sbin/::3260-l;

/usr/sbin/::3260-l;

/usr/sbin/::3260-l;

else

exit0;

fi

/usr/sbin/oracleasmscandisks

/usr/sbin/oracleasmlistdisks

vim/usr/lib/systemd/system/,末尾添加上:

[Install]

WantedBy=

vim/etc/iscsi/

=manual

cp-p/etc/redhat-release{,.bak}

wq!保存退出

21.两个节点(racnode1和racnode2)引用兼容性系统变量

systemctlstopavahi-daemon

cp-p/etc/sysconfig/network{,.bak}

cp-p/etc/default/grub

grub2-mkconfig-o/boot/grub2/

systemctlstopntpd

systemctlstopchronyd

rm-rf/etc/

26.两个节点(racnode1和racnode2)依赖包配置及固定屏幕分辨率

cp-p/etc/security/{,.bak}

cp-p/etc//login{,.bak}

cp-p/etc/{,.bak}

sysctl-p

30.两个节点(racnode1和racnode2)扩容swap空间

ddif=/dev/zeroof=/home/oracle/swapfilebs=1Mcount=8192

chmod0644/home/oracle/swapfile

swapon-s

31.两个节点(racnode1和racnode2)设置swap文件开机自启动

设置开机自启动

blkid/home/oracle/swapfile

_261/java

cp-p/etc/profile{,.bak}

source/etc/profile

35.两个节点(racnode1和racnode2)创建grid用户登录脚本

_profile{,.bak}

39;

exportORACLE_SID=+ASM1

exportJAVA_HOME=/usr/local/java

exportORACLE_HOSTNAME=

exportORACLE_BASE=/u01/app/grid

exportGRID_HOME=/u01/app/19.3.0.0/grid

exportORACLE_HOME=/u01/app/19.3.0.0/grid

exportORACLE_PATH=/u01/app/oracle/common/sql

exportSQLPATH=/u01/app/common/oracle/sql

exportORACLE_TERM=xterm

exportNLS_DATE_FORMAT="yyyy-mm-ddHH24:MI:SS"

exportTNS_ADMIN=$ORACLE_HOME/network/admin

exportORA_NLS11=$ORACLE_HOME/nls/data

exportPATH=.:$PATH:$JAVA_HOME/bin:$ORACLE_HOME/bin:/usr/bin:/bin:/usr/local/bin:/u01/app/common/oracle/bin

exportLD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/oracm/lib:/lib:/usr/lib:/usr/local/lib

exportCLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib

exportTHREADS_FLAG=native

exportTEMP=/tmp

exportTMPDIR=/tmp

umask022

if[$USER="oracle"]||[$USER="grid"];then

if[$SHELL="/bin/ksh"];then

ulimit-p16384

ulimit-n65536

else

ulimit-u16384-n65536

fi

umask022

fi

注意:其他节点把$ORACLE_SID和$ORACLE_HOSTNAME改成相应节点的值。

su–oracle

vim~/.bash_profile,添加下列内容:

aliasls="ls-Fa"

exportPS1="[`whoami`@`hostname`:"'$PWD]source~/.bash_profile

37.两个节点(racnode1和racnode2)创建Oracle基目录路径

mkdir-p/u01/app/19.3.0.0/grid

chown-Rgrid:oinstall/u01/app/oraInventory

mkdir-p/u01/app/oracle/product/19.3.0.0/dbhome_1

chmod-R775/u01

38.两个节点(racnode1和racnode2)更改所有Oracle安装所有者的ulimit设置

vim/etc/profile,添加以下内容:

if[$USER="oracle"]||[$USER="grid"];then

if[$SHELL="/bin/ksh"];then

ulimit-p16384

ulimit-n65536

else

ulimit-u16384-n65536

fi

umask022

fi

vim/etc/ssh/sshd_config

X11Forwardingno

su-grid

chmod-R700~/.ssh

touch~/.ssh/authorized_keys

~/.ssh/id_~/.ssh/authorized_keys

scp~/.ssh/authorized_:~/.ssh/authorized_keys

su–grid

sshracnode2“date;hostname”

“date;hostname”

注意:root和oracle用户需要做SSH互信。

42.两个节点(racnode1和racnode2)安装OracleASMLib软件包

上传_64.rpm

yuminstalloracleasm-y(相当于安装的是yuminstall-ykmod-oracleasm)

上传_64.rpm

/usr/sbin/oracleasmconfigure-i

依次输入gridasmadminyy

44.两个节点(racnode1和racnode2)加载oracleasm内核模块

/usr/sbin/oracleasmcreatediskCRSVOL1/dev/sdb1

/usr/sbin/oracleasmcreatediskCRSVOL3/dev/sdd1

/usr/sbin/oracleasmcreatediskDATAVOL2/dev/sdf1

/usr/sbin/oracleasmcreatediskFRAVOL1/dev/sdh1

/usr/sbin/oracleasmcreatediskFRAVOL3/dev/sdj1

46.两个节点(racnode1和racnode2)扫描和查看ASM磁盘

/usr/sbin/oracleasmlistdisks

47.两个节点(racnode1和racnode2)上传并解压Oracle软件

_193000_grid_/home/grid/software/oracle/

_193000_db_/home/oracle/software/oracle/

cd/home/grid

_193000_grid_

chown-Roracle:oinstallsoftware

cp-p/home/grid/software/oracle/cv/rpm//root/

exportCVUQDISK_GRP=oinstall

systemctlstoplibvirtd

cp-p/etc/sysconfig/network{,.bak}

route-n防止路由表中出现169.254.0.0的网段。

51.两个节点(racnode1和racnode2)修改自动挂载文件

vim/usr/lib/dracut//99base/:

mount-ttmpfs-omode=1777,noexec,nosuid,nodev,strictatime,size=3.9Gtmpfs/dev/shm/dev/null

注意:这个是为了解决PRVE-0421/etc/fstab中不存在用于装载/dev/shm的条目提示。

52.两个节点(racnode1和racnode2)修改文件解决验证/etc/完整性DNS超时PRVF-5636问题

vim/etc/:

53.两个节点(racnode1和racnode2)系统时间校时

时钟date设置:

date-s23:18:30;sshracnode2"date-s23:18:30"

setterm-blank0

55.两个节点(racnode1和racnode2)运行CVU手动检测集群配置

cd/home/grid/software/oracle

./,racnode2-methodroot输入root密码

56.两个节点(racnode1和racnode2)使用CVU验证硬件和操作系统设置

cd/home/grid/software/oracle

su–root

exportDISPLAY=192.168.163.149:0.0

exportDISPLAY=192.168.163.149:0.0

58.两个节点(racnode1和racnode2)进入安装目录

_193000_grid_/u01/app/19.3.0.0/grid

_193000_grid_

chown-Rgrid:oinstall*

oracleasmlistdisks

ln-s/usr/bin/scp/usr/local/bin/scp

59.两个节点(racnode1和racnode2)安装GRID

选择为新集群配置OracleGridInfrastructure(C)

网格即插即用选择:

创建本地SCAN

集群名称:racnode-cluster

SCAN名称:racnode-cluster-scan

SCAN端口:1521

60.两个节点(racnode1和racnode2)添加集群节点信息

选择添加—添加单个节点

公共主机名:

虚拟主机名:

输入grid用户的操作系统口令

注意:

出现INS-06006错误提示的时候,处理方法:

cd/home/grid/.ssh

ens33公用

oracleasmscandisks

su-grid

$crsctlcheckcrs

CRS-4638:OracleHighAvailabilityServicesisonline

CRS-4537:ClusterReadyServicesisonline

CRS-4529:ClusterSynchronizationServicesisonline

CRS-4533:EventManagerisonline

状态是ONLINE。

75.两个节点(racnode1和racnode2)使用asmca创建ASM磁盘组

exportDISPLAY=:0.0

xhost+

cd$ORACLE_HOME

./runInstaller

配置选项:

选择仅安装软件

数据库安装选项:

选择OracleRealApplicationClusters数据库安装。

节点选择:

全选

数据库版本:

选择企业版。

安装位置:

基目录选择:/u01/app/oracle

软件位置:/u01/app/oracle/product/19.3.0.0/dbhome_1

77.两个节点(racnode1和racnode2)设置操作系统组

数据库管理员OSDBA组:dba

数据库操作员OSOPER组:oper

数据库备份和恢复(OSBACKUPDBA)组:backupdba

DataGuard管理(OSDGDBA)组:dgdba

加密秘钥管理(OSKMDBA)组:kmdba

RealApplicationCluster管理(OSRACDBA)组:racdba

78.两个节点(racnode1和racnode2)使用root身份执行脚本

勾选自动运行配置脚本,并且输入root用户密码。

79.两个节点(racnode1和racnode2)保存响应文件

80.两个节点(racnode1和racnode2)确认root身份认证

安装过程中会确认是否使用root身份执行安装脚本,选择确定。

81.两个节点(racnode1和racnode2)查看服务状态

$su-grid-c"crsctlstatres-t"

82.两个节点(racnode1和racnode2)使用dbca命令创建数据库

$dbca

数据库操作:

选择创建数据库

部署类型:

选择高级配置

数据库类型选择:OracleRealApplicationCluster(RAC)数据库

配置类型:管理员管理的

数据库选择模板:一般用途或者事务处理

节点选择:

全选节点

83.两个节点(racnode1和racnode2)设置数据库标识

全局数据库名:

SID前缀:racdb

勾选创建为容器数据库PDB

勾选将本地还原表空间用于PDB

选择创建包含一个或者多个的容器数据库

PDB数量选1

PDB名称选择pdb

84.两个节点(racnode1和racnode2)选择存储选项

数据库文件存储类型选择:自动存储管理ASM

数据文件位置:+RACDB_DATA/{DB_UNIQUE_NAME}

勾选使用Oracle-ManagedFiles(OMF)

85.两个节点(racnode1和racnode2)快速恢复选项

勾选指定快速恢复区

恢复文件存储类型选择:自动存储管理ASM

快速恢复区选择:+FRA

勾选启用归档,并且勾选自动归档

归档日志文件格式:%t_%s_%

86.两个节点(racnode1和racnode2)配置选项

内存:

内存使用自动共享内存管理

系统总内存大小:7800(8G)

SGA:2340MB

PGA:780MB

即SGA+PGA占内存总大小的40%。并且SGA占75%,PGA占25%。

进程数:

默认块大小是8192BYTE,进程数是300。

字符集:

数据库字符集选择:ZHS16GBK

国家字符集选:AL16UTF16通用字符集

默认语言:简体中文

默认地区:中国

连接模式:共享服务器模式进程数1

87.两个节点(racnode1和racnode2)设置管理选项

勾选定期运行集群验证实用程序CVU检查

配置EnterpriseManager(EM)DatabaseExpress

EMDatabaseExpress端口:5500

勾选将EMDatabaseExpress端口配置为全局端口

88.两个节点(racnode1和racnode2)使用用户身份证明

所有账户使用同一管理口令,输入数据库用户的密码。

89.两个节点(racnode1和racnode2)选择创建数据库选项

勾选创建数据库

勾选生成数据库创建脚本。

90.两个节点(racnode1和racnode2)进行先决条件检查

选择下一步

91.两个节点(racnode1和racnode2)显示概要信息

选择保存响应文件—重命名响应文件,选择完成,进入数据库安装过程。

92.两个节点(racnode1和racnode2)Finish完成数据库Oracle19CRAC安装

93.客户端修改本地解析

Windows+x打开cmd管理员模式

notepad%windir%\system32\drivers\etc\hosts

添加DNS本地解析:

192.168.163.149

192.168.163.150

192.168.163.151

192.168.163.152

192.168.163.153

192.168.163.154

192.168.163.155

192.168.163.156

192.168.239.149

192.168.239.150

192.168.239.151

94.Oracle19CRAC客户端配置

在本地文件中加入下列内容:

RACDB=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=TCP)(HOST=)(PORT=1521))

(CONNECT_DATA=

(SERVER=SHARED)

(SERVICE_NAME=)

)

)

95.客户端使用PL/SQL连接

Windows+X打开命令提示符(管理员)

输入tnspingRACDB,确保结果为OK!

打开OraclePL/SQL客户端软件

选择用户名为sys

密码选择设置好的sys用户密码

数据库选择RACDB

角色选择sysdba

96.后记

佛为心,道为骨,儒为表,大度看世界;

技在手,能在身,思在脑,从容过生活。

三千年读史,不外功名利禄;

九万里悟道,终归诗酒田园!

走多远,不问双脚,问志向;看多远,不看眼睛,问胸襟!