【Oracle-OCP】第二次课

    xiaoxiao2022-07-02  115

    Category

    putty接续Linux学习-给普通用户加sudo权限1.打开sudoers文件2.修改suduers文件3.测试是否成功 find / -name network.service关闭图形化界面配置环境变量1.为什么要设置环境变量2.环境变量配置在哪个文件下面?3.Linux下设置oracle环境变量4. /etc/profile和/etc/profile.d的区别 数据库连接1.ACCOUNT2.连接数据库3.SQL语句操作 sqlplus启用方向键(Rlwrap)1.install Rlwrap 安装包2.Rlwrap配置环境变量,给sqlplus起别名3.给Rlwrap sqlplus起别名4.Rlwrap别名的运用5.show user SQL测试SQL PLUS的设置文件1.glogin.sql / login.sql文件介绍2.替换glogin.sql该怎么做 挂载磁盘软链接1.cd到orcl这个库2.Shutdown orcl这个库3.把OPT/oradata迁移到 DATA/oradata4.重命名oradata5.创建软连接6.startup库 VM更改ip关于防火墙的命令启动/关闭数据库数据写入逻辑软件操作TIP1.Putty更改字体大小2.VM快照 待解决问题Reference

    putty接续

    接续putty,输入ip地址,端口号一般默认填好的,不需要更改 点击OPEN,进行接续 输入用户名,密码 切换用户

    sudo su oracle

    Linux学习-给普通用户加sudo权限

    系统环境:centos 7.0

    引文:在实验室的服务器上给每个人分配了一个账号,但是有的时候普通用户需要使用root权限,比如装一些软件之类的。下面介绍怎么给普通用户添加sudo命令权限。

    前提: sudo安装完成

    没配置之前希望在普通用户下,通过sudo命令,让用户暂时拥有root权限,并创建一个文件夹。很明显,失败了,错误原因是:该用户暂没有root权限。 解决办法如下

    1.打开sudoers文件

    切换到root用户下,cd root,运行visudo命令,visudo命令是用来编辑修改/etc/sudoers配置文件

    [root@master ~]# visudo 如下图所示,打开sudoers文件

    2.修改suduers文件

    找到如下图所示

    root ALL=(ALL) ALL

    给liudiwei添加sudo权限 在“root ALL=(ALL) ALL”这一行下面,再加入一行:

    liudiwei ALL=(ALL) ALL :wq保存退出!

    3.测试是否成功

    切换到普通用户

    su liudiwei cd ~ sudo mkdir test

    恭喜,验证密码后,通过!如图所示: 使用sudo命令执行mkdir test,那么test是以root用户来创建的。

    补充:如果想以后每次使用sudo的时候不再验证密码,可以在刚刚的sudoers文件做如下操作: 其中timestamp_timeout=-1只需验证一次密码,以后系统自动记忆,runasp需要root密码,如果不加默认是要输入普通账户的密码.

    find / -name network.service

    find / -name network.service

    关闭图形化界面

    cat /etc/inittab (不用了)

    systemctl set-default TARGET.target 将TARGET换成截图中multi-user 或 graphicat

    systemctl set-default multi-user.target

    配置环境变量

    1.为什么要设置环境变量

    如果不设置环境变量 设置了环境变量

    2.环境变量配置在哪个文件下面?

    家目录下的.bash_profile或/etc/profile.d/

    cd到家目录下的.bash_profile前需要切换用户 sudo su – oracle cd到/etc/profile.d/前需要切换用户 Sudo su – root

    cd ~ ls –a .bash_profile cd ~/.bash_profile 只针对于当前的用户 cd /etc/profile.d/ 针对于所有用户都好用 cat /etc/profile

    3.Linux下设置oracle环境变量

    方法一:直接运行export命令定义变量,该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,shell关闭了,变量也就失效了,再打开新shell时就没有这个变量,需要使用的话还需要重新定义。

    以设置oracle环境变量为例

    export ORACLE_BASE=/opt/oracle; export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_SID=orcl; export PATH=$ORACLE_HOME/bin:$PATH;

    or

    export ORACLE_HOME=/opt/oracle/product/11.2.0/dbhome_1/; export ORACLE_SID=orcl; PATH=$PATH:$ORACLE_HOME/bin /*export PATH=$ORACLE_HOME/bin:$PATH; */

    方法二:在用户目录下的.bash_profile文件中增加变量,改变量仅会对当前用户有效,并且是“永久的”。

    export ORACLE_BASE=/opt/oracle; export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_SID=orcl; export PATH=$ORACLE_HOME/bin:$PATH;

    or

    export ORACLE_HOME=/opt/oracle/product/11.2.0/dbhome_1/; export ORACLE_SID=orcl; PATH=$PATH:$ORACLE_HOME/bin /*export PATH=$ORACLE_HOME/bin:$PATH; */

    方法三: 在/etc/profile文件中添加变量,该变量将会对Linux下所有用户有效,并且是“永久的”。

    export ORACLE_BASE=/opt/oracle; export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_SID=orcl; export PATH=$ORACLE_HOME/bin:$PATH;

    or

    export ORACLE_HOME=/opt/oracle/product/11.2.0/dbhome_1/; export ORACLE_SID=orcl; PATH=$PATH:$ORACLE_HOME/bin /*export PATH=$ORACLE_HOME/bin:$PATH; */

    方法四: 在/etc/profile.d下创建oracle.sh,在此oracle.sh文件中添加变量(推荐) ①切换root用户 ②sudo touch oracle.sh ③sudo vim oracle.sh ④添加变量 ⑤source oracle.sh

    4. /etc/profile和/etc/profile.d的区别

    Linux 环境下/etc/profile和/etc/profile.d 的区别 区别:

    两个文件都是设置环境变量文件的,/etc/profile是永久性的环境变量,是全局变量,/etc/profile.d/设置所有用户生效 /etc/profile.d/比/etc/profile好维护,不想要什么变量直接删除/etc/profile.d/下对应的shell脚本即可,不用像/etc/profile需要改动此文件

    https://blog.csdn.net/weixin_42161670/article/details/90517494

    配置环境变量时为什么更推荐 /etc/profile.d下创建oracle.sh自定义文件的方法? 直接在vi /etc/profile里配置不就行么? 以下就是原因 因此最好在 /etc/profile.d下建一个自定义.sh文件来配置环境变量

    数据库连接

    1.ACCOUNT

    connect scott/tiger connect sys/oracle as sysdba connect sys as sysdba scott 是 oracle创始人,一般都有他,用于测试

    2.连接数据库

    方法一 1.root用户登录putty

    2.切换至oracle用户

    su - oracle

    3.切换到sqlplus操作

    sqlplus /nolog

    切换成功会提示相关的提示:例如: SQL*Plus: Release 11.2.0.2.0 Production on Thu Jan 19 11:19:48 2012 Copyright © 1982, 2010, Oracle. All rights reserved.

    4.输入数据库的用户名和密码

    connect scott/tiger

    5.会提示Connected.(连接成功),显示 SQL> :

    方法二 接着方法一第3个步骤开始

    3.切换到sqlplus操作

    sqlplus sys/oracle as sysdba

    4.启动库

    startup

    5.正常显示如下 ORACLE instance started.

    Total System Global Area 409194496 bytes Fixed Size 2213856 bytes Variable Size 310380576 bytes Database Buffers 92274688 bytes Redo Buffers 4325376 bytes Database mounted. Database opened.

    但如果出现如下问题 [root@db01 profile.d]# sqlplus sys/oracle as sysdba SQL*Plus: Release 11.2.0.1.0 Production on Sun May 19 11:02:23 2019 Copyright © 1982, 2009, Oracle. All rights reserved. Connected to an idle instance. SQL> startup ORA-00845: MEMORY_TARGET not supported on this system 解决办法 原因是内存分配少了,加大内存即可(具体没操作过)

    6.输入数据库的用户名和密码

    connect scott/tiger

    7.会提示Connected.(连接成功),显示 SQL> :

    如果没连接成功则会提示下述error信息,说明该用户被锁了 ERROR: ORA-28000: the account is locked Warning: You are no longer connected to ORACLE. Connect sys

    解决办法 解锁scoot的用户 alter user scott account unlock;

    8.更新密码 你是普通用户的话,修改自己的密码,用:passwd,就可以了,会让你先输入自己的旧密码,再输入两遍新密码。 你是root的话,用:password username,就可以修改username的密码了,直接输入两遍新密码就可以了,不用输入旧密码。

    3.SQL语句操作

    (1) 查询的语句后面要一定要加 ; ,否则不能执行查询,相当于plsqldev.exe工具的命令窗口的操作 select *from newuseraccount (记得查询的时候一定要加;) select email,password from userreg where accountstype=1 and userstate=1;

    (2)插入或更新的语句记得还要加提交语句,才能提交事务。相当于plsqldev.exe工具的命令窗口的操作。 update newuseraccount set address=‘20-青海-0-西宁市’ where userid=638 ; commit ;

    idle>create table test1(id varchar(20),name varchar(20)); Table created. idle>insert into test1 values('1','li'); 1 row created. idle>select * from test1; ID NAME -------------------- -------------------- 1 li

    sqlplus启用方向键(Rlwrap)

    1.install Rlwrap 安装包

    1.winscp将安装包拖到机器里面 /opt/soft

    rlwrap-0.42-1.el7.x86_64.rpm

    2.root用户下执行以下命令,运行它

    yum install –y rlwrap-0.42-1.el7.x86_64.rpm y enter

    3.然后上下左右键就好用了 Complete

    4.运行sqlplus

    rlwrap sqlplus

    2.Rlwrap配置环境变量,给sqlplus起别名

    首先连接数据库

    sqlplus Enter user-name: sys/oracle as sysdba SQL> connect scott/tiger select * from t1;

    3.给Rlwrap sqlplus起别名

    cd /etc/profile.d sudo vim oracle.sh alias sqlplus=‘rlwrap sqlplus’ alias sqls=‘rlwrap sqlplus sys/oracle as sysdba’ alias sqlsc=‘rlwrap sqlplus scott/tiger’

    别名参数分析:

    alias sqlplus=‘rlwrap sqlplus’ 先sqlplus再输入用户名和密(其中rlwrap是一个插件,可以帮助sqlplus后识别方向)

    alias sqls=‘rlwrap sqlplus sys/oracle as sysdba’ 用sys用户登陆

    alias sqlsc=‘rlwrap sqlplus scott/tiger’ 用scott用户登陆

    4.Rlwrap别名的运用

    想进行什么方式的连接,只需要在命令行键入别名即可

    连接数据库时的不同连接方式起完别名后alias sqlsc=‘rlwrap sqlplus scott/tiger’sqlscalias sqls=‘rlwrap sqlplus sys/oracle as sysdba’sqlsalias sqlplus=‘rlwrap sqlplus’sqlplus

    5.show user

    输入

    showuser

    会显示

    USER is “SCOTT”

    SQL测试

    SQL> select user from dual; SQL> select sysdate from dual; Insert into t1 values(2,’b’); select user,global_name from global_name; idle>select user||’@’||global_name from global_name; col user format a10

    SQL PLUS的设置文件

    1.glogin.sql / login.sql文件介绍

    刚開始接触Oracle的时候,有时候一登陆一个生产环境。常常会出现以下的情况: <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< [oracle@rh64 app]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Thu May 15 03:17:34 2014 Copyright © 1982, 2013, Oracle. All rights reserved.

    Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options

    SP2-0103: Nothing in SQL buffer to run.

    Session altered.

    Elapsed: 00:00:00.00 sys@ora11g(34)> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 上面会显示你是用哪个用户登录的,登陆数据库的实例名,还有操作的时间日志等信息。

    事实上这样也能提高用户的警惕性,时刻提醒自己是以 什么用户运行操作的。要细心,不要产生误操作。事实上这个定义很easy,仅仅要细致看过Oracle官方文档的人就知道怎么设置了。以下是官方文档的位置 我使用的11.2.0.4的官方文档,可是位置都是一样的。

    SQLPLUS的设置文件有两个。 一个是在$ORACLE_HOME/sqlplus/admin/glogin.sql 这个叫做Site Profile File。每次以sqlplus进去的时候,sqlplus都会第一先读取这个文件,所以假设你想在全局设置,让全部登录数据库的用户都能使用。那就在这里定义就OK了。

    另一个是叫做User Profile File 。一般放在/opt/oracle/product/11.2.0/dbhome_1/sqlplus/login.sql 顾名思义就是个人的profile文件。能够定义成login.sql,事实上这个放在哪里都能够,他会遍历你当前这个文件夹的文件看看有没有login.sql。假设有,就会读取并进行设置。然后覆盖glogin.sql里面的东西。

    常用环境设置命令

    设置sqlplus登录的username和instance SQL> set sqlprompt '_user @&_CONNECT_IDENTIFIER> ’ SYS @demo >打开/关闭sql语句返回的记录条数 set feedbak on/offset打开/关闭sql语句运行时间统计 set timing on/off打开/关闭系统时间显示 set time on/off

    例子

    [oracle@rh64 ~]$ pwd /home/oracle [oracle@rh64 ~]$ cat login.sql define _editor=vi set serveroutput on size 1000000 set trimspool on set timing on set long 5000 set pagesize 5000 set linesize 1024 column plan_plus_exp format a80 column global_name new_value gname alter session set nls_date_format=‘yyyy-mm-dd hh24:mi:ss’; set termout off define gname=idle column global_name new_value gname select lower(user)||’@’||lower(instance_name)||’(’||(select distinct sid from v m y s t a t ) ∣ ∣ ′ ) ′ g l o b a l n a m e f r o m v mystat)||')' global_name from v mystat))globalnamefromvinstance; set sqlprompt '&gname> ’ set termout on [oracle@rh64 ~]$

    2.替换glogin.sql该怎么做

    如果有一个比较好的glogin.sql的模板,你想使用它,就可以进行如下替换 1.接续数据库

    connect sys/oracle as sysdba

    2.cd到oracle dbhome1下

    /opt/oracle/product/11.2.0/dbhome_1

    cd sqlplus/ ls cat glogin.sql

    cat内容显示如下: 3.用winscp替换glogin.sql 替换目录: /opt/oracle/product/11.2.0/dbhome_1/sqlplus/admin

    挂载磁盘

    公司硬盘不够用了,新买了一个存储,需要挂载到现在的系统上。在Linux下如何挂载,具体步骤如下:

    1.新增虚拟硬盘方式 df -h 查看硬盘使用情况,发现根分区使用已满 使用工具创建新的VHD,disk2.vhd new一个新的分区 2.查看是否已经分配

    [root@localhost home]# fdisk -l 磁盘 /dev/sda:64.4 GB, 64424509440 字节,125829120 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x000a47ad 设备 Boot Start End Blocks Id System /dev/sda1 * 2048 1026047 512000 83 Linux /dev/sda2 1026048 125829119 62401536 8e Linux LVM 磁盘 /dev/sdb:1649.3 GB, 1649267441664 字节,3221225472 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节

    3.发现有磁盘,路径为/dev/sdb。然后使用fdisk命令进行建立分区

    [root@localhost home]# fdisk /dev/sdb

    fdisk命令如下:

    命令(输入 m 获取帮助):m 命令操作 a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition g create a new empty GPT partition table G create an IRIX (SGI) partition table l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only)

    4.一直enter,最后保存分区

    命令(输入 m 获取帮助):w The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盘。

    5.使用fdisk -l命令查看,已经有分区了

    磁盘 /dev/sdb:1649.3 GB, 1649267441664 字节,3221225472 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0xe0bc0098 设备 Boot Start End Blocks Id System /dev/sdb1 2048 3221225471 1610611712 83 Linux

    6.建好分区后要格式化分区,建立文件系统

    Mkfs +TAB mkfs.ext4 /dev/sdb1

    7.这样文件系统就建好了,然后选择一个挂载点挂上就可以了,我挂载在DATA/oradata/下了

    mkdir -p /DATA/oradata chown oracle:oinstall /DATA/oradata mount /dev/sdb1 /DATA/oradata/

    8.检验挂载是否成功

    df -h

    9.修改一下系统配置加入下列行到/etc/fstab,让系统启动后自动挂载,否则有可能会掉啊 Mount只挂在一次 ,要挂载到磁盘上

    /etc/fstab vim /etc/fstab 加一行 /dev/sdb1 /DATA/oradata ext4 defaults 0 0 保存 退出

    软链接

    1.cd到orcl这个库

    [root@db01 ~]# cd /opt/ [root@db01 opt]# cd oracle/ [root@db01 oracle]# ls admin cfgtoollogs checkpoints diag flash_recovery_area oradata product [root@db01 oracle]# cd oradata/ [root@db01 oradata]# ls orcl [root@db01 oradata]#

    sqls

    2.Shutdown orcl这个库

    Shutdown immediate

    Ps:因为我重启了,orcl已经是shutdown状态了,我无需重启 DB断电,坏块儿,数据库起不了,通过手动启动 DB一般不作随机启动

    3.把OPT/oradata迁移到 DATA/oradata

    [root@db01 oradata]# sudo -l oracle sudo: oracle: command not found [root@db01 oradata]# su -l oracle Last login: Sun May 19 10:50:25 CST 2019 on pts/2 [oracle@db01 ~]$ cd /opt/oracle/oradata/ [oracle@db01 oradata]$ ls orcl [oracle@db01 oradata]$ mv * /DATA/oradata/ mv: cannot create directory ‘/DATA/oradata/orcl’: Permission denied [oracle@db01 oradata]$ [oracle@db01 oradata]$ ll /DATA/ total 4 drwxr-xr-x. 3 root root 4096 May 19 14:11 oradata [oracle@db01 oradata]$ sudo chown oracle:oinstall /DATA/oradata/ [oracle@db01 oradata]$ ll total 0 drwxr-x—. 2 oracle oinstall 200 May 18 17:16 orcl [oracle@db01 oradata]$ ll /DATA/oradata/ total 16 drwx------. 2 root root 16384 May 19 14:11 lost+found [oracle@db01 oradata]$ ll /DATA/ total 4 drwxr-xr-x. 3 oracle oinstall 4096 May 19 14:11 oradata [oracle@db01 oradata]$ mv * /DATA/oradata/ ll /DATA/oradata [oracle@db01 oradata]$ ll /DATA/oradata total 20 drwx------. 2 root root 16384 May 19 14:11 lost+found drwxr-x—. 2 oracle oinstall 4096 May 18 17:16 orcl [oracle@db01 oradata]$ [oracle@db01 oradata]$ [oracle@db01 oradata]$ [oracle@db01 oradata]$ [oracle@db01 oradata]$ [oracle@db01 oradata]$ [oracle@db01 oradata]$ [oracle@db01 oradata]$ [oracle@db01 oradata]$ [oracle@db01 oradata]$ ll /DATA/oradata/ total 20 drwx------. 2 root root 16384 May 19 14:11 lost+found drwxr-x—. 2 oracle oinstall 4096 May 18 17:16 orcl [oracle@db01 oradata]$

    到这儿就mv完了

    [oracle@db01 oradata]$ cd /opt/oracle [oracle@db01 oracle]$ ls admin cfgtoollogs checkpoints diag flash_recovery_area oradata product

    4.重命名oradata

    [oracle@db01 oracle]$ mv oradata oradatabk

    5.创建软连接

    在/oradata /opt/oracle/下创建一个快捷方式,

    [oracle@db01 oracle]$ ln -s /DATA/oradata /opt/oracle/oradata

    显示 [oracle@db01 oracle]$ ls admin checkpoints flash_recovery_area oradatabk cfgtoollogs diag oradata product

    6.startup库

    sqls

    显示 SQL*Plus: Release 11.2.0.1.0 Production on Sun May 19 14:43:26 2019

    Copyright © 1982, 2009, Oracle. All rights reserved.

    Connected to an idle instance.

    Startup Ps:start up是错误的,得敲成startup

    显示 idle>startup ORACLE instance started.

    Total System Global Area 409194496 bytes Fixed Size 2213856 bytes Variable Size 310380576 bytes Database Buffers 92274688 bytes Redo Buffers 4325376 bytes Database mounted. Database opened. idle>

    VM更改ip

    Vim /etc/sysconfig/network-scripts/ifcfg-ens33

    保存>退出

    Systemctl restart NetworkManager Ip a s Ping www.baidu.com

    在VM下重启

    Restart network

    软链接参照: https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/index.html

    关于防火墙的命令

    systemctl status firewalld #systemctl stop firewalld #systemctl disable firewalld

    启动/关闭数据库

    shutdown immediate startup

    login as: root root@192.168.1.20’s password: [root@db01 ~]# sudo su - oracle Last login: Sun May 19 14:33:01 CST 2019 on pts/0 [oracle@db01 ~]$ sqls SQL*Plus: Release 11.2.0.1.0 Production on Sun May 19 15:57:20 2019 Copyright © 1982, 2009, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options sys@ORCL>shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. sys@ORCL>sys@ORCL>sys@ORCL>sys@ORCL>sys@ORCL>sys@ORCL> sys@ORCL> sys@ORCL> sys@ORCL>startup ORACLE instance started. Total System Global Area 409194496 bytes Fixed Size 2213856 bytes Variable Size 310380576 bytes Database Buffers 92274688 bytes Redo Buffers 4325376 bytes Database mounted. Database opened.

    数据写入逻辑

    每次commit缓冲的是哪一个flush 数据仅存在buffer cache(缓存)里的话,数据会不会消失? 会 只有卸载data file里才不会丢失

    如果我的数据在内存里头,commit以后,断电了,数据会不会消失? 》可以通过log恢复

    如果数据被写到硬盘里了,断电后,数据数据会不会消失? 》不会

    为什么要分这两块内容? 》因为datafile处理的东西特别复杂,做一道菜30分钟,会一直记录 Redo之需记录一道菜需要30分钟即可

    》oracle是存到缓存之前记录 Mysql是存到缓存之后记录

    软件操作TIP

    1.Putty更改字体大小

    2.VM快照

    待解决问题

    sqlplus 用scott用户登陆为何报如下错误? ERROR: ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist Linux-x86_64 Error: 2: No such file or directory

    find / -name network.service是干嘛用的?

    Reference

    https://blog.csdn.net/archer119/article/details/77824017 https://www.cnblogs.com/wzjhoutai/p/6956335.html https://blog.csdn.net/s630730701/article/details/51675357 http://www.cnblogs.com/kex1n/p/5193826.html

    最新回复(0)