葡京娱乐官方app.Net Framework 4.x 程序到底运行在哪些 CLR 版本之上(ZT)

Copyright (c) 1991, 2013, Oracle. All rights reserved.

当我们编译程序目标框架选为 .Net Framework 4.5/4.6/4.7 时,CLR
运行时是怎么着判定大家到底应当用哪一个 .Net Framework 呢?.Net Framework
的版本到底由哪些部分组成?我们编译 .Net Framework
时精选的版本决定了哪些?

cp 51db_install.rsp /u01/app/database/response/
cp 51dbca.rsp /u01/app/database/response/

  • 自身将顺序编译的目标框架选为 .Net Framework 4.7;在一台设置了 .Net
    Framework 4.6 的微机上指示贫乏 .Net Framework
    4.7;删除了随编译一起生成的 app.config 文件后先后可以健康运转。
  • 另一个先后,我显明将顺序编译的目的框架选为 .Net Framework
    4.5,但在一台没有设置任何额外 .Net Framework 的 Windows 7
    的微处理器上提示缺乏的是 .Net Framework 4.0。

解压安装包:
unzip p13390677_112040_Linux-x86-64_1of7.zip
unzip p13390677_112040_Linux-x86-64_2of7.zip
将解压后的安装文件database
拷到/u01/app/下边,或直接动用本目录下的rsp文件,举办改动

CLR 的更新

可是,不信任微软的 CLR 可以完全没有 BUG,既然 CLR 版本都是
4.0,那么微软对 CLR 运行时的换代怎么处理?安装了 .Net Framework
4.5/4.6/4.7 会如何升级 CLR 的安澜和安全性?

在 Targeting and Running .NET Framework apps for version 4.5 and
later
 中,解释了
CLR 的翻新机制——就地更新(in-place update)。这篇文章 .NET 4.5 is an
in-place replacement for .NET
4.0
 对这种就地更新情势有比官方文档更详实的表达,并且还顺带自己的部分试验(含代码)。不过随笔是
2012 年写的,部分结论现在总的来说已经过时(因为在我的 Windows 10 配 .Net
Framework 4.7
上敲定已经不平等),可是对自我理解就地更新自己相当有帮扶,也为延续考察提供了更清晰的思路。

微软对 .Net Framework 4.x 框架就地更新的表明是:

.NET Framework 4.5 是代表统计机上的 .NET Framework 4
的当庭更新,同样,.NET Framework 4.5.1 4.5.2、4.6、4.6.1、4.6.2 和 4.7
是对 .NET Framework 4.5
的当庭更新,那意味着它们将动用同样的运作时版本,可是程序集版本会更新并包括新类型和分子。
在安装其中某个更新后,你的 .NET Framework 4.NET Framework 4.5 或 .NET
Framework 4.6 应用应继续运行,而无需另行编译。 不过,反过来则分外。

也就是说,无论我们在开发时指定目的框架的本子是 4.x
的哪一个,在运转时,CLR 环境都是 4.0。不过新的 .Net Framework
会带来更新版本的 CLR,这些 CLR 会直接交换掉旧的 CLR。.NET 4.5 is an
in-place replacement for .NET
4.0
 著作中
.Net Framework 基础库也是就地更新的;但我实在试验的气象是每一个见仁见智的
.Net Framework 基础库有温馨单身的公文夹,近年来尚不清楚这么些改变是从 .Net
Framework 的哪一个版本先导的,但肯定是 4.5.1、4.5.2、4.6
这六个版本中的一个。

葡京娱乐官方app 1

1.所需安装软件包检查:
yum install binutils-2.* compat-libcap1* compat-libstdc++-33-*
gcc-4.*
gcc-c++-4.* glibc-2.* glibc-devel-2.* libgcc-4.* libstdc++-4.*
libstdc++-devel-4.* libaio-.* libaio-devel-0.* make-3.*
sysstat-9.*
unixODBC-2.* unixODBC-devel-2.* libXp* pdksh-*
rpm -qa binutils compat-libstdc++ elfutils-libelf elfutils-libelf-devel
gcc gcc-c++ glibc
rpm -qa glibc-common glibc-devel glibc-headers ksh libaio libaio-devel
libgcc libstdc++ libstdc++-devel make numactl-devel sysstat

此间的疑问在于为什么以上二种恍若类似的情景,提醒的框架版本却不比。其中的 app.config 文件成为了检察此问题的突破口。

4.设置用户限制文件:
/etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240

正文转载
  https://walterlv.github.io/dotnet/2017/09/22/dotnet-version.html ,感谢  吕毅
(包含链接: https://walterlv.github.io )

始发安装数据库

釜底抽薪一起首的疑难

于是乎,本文一起始的疑点就整个清晰了:

  1. 任凭是 .Net Framework 4.5 的依旧 4.7 的这六个程序,都是靠 4.0
    版本的公家语言运行时(CLR)运行起来的;
  2. 假定没有安装 4.0 版本的 CLR,则会弹出提醒需要设置 .Net Framework 4.0
    版本才能运行,而随便我们的顺序目的框架是 .Net Framework 4.x
    的哪一个版本;

    • 即便说文案说的是 .Net Framework,但事实上需要的是 CLR
  3. 假若已经设置有 4.0 版本的 CLR(可能随 .Net Framework 4.5/4.6
    安装),我们先后的目标框架是 .Net Framework 4.7,但 .Net Framework
    基础库并从未设置 4.7 版本,则运行时会指示需要安装 .Net Framework
    4.7;

    • 以此指示是 4.0 版的 CLR
      弹出的,是按照 supportedRuntime 中指定的 sku 值来决定的

到此设置完成。

.Net Framework 的重组以及各部分的版本

我们需要寻找到 .Net Framework
的泰山真面目,不然这么繁复的版本号系统真把自身搞懵了。

微软在 .NET Framework Versions and
Dependencies
 中说到:

各样版本的 .NET framework 都饱含公共语言运行时
(CLR)、基础库和任何托管库。

于是大家谈论 .Net Framework 的本子其实应当分五个例外的一对来谈:

每个新本子的 .NET Framework 都会保留早期版本中的效用并会添加新效率。
CLR 有其协调的本子号标识。 尽管 CLR 版本并不连续递增的,但 .NET
Framework 版本号在历次宣布时都会递增。 例如,.NET Framework 4、4.5
和更高版本包含 CLR 4,而 .NET Framework 2.0、3.0 和 3.5 包含 CLR 2.0。
(没有版本 3 的 CLR。)

从官方文档给出的报表当中我们得以确信:.Net Framework 4.0/4.5/4.6/4.7
包含的 CLR 版本都是 4.0。

6.装置系统全局变量:
/etc/profile
if [ $USER = “oracle” ]; then
if [ $SHELL = “/bin/ksh” ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

参考资料


本文会通常更新,请阅读原文: https://walterlv.github.io/dotnet/2017/09/22/dotnet-version.html ,以防止陈旧错误知识的误导,同时有更好的阅读经验。

net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 12884901888
net.ipv4.tcp_max_tw_buckets = 1000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 262144
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_retries2 = 5
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.ip_local_reserved_ports =
8080-8081,11200-11211,6379-6389,10050-10051
net.nf_conntrack_max = 409600
net.netfilter.nf_conntrack_tcp_timeout_established = 600
net.netfilter.nf_conntrack_max = 409600
net.netfilter.nf_conntrack_buckets = 8192
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 1


客户端:
vi tnsnames.ora
TESTDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.**.**.**)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = testdb)
)
)

让自身对这一个题材时有爆发兴趣的缘故是:

始发通过rsp响应文件安装oracle软件:

配备匡助的周转时

寓目程序附带的 app.config 文件,我们发现帮助的运作时版本是 v4.0,sku
版本是 4.7。

<configuration>  
   <startup>  
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7" />  
   </startup>  
</configuration>  

疑点:

  1. 缘何我们依照 .Net Framework 4.7 开发的程序运行时版本是 4.0?
  2. sku 是什么?

微软的官方文档给了俺们解答:supportedRuntime
Element

  • version:用于指定此应用程序补助的国有语言运行时(CLR)的本子。
  • sku:stock-keeping
    unit(官方普通话为“库存单位”,但是仍旧不懂这么些词的意趣),用于指定此应用程序协理的
    .Net Framework 发行版本。

version 的值可取:

.NET Framework 版本 version 值
忽略早期版本 忽略早期版本
2.0 “v2.0.50727”
3.0 “v2.0.50727”
3.5 “v2.0.50727”
3.5 “v2.0.50727”
4.0-4.7 “v4.0”

sku 的值可取:

.NET Framework version sku 值
4.0 “.NETFramework,Version=v4.0”
忽略中间版本 忽略中间版本
4.5 “.NETFramework,Version=v4.5”
4.5.1 “.NETFramework,Version=v4.5.1”
4.5.2 “.NETFramework,Version=v4.5.2”
4.6 “.NETFramework,Version=v4.6”
4.6.1 “.NETFramework,Version=v4.6.1”
4.6.2 “.NETFramework,Version=v4.6.2”
4.7 “.NETFramework,Version=v4.7”

于是乎我们发现,其实不管大家将顺序的目的框架选为 .Net Framework 的哪一个
4.x 版本,CLR 运行时都是用 v4.0 表示的。微软的叙述是:

对此扶助 .NET Framework 4.0 或更高版本的应用程序,version 属性提示 CLR
版本,这是 .NET Framework 4 及更高版本的通用版本,而 sku
属性提示应用程序所指向的单个 .NET Framework 版本。

实则看来这里大家就能有一个近乎不错的分解:

  1. 不论我们采取的目的框架是 .Net Framework 4.x 的哪一个版本,用于指定
    CLR 运行时版本的 version 值都是 v4.0;
  2. CLR
    运行时会依据配置文件的 sku 值决定应该运用那一组运行库来为程序运行提供支撑。

3.用户变量配置:
Oracle用户环境变量:
Su – oracle
$ vi .bash_profile
umask 022
ORACLE_SID=testdb
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0.4.0/dbhome_1
PATH=$ORACLE_HOME/bin:$PATH
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export ORACLE_SID ORACLE_BASE ORACLE_HOME PATH

据悉指示输入五遍密码。即可出现安装库的速度。

修改51db_install.rsp 51dbca.rsp 将里面SID,DBNAME,路径等等都修改好。
安装库目录为/u01/app/oracle/oradata 。

STATUS of the LISTENER

Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.4.0 – Production
Start Date 27-APR-2015 17:58:52
Uptime 0 days 0 hr. 38 min. 15 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Log File
/u01/app/oracle/diag/tnslsnr/localhost/listener/alert/log.xml
Listening Endpoints Summary…
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
Services Summary…
Service “autoa” has 1 instance(s).
Instance “autoa”, status READY, has 1 handler(s) for this service…
Service “autoaXDB” has 1 instance(s).
Instance “autoa”, status READY, has 1 handler(s) for this service…
The command completed successfully

 

-bash-4.1$ lsnrctl status

10.数据库软件静默安装格局:

5.用户login配置:
/etc/pam.d/login
session required pam_limits.so

9.成立oracle安装目录及权限
mkdir -p /u01/app/oracle
chown -R oracle.oinstall /u01/app/oracle
chmod 775 /u01/app/oracle
mkdir -p /u01/app/oracle/oradata
chown -R oracle:oinstall /u01/app/oracle/oradata
chmod 775 /u01/app/oracle/oradata
mkdir -p /u01/app/oraInventory
chown -R oracle:oinstall /u01/app/oraInventory
chmod 775 /u01/app/oraInventory
mkdir -p /u01/app/oracle/product/11.2.0.4.0/dbhome_1
chown -R oracle:oinstall /u01/app/oracle/product/11.2.0.4.0/dbhome_1
chmod 775 /u01/app/oracle/product/11.2.0.4.0/dbhome_1

$ ./runInstaller -silent -force -responseFile
/u01/app/database/response/51db_install.rsp

7.系统基础参数配置:

========================================================================================
创办监听:
监听配置: [都要加,服务端,客户端]
服务端:
cd /u01/app/oracle/product/11.2.0.4.0/dbhome_1/network/admin
vi listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = cleardb)
(ORACLE_HOME = /u01/app/oracle/product/11.2/db_1)
(SID_NAME = testdb)
)
)

LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.**.**.**)(PORT = 1521))
)

在安装实例此前,先对dbca.rpt举行布局。配置项如下
GDBNAME = “testdb” (数据库的唯一标识)
SID = “testdb” (数据库实例名)
CHARACTERSET = “ZHS16GBK” (数据库字符集) –CHARACTERSET = “AL32UTF8”
(更新,帮助更多字符,帮助9i及以上) –CHARACTERSET = “UTF8”
(更旧,襄助8i)
TOTALMEMORY = “10240” (数据库内存,现为10G,单位:MB)
假诺要动用OEM则还要修改
EMCONFIGURATION=”LOCAL”,
SYSMANPASSWORD=“oracle”
DBSNMPPASSWORD=”oracle”
安排 好实施静默安装

起步监听lsnrct start

groupadd oinstall
groupadd dba
useradd -m -g oinstall -G dba oracle
echo oracle | passwd –stdin oracle

等说话,看指示。 **基于提醒,会让用root权限履行多少个本子。
最终出现成功后即可。**

 

 

经过rsp响应文件建数据库:
vi 51dbca.rsp
沉默寡言安装实例【需要修改的地方】

# sysctl –p

 

LSNRCTL for Linux: Version 11.2.0.4.0 – Production on 27-APR-2015
18:37:07

2.1oracle,grid用户创设:

Connecting to
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.**.**.**)(PORT=1521)))

/u01/app/oracle/product/11.2.0.4.0/dbhome_1/bin/dbca -silent
-responseFile /u01/app/database/response/51dbca.rsp

/etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 4194304
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500 #1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586

RHEL6+oracle11.2 无界面化命令安装如下:

8.禁用防火墙,seliunx
service iptables stop
chkconfig iptables off

LISTENER_CLEARDB =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.**.**.**)(PORT = 1521))