oracle 常用命令


oracle 常用命令

1.1 登陆oracle

sqlplus / as sysdba  #以管理员身份登陆
sqlplus consoletmp/consoletmp@//192.168.58.135:1521/ECSTMP   #consoletmp/consoletmp是账号密码,ECSTMP是创建的pdb

2.1 pdb

2.1.1 创建pdb并创建账号测试连接

需要以管理员身份登陆

show pdbs;

创建pdb

创建emptytest 这个pdb,并设置账号密码为 testem/testem

 create pluggable database emptytest admin user testem identified by testem; 

如果创建失败报错:FILE_NAME_CONVERT
需要先获取路径:select name from v$datafile where name like '%seed%system%';
得到:/opt/oracle/oradata/ECSDB/pdbseed/system01.dbf ,对应下面url路径
create pluggable database PROD admin user dbaclass identified by dbaclass FILE_NAME_CONVERT=('/opt/oracle/oradata/ECSDB/pdbseed','/opt/oracle/oradata/ECSDB/prod');

给用户授权

创建后,把emptytest设置成对外开放

alter pluggable database emptytest open;

保存现在的状态,防止重启变化

alter pluggable database all save state;

切换到emptytest 这个pdb

alter session set container=emptytest;

查看表空间文件

查看现有表空间所占据的dbf,创建新的表空间时可以指定同一个表空间

select name from v$datafile;

查看表空间和dbf的关系

select tablespace_name,file_name from dba_data_files;

创建表空间

后面添加账号时加到同一个表空间和临时表空间就不用重新创建临时表空间和表空间了。同时还不用remap,省去很多麻烦

create tablespace EMPTYT datafile '/data/u01/app/oradata/ECSCDB/ecs/emptyt.dbf' size 1g autoextend on;

查看临时表空间

ecs2_dev是用户,这里注意要大写,查看临时表空间

select  username,TEMPORARY_TABLESPACE  from  dba_users  where  username= 'ECS2_DEV';

临时表空间所占据的dbf

select name from v$tempfile;

查看临时表空间和dbf的关系

select tablespace_name,file_name from dba_temp_files;

创建临时表空间

create temporary tablespace tmpempty tempfile '/data/u01/app/oradata/ECSCDB/ecs/tmpempty.dbf' size 100m reuse autoextend on next 20m maxsize unlimited;

为pdb创建用户

grant dba to ecs2_21_5050_micro01 ;
grant connect,resource to ecs2_21_5050_micro01 ;
grant select any table to ecs2_21_5050_micro01 ;
grant delete any table to ecs2_21_5050_micro01 ;
grant update any table to ecs2_21_5050_micro01 ;
grant insert any table to ecs2_21_5050_micro01 ;

外部链接测试,192.168.58.135是oracle的IP

sqlplus testem/testem@//192.168.58.135:1521/emptytest
sqlplus testemcon/testemcon@//192.168.58.135:1521/emptytest

3.1 导出导入库

3.1.1 导出库

用ecs2_21_5050这个用户导出e7db 这个sid下的ecs2_21_5050 数据库,

expdp ecs2_21_5050/ecs2_21_5050@e7db schemas=ecs2_21_5050 dumpfile=20210416001.dmp DIRECTORY=DATA_PUMP_DIR logfile=20210416.log

3.1.2 导入库

impdp导入数据库,table_exists_action决定是否覆盖
skip 是如果已存在表,则跳过并处理下一个对象;
append是为表增加数据;
truncate是截断表,然后为其增加新数据;
replace是删除已存在表,重新建表并追加数据;

impdp  ECS2_CONSOLE_DEV/ECS2_CONSOLE_DEV@192.168.58.135/jianlang_dev directory=DATA_PUMP_DIR  dumpfile=20210416001.dmp  logfile=impdp20210416.log  EXCLUDE=
STATISTICS table_exists_action=replace

4.1 删除

如果数据库内数据需要清空,需要删除pdb内对应的schema,然后重新创建

4.1.1 删除schema

停止服务与schema的连接,ECS2_CONTRACT2_DEV是schema
alter session set container=jianlang_dev;
SELECT SID,STATUS,SERIAL# FROM V$SESSION WHERE USERNAME='ECS2_CONSOLE_DEV';
关闭对应的sid链接

ALTER  SYSTEM  KILL SESSION ' 2037,60452';
执行后查看状态,status是 KILLED就不用管了,可以继续kill下一个

删除schema后就可以再重新创建了

drop  user ECS2_CONTRACT2_DEV cascade;

4.1.2 删除pdb

先把pdb关闭

alter pluggable database ECSF close;

再删除pdb和她的datafile

drop pluggable database ECSF  including datafiles;

查看是否删除

show pdbs;

5.1 应用

5.1.1 进程过多时,可以杀掉用户进程连接减轻压力(非常不建议操作,除非特殊情况)

ps -ef|grep LOCAL=NO|grep -v grep |awk '{print $2}'|xargs kill

5.1.2 远程连接oracle的pdb并执行命令

sqlplus hr/hr@84.24.24.24:1521/orcl << EOF
show pdbs;
alter session set container=emptytest;
EOF

5.1.3 修改字符集

ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER DATABASE character set INTERNAL_USE AL32UTF8;

5.1.4 设置最大连接数(切换pdb

alter system set processes = 3000 scope = spfile

5.1.5 查看最大连接数(切换pdb

select value from v$parameter where name = 'processes'