oracle 10g linux 客户端下载

时间: 2023-05-15 09:02:30 浏览: 39
要下载Oracle 10g Linux客户端,有以下几个步骤: 1. 登陆Oracle官网,在下载页面中选择Oracle 10g Linux客户端下载链接。 2. 点击下载链接后,会弹出一个新页面,要求你输入Oracle帐户信息。如果没有帐户,需要先注册一个。 3. 输入帐户信息后,选择下载的安装包文件,通常其文件名为“oracle-xe-10.2.0.1-1.0.i386.rpm.zip”,其中“i386”表示适用于32位系统,如果你的Linux系统是64位的,则要选择适用于64位系统的安装包。 4. 下载完成后,解压压缩文件,并将其放置在合适的目录下。然后,通过终端输入以下命令安装Oracle 10g客户端: $ sudo rpm -ivh oracle-xe-10.2.0.1-1.0.i386.rpm 5. 安装过程会提示你输入系统管理员密码、Oracle实例名以及其他配置信息。按照提示完成安装即可。 注意:Oracle 10g Linux客户端需要在Linux系统上安装Oracle 10g服务器端才能使用,所以在安装客户端前需要先安装服务器端软件。安装服务器端的方法可以在Oracle官网查找到。
相关问题

linux oracle11g客户端下载

你可以在Oracle官网上下载Linux下的Oracle 11g客户端。以下是下载步骤: 1. 访问Oracle官网:https://www.oracle.com/index.html 2. 点击“Downloads”菜单,选择“Oracle Database”。 3. 在“Oracle Database”页面上,选择“11g Release 2 (11.2.0.4)”版本。 4. 在“Oracle Database 11g Release 2 Client (11.2.0.4.0) for Linux x86-64”下,点击“See All”按钮。 5. 在“Oracle Database 11g Release 2 Client (11.2.0.4.0) Media Pack for Linux x86-64”页面上,接受许可协议并选择下载方式。 6. 下载完成后,解压缩文件并按照安装说明进行安装。 注意:在下载之前,你需要注册一个Oracle账号。

oracle11g客户端下载

### 回答1: 如果你需要通过本地电脑连接到一个Oracle服务器,你需要下载并安装对应版本的Oracle客户端。Oracle 11g是一个较早的版本,但仍然被广泛使用。如果要下载Oracle 11g客户端,可以参考以下步骤: 1. 打开Oracle官网。在官网的下载页面中,找到“Database”选项,并选择“Oracle Database 11g Release 2”。这里需要注意,如果你是在Windows系统上使用Oracle,需要下载“Oracle Database 11g Release 2 for Microsoft Windows (x64)”。 2. 选择想要下载的软件包。Oracle提供了多个软件包,包括标准版、企业版和Express版等。根据自己的需求选择相应的软件包。 3. 点击下载链接。Oracle要求用户先注册账号才能下载软件包。完成注册之后,点击下载链接即可开始下载。 4. 安装客户端。安装Oracle客户端需要管理员权限,因此需要以管理员身份运行安装程序。安装程序将引导用户完成安装过程,包括选择安装位置、配置数据库连接等内容。 5. 测试连接。安装完成后,可以使用安装程序提供的SQLPlus工具或其他第三方工具测试Oracle客户端是否能够成功连接到服务器。 总之,下载Oracle 11g客户端需要去Oracle官网下载并按照安装提示进行操作。在安装完成后,用户可以使用工具验证客户端是否成功连接到服务器。 ### 回答2: Oracle 11g是一种关系型数据库管理系统,它是由Oracle公司开发和提供的。在使用Oracle数据库系统之前,我们需要下载并安装Oracle 11g客户端。下面是关于Oracle 11g客户端下载的一些简要说明。 首先,我们需要登录到Oracle官方网站。在Oracle网站上,我们可以找到Oracle 11g客户端的下载页面。这个页面上通常会列出不同操作系统版本的客户端可用下载链接,例如Windows、Linux、和Mac等。 点击合适的下载链接后,会跳转到一个页面上,我们需要登录我们的Oracle账户。如果我们没有账户,我们需要注册一个新的账户。 在登录成功后,我们将进入一个下载页面。我们需要选择适合自己操作系统的版本,并且可以选择下载的文件格式(通常有zip和exe等)。点击下载按钮,开始下载客户端安装文件。 下载完成后,我们需要运行安装文件。运行安装程序后,会出现一个“Oracle Universal Installer”的窗口。在安装程序的界面上,我们需要按照提示进行一些基本设置和配置,例如选择安装位置、设置密码等。 安装完毕后,我们可以通过运行Oracle客户端的图形界面工具(如SQL Developer),连接到Oracle数据库服务器,并进行数据库管理操作。可以使用Oracle客户端连接到远程数据库服务器,也可以连接到本地数据库服务器。 总之,下载和安装Oracle 11g客户端是使用Oracle数据库系统的必要步骤。在Oracle官方网站上能够找到适合自己操作系统的客户端安装包,并按照提示进行安装和配置,最终实现与Oracle数据库服务器的连接与管理操作。 ### 回答3: Oracle 11g客户端是用于连接和访问Oracle数据库的工具。需要下载Oracle 11g客户端时,可以按照以下步骤进行: 1. 打开Oracle官方网站(https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html)。 2. 在下载页面中,可以看到不同操作系统的选项,例如Windows、Linux等。选择与您的操作系统相匹配的选项,并单击下载链接。 3. 在下载页面上,您可能需要注册一个Oracle账号来获取下载权限。如果已经有Oracle账号,可以直接使用账号登录。 4. 在选择下载选项后,您将被要求接受许可协议。请阅读并接受许可协议,然后单击确认或接受按钮。 5. 下载选项可分为两种:基础版(Basic Version)和标准版(Standard Version)。根据您的需求选择其中之一并单击下载按钮。 6. 下载文件可能会被压缩成.zip或.tar.gz格式。下载完成后,解压下载文件到您选择的位置。 7. 解压完成后,您将可以找到一个安装程序,例如setup.exe(Windows系统)。双击运行安装程序,按照提示进行安装。 8. 在安装过程中,您可能需要选择安装目录和其他配置选项。根据您的需求进行选择,并继续安装过程。 9. 安装完成后,您可以在系统中找到Oracle 11g客户端。根据安装目录中的程序快捷方式启动客户端程序,并输入相关数据库连接信息进行连接。 通过以上步骤,您可以成功下载和安装Oracle 11g客户端,并使用该客户端来连接和管理Oracle数据库。请根据您的操作系统选择正确的下载选项,并确保与Oracle网站交互时保持网络连接的稳定。

相关推荐

### 回答1: 要下载Oracle 11g客户端,您可以按照以下步骤进行操作: 1. 首先,打开您的互联网浏览器,然后前往Oracle官方网站(https://www.oracle.com)。 2. 在Oracle网站的主页上,点击“Downloads”(下载)选项卡。 3. 在下载页面上,您可以看到不同的产品和版本。在“Database”(数据库)部分,找到并点击“Oracle Database”(Oracle数据库)链接。 4. 接下来,您会被重定向到一个新的页面,上面列出了不同版本的Oracle数据库。在这里,找到并点击“Oracle Database 11g Release 2”(Oracle数据库11g发布2版本)链接。 5. 在Oracle 11g Release 2版本页面上,向下滚动,找到“Oracle Database 11g Release 2 Client(11.2.0.1.0)for Microsoft Windows (x64)”(适用于Microsoft Windows(x64)的Oracle数据库11g发布2客户端(11.2.0.1.0))部分。 6. 在该部分中,您将看到一个下载链接。点击该链接以开始下载Oracle 11g客户端安装程序。 7. 下载过程可能需要一些时间,具体取决于您的互联网速度和其他因素。 8. 下载完成后,双击下载的安装程序,按照提示进行安装。您可能需要提供一些必要的信息,如安装目录和凭据等。 9. 完成安装后,您现在可以使用Oracle 11g客户端来连接远程或本地的Oracle数据库。 请注意,上述步骤是针对Windows(x64)操作系统的。如果您使用的是其他操作系统,可以在相同的Oracle下载页面上找到相应的版本并进行下载。 希望以上信息对您有所帮助,可以顺利下载和安装Oracle 11g客户端。 ### 回答2: 要下载Oracle 11g客户端,可以按照以下步骤进行操作: 1. 打开Oracle的官方网站。 2. 导航到"产品"部分,并选择"数据库"。 3. 在数据库页面上,找到Oracle 11g版本,并选择"下载"。 4. 在下载页面上,选择你的操作系统。确保选择与你的计算机操作系统兼容的版本。比如,选择一个Windows版本的客户端。 5. 点击下载按钮,然后接受相关的服务协议。 6. 下载完成后,找到下载的安装文件并运行它。 7. 在安装向导中按照指示进行操作。这将包括接受许可协议、选择安装路径以及选择要安装的组件等。 8. 完成安装后,你将拥有Oracle 11g的客户端。你可以使用它来连接到Oracle数据库服务器并执行相应的操作。 请注意,这些步骤仅适用于从Oracle官方网站下载Oracle 11g客户端。如果你从其他来源下载,可能需要遵循不同的步骤。此外,还应确保你的计算机符合Oracle 11g的系统要求。 ### 回答3: Oracle 11g 客户端是用于连接和管理 Oracle 数据库的工具。您可以通过以下步骤下载并安装 Oracle 11g 客户端。 1. 首先,打开您的互联网浏览器,进入 Oracle 官方网站。 2. 在 Oracle 官方网站的导航栏中,找到“产品”或“下载”选项,点击进入。 3. 在产品或下载页面中,选择您的操作系统(例如,Windows、Linux、macOS等)和版本。 4. 在操作系统和版本选择后,找到 Oracle Database 客户端并点击下载链接。 5. 在下载页面中,您可能需要登录 Oracle 账户或注册一个新账户(如果没有),然后点击“下载”按钮。 6. 下载完成后,双击下载文件进行安装。根据提示选择安装选项和安装路径,并开始安装过程。 7. 安装过程中,您可能需要提供一些配置信息,例如数据库连接信息、网络设置等。根据您的需求和网络环境,进行相应的配置。 8. 等待安装过程完成,安装向导会提示您安装是否成功。如果安装成功,您可以启动 Oracle 客户端,并使用它来连接和管理 Oracle 数据库。 总之,下载和安装 Oracle 11g 客户端需要前往 Oracle 官方网站,在适用于您操作系统的下载页面上选择并下载客户端安装文件,然后按照安装向导的指示进行安装。安装完成后,您就可以使用 Oracle 11g 客户端来连接和管理 Oracle 数据库了。
安装 Oracle 数据库需要一些准备工作和步骤,以下是一些基本步骤: 1. 检查系统要求:首先,你需要确保你的 Linux 系统能够满足 Oracle 数据库的最小系统要求。Oracle 官方建议使用 Red Hat Enterprise Linux (RHEL) 7 或 Oracle Linux 7。 2. 下载 Oracle 11g:从 Oracle 官网下载 Oracle 11g 的安装文件,可以选择下载压缩文件或 ISO 文件。 3. 安装必要的软件包:在安装 Oracle 数据库之前,需要安装一些必要的软件包。这些软件包可以使用以下命令安装: sudo yum install binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXext libXtst libX11 libXau libxcb libXi make sysstat 4. 创建 Oracle 用户和组:在安装 Oracle 数据库之前,需要创建一个新的用户和组,用于运行 Oracle 数据库。 sudo groupadd oinstall sudo groupadd dba sudo useradd -g oinstall -G dba oracle 5. 修改系统参数:为了确保 Oracle 数据库正常运行,需要修改一些系统参数。你需要编辑 /etc/sysctl.conf 文件并添加以下参数: fs.file-max = 6815744 kernel.sem = 250 32000 100 128 kernel.shmmni = 4096 kernel.shmall = 1073741824 kernel.shmmax = 4398046511104 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 然后执行以下命令使参数生效: sudo sysctl -p 6. 修改用户限制:需要修改用户限制,以便 Oracle 用户可以正常运行数据库。你需要编辑 /etc/security/limits.conf 文件并添加以下参数: oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 7. 解压安装文件:将下载的安装文件解压到一个目录中,例如 /opt/oracle。 8. 运行安装程序:进入安装文件所在目录,运行以下命令启动安装程序: ./runInstaller 9. 安装 Oracle 数据库:在安装程序中选择“数据库安装”选项,然后按照提示完成安装过程。 安装完成后,你可以使用 sqlplus 命令测试 Oracle 数据库是否正常运行。
### 回答1: Oracle 11g是一个完整的关系型数据库管理系统,它需要依赖一些必要的软件包来支持其运行和功能。 首先,Oracle 11g需要依赖操作系统相关的软件包。不同的操作系统有不同的要求,例如对于Windows操作系统,你可能需要安装Visual C++ Redistributable Package;对于Linux操作系统,你可能需要安装一些必要的库文件和依赖关系。 其次,Oracle 11g需要依赖Java Development Kit(JDK)来支持其内部的Java运行时环境。你需要确保已经正确地安装了适用于Oracle 11g的JDK版本,并设置了正确的环境变量。 此外,Oracle 11g还需要依赖一些第三方软件包来支持特定功能。例如,如果你需要使用Oracle Spatial功能,你可能需要安装特定的GIS软件包;如果你需要使用Oracle Text功能,你可能需要安装相关的全文检索引擎。 最后,对于一些特定的功能和工具,Oracle 11g还可能需要依赖其他的附加软件包。这些软件包包括用于数据恢复和备份的工具、用于性能调整和优化的工具、用于安全性和身份验证的工具等等。 总之,Oracle 11g是一个复杂的软件系统,它需要依赖一系列的软件包来支持其运行和功能。正确安装和配置这些依赖软件包是确保Oracle 11g正常工作的关键步骤之一。 ### 回答2: Oracle 11g是一个关系型数据库管理系统,它需要一些依赖包来运行和支持其功能。以下是一些常见的Oracle 11g依赖包: 1. Java Development Kit (JDK):Oracle 11g依赖于Java平台,因此需要安装JDK来提供Java环境。 2. Oracle Universal Installer(OUI):这是Oracle安装程序,它提供了安装、配置和升级Oracle数据库的界面。 3. Oracle Grid Infrastructure:这是一个允许多个服务器上的数据库实例进行联网和集群的基础结构。它包含了多个组件和依赖包,如Oracle Clusterware、Oracle ASM(Automatic Storage Management)等。 4. Oracle Net:这是Oracle数据库的网络通信组件,它依赖于操作系统的网络协议栈,并提供了客户端和服务器之间的数据传输功能。 5. Oracle Database Client:Oracle 11g还可能依赖于Oracle Database Client,这是一个用于连接到远程Oracle数据库的客户端工具。 这些依赖包可以通过Oracle官方网站下载和安装。在安装Oracle 11g之前,最好先查看和满足安装所需的依赖关系,以确保安装过程顺利进行。除了依赖包外,还需要满足一些硬件和操作系统的要求,比如适配的处理器、足够的内存和硬盘空间,以及支持的操作系统版本等。 ### 回答3: Oracle 11g 是一款强大的关系型数据库管理系统,它在安装和运行过程中需要依赖一些必要的包来支持其功能。以下是 Oracle 11g 安装和运行所需的主要依赖包: 1. Java Development Kit (JDK): Oracle 11g 使用 Java 技术来支持其内部组件和功能,因此安装 JDK 是必需的。安装过程中需要指定正确的 JDK 版本,以确保与 Oracle 11g 兼容。 2. GNU C Library (glibc): Oracle 11g 依赖 glibc,这是一种 C 语言库,用于提供操作系统级别的函数和特性支持。安装过程中可能会要求安装或更新 glibc,以确保 Oracle 11g 能够正常运行。 3. X Window System(X11): 如果要在图形界面下进行 Oracle 11g 的安装和管理操作,则需要安装 X Window System。这个系统提供了图形用户界面(GUI)的基础设施,以便用户可以通过图形界面进行数据库管理。 此外,还可能需要安装一些其他辅助包,具体取决于系统的配置和需求。Oracle 11g 的安装程序通常会在安装过程中进行依赖包的检查,并提供必要的指导和提示。
安装Oracle 11g需要以下步骤: 1. 下载Oracle 11g安装包和补丁 在Oracle官网下载Oracle 11g安装包和补丁,下载后上传到CentOS虚拟机中。 2. 安装依赖包 在CentOS 7中,需要安装以下依赖包: yum install oracle-rdbms-server-11gR2-preinstall 3. 安装Oracle 11g 在CentOS虚拟机中,执行以下命令: unzip linux.x64_11gR2_database_1of2.zip unzip linux.x64_11gR2_database_2of2.zip cd database ./runInstaller 执行上述命令后,会进入Oracle 11g安装向导,按照提示进行配置,包括选择语言、安装类型、安装路径、监听器配置等。安装过程需要耐心等待,可能需要数十分钟或数小时。 4. 执行补丁 在安装Oracle 11g后,需要执行以下补丁: unzip p13390677_112040_Linux-x86-64_1of7.zip unzip p13390677_112040_Linux-x86-64_2of7.zip cd 13390677 ./opatch apply 5. 配置环境变量 编辑/etc/profile文件,在文件末尾添加以下内容: export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 6. 启动Oracle 11g 执行以下命令启动Oracle 11g: su - oracle sqlplus / as sysdba startup 7. 设置Oracle 11g开机启动 编辑/etc/rc.d/rc.local文件,在文件末尾添加以下内容: su - oracle -c '$ORACLE_HOME/bin/dbstart' su - oracle -c '$ORACLE_HOME/bin/lsnrctl start' 8. 测试连接 在其他机器上,使用Oracle客户端工具测试是否能够连接Oracle 11g数据库。 以上是在CentOS 7虚拟机中安装Oracle 11g的步骤。
Oracle 11g RAC(Real Application Clusters)安装步骤如下: 1. 安装操作系统并配置网络 确保所有节点都安装了支持Oracle 11g的操作系统,例如Oracle Linux或Red Hat Enterprise Linux,并且网络配置正确并可访问。 2. 安装Oracle Grid Infrastructure 在所有节点上安装Oracle Grid Infrastructure(GI),此步骤将配置集群的基础设施,例如Clusterware和ASM(Automatic Storage Management)。 3. 创建ASM磁盘组 使用ASM创建磁盘组,这将用于存储Oracle数据库的数据文件和日志文件。 4. 安装Oracle软件 在所有节点上安装Oracle软件,此步骤将安装Oracle数据库软件和Database Configuration Assistant(DBCA)等附加组件。 5. 创建数据库 使用DBCA创建RAC数据库。在创建数据库时,可以选择使用ASM存储数据文件和日志文件,并指定需要在哪些节点上创建实例。 6. 安装并配置Oracle Net Services 在所有节点上安装Oracle Net Services,并配置监听器和服务名,以便客户端可以连接到集群中的数据库。 7. 安装并配置Oracle Clusterware 在所有节点上安装Oracle Clusterware,并确保它可以在各个节点之间正常运行。此步骤将确保集群中的节点可以协同工作并实现高可用性。 8. 安装并配置Oracle Enterprise Manager 在一个节点上安装Oracle Enterprise Manager,并配置它以管理整个集群。 9. 测试集群 在集群中的每个节点上,测试数据库和所有组件的运行状况,并确保所有节点都可以连接到数据库和应用程序。 以上是Oracle 11g RAC安装的简要步骤,具体步骤和注意事项可以参考Oracle官方文档。
### 回答1: 在Linux下导入Oracle的dmp数据,可以按照以下步骤进行操作: 1. 创建一个新的数据库实例,可以使用Oracle的Database Configuration Assistant(DBCA)工具来创建。 2. 将dmp文件复制到Linux服务器上,并确保Oracle用户有读取该文件的权限。 3. 打开终端窗口,使用Oracle的imp命令导入dmp文件。例如,如果dmp文件名为sample.dmp,导入到数据库实例名为mydb的数据库中,可以使用以下命令: imp system/password@mydb file=sample.dmp full=y 其中,system/password是Oracle数据库的管理员账户和密码,full=y表示导入整个数据库。 4. 根据dmp文件的大小和数据库的性能,导入过程可能需要一些时间。在导入过程中,可以使用Oracle的imp命令的log参数来记录导入过程的日志信息。例如: imp system/password@mydb file=sample.dmp full=y log=import.log 5. 导入完成后,可以使用Oracle的SQL命令来查询导入的数据。例如,可以使用以下命令查询导入的表: select * from tablename; 以上就是在Linux下导入Oracle的dmp数据的基本步骤。需要注意的是,在导入过程中可能会遇到一些问题,例如dmp文件格式不正确、数据库实例配置不正确等,需要根据具体情况进行调整和解决。 ### 回答2: 在Linux操作系统下,导入Oracle数据库的dmp数据,可以用imp命令实现。该命令需要在Linux终端中运行,并且需要有数据库管理员权限才能够执行。 步骤如下: 1. 登录到Linux系统的终端上,使用数据库管理员账户进入Oracle数据库的命令行界面。例如,可以使用以下命令登录到Oracle数据库: sqlplus / as sysdba 2. 确认dmp数据文件是否已经位于Linux系统上,可以使用ls命令查看。假设我们的dmp数据文件名为test.dmp,且该文件位于/home/目录下。 3. 在命令行里执行以下imp命令: imp file=/home/test.dmp full=y 上面的命令中,file参数指定导入的dmp文件,full参数指定完全导入数据库对象和数据。 4. 导入数据时,可能需要输入一个imp用户的用户名和密码。如果尚未创建该用户,可以使用以下命令进行创建: create user imp identified by password; grant dba to imp; 5. 在导入数据库之前,需要将数据库的大小调整为适合导入的大小。可以使用以下命令进行调整: alter system set db_recovery_file_dest_size = 10G; 参考以上步骤,就可以在Linux操作系统上成功导入Oracle数据库的dmp数据。需要注意的是,在导入过程中,可能会出现各种错误。如果遇到错误信息,需要仔细分析错误原因并尝试解决。 ### 回答3: 在Linux下,导入dmp数据可以通过使用Oracle官方提供的工具——IMP(import导入工具)来实现。IMP工具是Oracle的数据库导入工具之一,它可以将dmp文件导入到Oracle数据库中。以下是导入dmp数据的具体步骤: 1.创建一个新的表空间(可选) 如果你想要将dmp文件导入到一个新的表空间中,首先需要创建一个新的表空间。你可以使用以下命令创建一个新的表空间: CREATE TABLESPACE 表空间名称 DATAFILE '/path/to/datafile.dbf' SIZE 大小M AUTOEXTEND ON NEXT 大小M MAXSIZE 最大大小M; 其中,/path/to/datafile.dbf是你选择的数据文件路径,大小M是数据文件的大小(单位为兆)。 2. 创建用户 在导入dmp文件之前,需要先创建一个用户。你可以使用以下命令创建一个名为newuser的用户: CREATE USER newuser IDENTIFIED BY 密码 DEFAULT TABLESPACE 表空间名称; 3. 授权 然后,你需要给这个新用户授权,以便他可以读写数据库中的数据: GRANT CONNECT TO newuser; GRANT RESOURCE TO newuser; GRANT DBA TO newuser; 4. 导入 现在,可以使用IMP工具导入dmp文件了。你可以使用以下命令导入数据: imp newuser/[密码]@//localhost:1521/[SID] from=/path/to/dmp_file.dmp full=y 其中,newuser是你刚刚创建的用户,密码是新用户的密码,localhost:1521是Oracle数据库的连接地址和端口号,[SID]是Oracle实例的标识符,/path/to/dmp_file.dmp是你要导入的dmp文件路径,full=y表示要导入整个数据库。 在执行命令后,你将看到一系列导入数据的进度信息,包括导入表、数据和索引等。当导入完成后,你可以打开Oracle客户端并查询数据库,验证数据是否已成功导入到Oracle数据库中。 总之,在Linux下导入dmp数据非常方便,只需要简单的几步操作即可实现。通过IMP工具,你可以将dmp文件轻松快速地导入到Oracle数据库中,非常适用于需要在Linux上部署Oracle数据库的用户。
libclntsh.so.11.1是Oracle数据库客户端软件中的一个重要库文件。它是Oracle提供的用于与数据库进行交互的共享对象文件,用于支持应用程序与数据库之间的通信和数据交换。 libclntsh.so.11.1是Oracle 11g数据库客户端软件中的一个库文件,它包含了许多关键的函数和方法,可以实现与数据库的连接、登录、查询、更新等操作。通过使用这个库文件,我们可以在应用程序中使用Oracle提供的API来编写代码,实现与Oracle数据库的交互。 libclntsh.so.11.1提供了对Oracle数据库的访问和操作的功能,使得用户可以通过编程的方式与数据库进行通信,以满足各种需求。它可以在不同的操作系统上使用,如Linux、Unix等。通过连接到数据库,应用程序可以执行SQL查询、插入、删除等操作,并通过libclntsh.so.11.1提供的函数和方法获取查询结果或者执行结果。 通过使用libclntsh.so.11.1,开发人员可以方便地将Oracle数据库集成到他们的应用程序中,通过调用库文件提供的函数来执行各种数据库操作。同时,这个库文件还提供了一些优化的功能,可以提高数据库操作的性能和效率。 总之,libclntsh.so.11.1是Oracle数据库客户端软件中的一个重要库文件,用于支持应用程序与数据库的连接和交互。它提供了许多关键的函数和方法,使得开发人员可以方便地进行数据库操作,并实现各种功能。这个库文件的使用可以提高应用程序与Oracle数据库之间的通信效率和性能。
Authentication不匹配的问题通常是由于客户端和服务器端的版本不一致导致的。根据您提供的引用内容,可以看出这个问题可能与您的Oracle客户端版本和远程服务器的版本不匹配有关。您提到您的电脑上的Oracle客户端版本是11G,而远程服务器的版本是12C,这可能导致连接时出现ORA-28040错误,即没有匹配的认证协议。为解决这个问题,您可以尝试升级您的Oracle客户端版本与远程服务器的版本相匹配。另外,还可以尝试修改所有数据库用户的密码,以解决ORA-01017错误,如通过修改system用户密码为新密码。这些操作可能需要在数据库管理员的指导下进行,以确保操作的准确性和安全性。123 #### 引用[.reference_title] - *1* [linux 无法改密码提示:passwd: Authentication token manipulation error](https://blog.csdn.net/weixin_31236101/article/details/116667592)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [ORA-28040: No matching authentication protocol(Ora-28040 没有匹配的验证协议)](https://blog.csdn.net/u011078141/article/details/87444778)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Oracle ORA-28040 No matching authentication protocol (没有匹配的验证协议) 报错处理](https://blog.csdn.net/ndfc330/article/details/106017843)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
application/msword
标题:PHP基础教程 出处:风流的CG网络日志 时间:Mon, 28 Aug 2006 07:24:34 +0000 作者:yufeng 地址:http:///read.php?38 内容: 提供给新手学习的 PHP新手教程,是一个比较有价值的PHP新手教程! 一、PHP简介 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的WEB站点。本教程并不想让你完全了解这种语言,只是能使你尽快加入开发动态web站点的行列。我假定你有一些HTML(或者HTML编辑器)的基本知识和一些编程思想。 1.简介 PHP是能让你生成动态网页的工具之一。PHP网页文件被当作一般HTML网页文件来处理并且在编辑时你可以用编辑HTML的常规方法编写PHP。 PHP代表:超文本预处理器(PHP: Hypertext Preprocessor)。PHP是完全免费的,不用花钱,你可以从PHP官方站点(http://www.php.net)自由下载。PHP遵守GNU公共许可(GPL),在这一许可下诞生了许多流行的软件诸如Linux和Emacs。你可以不受限制的获得源码,甚至可以从中加进你自己需要的特色。PHP在大多数Unix平台,GUN/Linux和微软Windows平台上均可以运行。怎样在Windows环境的PC机器或Unix机器上安装PHP的资料可以在PHP官方站点上找到。安装过程很简单。 如果你的机器解决了2000问题,那么PHP也一样没有千年虫问题! 1.1 历史 三年前,Rasmus Lerdorf为了创建他的在线简历而创造了"个人主页工具"(Personal Home Page Tools)。这是一种非常简单的语言。其后越来越多的人们注意到了这种语言并对其扩展提出了各种建议。在许多人的无私奉献下以及这种语言本身的源代码自由性质,它演变成为一种特点丰富的语言,而且现在还在成长中。 PHP虽然很容易学习,但是速度上比mod_perl(植入web服务器的perl模块)慢。现在有了可以与mod_perl速度想媲美的被称作Zend的新引擎,而PHP4就可以充分利用这个引擎。PHP4还处在BETA测试阶段。Andy Gutmans和Zeev Suraki是Zend的主要作者。可以去Zend站点(http://www.zend.com)了解更多。 PHP的应用在个人性质的web工程中增长显著。根据Netcraft在1999年10月的报告,有931122个域和321128个IP地址利用PHP技术。 1.2 PHP的先进之处 应用PHP有许多好处。当然已知的不利之处在于PHP由于是开放源码项目,没有什么商业支持,并且由此而带来的执行速度缓慢(直到PHP4之前)。但是PHP的邮件列表很是有用而且除非你正在运行像Yahoo!或者Amazon.com这样的极受欢迎的站点,你不会感觉出PHP的速度与其他的有什么不同。最起码我就没有感觉出来!好了,让我们来看看PHP有那些优点: - 学习过程 我个人更喜欢PHP的非常简单的学习过程。与Java和Perl不同,你不必把头埋进100多页的文档中努力学习才可以写出一个象样的程序。只要了解一些基本的语法和语言特色,你就可以开始你的PHP编码之旅了。之后你在编码过程中如果遇到了什么麻烦,还可以再去翻阅相关文档。 PHP的语法与C,Perl,ASP或者JSP。对于那些对上述之一的语言较熟悉的人来说,PHP太简单了。相反的,如果你对PHP了解较多,那么你对于其他几种语言的学习都很简单了。 你只需要30分钟就可以将PHP的核心语言特点全部掌握,你可能已经非常了解HTML,甚至你已经知道怎样用编辑设计软件或者手工来制作好看的WEB站点。由于PHP代码能够无障碍的添加进你的站点,在你设计和维护站点的同时,你可以很轻松的加入PHP使得你的站点更加具有动态特性。 - 数据库连接 PHP可以编译成具有与许多数据库相连接的函数。PHP与MySQL是现在绝佳的组合。你还可以自己编写外围的函数取间接存取数据库。通过这样的途径当你更换使用的数据库时,可以轻松的更改编码以适应这样的变化。PHPLIB就是最常用的可以提供一般事务需要的一系列基库。 - 可扩展性 就像前面说的那样,PHP已经进入了一个高速发展的时期。对于一个非程序员来说为PHP扩展附加功能可能会比较难,但是对于一个PHP程序员来说并不困难。 - 面向对象编程 PHP提供了类和对象。基于web的编程工作非常需要面向对象编程能力。PHP支持构造器、提取类等。 - 可伸缩性 传统上网页的交互作用是通过CGI来实现的。CGI程序的伸缩性不很理想,因为它为每一个正在运行的CGI程序开一个独立进程。解决方法就是将经常用来编写CGI程序的语言的解释器编译进你的web服务器(比如mod_perl,JSP)。PHP就可以以这种方式安装,虽然很少有人愿意这样以CGI方式安装它。内嵌的PHP可以具有更高的可伸缩性。 - 更多特点 PHP的开发者们为了更适合web编程,开发了许多外围的流行基库,这些库包含了更易用的层。你可以利用PHP连接包括Oracle,MS-Access,Mysql在内的大部分数据库。你可以在苍蝇上画图,编写程序下载或者显示e-mail。你甚至可以完成网络相关的功能。最好的是,你可以选择你的PHP安装版本需要哪些功能。引用Nissan的Xterra的话来说就是PHP可以做到你想让它做到的一切而且无所不能! 1.3 竞争对手:ASP,mod_perl,JSP 我当然不清楚ASP/JSP能做些什么。不过明确的是编写那样的代码有多简单,购买它们会有多昂贵以及它们需要多么昂贵和强大的硬件。如果你有什么中立的观点(比如说没有被SUN和Microsoft的百万美金所影响),请顺便通知我。 据我所知,JSP基于Java,因此Java程序员可以轻松开始编码。ASP只是一个一般的引擎,具有支持多种语言的能力,不过默认的并且是最常用的还是VBScript。 mod_perl与Perl一样强大,只是更快一些。 二、PHP入门 PHP站点的在线教程已经很棒了。在那里还有一些其他教程的链接。而本文的该部分将让你对PHP熟悉一点。我不可能做到没有任何遗漏,我的目的只在于能让你迅速开始你的PHP编程。 2.1 首要条件 你首先必须要有一个正在工作着的支持PHP的web服务器。我假定在你的服务器上所有PHP文件的扩展名为.php3。 2.2 PHP的安装 生成一个名为test.php3的文件,含有以下内容: 然后在你的浏览器中打开此文件。看看这个页面你就知道你的PHP安装使用的选项了。 2.3 语法 就像前面提到的一样,你可以混合编写你的PHP代码和HTML代码。因此你必须有办法将两者区别开来。以下就是你可以采用的几种方法。你可以选用其中一种你最适应的并且就这样坚持这种方法! 从HTML中分离 以下是可以使用的方法: . . . 语句 与Perl和C一样,在PHP中用(;)来分隔语句。那些从HTML中分离出来的标志也表示语句的结束。 注释 PHP支持C,C++和Unix风格的注释方式: /* C,C++风格多行注释 */ // C++风格单行注释 # Unix风格单行注释 Hello,World! 通过我们已经学过的知识,你可以编写一个最简单的程序输出一个也许是程序世界中最有名的词语: First PHP page 2.4 数据类型 PHP支持整数、浮点数、字符串、数组和对象。变量类型通常不由程序员决定而由PHP运行过程决定(真是好的解脱!)。但是类型也可以被函数cast或者settype()明确的设定。 数值 数值类型可以是整数或是浮点数。你可以用以下的语句来为一个数值赋值: $a = 1234; # 十进制数 $a = -123; # 负数 $a = 0123; # 八进制数 (等于十进制数的83) $a = 0x12; # 十六进制数(等于十进制数的18) $a = 1.234; # 浮点数"双精度数" $a = 1.2e3; # 双精度数的指数形式 字符串 字符串可以由单引号或双引号引出的字段定义。注意不同的是被单引号引出的字符串是以字面定义的,而双引号引出的字符串可以被扩展。反斜杠(\)可以被用来分割某些特殊字符。举例如下: $first = 'Hello'; $second = "World"; $full1 = "$first $second"; # 产生 Hello World $full2 = '$first $second';# 产生 $first $second 可以将字符和数字利用运算符号连接起来。字符被转化成数字,利用其最初位置。在PHP手册中有详细的例子。 数组与哈希表 数组与哈希表以同样的方法被支持。怎样运用取决于你怎样定义它们。你可以用list()或者array()来定义它们,也可以直接为数组赋值。数组的索引从0开始。虽然我在这里没有说明,但是你一样可以轻易的使用多维数组。 // 一个包含两个元素的数组 $a[0] = "first"; $a[1] = "second"; $a[] = "third"; // 添加数组元素的简单方法 // 现在$a[2]被赋值为"third" echo count($a); // 打印出3,因为该是数组有3个元素 // 用一个语句定义一个数组并赋值 $myphonebook = array ( "sbabu" => "5348", "keith" => "4829", "carole" => "4533" ); // 噢,忘了教长吧,让我们添加一个元素 $myphonebook["dean"] = "5397"; // 你定义的carale元素错了,让我们更正它 $myphonebook["carole"] => "4522" // 我还没有告诉你怎样使用数组的相似支持方式吗?让我们看一看 echo "$myphonebook[0]"; // sbabu echo "$myphonebook[1]"; // 5348 其他一些对数组或哈希表有用的函数包括sort(),next(),prev()和each()。 对象 使用new语句产生一个对象: class foo { function do_foo () { echo "Doing foo."; } } $bar = new foo; $bar->do_foo(); 改变变量类型 在PHP手册中提到:"PHP不支持(也不需要)直接在声明变量时定义变量类型;变量类型将根据其被应用的情况决定。如果你为变量var赋值为一个字符串,那么它变成了一个字符串。如果你又为它赋了整数值,那么它就变成了整数。" $foo = "0"; // $foo是字符串(ASCII 48) $foo++; // $foo是字符串"1" (ASCII 49) $foo += 1; // $foo现在是整数(2) $foo = $foo + 1.3; // $foo是一个双精度数(3.3) $foo = 5 + "10 Little Piggies"; // $foo是一个整数(15) $foo = 5 + "10 Small Pigs"; // $foo是一个整数(15) 如果想要强行转换变量类型,可以使用与C语言相同的函数settype()。 2.5 变量与常量 可能你已经注意到,变量都有一个美元符号($)的前缀。所有变量都是局部变量,为了使得定义的函数中可以使用外部变量,使用global语句。而你要将该变量的作用范围限制在该函数之内,使用static语句。 $g_var = 1 ; // 全局范围 function test() { global $g_var; // 这样就可以声明全局变量了 } 更先进一些的是变量的变量表示。请参考PHP手册。这在有时会显得很有用。 PHP内置了许多已定义的变量。你也可以用define函数定义你自己的常量,比如define("CONSTANT","value")。 2.6 运算符 PHP具有C,C++和Java中的通常见到的运算符。这些运算符的优先权也是一致的。赋值同样使用"="。 算术和字符 以下只有一种运算符是有关字符的: $a + $b :加 $a - $b :减 $a * $b :乘 $a / $b :除 $a % $b :取模(余数) $a . $b :字符串连接 逻辑和比较 逻辑运算符有: $a || $b :或 $a or $b :或 $a && $b :与 $a and $b :与 $a xor $b :异或 (当$a或$b为true时为true,两者一样时为false) ! $a :非 比较运算符有: $a == $b :相等 $a != $b :不等 $a < $b :小于 $a $b :大于 $a >= $b :大于等于 与C一样PHP也有三重运算符(?:)。位操作符在PHP同样存在。 优先权 就和C以及Java一样! 2.7 控制流程结构 PHP有着与C一样的流程控制。我将在下面大概介绍。 if, else, elseif, if(): endif if (表达式一) { . . . } elseif (表达式二) { . . . } else { . . . } // 或者像Python一样 if (表达式一) : . . . . . . elseif (表达式二) : . . . else : . . . endif ; Loops. while, do..while, for while (表达式) { . . . } do { . . . } while (表达式); for (表达式一; 表达式二; 表达式三) { . . . } //或者像Python一样 while (expr) : . . . endwhile ; switch switch是对多重if-elseif-else结构的最好的替换: switch ($i) { case 0: print "i equals 0"; case 1: print "i equals 1"; case 2: print "i equals 2"; } break, continue break中断当前的循环控制结构。 continue被用来跳出剩下的当前循环并继续执行下一次循环。 require, include 就像C中的#include预处理一样。你在require中指定的那个文件将替代其在主文件中的位置。在有条件的引用文件时,可以使用include()。这样就使得你可以将复杂的PHP文件分割成多个文件并且在不同需要时分别引用它们。 2.8 函数 你可以像以下的例子一样定义自己的函数。函数的返回值可以是任何数据类型: function foo (变量名一, 变量名二, . . . , 变量名n) { echo "Example function.\n"; return $retval; } 所有PHP代码都可以出现在函数定义中,甚至包括对其他函数和类的定义。函数必须在引用之前定义。 2.9 类 利用类模型建立类。可以参考PHP手册中对类的详细解释。 class Employee { var $empno; // 员工人数 var $empnm; // 员工姓名 function add_employee($in_num, $in_name) { $this->empno = $in_num; $this->empnm = $in_name; } function show() { echo "$this->empno, $this->empnm"; return; } function changenm($in_name) { $this->empnm = $in_name; } } $sbabu = new Employee; $sbabu->add_employee(10,"sbabu"); $sbabu->changenm("babu"); $sbabu->show(); 三、从实例入手  PHP的许多特点与其他软件或者工具有关。利用迄今为止我们所学到的PHP知识,我们可以试着建立一个简单交互的网站。利用这一过程我们又可以学到不少东西。好吧,我们现在开始专注于一个典型个人网站的建设。 3.1 计划一个站点 一般一个个人站点包括一个欢迎页面、一个留言本页面、一个书签链接页面、一个计数器、联系信息,甚至还有照片集和一些音乐文件等等。让我们从一个标题页面、一个联系信息页面和一个简历页面开始。我们同样需要标准的通用的页面头部和底部。 标题页面--front.html 这里我们有一个非常简单的html文件: 我的个人主页--欢迎 我的个人主页 欢迎 欢迎来我的寒舍,虽然这里现在暂时还没有什么。 不过我希望马上就可以多起来。 Copyright ? 我自己,1999 联系信息页面--count.html 同样我们又有了一个简单页面: 我的个人主页--联系信息 我的个人主页 联系信息 你可以通过1-800-PHP-INFO联系我 Copyright ? 我自己,1999 3.2 HTML到PHP 从上面你可以看出,每个页面有相同的头部和底部。像上面那样每个页面都写入相同的信息在工作量少的时候还可以,但是想象一下当有100多页面且你需要全部更改其头部或底部时你要花费多大精力?一页一页的手工更改是一件多么冗长无趣的事情啊!所以我们应该为这些页面编写PHP的头部和底部文件,之后我们只要在每个HTML页面中引用它们就行了。我们将把这些include文件放在一个叫include的子目录下。下面我们就把这些站点的通用内容写进文件中。 全站通用变量设定:common.inc <? // 全站通用变量 $MyEmail = "phptalk@tnc.org"; $MyEmailLink = "$MyEmail"; $MyName = "PHP Talk"; $MySiteName = $MyName."'s Home Page"; ?> 通用页面头部:header.inc 通用页面底部:footer.inc Copyright ? by , 1999 新的页面front.php3: 欢迎来我的寒舍,虽然这里现在暂时还没有什么。 不过我希望马上就可以多起来。 新的cont.php3: 你可以通过1-800-PHP-INFO联系我 现在你就可以猜出这样安排的好处了。如果你想改动页面的头部或者底部,你只需要改动相应的文件就可以了。如果你要修改你的e-mail地址甚至你的名字,只要修改common.inc文件就行了。另外值得注意的是你可以把具有任何文件名或者文件扩展名的文件包含进你的文件中,你甚至可以包含其他站点上的文件。 3.3 计数器 让我们在首页上加上一个计数器。这个例子已经被讲过多次了,但是还是有利于演示怎样读写文件以及创建自己的函数。counter.inc包含以下代码: 然后我们更改front.php3文件以显示这个计数器: <? include("include/counter.inc"); // 我把计数值放在文件counter.txt中,读出并输出 printf ("%06d \n", get_hitcount("counter.txt")); include("include/footer.inc"); ?> 看看我们的新front.php3 3.4 反馈表单 让我们再添加一个反馈表单以便你的浏览者填写并e-mail给你。举例来说我们用一种很简单的方法实现它,我们只需要两个页面:一个为浏览者提供输入表单;一个获得表单数据并处理、mail给你。 PHP中获取表单数据是很简单的。当一个表单被发送后,表单中所包含的各个元素被赋上了相应的值,而这样就可以像引用一般变量一样使用了。 在process_form.php3中,变量$mytext就被赋予了输入的值--非常简单!同样的,你可以从列表框、多选框、单选框、按钮等表单元素中取得变量值。你唯一要做的就是为表单中的每一个元素取名以便将来可以引用。 根据这个方法,我们可以生成一个简单的包含三个元素的表单:姓名、e-mail地址和留言。当浏览者发送表单后,处理该表单的PHP页面(sendfdbk.php3)读取数据,检查姓名是否为空,最后将数据mail给你。 表单:form.php3 Your feedback on my home page. 处理表单:sendfdbk.php3 <? include("include/common.inc"); $title = "Feedback"; include("include/header.inc"); if ( $name == "" ) { // 现在我很讨厌匿名的留言! echo "Duh ? How come you are anonymous?"; } elseif ($name == "Your name") { // 这个浏览者真是不想透露姓名啊! echo "Hello ? Your name is supposed to be replaced with your actual name!"; } else { // 输出一段礼貌的感谢语 echo " Hello, $name. Thank you for your feedback. It is greatly appreciated. Thanking you $MyName $MyEmailLink "; // 最后mail出去 mail($MyEmail, "Feedback."," Name : $name E-mail : $email Comment : $comment "); } include("include/footer.inc"); ?> 3.5 简单的站内搜索引擎 PHP可以调用外部程序。在Unix环境下我们可以利用程序grep实现一个简单的搜索引擎。我们可以做的稍微复杂一些:使用一个页面既输出一个表单供用户输入搜索字串又输出查询结果。 <FORM ACTION="" METHOD="POST"> <INPUT TYPE="text" NAME="searchstr" value="" SIZE="20" MAXLENGTH="30"> <? if ( ! empty($searchstr) ) { // empty()用来检查查询字串是否为空 // 如果不为空,调用grep查询 echo "\n"; // 调用grep对所有文件进行大小写非敏感模式的查询 $cmdstr = "grep -i $searchstr *"; $fp = popen( $cmdstr, "r" ); // 执行命令并输出管道 $myresult = array(); // 存储查询结果 while( $buffer = fgetss ($fp, 4096)) { // grep返回这样格式: 文件名:匹配字串出现行数 // 因此我们利用函数split()分离处理数据 list($fname, $fline) = split(":",$buffer, 2); // 我们只输出第一次匹配的结果 if ( !defined($myresult[$fname])) $myresult[$fname] = $fline; } // 现在我们将结果存储在数组中,下面就可以处理并输出了 if ( count($myresult) ) { echo "\n"; while(list($fname,$fline) = each($myresult)) echo " $fname : $fline \n"; echo "\n"; } else { // 如果没有查询结果 echo "Sorry. Search on $searchstr returned no results.\n"; } pclose($fp); } ?> 注释: PHP_SELF是PHP内建的变量。包含当前文件名。 fgets()按行读取文件,最多4096(指定)字符长度。 fgetss()与fgets()相似,只是解析输出的HTML标记。 split()有一个参数是2,因为我们只需要把输出分成两部分。另外需要省略":"。 each()是一个数组操作函数,用来更方便的遍历整个数组。 popen()、pclose()与fopen()、fclose()的功能很相似,只是增加了管道处理。 请注意以上的代码并不是实现一个搜索引擎的好办法。这只是有助于我们更好学习PHP而举出的一个例子而已。理想的情况是你应该建立一个包含关键字的数据库然后进行搜索 四、与数据库链接 通过PHP你可以轻松的连接到数据库,请求数据并将其显示在你的web站点中,甚至修改数据库中的数据。MySQL是一种很流行的数据库,并且在互联网中有许多有关PHP与MySQL的教程。MySQL是免费的,这一点也许就吸引了不少人。由于其广泛应用,我就不想在这里赘述MySQL的使用方法了。Oracle被大量在企业应用中采用,因此我们就利用Oracle来介绍PHP与数据库的连接。我们当然不会提及Oracle数据库的设计原理,原因是这已经超出了我们的讨论范围。 PHP提供了两套函数与Oracle连接,分别是ORA_和OCI函数。其中ORA_函数略显陈旧。OCI函数更新据说更好一些。两者的使用语法几乎相差无几。如前所述,你的PHP安装选项应该可以支持两者的使用。 想获得更多有关在Microsoft Windows平台上安装支持PHP3的Apache服务器的知识以及更多有关Oracle数据库的知识,请查阅以下URL:www.csoft.net/~vsbabu/articles/oraphp.html。 4.1 连接 <? if ($conn=Ora_Logon("user@TNSNAME","password")) { echo "SUCCESS ! Connected to database\n"; } else { echo "Failed :-( Could not connect to database\n"; } Ora_Logoff($conn); phpinfo(); ?> 以上代码使用TNSNAME(在你的tnsnames.ora文件中指明)定义的Oracle数据库名称、用户名称和密码连接数据库。在成功连接的基础上,ora_logon函数返回一个非零的连接ID并储存在变量$conn中。 4.2 查询 假设与数据库已经连接就绪,下面我们就来实际的应用对数据库的查询。下面的代码演示了一个连接并查询的典型例子: <? /* * 连接数据库并执行查询 */ function printoraerr($in_cur) { // 检查Oracle是否出错 // 如果存在错误则显示 // 当指针被激活时每次请求Oracle后调用该函数 if(ora_errorcode($in_cur)) echo "Oracle code - ".ora_error($in_cur)."\n"; return; } /** 主程序 */ if (!($conn=ora_logon("user@TNSNAME","password"))) { echo "Connection to database failed\n"; exit; } echo "Connected as connection - $conn\n"; echo "Opening cursor ...\n"; $cursor=ora_open($conn); printoraerr($cursor); echo "Opened cursor - $cursor\n"; $qry="select user,sysdate from dual"; echo "Parsing the query $qry ...\n"; ora_parse($cursor,$qry,0); printoraerr($cursor); echo "Query parsed \n"; echo "Executing cursor ...\n"; ora_exec($cursor); printoraerr($cursor); echo "Executed cursor\n"; echo "Fetching cursor ...\n"; while(ora_fetch($cursor)) { $user=ora_getcolumn($cursor,0); printoraerr($cursor); $sysdate=ora_getcolumn($cursor,1); printoraerr($cursor); echo " row = $user, $sysdate \n"; } echo "Fetched all records\n"; echo "Closing cursor ...\n"; ora_close($cursor); echo "Closed cursor\n"; echo "Logging off from oracle... \n"; ora_logoff($conn); echo "Logged off from oracle \n"; ?> (译者注:以上代码段缺少注释,请读者参考PHP Manual的Oracle数据库函数部分) 4.3 显示结果 以下代码演示了怎样查询数据库并将结果输出: <? function printoraerr($in_cur, $conn) { // 检查Oracle是否出错 // 如果存在错误则显示 // 当指针被激活时每次请求Oracle后调用该函数 // If it encountered an error, we exit immediately if(ora_errorcode($in_cur)) { echo "Oracle code - ".ora_error($in_cur)."n"; ora_logoff($conn); exit; } return; } function exequery($w_qry,$conn) { $cursor=ora_open($conn); printoraerr($cursor,$conn); ora_parse($cursor,$w_qry,0); printoraerr($cursor,$conn); ora_exec($cursor); printoraerr($cursor,$conn); $numrows=0; $w_numcols=ora_numcols($cursor); // 显示头部 echo " \n"; for ($i=0;$i<$w_numcols;$i++) { $align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT"; echo "\t".ora_columnname($cursor,$i)."\n"; } echo "\n"; while(ora_fetch($cursor)) { echo "\n"; for ($i=0;$i<$w_numcols;$i++) { $align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT"; if(ora_columntype($cursor,$i)=="LONG") echo "". ora_getcolumn($cursor,$i)."\n"; else echo "".ora_getcolumn($cursor,$i)."\n"; printoraerr($cursor,$conn); } $numrows++; echo "\n"; } if ($numrows==0) echo "Query returned no records \n"; else { echo "\n"; echo "Count\n"; echo "$numrows\n"; echo "\n"; } echo "\n"; ora_close($cursor); return; } // 主程序 if(!($conn=ora_logon("user@SID","password"))) { echo "Error: Cannot connect to database\n"; exit; } $qry="SELECT deptno \"Dept\" ,empno \"Emp\" ,empnm \"Name\" ,salary \"Salary\" FROM employee ORDER BY 1,2"; exequery($qry); ora_logoff($conn); ?> (译者注:以上代码段缺少注释,请读者参考PHP Manual的Oracle数据库函数部分) 4.4 基于HTTP的Oracle登录 将以下代码加在PHP页面代码之前以确认Oracle登录。注意你必须正确设定$ SID。 <? if(!isset($PHP_AUTH_USER)) { Header("WWW-authenticate: basic realm=\"$SID\""); Header("HTTP/1.0 401 Unauthorized"); $title="Login Instructions"; echo " You are not authorized to enter the site \n"; exit; } else { if (!($conn=ora_logon("$PHP_AUTH_USER@$SID",$PHP_AUTH_PW))) { Header("WWW-authenticate: basic realm=\"$SID\""); Header("HTTP/1.0 401 Unauthorized"); $title="Login Instructions"; echo " You are not authorised to enter the site \n"; exit; } } ?> 五、其它功能 5.1 生成图像 PHP可以操作处理图像。如果你已经安装了GD库,你甚至可以利用PHP生成图像。 (译者注:以上代码段缺少注释,请读者参考PHP Manual的图像处理函数部分) 这段代码在其他页面中通过以下标记调用,然后以上的那段button.php3代码取得text值并在另外取得的图像文件中加上该值--在以上的代码中该图像文件是images/button1.gif--最后输出到浏览器。假如你想在表单域中使用图像按钮,但是又不希望在每次按钮上的文字改变后不得不重新生成新的图像,就可以利用这样简单的方法动态生成图像文件。 5.2 Cookies PHP支持基于HTTP的cookies。在需要时你可以像使用一般变量一样方便的使用cookie。Cookies是浏览器保存于客户端的一些信息片段,由此你可以知道是否一台特定PC上的任何人都访问过你的站点,浏览者者在你的站点上的踪迹等等。使用cookies的典型例子就是对浏览者偏好的甄别。Cookies由函数setcookie()设定。与输出HTTP标头的函数header()一样,setcookie()必须在任何实际内容杯输出到浏览器之前调用。以下是一个简单例子: <? if (empty($VisitedBefore)) { // 如果没有设定cookie,为cookie赋上当前时间值 // 函数中的最后一个参数声明了该cookie保存的时间 // 在这个例子中是1年 // time()函数返回自1970年1月1日以来的以秒数计的时间 SetCookie("VisitedBefore",time(), time()+(60*60*24*365)); } else { // 欢迎浏览者再次光临 echo "Hello there, welcome back"; // 读取cookie并判断 if ( (time() - $VisitedBefore) >= "(60*60*24*7)" ) echo "Why did you take a week to come back. You should be here more often!? "; } ?> 5.3 基于HTTP验证 基于HTTP验证当PHP以CGI模式运行时不能实现。我们可以使用函数header()发送HTTP标头强制验证,客户端浏览器则弹出供输入用户名和密码的对话框。这两个变量被储存在$PHP_AUTH_USER和$PHP_AUTH_PW中,你可以使用这两个变量验证合法并允许进入。以下的例子通过用户名称/密码对为tnc/nature的验证一名用户的登录: 事实上再实际引用中不大可能如上面使用代码段明显的用户名称/密码对,而是利用数据库或者加密的密码文件存取它们。 5.4 文件上传 你可以利用PHP实现文件的功能,注意客户端的浏览器应该是Netscape3以上或者IE3以上。以下就是该功能的简单演示: ( upload.html ): Upload Your File (You may notice a slight delay while we upload your file.) 下面是处理上传的文件: ( receiver.php3 ): 2000000 ) { $error_msg = "Sorry, your file is too large."; return; } $the_time = time (); // 你需要对以下目录有写权限 $upload_dir = "/local/uploads"; $local_file = "$upload_dir/$the_time"; if ( file_exists ( '$local_file' ) ) { $seq = 1; while ( file_exists ( "$upload_dir/$the_time$seq" ) ) { $seq++; } $local_file = "$upload_dir/$the_time$seq"; }; rename ( $uploadfile, $local_file ); display_page (); } function display_page () { // 这里是你的页面内容 } php3 Receiving Script <? if ( $error_msg ) { echo "$error_msg"; } if ( $sendit ) { do_upload (); } elseif ( $cancelit ) { header ( "Location: $some_other_script" ); exit; } else { some_other_func (); } ?> 5.5 常用函数 我们简单来看看一些常用的函数。 数组 array - 生成数组 count - 数组元素个数 sort - 数组排序,另有其他几种排序函数可供使用 list - 列出数组元素 each - 返回下一个key/value对 current - 返回当前数组元素 next,prev - 传回当前数组元素前后指针 日期和时间 checkdate - 验证日期/时间格式 date - 生成日期/时间格式 time - 当前时间信息 strftime - 格式化日期/时间 目录、文件系统 chdir - 改变目录 dir - 目录类别 opendir, readdir, closedir - 开启、读取、关闭目录 fopen, fclose - 开启、关闭文件 fgets, fgetss - 逐行读取内容 file - 将整个文件读入一个数组变量中 正则表达式 ereg - 匹配正则表达式 eregi - 大小写非敏感匹配正则表达式 ereg_replace -匹配正则表达式并替换 eregi_replace -大小写非敏感匹配正则表达式并替换 split - 依规则切开字符串并以数组形势存储 字符串 AddSlashes - 加上斜杠后使用字符串 echo - 输出一个或多个字符串 join, implode - 将数组元素合并为字符串 htmlentities, htmlspecialchars - 将HTML特殊字符转换为HTML标记形式 split - 依规则切开字符串并以数组形势存储 5.6 扩展我们的范例主页 我们将使用以上提到的一些函数和思想为我们的范例主页添加更多的动态内容。我们可以在每个页面的顶部加上导航栏,同时使得当前页自动的不被链接显示;同时还可以添加一个用户验证表单以便上传音乐、图像等文件并自动更新页面。 导航栏 实际上就是在footer.inc文件中加上一段代码。假设你的web站点中所有后缀为.php3的文件都会出现在导航栏中,以下就是被存为include/navbar.inc的代码: <? /* 输出该导航栏,链接所有除当前页的站内.php3文件 */ # 读取目录 $d = dir("./"); echo " | \n"; while($entry = $d->read()) { // 忽略无文件情况 if ( !is_file($entry) ) continue; /* 将文件名与扩展名分开。由于.是正则表达式特殊字符,应该用\引出 */ list($filenm, $fileext) = split("\.",$entry, 2); // 忽略非.php3文件情况 if( $fileext != "php3" ) continue; /* 现在我们已经把.php3文件都选出,下面搜寻文件中的第一行(标题) 类似$title="something"; 并将以上标题内容分开,用作链接文字 */ $linknm = ""; $fp=fopen($entry,"r"); while($buffer=fgets($fp, 4096)) { $buffer = trim($buffer); // 我们已经把每个文件的标题放在文件的第一行以便搜索 // 但是当你改变变量名称时可能会带来大麻烦 if (ereg("title *= *\"", $buffer)) { /* 我们已经取得了标题内容并可以在此基础上 进行去除空格等处理。 必须以PHP代码方式处理,比如$title = "blah blah" */ eval($buffer); // 然后将链接文字显示为标题文字 $linknm = $title; break; } } fclose($fp); if ( $entry == basename($PHP_SELF) ) echo "$linknm"; else echo "$linknm"; echo " | "; } $d->close(); echo " \n"; ?> 照片收藏夹 我们将引用基于HTTP的验证、文件系统函数和文件上传功能维护放置图像文件的目录。 同时我们需要建立一个可以列出在该目录下所有照片的页面。 文件上传 <? include("include/common.inc"); // 我们在这里再做一次用户验证 if(!isset($PHP_AUTH_USER)) { Header("WWW-Authenticate: Basic realm=\"$MySiteName\""); Header("HTTP/1.0 401 Unauthorized"); echo "Sorry, you are not authorized to upload files\n"; exit; } else { if ( !($PHP_AUTH_USER==$MyName && $PHP_AUTH_PW==$MyPassword ) ) { // 如果是错误的用户名称/密码对,强制再次认证 Header("WWW-Authenticate: Basic realm=\"My Realm\""); Header("HTTP/1.0 401 Unauthorized"); echo "ERROR : $PHP_AUTH_USER/$PHP_AUTH_PW is invalid."; exit; } } if ( $cancelit ) { // 当浏览者按下"取消"按钮则转向首页面 header ( "Location: front_2.php3" ); exit; } function do_upload () { global $userfile, $userfile_size, $userfile_name, $userfile_type; global $local_file, $error_msg; global $HTTP_REFERER; if ( $userfile == "none" ) { $error_msg = "You did not specify a file for uploading."; return; } if ( $userfile_size > 2000000 ) { $error_msg = "Sorry, your file is too large."; return; } // Wherever you have write permission below... $upload_dir = "photos"; $local_file = "$upload_dir/$userfile_name"; if ( file_exists ( $local_file ) ) { $error_msg = "Sorry, a file with that name already exists"; return; }; // 你还可以由此检查文件名称/类型对以确定是何种文件:gif,jpg,mp3… rename($userfile, $local_file); echo "The file is uploaded\n"; echo "Go Back\n"; } $title = "Upload File"; include("include/header.inc"); if (empty($userfile) || $userfile=="none") { // 输出以下表单 ?> <FORM ACTION="" ENCTYPE="multipart/form-data" METHOD=POST> (You may notice a slight delay while we upload your file.) <? } else { if ( $error_msg ) { echo "$error_msg"; } if ( $sendit ) { do_upload (); } } include("include/footer.inc"); ?> 照片图库 Here are some of our family photos. This PHP script can really be made better, by splitting into multiple pages. read()) { if (is_file("photos/$entry")) echo "\n"; } $d->close(); ?> 另外,你可以在文件上传的表单中加上一个输入元素去描述该上传的文件。这个元素将被存储在文件中,然后被以上的照片图库的那段代码所读出并显示出来。 六、网络资源 你可以通过web上的众多资源更多的了解PHP3。许多邮件列表和书籍对你都非常有用。 6.1 站点 PHP的爆炸性流行使得一夜之间出现了很多基于PHP的站点,其中不少站点有在线教程、范例代码、技巧和提示等内容。 国内 http://www.phpuser.com - PHP中文用户,也就是这里了 http://www.phpx.com - 中国PHP联盟 http://www.phpsite.net - PHP专门站 http://www.phpchina.com - PHP CHINA http://www.cpcw.com/netschool/homepage/cgi/ - 电脑报网页陶吧 国外 http://www.php.net/ - PHP官方站点 http://www.devshed.com/ - 极好的教程 http://px.sklar.com - 代码交换 http://www.phpbuilder.com/ - 教程、专栏和邮件列表档案 http://www.weberdev.com/ - 文章和代码 http://www.phpwizard.net/ - 提示与技巧 http://www.iometrics.com/php/phplist.php3/ - IOMetrics scripts的档案 http://www.e-gineer.com/phpkb/ - PHP知识库 6.2 邮件列表 你可以在PHP官方站点的"支持"栏目内登记获得以下的邮件列表。值得注意的是这些都是高流量流表,一般每天会有100份e-mail。 php3@lists.php.net - 主要的列表 php-dev@lists.php.net - 主要针对开发者 php-list@exp.com.cn - 本站的邮件列表,与论坛相通 6.3 引人注目的工程 一些基于PHP的工程已经发展得比较完善。其中一些更出色更引人注目的是: http:// phplib.netuse.de - PHPLib,一整套PHP函数库 http://www.phorum.org - Phorum是一个很完善的BBS系统 http://www.fishcartsql.org - FishCartSQL是一个电子商务解决方案 http://www.midgard-project.org - Midgard是一个网络应用开发平台 Generated by Bo-blog 2.0.2 sp2

最新推荐

解决安装Oracle时图形界面弹不出来的问题

解决安装Oracle时图形界面弹不出来的问题,并讲解了DISPLAY参数相关原理

基于qt和mysql的大学生二手管理系统.zip

用c++/qt写的项目,项目都经测试过,真实可靠,能跑通,可以直接运行,请放心下载使用。

车牌识别(创新点:蓝色绿色黄色三色车牌,GUI界面).zip

车牌识别(创新点:蓝色绿色黄色三色车牌,GUI界面).zip

代码随想录最新第三版-最强八股文

这份PDF就是最强⼋股⽂! 1. C++ C++基础、C++ STL、C++泛型编程、C++11新特性、《Effective STL》 2. Java Java基础、Java内存模型、Java面向对象、Java集合体系、接口、Lambda表达式、类加载机制、内部类、代理类、Java并发、JVM、Java后端编译、Spring 3. Go defer底层原理、goroutine、select实现机制 4. 算法学习 数组、链表、回溯算法、贪心算法、动态规划、二叉树、排序算法、数据结构 5. 计算机基础 操作系统、数据库、计算机网络、设计模式、Linux、计算机系统 6. 前端学习 浏览器、JavaScript、CSS、HTML、React、VUE 7. 面经分享 字节、美团Java面、百度、京东、暑期实习...... 8. 编程常识 9. 问答精华 10.总结与经验分享 ......

无监督人脸特征传输与检索

1检索样式:无监督人脸特征传输与检索闽金虫1号mchong6@illinois.edu朱文生wschu@google.comAbhishek Kumar2abhishk@google.com大卫·福赛斯1daf@illinois.edu1伊利诺伊大学香槟分校2谷歌研究源源源参考输出参考输出参考输出查询检索到的图像(a) 眼睛/鼻子/嘴(b)毛发转移(c)姿势转移(d)面部特征检索图1:我们提出了一种无监督的方法来将局部面部外观从真实参考图像转移到真实源图像,例如,(a)眼睛、鼻子和嘴。与最先进的[10]相比,我们的方法能够实现照片般逼真的传输。(b) 头发和(c)姿势,并且可以根据不同的面部特征自然地扩展用于(d)语义检索摘要我们提出检索风格(RIS),一个无监督的框架,面部特征转移和检索的真实图像。最近的工作显示了通过利用StyleGAN潜在空间的解纠缠特性来转移局部面部特征的能力。RIS在以下方面改进了现有技术:1)引入

HALCON打散连通域

### 回答1: 要打散连通域,可以使用 HALCON 中的 `connection` 和 `disassemble_region` 函数。首先,使用 `connection` 函数将图像中的连通域连接起来,然后使用 `disassemble_region` 函数将连接后的连通域分离成单独的区域。下面是一个示例代码: ``` read_image(Image, 'example.png') Threshold := 128 Binary := (Image > Threshold) ConnectedRegions := connection(Binary) NumRegions :=

数据结构1800试题.pdf

你还在苦苦寻找数据结构的题目吗?这里刚刚上传了一份数据结构共1800道试题,轻松解决期末挂科的难题。不信?你下载看看,这里是纯题目,你下载了再来私信我答案。按数据结构教材分章节,每一章节都有选择题、或有判断题、填空题、算法设计题及应用题,题型丰富多样,共五种类型题目。本学期已过去一半,相信你数据结构叶已经学得差不多了,是时候拿题来练练手了,如果你考研,更需要这份1800道题来巩固自己的基础及攻克重点难点。现在下载,不早不晚,越往后拖,越到后面,你身边的人就越卷,甚至卷得达到你无法想象的程度。我也是曾经遇到过这样的人,学习,练题,就要趁现在,不然到时你都不知道要刷数据结构题好还是高数、工数、大英,或是算法题?学完理论要及时巩固知识内容才是王道!记住!!!下载了来要答案(v:zywcv1220)。

无监督身份再识别中的判别表示学习算法及领域适应技术的研究与应用

8526基于判别表示学习的无监督身份再识别Takashi Isobe1,2,Dong Li1,Lu Tian1,Weihua Chen3,Yi Shan1,ShengjinWang2*1 Xilinx Inc.,中国北京2清华大学3阿里巴巴集团{dongl,lutian,yishan}@xilinx.comjbj18@mails.tsinghua.edu.cnwgsg@tsinghua.edu.cnkugang. alibaba-inc.com摘要在这项工作中,我们解决的问题,无监督域适应的人重新ID注释可用于源域,但不为目标。以前的方法通常遵循两阶段优化管道,其中网络首先在源上进行预训练,然后使用通过特征聚类创建的伪标签在目标上进行微调。这种方法存在两个主要局限性。(1)标签噪声可能阻碍用于识别目标类别的区分特征的学习。(2)领域差距可能会阻碍知识从源到目标的转移。我们提出了三种技术方案来缓解(一)(b)第(1)款(c)第(1)款这些问题首先,我们提出了一个集群明智的对比学习算法(CCL)的特征学习和集群精炼的迭代优�

开路电压、短路电流测等效内阻的缺点

### 回答1: 开路电压、短路电流测等效内阻的缺点有以下几个: 1. 受环境条件影响较大:开路电压、短路电流测等效内阻需要在特定的环境条件下进行,如温度、湿度等,如果环境条件发生变化,测量结果可能会出现较大误差。 2. 测量精度较低:开路电压、短路电流测等效内阻的精度受到仪器精度、线路接触不良等因素的影响,误差较大。 3. 需要断开电池电路:开路电压、短路电流测等效内阻需要断开电池电路进行测量,这样会导致电池的使用受到影响,对于某些需要连续供电的设备来说不太适用。 4. 无法检测内部故障:开路电压、短路电流测等效内阻只能检测电池整体的性能,无法检测到电池内部的故障,如单体电池损坏等问

TFT屏幕-ILI9486数据手册带命令标签版.pdf

ILI9486手册 官方手册 ILI9486 is a 262,144-color single-chip SoC driver for a-Si TFT liquid crystal display with resolution of 320RGBx480 dots, comprising a 960-channel source driver, a 480-channel gate driver, 345,600bytes GRAM for graphic data of 320RGBx480 dots, and power supply circuit. The ILI9486 supports parallel CPU 8-/9-/16-/18-bit data bus interface and 3-/4-line serial peripheral interfaces (SPI). The ILI9486 is also compliant with RGB (16-/18-bit) data bus for video image display. For high speed serial interface, the ILI9486 also provides one data and clock lane and supports up to 500Mbps on MIPI DSI link. And also support MDDI interface.