1. 检查预安装需求
(1) 检查操作系统版本
安装Oracle 进行操作系统版本的检查,以保证操作系统适合Oracle安装。以下是一些适合安装Oracle Database 11g的Linux发行版本:
Oracle Enterprise Linux 4.0
Oracle Enterprise Linux 5.0
Red Hat Enterprise Linux 4.0
Red Hat Enterprise Linux 5.0
SUSE Linux Enterprise Server 10.0
使用下面的命令查看操作系统的版本:
# cat /etc/issue
显然,Fedora 17 不是安装Oracle Database 11g 的标准操作系统版本,因此要对其进行修改(一般在确定OS核心版本和核心参数及内存是否适合安装Oracle Database 11g后才进行修改,所以修改方法放在后面)。
(2) 检查OS核心版本
因为在Oracle Universal Install 完成系统的检查以验证OS核心版本满足需求,如果不具有必需的OS版本,安装将会失败。
以下是Oracle Database 11g Release 2 的核心需求:
对于 Asianux 2.0、Oracle Enterprise Linux 4.0 和 Red Hat Enterprise Linux 4.0 : 2.6.9
对于 Asianux 3.0、Oracle Enterprise Linux 5.0 和 Red Hat Enterprise Linux 5.0 : 2.6.18
对于 SUSE Linux Enterprise Server 10 : 2.6.16.21
使用下面的命令验证核心版本:
# uname -r
或使用下面的命令验证核心版本:
# cat /proc/version
因为Fedora 是基于Red Hat Linux,显然其核心版本3.3.4-5满足Oracle Database 11g 的需求。
(3) 检查所需的程序包
安装过程需要安装某些操作系统程序包。下面是一些Fedora需要安装如下的程序包:
binutils
compat-libstdc++
elfutils-libelf
elfutils-libelf-devel
gcc
gcc-c++
glibc
glibc-common
glibc-devel
glibc-headers
ksh
libaio
libaio-devel
libgcc
sysstat
unixODBC
unixODBC-devel
这些程序包一般使用yum命令进行安装,所以,在安装Oracle Database 11g时保证网络连接正常。安装这些软件包前可是用rpm命令检查一下这些程序包是否存在且是否满足安装的需求(我这里没用具体给出对各个程序包的版本需求,因为我打算直接通过yum进行更新或安装)。下面是使用rpm和yum命令对程序包的检查和更新、下载安装的一般命令形式:
# rpm -q packge_name
# yum install packge_name
有些程序包可能没有相应的yum源,此时可以选择跳过(如我在欲更新compat-libstdc++时便没找到相应的程序包,然后选择了跳过)。
2. 检查Oracle 安装的物理OS需求
应该至少有下列的内存和物理空间:
最少1024MB的物理RAM。
如果RAM空间在256MB~512MB,则应该有1GB的交换空间,或者是物理RAM的两倍。
/tmp 目录中至少有400MB的可用空间。
用于Oracle软件的1.5GB~3.GB磁盘空间,具体大小取决于安装的类型。
(1) 检查RAM和交换空间量
使用以下两条命令来检查RAM和交换空间量:
# grep MemTotal /proc/meminfo
# grep SwapTotal /proc/meminfo
显然,我的物理OS是满足需求的:RAM为2GB(大约),交换空间为4GB。
(2) 检查可用磁盘空间
使用以下两条命令来检查磁盘空间和/tmp 目录中有多少空间:
# df -h
# df -k /tmp
显然,磁盘空间和/tmp 目录中的可用空间都是满足需求的。
3. 重新配置核心
Oracle 需要巨大的共享内存段,Linux(或UNIX)操作系统一般不会默认配置它。因此,需要自己去更改某些核心参数。(注:在开始时配置核心极为重要。如果不按Oracle指导配置足够的内存资源,那么安装不成功,要么安装后在试图创建数据库时会出错。)对于同一个Oracle安装,不同的UNIX或Linux操作系统可能具有不同的核心需求。
下面给出对于Oracle软件安装,我正在使用的Fedora 17 操作系统的核心需求:
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
可以使用下面的命令来查看当前核心配置:
# cat /etc/sysctl.conf
如果任一核心参数的值不够大,安装将会失败;如果任一参数的值低于最小值,则必须编辑/etc/sysctl.conf文件给该参数指定较大的值。由于我的系统下的核心参数没有或不够大,所以我通过以下命令来进行修改:
# vi /etc/sysctl.conf
重新配置了核心参数并生成新核心后,必须用新核心启动系统,以便新的设置起作用。在Fedora 17 下可以使用下面的命令动态更改当前的核心参数值,而不需要重启系统:
# /sbin/sysctl -p
在更改了核心参数后,可以通过执行下面的命令来验证设置:
# /sbin/sysctl -a | grep shm
# /sbin/sysctl -a | grep sem
# /sbin/sysctl -a | grep file-max
# /sbin/sysctl -a | grep ip_local_prort_range
除了修改核心参数外,还需要对你的进程以及某些用户登录的shell脚本的限制进行检查,如果有必要就更改它们。下面是一些需要进行的更改:
(1) 更改shell限制
Oracle建议对每个Linux账号可使用的进程和打开文件数目设置限制。为提高Linux系统上的Oracle软件的性能,必须添加如下内容到/etc/security/limits.conf文件,以增加对Oracle用户的shell限制:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
使用下面的命令来修改相应的文件:
# vi /etc/security/limits.conf
还需要将如下内容添加到/etc/pam.d/login文件:
session required /lib/security/pam_limits.so
可用以下命令来修改相应的文件:
# vi /etc/pam.d/login
(2) 更改登录脚本
必须更改Oracle用户的登录shell。具体的更改取决于默认的shell类型。
对于Bourne、BASH和Korn shell,添加以下内容到/etc/profile文件(也可以在后面添加oracle用户后,以oracle用户登录修改 .bash_profile文件,我选择的是这种方式):
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
对于C shell(csh或tcsh),添加以下内容到/etc/csh.login文件:
if [ $USER = "oracle" ]; then
limit maxproc 16384
limit descriptors 65536
endif
4. 创建必须的组和Oracle软件拥有者用户
Oracle建议为Linux和UNIX操作系统创建3个操作系统组,分别为OSDBA、OSOPER和ORAINVENTORY(Oracle Inventory Group 清单组)。OSDBA组的默认名为dba,OSOPER组的为oper,ORAINVENTORY组的为oinstall。
使用下面命令创建相应的用户组:
# /usr/sbin/groupadd dba (或 # groupadd dba)
# /usr/sbin/groupadd oper (或 # groupadd oper)
# /usr/sbin/groupadd oinstall (或 # groupadd oinstall)
为了清晰地划分ASM管理和数据库管理的职责,Oracle Database 11g 引入了一个新的SYSASM权限。另外还引入了一个名为OSASM的新操作系统组(OSASM组),单独用于ASM管理。OSASM组的默认名为asmadmin。
使用以下命令来创建新的OSASM操作系统组:
# /usr/sbin/groupadd asmadmin (或 # groupadd asmadmin)
创建了必要的组后,还需要创建一个拥有Oracle用户软件的最重要的用户,通常名为oracle(可选用别的名字,但习惯上使用oracle)。oracle用户为Oracle软件的拥有者,此用户默认组或主要组是最新创建的ORAINVENTORY组。Oracle软件的拥有者(oracle用户)而不是根用户(root用户)才有权限,安装Oracle软件。
可以用一下命令创建oracle用户:
# /usr/sbin/useradd -g oinstall -G dba -d /home/oracle -p oracle1 oracle
或
# useradd -g oinstall -G dba,oper,asmadmin oracle
创建oracle用户时,我使用的是下面的方式useradd方式;如果使用的/usr/sbin/useradd 的方式,在此命令中:
g 指示用户oracle的主要组,为oinstall组;
G 指示次要组,这里为dba组;
d 指示新用户的主目录;
p指示oracle用户的密码,这里为oracle1。
也可通过以下命令来设置oracle用户的密码:
# /user/bin/passwd oracle (或 # passwd oracle)
5. 创建必需的目录
系统管理员(根用户)还必须创建Oracle基目录,把它作为Oracle软件的顶层目录,并将其所有权分配给oracle用户。假如选择标准的/u01/app/oracle目录作为Oracle目录,可用下列命令创建并分配所有权和文件权限:
# mkdir -p /u01/app/oracle/product/11.2.0/db_1
# chown -R oracle:oinstall /u01
# chmod -R 775 /u01
6. Oracle拥有者的预安装任务
需要用oracle用户登录并设置许多环境变量。虽然所有的环境变量都可以手动设置,但最好还是编辑默认shell启动文件,在Fedora 17 下,它为oracle用户主目录中(默认为/home/oracle目录)的.bash_profile文件。通过编辑shell启动文件,将保证每次登录时已恰当地设置环境。下面列出需要设置的主要环境变量。
ORACLE_BASE。此变量为所有Oracle安装的开始目录。所有软件文件和其他文件都放在ORACLE_BASE目录下的目录中。在此,这个目录为 /u01/app/oracle。
ORACLE_HOME。在安装Oracle服务器是,ORACLE_HOME变量应该设置为oracle_dase/product/11.2.0/db_1。这在里,此变量为/u01/app/oracle/product/11.2.0/db_1。
TNS_ADMTN。TNS_ADMTN变量用来设置Oracle Net配置文件的位置。默认网络配置文件名为tnsnames.ora,位于$ORACLE_HOME/network/admin目录。
ORACLE_SID。该变量很重要,但是如果不打算现在创建一个数据库,则不需要设置。
ORAENV_ASK。除了.preofile文件中的环境变量外,还需要添加另一行以找到oraenv文件,这样所有作为oracle软件用户登录的会话将会自动读取oraenv文件。oraenv文件将提示oracle用户输入想使用的数据库的正确SID。在具有几个数据库实例的系统上,oraenv文件便于登录时做出选择。下面是必须添加到.profile文件的行:
./usr/local/bin/oraenv
如果设置ORAENV_ASK变量的值为NO,则当前ORACLE_SID的值将被作为想使用的SID。
还需如下编辑/home/oracle/.bash_profile文件(以oracle用户登录进行编辑),使得每次oracle用户登录时,已正确设置环境变量:
# Oracle Settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_HOSTNAME=fedora17.localdomain; export ORACLE_HOSTNAME
ORACLE_UNQNAME=orcl; export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOME
ORACLE_SID=orcl; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
使用下面的命令对相应的文件添加内容:
$ vi .bash_profile
使用该命令时,所处当前目录为/home/oracle。否则得用如下命令进行修改:
$ vi /home/oracle/.bash_profile
这两条命令都是以oracle用户登录执行的。
7. 修改一些相应的信息
(1) 修改hosts文件
例如:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.0.191 fedora17.localdomain fedora17
可以先通过 cat命令来查看该文件。命令如下:
# cat /etc/hosts
由于我没用可用的ip地址,所以没有修改hosts文件。
(2) 禁止linux安全需修改”/etc/selinux/config”文件
安装Oracle软件之前,最好先禁用linux安全,所以得对/etc/selinux/config文件进行如下修改:
SELINUX=disabled
使用如下命令进行修改:
# vi /etc/selinux/config
(3) 修改发行版本信息
修改系统发行信息,Oracle只识别一些商业linux系统,以下改为redhat5, 修改”/etc/redhat-release”文件,并替换”Fedora17…”等信息为:
redhat release 5
使用以下命令进行修改:
# vi /etc/redhat-release
8. 访问安装软件(下载安装软件)
一旦完成了所有的预安装工作,就可以安装Oracle Database 11 g软件了。可直接利用CD或DVD的软件分发包进行安装,也可以从Oracle Technology Network网站(http://www.oracle.com/technetwork/index.html)免费下载软件。我使用的是免费下载的软件包。
(1)下载适合版本的免费软件包:
linux_11gR2_database_1of2.zip
linux_11gR2_database_2of2.zip
(2) 对已下载的软件包进行解压
我将两个免费软件包都移动到oracle用户的主目录(/home/oracle)下,然后对其进行解压。解压命令如下:
# unzip linux_11gR2_database_1of2.zip (我是用根用户进行解压的)
解压过程会自动生成一个database目录,然后解压下一个软件包,它解压出来的东西,同样会放入database目录下。
# unzip linux_11gR2_database_2of2.zip
解压完成后,可以将两个软件包都删除,当然也可以不删除。
使用以下命令进行删除:
mv linux_11gR2_database_1of2.zip
mv linux_11gR2_database_2of2.zip
(3) 修改database目录的权限
由于我是以根用户进行的解压,所以必须得对database目录及其子目录进行权限修改,修改命令如下:
# chown -R oracle:oinstall database/
9. 安装软件
为了开始安装,可以切换到合适的目录并作为oracle用户(以oracle用户登录)执行runInstaller脚本。
(1) 检查以保证runInstaller可执行脚本在该处:
$ ls
doc install reponse runInstaller stage welcome.htm
(2) 执行runInstaller可执行脚本调用Oracle University Installer:
$ ./runInstaller (必须得oracle用户才行)
该脚本执行后终端会出现类似如下的内容:
Starting Oracle Universal Installer …
Checking Temp ……
这是检查Temp空间以及Swap空间等,如果检查不通过,便不能进入安装界面。
如果检测通过,便会有如下图的界面,进入到Oracle的图形化安装界面。
这里,假定Oracle Universal Installer的GUI版本正常。(如果此GUI在屏幕上不正常,就可能需要调整DISPLAY变量或使用xhost命令。)Oracle Database 11g版本2服务器软件安装的过程中将显示如下一系列窗口和提示。(为了更直观的了解图形界面安装过程,我截的图比较多,而对于图的解释,只挑重要的部分进行。)
1) 配置安全更新
在这里,我没有选择默认的选项,去掉单选框里的“√”,然后单击“Next”,进入下一步操作:选择安装选项。单击“Next”后,可能会有个提示语句,可以选择忽略不管。
2) 选择安装选项
这一步是选择安装,有三种选择:
创建并配置一个数据库
只安装数据库软件
更新已有的数据库
一般初次安装会选择前两种方式,在这我选择第一种,当然也可以选择第二种,但是要知道,第二种只是安装数据库软件,并不会创建数据库,如果选择了第二种,安装完后,还得自行创建一个数据库。
3) 系统类型选择
有两种类型,一种是桌面型,一种是服务器型,可以根据自己喜好选择,在这我选择服务器类型进行安装。
4) 节点选择
节点选择,我选择默认方式,也就是单击“Next”,进入一步安装。
5) 安装类型选择
有两种选择,一种是典型安装(Typical Install),一种是高级安装(Advanced Install)。典型安装是默认方法,一般初次安装选择这种方法。
6) 典型安装配置
典型安装配置界面,有大量的配置信息,这些都是默认,有许多默认文件安装路径,可以更改,最好不更改,且保证和前面的配置文件的信息相一致以及相应的目录都存在,不然无法安装。然后输入管理密码及其确认密码。
7) 创建库存
选择默认即可----单击“Next”。
8) 先决条件检查
检查一些所需软件包是否安装,还有相应的条件是否满足。可能有些软件包未能安装,这时选择忽略(单击右上角的“Ignore All”),然后单击“Next”。
9) 确认显示汇总窗口
可以将汇总文件保存在一个目录中,也可以不保存,然后单击“Next”开始Oracle的实际安装。
10) 实际安装过程
Install窗口出现,显示正在安装的组件。在此屏幕的下方,可以看到安装日志正写入的目录名。有时会令人头疼地看到安装程序似乎停在某个活动上,可以使用tail命令监控安装程序在做什么,并在独立的窗口监视安装日志文件。其中会有一些提示或警告信息,可以选择继续(continue)、跳过(skip)或OK忽略这些提示。
11) 安装暂停,运行相应脚本
安装到将完成时,安装过程将暂停,要求你作为系统管理员(根用户)执行名为root.sh脚本。打开一个不同的窗口,作为根用户执行/u01/app/oracle/product/11.1/db_1/root.sh脚本。root.sh脚本设置ORACLE_OWNER和ORACLE_HOME环境变量的值。此脚本添加合适的值到/etc/oratab文件。
此外,如果第一次安装oracle软件,安装程序还要求根用户执行位于/u01/app/oraInventory目录中的orainstRoot.sh。
12) 结束安装
一旦执行完要求执行的一个或两个脚本后,单击“OK”,然后单击“Next”,会看到结束(Finish)窗口,它表示成功结束Oracle Database 11g软件的安装。单击“Next”,确定结束Oracle Universal Installer会话的选择。
到此,Oracle Database 11g服务器的安装就算完成了。
10. 安装后任务
安装Oracle Database 11g软件后,还需要完成一些配置文件的还原及修改,以确保Linux系统及Oracle软件的正常运行。
(1) 更新关闭和启动脚本
修改/etc/oratab文件,将orcl:/u01/app/oracle/product/11.2.0/db_1:N中的N改成Y,然后保存。
(2) 将Linux的系统版本信息修改回来
将Linux系统版本由redhat release 5改回Fedora release 17 (Beefy Miracle)
(3) 将Linux的SElinux安全机制改回成enforing模式
修改后,最好重启一下电脑,使得SElinux安全机制生效。重新启动时,Linux会检测一些配置及文件,启动过程可比较慢。
11. 测试Oracle Database 11g是否成功安装及能否正常运行
(1) 启动SQL*Plus会话并连接数据库
用sqlplus命令及/nolog选项,只启动SQL*Plus会话,然后用connect命令及/as sysdba选项以sysdba的身份连接数据库,再用startup命令启动数据库。
(2) 创建一张表并进行插入及查询操作
创建一张test表,并对其进行插入和查询操作,用以验证数据库可正常运行。
至此,基本上可以确定Oracle Database 11g安装成功并且可以正常运行。当然,在这,我并没有配置Oracle的网络服务,只是进行本地连接测试,网络配置可以根据自己需要自行配置。详解Fedora17 下安装Oracle Database 11g
完成情况:
Oracle Database 11g安装成功,并能正常运行,对其进行相应的创建表、查询表、数据的插入的操作都没问题。没有对Oracle进行网络配置,远程连接不能进行,相应的一些联机操作也可能不能执行。详解Fedora17 下安装Oracle Database 11g
安装建议、注意事项及出现的问题:
1. Linux下安装Oracle Database 11g首先要熟悉Linux,会使用Linux命令行,熟悉相应的一些基本的命令。像yum、rpm、mkdir、cd、ls、chmod、chown等命令最好会至少要有所了解,vi编辑器也要会使用。如果对这些Linux的基本命令、基本操作不熟悉不知道的话,建议安装前先了解、熟悉这些命令,这样可以减少安装过程中的失误和安装时间。
2. 安装Oracle Database 11g是一件需要足够耐心事情,很难一次通过(我安装七八次才安装成功),每次安装大概要2个小时左右,所以要有失败的心理准备和屡败屡战的精神,不然,建议别尝试安装。
3. 安装Oracle Database 11g软件前,先确保重要的文件已备份。因为在安装Oracle Database 11g软件时,可能会因为操作失误造成Linux系统出现一系列的错误,甚至可能造成系统崩溃(我安装时,有一次就造成Linux系统崩溃,然后重新安装了系统。当然,是否要重装系统也取决于对Linux系统的熟悉程度。)。
4. 由于Oracle Database 11g不是汉化版地软件,所以安装的语系环境很重要,最好选择US-English语系(我建议安装Linux时就选择美式英语语系,这样既可以学习英语,在安装一些软件时也可以避免不必要的麻烦,如安装Oracle过程因Linux体统语系出现的乱码问题。),不然,进入图形界面安装时会出现乱码。下面给出Linux下更改语言设置的几种方法:
全局更改,每个用户都是一种统一的语言设置
直接修改/etc/sysconfig/i18n文件,把原来的语言设置用#注释掉,然户在新加一行如,要修改成中文语言就加:LANG="zh_CN.UTF-8"
要修改成英文语言就加:LANG="en_US.UTF-8"
保存之后用./rc.local或者sh rc.loacl 执行rc.local
单个用户更改,不同的用户有不同的语言设置
把/etc/sysconfig/i18n复制到要更改的用户的主目录下
$ cp /etc/sysconfig/i18n ~home/.i18n
然后按上面提到的方式修改.i18n文件,保存之后执行rc.local
终端临时更改
直接在shell下执行 export LANG="zh_CN.GBK" //中文显示
export LANG="en_US.UTF-8" //英文显示
5. 在安装Oracle Database 11g准备阶段给oracle用户添加相应的环境变量配置文件时需要特别注意ORACLE_SID,如果该值给的不正确,安装完成后启动oracle会出现错误。
6. 安装Oracle Database 11g时需要特别细心,不然,很容易因为粗心大意导致安装失败。例如:我在一次安装时,当安装到暂停Oracle Universal Installer会话来执行所需的几个脚本文件(如/u01/app/oracle/product/11.1/db_1/root.sh脚本)时,因为粗心进错目录,没有找到该脚本,没能执行该脚本,放弃安装,然后整个删除后重装。
7. Linux系统的文件目录分配很重要,硬盘大小也很重要。倘若Linux所能管理的硬盘很小(双系统的情况下)的话,或个文件目录大小分配不太好(如根目录(/)太小),就算Oracle软件装上,运行时也会影响到Linux系统地运行,甚至导致Linux系统运行出问题,例如根目录(/)超过了系统限制的上限,此时系统会发出警告。
aljoin80 于 2014-12-03 10:11:26发表:
下载了学习一下
Daihy2014 于 2014-11-02 20:52:19发表:
感谢楼主分享,期待内容。
phoenixiu 于 2014-09-24 08:52:10发表:
感谢楼主,楼主好人!
abszy 于 2014-09-23 12:57:05发表:
很好的教程 我在FC12下安装出错 受教了
wujianguoshiye 于 2013-08-26 14:48:57发表:
好贴。。。
wjq1028cs2 于 2013-08-15 10:37:11发表:
好像和Fedora 19有些区别,不过大部分是一样的,很好了~
will009 于 2013-06-12 20:36:39发表:
多谢分享
davemac 于 2013-06-07 15:30:25发表:
学习下 谢谢分享
ynby369258 于 2013-05-22 22:14:39发表:
装下试试看[b][/b]
419724189 于 2013-05-22 09:50:18发表:
很需要这个,谢谢
itclean 于 2013-05-15 23:00:52发表:
正找呢,在这里看到了,非常感谢楼主
我是鱼饵 于 2013-05-14 18:53:51发表:
大大的好贴顶起来
youxinzhai 于 2012-12-20 11:27:19发表:
7# hgl310
其实,还有大量的截图没贴上去,那样就更好了。
hgl310 于 2012-12-19 20:52:58发表:
拿走了兄弟
vanlin5566 于 2012-12-15 20:49:01发表:
好贴!!!!
jerry_linux 于 2012-12-13 15:31:23发表:
谢谢!
youxinzhai 于 2012-12-06 17:29:07发表:
3# utanthut
由于受上传文件大小的限制,安装过程的pdf没有传完
utanthut 于 2012-12-06 16:29:39发表:
向楼主学习
youxinzhai 于 2012-12-06 16:25:51发表:
http://www.linuxdiyf.com/bbs/?fromuid=842165
http://www.linuxdiyf.com/bbs/?fromuser=youxinzhai