问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

什么是Linux的位置变量问题,并举例说明.

发布网友 发布时间:2022-06-27 13:25

我来回答

3个回答

热心网友 时间:2024-11-12 11:00

大约 7 年前,Oracle 发布了 Linux 上的第一个商业数据库。从那时起,Oracle、Red Hat 和 Novell/SUSE 就不断地合作更改 Linux 内核,从而提高数据库和应用程序的性能。正因为这样,用于 Linux 的 Oracle 数据库 10g 才包含了与操作系统紧密相关的许多增强功能。DBA 比以往任何时候更需要了解和使用此平台来在其监视下对系统进行最佳管理。

以往,系统管理员与 DBA 之间在职责方面存在差别。但实际上,这种差别通常并不明显。许多 IT 部门雇佣一些可解决数据库级以及操作系统级问题的员工。当然,Oracle 数据库本身使用操作系统资源,并能与其环境紧密交互。

此外,许多系统管理员和 DBA 发现将其工作相关的任务自动化很有必要或比较方便。软件安装、系统资源监视以及系统管理涉及一些重复和容易出错的任务,而自动过程可以比手动过程更好地完成这些任务。

将这些任务自动化的方法之一是 shell 脚本。Shell 脚本自 Linux 系统安装之初就起着重要作用。启动和关闭系统时就会调用各种脚本。Oracle 和其他第三方供应商的实用程序也是通过 shell 脚本可调用的。由于这些脚本可以快速开发,因此历来就用它们构建应用程序原型。系统管理员已利用通过 shell 脚本实现的功能提供针对其监视的系统的特定要求和特征定制的解决方案了。

在本文中,我将介绍“bash”shell 脚本可以实现的、与在 Linux 平台上安装、运行和维护 Oracle 数据库相关的功能。注意,本文适用于 Linux 脚本初学者或对 Linux 相对陌生的 DBA;对大多数经验丰富的 Linux 系统管理员则不适用。

Shell 脚本是什么?

shell 脚本是一个包含命令序列的文本文件。当运行文件(或脚本)时,将执行该文件中包含的命令。术语 shell 仅指与 Linux 内核通信所使用的特定命令行用户界面。目前有多个不同的 shell,其中包括 C shell (csh)、Korn shell (ksh)、Bourne shell (sh) 和 Bourne-Again shell (bash)。shell 本身就是一个从文件或终端读取命令、解释这些命令并通常执行其他命令的命令。Bourne-Again shell 合并了上述其他 shell 的特性,本文就使用该脚本进行演示。

脚本文件中的第一行可用于指定使用哪个 shell 来运行该脚本。以下是所有脚本示例中包含的第一行的含义:

#!/bin/bash

为什么使用 Shell 脚本?
由于 shell 脚本与 DBA 的工作相关,因此您可能不会马上看到 shell 脚本的价值,这跟您的工作经历有关。如果您以前从未使用过 UNIX 或类似 UNIX 的系统,那么可能会对大量含义晦涩的命令感到一愁莫展。此外,除了作为关系数据库外,Oracle 10g 还提供了一个用于处理数据库数据的强健平台以及几个用于在数据库外部与操作系统交互的方法。

但您会发现几个探究 shell 脚本领域的原因,其中包括:

必须支持已经存在的脚本。

需要在安装 Oracle 软件前自动设置系统。例如,您可以编写一个脚本来检查 OS 的初始状态并报告安装软件前必须满足的任何前提条件。该脚本还可以创建相关的 OS 用户和组并为用户设置环境变量。

可以使用正在运行的 Oracle 数据库来执行手动或计划的任务。但在数据库未 运行时需要运行某些任务。可以使用脚本停止或启动数据库(以及侦听器或相关的数据库进程)。无法从数据库内部启动此类动作。

您需要一种监视数据库状态(例如,是否正在运行并可进行进程查询)的机制。这样的脚本还可以监视非特定于 Oracle 的其他进程和资源,从而提供系统当前运行情况的更详细信息。

需要将备份自动化。Oracle Recovery Manager (RMAN) 是一个用于开发可以在任何平台上运行的备份脚本的实用程序。可以从 shell 脚本中调用 Oracle Recovery Manager 并使用它执行各种备份和恢复活动。

您可能有一个并非特定于某个数据库的要求。您可能在一台计算机上安装了多个数据库。建议您不要使用单个数据库满足此要求,因为那样会引发潜在的安全性问题。在这些情况下,shell 脚本提供了一种既可以满足此要求又不会将进程与单个数据库关联的方法。

什么情况下不 使用 Shell 脚本
Oracle 数据库包含了超出 RDBMS 传统定义的功能。与软件的任何其他部分一样,它使用操作系统提供的资源,但它所“看到”并“更改”其环境的程度远远超过了其他软件。SQL 和 Oracle 的固定视图从数据库内部提供了系统视图,而 shell 脚本从数据库外部提供了系统视图。Shell 脚本并不是适用于所有问题的解决方案。

必须意识到,操作系统的许多方面可以从数据库内部进行监视和修改。可以使用 Oracle 的固定视图(带 v$ 前缀的视图)确定计算机的主机名 (v$instance) 或数据库正在其中运行的平台的名称 (v$database)。还可以通过这种方式确定与数据库相关的文件的位置和其他属性。可以直接从数据库中查询数据文件(v$datafile、dba_data_files)、临时文件(v$tempfile、dba_temp_files)、重做日志 (v$logfile)、存档日志 (v$archived_log) 和控制文件 (v$controlfile) 的位置和其他属性。可以通过该视图以及通过查看某些 init.ora 参数(db_recovery_file_dest、db_recovery_file_dest_size)确定有关闪回恢复区 ($recovery_file_dest) 的信息。还可以查询进程 (v$process) 和内存(v$sga、v$sgastat 等)的状态。有各种内置的 PL/SQL 程序包,并能够创建允许对底层 OS 进行其他访问的 Java 和 C 数据库对象。

如果您正在考虑为一个需要大量数据库访问的任务编写脚本,则脚本可能并不是最佳选择。本文的稍后部分将介绍如何使用 SQL*Plus 访问数据库,但在很多情况下,使用其他语言可以更好地解决此问题。

下表归纳了可以从数据库中访问的信息:

热心网友 时间:2024-11-12 11:00

若您可以了解环境变量的功能,那也知道 bash 设定该变量的重要性,那您在 bash 内设定与检视环境变量时候,不就是会用到 getenv() 与 putenv() 呼叫不是呼?

os 对於环境变量的运作设计就是,若是 a process 呼叫执行并建立了 b process,那 b 会有一份 a 本身环境变量的复制,不过 b 可以依据需求改成自己的项目。那这样来看好了。那基於这个特点的话,程序若是运作中需要查阅判断是否有某个环境变量的话,就是需要用到 getenv() 呼叫来取得内容。

来看个例子,linux 系统有个 mutt 为文字模式邮件收发软件,执行 mutt 若是要写信的话可以呼叫外部程式来编辑信件内容。该程式执行时就会会透过 getenv() 呼叫,像是:

[Copy to clipboard] [ - ]CODE:
getenv("EDITOR");
该程式码会寻找是否有 EDITOR 环境变量的设定,因为那就是要呼叫的外部邮件编辑程式。所以这样的变量宣告很重要,不是程式内使用这样叙述而已:

[Copy to clipboard] [ - ]CODE:
char *EDITOR="vim";
这样的简单叙述而已,是吧

那有需求用到 putenv() 呼叫吗 ? 当然有。比方若是你写的 c program 要执行 mutt 好了,然後希望 mutt 编辑信件时候可以使用指定的编辑器,那您不就是需要使用如下这类叙述,不是呼 ?

[Copy to clipboard] [ - ]CODE:
putenv("EDITOR","vim");
不过您需要注意,虽然os 对於环境变量的运作设计就是 a process 呼叫执行并建立了 b process,那 b 会有一份 a 本身环境变量的复制,但是您对任何 b 修改的环境变量对於 a 来说都是没有任何影响。因为那只是复制一份而已,看起来是继承,但是所谓继承复制当然是单方面的。因为自己会遗传到爸妈的基因,但是自己的基因若是因为某个原因变化了,这个变化是不可能反过来也让爸妈影响到的。

所以您在 shell 下执行了一个您自己写的 c program,该 a process 是无法修改所在 parent process 这个 shell 本身的环境变量。

--

热心网友 时间:2024-11-12 11:01

在LINUX的环境下,打命令:
env
你可以看到环境变量。例如:
PWD=/home/wang
HOSTNAME=abcd.net
USER=wang
MACHTYPE=i386-redhat-linux-gnu
FTP_PASSIVE=1
MAIL=/var/spool/mail/wang
BASH_ENV=/home/wang/.bashrc
LOGNAME=wang
SHELL=/bin/bash
HOSTTYPE=i386
OSTYPE=linux-gnu
HISTSIZE=1000
HOME=/home/wang
TERM=xterm
等号前是环境变量名,等号后是环境变量值。

环境变量名可以用到程序里,程序可以获得它的值,根据值决定如何操作,运行,找路径,文件夹等等。

环境变量的用途与PC (Windows ) 的环境变量的用途类似。
PC的环境变量可以打命令:
set
看到。例如:
ComSpec=C:\WINDOWS\system32\cmd.exe
CPU=i386
HOMEDRIVE=C:
LIB=C:\program Files\MicroSoft Visual Studio\VC98\LIB;。。
OS=Windows_NT
Path=C:\Program Files\。。。
PROMPT=$P$G
。。。。
等号前是环境变量名,等号后是环境变量值。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女生多大后可以不在长身高? 如何不用软件把手机投屏到电脑上手机屏幕怎样投放到电脑上 战时拒绝、故意延误军事订货罪既遂的处罚? 战时故意延误军事订货罪处罚标准 名师1+1导读方案:汤姆·索亚历险记目录 三星sm-g7200打开微信慢,无法正常收看,网速不慢。 笔记本电脑如何调亮屏幕亮度 大伙说说洗衣机要不要带烘干好 热烘干洗衣机怎么样 ef英语哪个好 二十五号钢的主要成份有哪些? 楼梯宽度标准尺寸是多少? 皇家反千组国语迅雷下载地址 跪求皇家反千组1997年上映的由欧阳震华主演的百度云资源 邮政信用卡账单4000,逾期三个月,每天多少滞纳金? 邮政信用卡逾期三个月~在等十天还款会有什么后果 邮政信用卡逾期三个月。银行说要去单位催款。真的回去吗?下个月再... 邮政储蓄银行信用卡用了几个月逾期三个月以上现在想还怎么还?_百度知 ... 上海亿图信息科技有限公司 公司怎么样 注册资金多少 请问,有没有什么化解的方法? 二分之一英制管螺纹大径是21.224 小径是18.321它的锥度怎么算 谁知道都市快报的联系方式 谁知道西安都市快报记者的电话? 数字音响系统与模拟音响设备的差别有哪些 我用玉荣撕拉面膜为什么撕不下来脏东西 模拟监控设备和数字监控设备系统结构有什么不一样? 雪花秀玉容面膜和雨润面膜哪一款去黄美白效果好 在韩妆实体店店主那通过微信买的雪花秀玉荣撕拉面膜,220元。帮忙鉴定... 雪花秀玉荣撕拉面膜有分新旧版吗? 家庭用的单反相机哪一种比较好 海尔燃气热水器热负荷大于38千瓦,选择什么规格的燃气表? discuz界面设计 初中毕业要去山西新华了,想新华电脑学校的电竞专业主要学什么啊。_百... 悬赏广告是单方法律行为还是双方法律行为 新生儿眼屎增多是怎么回事?新生儿的眼屎增多该怎么办? 新生儿眼屎多怎么回事呀 纯净的玛咖什么色或白色的粉末或结晶? 纯净的玛咖为什么色或白色的粉末?- 问一问 迷你dayz贴吧怎么修 迷你dayz一岛有必要留吗 王者荣耀cpu总使用时间1小时4分啥意思? CPU一般最长使用时间? 有便意,拉不出来想放屁肚子咕咕叫问怎么回事 肚子老是咕咕叫,大便拉不出来怎么办 如果红米note在一年保修内,电池不耐使了,可以免费换新电池吗 肚子胀痛,还咕咕叫,拉不出来大便,每次想拉一蹲下就拉不出来了,有好几... 抖音扫码自动发视频怎么做- 问一问 仿写句子:一本你喜爱的书就像一位朋友. 读一本好书,就像交了一个益友是谁写的? “你喜爱的书就像一个朋友,就像你的家”,这句话表达了什么?