Rootop 服务器运维与web架构

2023-05-17
发表者 Venus
重启服务器后启动oracle步骤已关闭评论

重启服务器后启动oracle步骤

1、启动oracle监听:

lsnrctl start

2、创建数据库的时候,实例名叫 orcl,那么先设置一下oralce的sid

export ORACLE_SID=orcl # 安装时实例名
export ORACLE_SID=geek # 安装后新建的一个实例名

sqlplus sys as sysdba

SQL> startup  # 这步是启动oracle服务。如果startup启动被告知已经启动了,可以先输入 shutdown immediate;等shutdown结束之后,再输入startup。

3、过几秒钟等命令运行完成。这个时候,输入”select * from user_tables;”测试一下,看是否有查询结果。

# 查看当前实例名

SQL> select instance_name from v$instance;

# 查看所有创建的实例
1、通过查看文件夹方式(可以看到已启动未启动的)

[oracle@localhost ~]$ ll /home/software/oracle/oradata
total 0
drwxr-x--- 2 oracle dba 179 May 11 14:57 geek
drwxr-x--- 2 oracle dba 179 May 11 14:42 orcl

2、通过查看进程 (只能看到已启动的)

[oracle@localhost ~]$ ps aux | grep smon
oracle     2530  0.0  1.6 2087972 103580 ?      Ss   10:52   0:01 ora_smon_orcl
oracle     5135  0.0  1.4 2087972 91068 ?       Ss   11:31   0:00 ora_smon_geek

#监听端口
netca (oracle net configuration assistant)

# 创建数据库
dbca (database configuration assistant)

# 监听命令
listener control 简写lsnr ctl

启动监听:lsnrctl start
停止监听:lsnrctl stop
重启监听:lsnrctl reload
查看监听:lsnrctl status

# 安装时默认创建的几个账号
SYS
SYSTEM
SYSMAN
DBSNMP

2023-05-17
发表者 Venus
oracle中sql学习已关闭评论

oracle中sql学习

# 查询

SELECT * from "user_info" where "id" = 2;
SELECT * from "user_info" where "user_info"."id" = 2;

# 更新

/* 下面sql执行会报错 > ORA-00942: table or view does not exist */
/* 原因就是oracle数据库是区分大小写的,而且oracle的默认为大写的,也就是说在sql脚本上面写的sql语句,oracle运行的时候,它会自动转化为大写,参考 https://www.cnblogs.com/javJoker/p/7069321.html*/
update user_info set password = "666" where id = 3;

/* 把表名和字段名都加上双引号来区分大小写 */
/* 加上双引号后执行报错 > ORA-00904: "666": invalid identifier */
/* 解决方法就是把666这个值改为单引号,原因是 password字段的类型为VARCHAR2,只能用单引号 */
update "user_info" set "password" = "666" where "id" = 3;

/* 正常sql */
update "user_info" set "password" = '777' where "id" = 3;

# 插入

/* > ORA-00984: column not allowed here 原因是 username和password字段的类型为VARCHAR2,只能用单引号把值包起来 */
INSERT INTO "user_info" ("id","username","password") VALUES (4,"ccc",'111111');

/* 正常sql */
INSERT INTO "user_info" ("id","username","password") VALUES (4,'ccc','111111');

# 删除

/* as 别名问题,执行报错 > ORA-00933: SQL command not properly ended ,原因就是oracle里不需要as关键词,直接空格+别名即可 */
DELETE from "user_info" as ui where ui."id" = 4;

/* 正常sql */
delete from "user_info" where "id" = 4;
DELETE from "user_info" ui where ui."id" = 4;

 

2023-05-17
发表者 Venus
ORACLE_SID作用已关闭评论

ORACLE_SID作用

ORACLE_SID 是Oracle System Identifier的缩写
在Oracle系统中,ORACLE_SID以环境变量的形式出现,在特定版本的Oracle软件安装(也就是ORACLE_HOME)下,当Oracle实例启动时,操作系统上fork的进程必须通过这个SID将实例与其他实例区分开来,这就是SID的作用。

参考:  https://www.qycn.com/xzx/article/13626.html

2023-03-09
发表者 Venus
ros设置固定ip上网已关闭评论

ros设置固定ip上网

# 设置外网网卡,先连接外网线路到任意网卡,另一块网卡不接网线,便于分辨哪块网卡用来联网。通过interfaces菜单里的R (running)状态判断哪块网卡激活。
[admin@MikroTik] > /ip/address/add address=192.168.31.50/24 interface=ether2

# 设置默认路由
[admin@MikroTik] > /ip/route/add dst-address=0.0.0.0/0 gateway=192.168.31.1

# 此时在ros中就可以ping通外网了
[admin@MikroTik] > ping 114.114.114.114

# 设置内网网卡
[admin@MikroTik] > /ip/address/add address=192.168.10.1/24 interface=ether1

# 内网指定ip可以联网
[admin@MikroTik] > /ip/firewall/nat/add chain=srcnat src-address=192.168.10.2 action=masquerade

2023-03-09
发表者 Venus
低版本navicat连接mysql8报不支持加密方式已关闭评论

低版本navicat连接mysql8报不支持加密方式

在docker容器中启动了一个mysql8数据库,但是navicat客户端连不上,会提示加密方式不支持。
看到这个提示就推测是用户表中的密码加密方式导致的。
通过查询数据库看到:

mysql> select plugin from mysql.user where user = 'root';  

返回的plugin字段值为 caching_sha2_password

将其改为mysql5.7的 mysql_native_password 方式。

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123123';
mysql> flush privileges;

这样旧版本的mysql客户端就可以连接了。