Category
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’ | sqlsc |
alias sqls=‘rlwrap sqlplus sys/oracle as sysdba’ | sqls |
alias 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