Nginx报The plain HTTP request was sent to HTTPS port 400错误解决方法

nginx在配置https以后,使用http访问系统,报400错误The plain HTTP request was sent to HTTPS port
原因主要是nginx.conf里面打开了ssl on参数

ssl on;

ssl on会将整个virtual server都开启成ssl,会造成http请求也转发到了https上造成400错误,所以http访问的时候回报400错误,参见官方文档http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl
要http和https共存可以用下面这个方法:

    server {
        listen       80;
        listen       443 ssl;
    #ssl on;
        server_name  localhost;
        ......
        ......

即可http和https共存,都能访问系统·

ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance报错解决方法

服务器来电启动的oracle的时候报错ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.,详细信息如下:

[root@hch_test_pd_121_217 local]$su - oracle
[oracle@hch_test_pd_121_217 ~]$rlwrap sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Sat Mar 17 15:08:08 2018

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.

Total System Global Area 3.0198E+10 bytes
Fixed Size                  2214456 bytes
Variable Size            1.3959E+10 bytes
Database Buffers         1.6106E+10 bytes
Redo Buffers              130793472 bytes
Database mounted.
Database opened.

查看数据库弃用的系统参数:

SQL> select name from v$parameter where isdeprecated = 'TRUE';

NAME
--------------------------------------------------------------------------------
lock_name_space
instance_groups
resource_manager_cpu_allocation
active_instance_count
buffer_pool_keep
buffer_pool_recycle
log_archive_start
standby_archive_dest
log_archive_local_first
parallel_server
parallel_server_instances

NAME
--------------------------------------------------------------------------------
fast_start_io_target
serial_reuse
max_enabled_roles
remote_os_authent
global_context_pool_size
cursor_space_for_time
plsql_v2_compatibility
plsql_debug
background_dump_dest
user_dump_dest
commit_write

NAME
--------------------------------------------------------------------------------
sql_trace
parallel_automatic_tuning
parallel_io_cap_enabled

25 rows selected.

ora-32004错误不影响数据库的使用,报错信息为参数过期,可以看alter_orcl.log 日志文件那个参数过期

SQL> show parameter background_dump_dest;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
background_dump_dest                 string      /oracle/app/oracle/diag/rdbms/
                                                 pdunq/powerdes/trace

新开ssh窗口,直接查看alert日志:

tail -f /oracle/app/oracle/diag/rdbms/pdunq/powerdes/trace/alert_powerdes.log

具体日志内容:

  dispatchers              = "(PROTOCOL=TCP) (SERVICE=powerdes)"
  job_queue_processes      = 1000
  _system_trig_enabled     = FALSE
  audit_file_dest          = "/oracle/app/oracle/admin/powerdes/adump"
  audit_trail              = "NONE"
  db_name                  = "powerdes"
  db_unique_name           = "pdunq"
  open_cursors             = 3000
  optimizer_mode           = "FIRST_ROWS"
  optimizer_index_cost_adj = 25
  optimizer_index_caching  = 90
  _optim_peek_user_binds   = FALSE
  pga_aggregate_target     = 5591424409
  diagnostic_dest          = "/oracle/app/oracle"
Deprecated system parameters with specified values:
  log_archive_start        
End of deprecated system parameter listing

重点看Deprecated system parameters with specified values,其中log_archive_start为相关的参数,
查看log_archive_start参数的值

SQL> show parameter log_archive_start;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_start                    boolean     FALSE

将log_archive_start参数重置为系统默认值

SQL> alter system reset log_archive_start;

System altered.

最后在重启数据库,

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
Total System Global Area 3.0198E+10 bytes
Fixed Size                  2214456 bytes
Variable Size            1.3959E+10 bytes
Database Buffers         1.6106E+10 bytes
Redo Buffers              130793472 bytes
Database mounted.
Database opened.
SQL> 

没有报ORA-32004错误问题解决.

Linux查看文件系统分区格式类型的几个方法

fstab 记录了计算机上硬盘分区的相关信息,启动 Linux 的时候,检查分区的 fsck 命令,和挂载分区的 mount 命令,都需要 fstab 中的信息,来正确的检查和挂载硬盘。
/etc/mtab 和 fstab 文件的结构和内容基本相同,但是不同的是,mtab 文件记录的是,当前已挂载的分区信息。
每当 mount 挂载分区、umount 卸载分区,都会动态更新 mtab,mtab 总是保持着当前系统中已挂载的分区信息,fdisk、df 这类程序,必须要读取 mtab 文件,才能获得当前系统中的分区挂载情况。
使用df -hT命令查看

[root@ops163 ~]# df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/vda2      xfs        20G  1.2G   19G   6% /
devtmpfs       devtmpfs  7.8G     0  7.8G   0% /dev
tmpfs          tmpfs     7.8G     0  7.8G   0% /dev/shm
tmpfs          tmpfs     7.8G  8.4M  7.8G   1% /run
tmpfs          tmpfs     7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/vda5      xfs       172G   33M  172G   1% /data
/dev/vda1      xfs       473M  168M  305M  36% /boot
tmpfs          tmpfs     1.6G     0  1.6G   0% /run/user/0



---阅读剩余部分---

MySQL中grant授权和撤销权限revoke的语法说明

MySQL的权限系统围绕着两个概念:
认证->确定用户是否允许连接数据库服务器
授权->确定用户是否拥有足够的权限执行查询请求等。
如果认证不成功的话,哪么授权肯定是无法进行的。
revoke 跟 grant 的语法差不多,只需要把关键字 “to” 换成 “from”
GRANT和REVOKE管理的权限

ALL PRIVILEGES
影响除WITH GRANT OPTION之外的所有权限

ALTER
影响ALTER TABLE命令的使用

ALTER ROUTINE
影响创建存储例程的能力

CREATE
影响CREATE TABLE命令的使用

CREATE ROUTINE
影响更改和弃用存储例程的能力

CREATE TEMPORARY TABLES
影响CREATE TEMPORARY TABLE命令的使用

CREATE USER
影响创建、弃用;重命名和撤销用户权限的能力

CREATE VIEW
影响CREATE VIEW命令的使用

DELETE
影响DELETE命令的使用

DROP
影响DROP TABLE命令的使用

EXECUTE
影响用户运行存储过程的能力

EVENT
影响执行事件的能力(从MySQL5.1.6开始)

FILE
影响SELECT INTO OUTFILE和LOAD DATA INFILE的使用

GRANT OPTION
影响用户委派权限的能力

INDEX
影响CREATE INDEX和DROP INDEX命令的使用

INSERT
影响INSERT命令的使用

LOCK TABLES
影响LOCK TABLES命令的使用

PROCESS
影响SHOW PROCESSLIST命令的使用

REFERENCES
未来MySQL特性的占位符

RELOAD
影响FLUSH命令集的使用

REPLICATION CLIENT
影响用户查询从服务器和主服务器位置的能力

REPLICATION SLAVE
复制从服务器所需的权限

SELECT
影响SELECT命令的使用

SHOW DATABASES
影响SHOW DATABASES命令的使用

SHOW VIEW
影响SHOW CREATE VIEW命令的使用

SHUTDOWN
影响SHUTDOWN命令的使用

SUPER
影响管理员级命令的使用,如CHANGE、MASTER、KILL thread、mysqladmin debug、PURGE MASTER LOGS和SET GLOBAL

TRIGGER
影响执行触发器的能力(从MySQL5.1.6开始)

UPDATE
影响UPDATE命令的使用

USAGE
只连接,不授予权限

Oracle数据库修改用户临时表空间

查看所有用户的临时表空间及相应的数据文件

select d.username, t.file_name, d.temporary_tablespace from DBA_TEMP_FILES t,dba_users d where t.tablespace_name = d.temporary_tablespace

修改临时表空间tmp的大小

alter database tempfile '/home/oracle/oradata/trade/temp01.dbf' resize 10G;

将系统的默认临时表空间设为tmp

alter database default temporary tablespace tmp

修改用户aa的默认表空间为tmp

alter user aa temporary tablespace tmp;

删除用户aa以前的临时表空间ex_aa

drop tablespace ex_aa including contents and datafiles;

Oracle增加表空间大小的四种方法

给表空间增加数据文件

ALTER TABLESPACE app_data ADD DATAFILE
'/oracle/app/oracle/oradata/jxctest/BF_DATA.dbf' SIZE 10G;

新增数据文件,并且允许数据文件自动增长

ALTER TABLESPACE app_data ADD DATAFILE
'/oracle/app/oracle/oradata/jxctest/BF_DATA.dbf' SIZE 20G
AUTOEXTEND ON NEXT 5G MAXSIZE 30G;

允许已存在的数据文件自动增长

ALTER DATABASE DATAFILE '/oracle/app/oracle/oradata/jxctest/BF_DATA.dbf'
AUTOEXTEND ON NEXT 1G MAXSIZE 20G;

手工改变已存在数据文件的大小

ALTER DATABASE DATAFILE '/oracle/app/oracle/oradata/jxctest/BF_DATA.dbf'
RESIZE 20G;

注意事项:
如果是在执行导入操作的时候最好用新增表空间文件的方法解决:

ORA-39171: Job is experiencing a resumable wait.
ORA-01691: unable to extend lob segment ORACLE.SYS_LOB0000070698C00030$$ by 8192 in tablespace USERS1

增加完以后使用下面SQL查询表空间使用情况:

SELECT a.tablespace_name, 
a.bytes total, 
b.bytes used, 
c.bytes free, 
(b.bytes * 100) / a.bytes "% USED ", 
(c.bytes * 100) / a.bytes "% FREE " 
FROM sys.sm$ts_avail a, sys.sm$ts_used b, sys.sm$ts_free c 
WHERE a.tablespace_name = b.tablespace_name 
AND a.tablespace_name = c.tablespace_name; 

使用strings查看dmp文件中的信息

获取基本信息:导出的版本、时间、导出的用户

strings exp111.dmp | head -10
运行结果如下:
"BFPUB_MALL"."SYS_EXPORT_FULL_01"    #BFPUB_MALL导出的用户名
x86_64/Linux 2.4.xx                  #数据库服务器类型
jxctest                              #数据库名字
ZHS16GBK                             #编码类型
11.02.00.04.00                       #数据库版本
001:001:000001:000001
HDR>T<?
[uUUUUUUUUUU
VWRMF
ww|(

获取dmp文件中的表信息

strings test.dmp | grep "CREATE TABLE"|awk '{print $3}'|sed 's/"//g'

oracle创建实例提示主机名不能有下划线并且不能超过32个字符

EMCA stops with "Hostname should not contain underscore _ in it and it should not be longer than 32 characters" [ID 1265731.1]
Applies to:
Enterprise Manager Grid Control - Version: 10.2.0.4 to 11.2.0.2 - Release: 10.2 to 11.2
Information in this document applies to any platform.
10.x和11.2.x版本都存在这个问题,主机名一定不要加_线,加的话,会带来很多莫名其妙的问题
解决方法:
1、去掉主机名中的下划线,长度别超过32个字符
2、修改oracle用户环境变量增加:

export ORACLE_HOSTNAME=HOSTNAME

3、修改/etc/hosts文件增加主机名对应的本机IP解析,如

192.168.121.127 dev127

expdp和impdp时应该注重的事项

1、exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
2、expdp和impdp是服务端的工具程序,他们只能在oracle服务端使用,不能在客户端使用。
3、imp只适用于exp导出的文件,不适用于expdp导出文件;impdp只适用于expdp导出的文件,而不适用于exp导出文件。
4、对于10g以上的服务器,使用exp通常不能导出0行数据的空表,而此时必须使用expdp导出。

一、创建逻辑目录,该命令不会在操作系统创建真正的目录(请先创建真正的目录),最好以system等管理员创建逻辑目录。

rlwrap sqlplus / as sysdba
SQL>create directory dump_dir as '/home/oracle/dumpfile';

二、查看管理员目录(同时查看操作系统是否存在,因为oracle并不关心该目录是否存在,假如不存在,则出错)

SQL>select * from dba_directories;

三、给ice用户赋予在指定目录的操作权限,最好以system等管理员赋予。

SQL>grant read,write on directory dump_dir to ice;

四、用expdp导出数据

1)导出用户

expdp ice/123456@orcl schemas=ice dumpfile=ice.dmp directory=dump_dir;

2)导出表

expdp ice/123456@orcl tables=emp,dept dumpfile=expdp.dmp directory=dump_dir;

3)按查询条件导

expdp ice/123456@orcl directory=dump_dir dumpfile=expdp.dmp tables=emp query='where deptno=20';

4)按表空间导

expdp system/manager@orcl directory=dump_dir dumpfile=tablespace.dmp tablespaces=temp,example;

5)导整个数据库

expdp system/manager@orcl directory=dump_dir dumpfile=full.dmp full=y;

6)导出用户下的所有表

expdp ice/123456@orcl dumpfile=expdp.dmp directory=dump_dir logfile=expdp.log;

五、用impdp导入数据

1)导入用户(从用户scott导入到用户scott)

impdp scott/tiger@orcl directory=dump_dir dumpfile=expdp.dmp schemas=scott;

2)导入表(从scott用户中把表dept和emp导入到system用户中)

impdp system/manager@orcl directory=dump_dir dumpfile=expdp.dmp tables=scott.dept,scott.emp remap_schema=scott:system;

3)导入表空间

impdp system/manager@orcl directory=dump_dir dumpfile=tablespace.dmp tablespaces=example;

4)导入数据库

impdb system/manager@orcl directory=dump_dir dumpfile=full.dmp full=y;

5)追加数据

impdp system/manager@orcl directory=dump_dir dumpfile=expdp.dmp schemas=system table_exists_action

导数据得时候,有可能报错。为什么?有以下主要的原因:

  A. 导入的对象(表,视图,方法等)原本不属于当前连接的用户的
  B. 导入的对象在该数据库的指定用户下已经存在
  C. 导入的对象的原本用户不在这个数据库里

对于这三个问题的处理方法如下:  
a/c、所有对象全部导入到指定的账户下:
imp kf_new/zx@zxcc_new file=d:\zxcc.dmp fromuser=kf touser=kf_new
其中fromuser=kf为.dmp文件里的对象的原先的owner, touser=kf_new 为作为导入的对象的新的Owner.

b、忽略/插入数据:
imp kf_new/zx@zxcc_new file= d:\zxcc.dmp ignore=y
其中ignore=y告诉imp.exe把数据直接插入到相应对象(并且如果导入的对象里面有其他的对象,如约束,索引等,会在数据插入后被创建)。

忽略加载约束
  有时候导数据进来的时候,我们不需要把它的约束,比如一些外键约束等都导进来,可以加上参数constraints=N
  不加载索引(比如唯一性的索引),可以加上参数indexs=N
只加载结构,不加载数据,如果只要表的结构等定义(约束,触发器),而不要里面的数据,可以加上参数rows=N
  对于上述操作登陆操作的用户需是管理员,如果不是管理员,而是普通用户,那么这个用户必须有创建删除对象的权利,对象可能包括表,视图,方法,存储过程等等常见的对象。为什么“可能”包括?因为这个视导入导出的时候是否涉及相关类型的对象而定.

Expdp/Impdp的相关参数

EXPDP命令行选项
1. ATTACH
该选项用于在客户会话与已存在导出作用之间建立关联.语法如下
ATTACH=[schema_name.]job_name
Schema_name用于指定方案名,job_name用于指定导出作业名.注意,如果使用ATTACH选项,在命令行除了连接字符串和ATTACH选项外,不能指定任何其他选项,示例如下:
Expdp scott/tiger ATTACH=scott.export_job
2. CONTENT
该选项用于指定要导出的内容.默认值为ALL
CONTENT={ALL | DATA_ONLY | METADATA_ONLY}
当设置CONTENT为ALL 时,将导出对象定义及其所有数据.为DATA_ONLY时,只导出对象数据,为METADATA_ONLY时,只导出对象定义
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dump
CONTENT=METADATA_ONLY
3. DIRECTORY
指定转储文件和日志文件所在的目录
DIRECTORY=directory_object
Directory_object用于指定目录对象名称.需要注意,目录对象是使用CREATE DIRECTORY语句建立的对象,而不是OS 目录
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dump
建立目录:
CREATE DIRECTORY dump as ‘d:dump’;
查询创建了那些子目录:
SELECT * FROM dba_directories;
4. DUMPFILE
用于指定转储文件的名称,默认名称为expdat.dmp
DUMPFILE=[directory_object:]file_name [,….]
Directory_object用于指定目录对象名,file_name用于指定转储文件名.需要注意,如果不指定directory_object,导出工具会自动使用DIRECTORY选项指定的目录对象
Expdp scott/tiger DIRECTORY=dump1 DUMPFILE=dump2:a.dmp
5. ESTIMATE
指定估算被导出表所占用磁盘空间分方法.默认值是BLOCKS
EXTIMATE={BLOCKS | STATISTICS}
设置为BLOCKS时,oracle会按照目标对象所占用的数据块个数乘以数据块尺寸估算对象占用的空间,设置为STATISTICS时,根据最近统计值估算对象占用空间
Expdp scott/tiger TABLES=emp ESTIMATE=STATISTICS
DIRECTORY=dump DUMPFILE=a.dump
6. EXTIMATE_ONLY
指定是否只估算导出作业所占用的磁盘空间,默认值为N
EXTIMATE_ONLY={Y | N}
设置为Y时,导出作用只估算对象所占用的磁盘空间,而不会执行导出作业,为N时,不仅估算对象所占用的磁盘空间,还会执行导出操作.
Expdp scott/tiger ESTIMATE_ONLY=y NOLOGFILE=y
7. EXCLUDE
该选项用于指定执行操作时释放要排除对象类型或相关对象
EXCLUDE=object_type[:name_clause] [,….]
Object_type用于指定要排除的对象类型,name_clause用于指定要排除的具体对象.EXCLUDE和INCLUDE不能同时使用
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dup EXCLUDE=VIEW
8. FILESIZE
指定导出文件的最大尺寸,默认为0,(表示文件尺寸没有限制)
9. FLASHBACK_SCN
指定导出特定SCN时刻的表数据
FLASHBACK_SCN=scn_value
Scn_value用于标识SCN值.FLASHBACK_SCN和FLASHBACK_TIME不能同时使用
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp
FLASHBACK_SCN=358523
10. FLASHBACK_TIME
指定导出特定时间点的表数据
FLASHBACK_TIME=”TO_TIMESTAMP(time_value)”
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp FLASHBACK_TIME=
“TO_TIMESTAMP(’25-08-2004 14:35:00’,’DD-MM-YYYY HH24:MI:SS’)”
11. FULL
指定数据库模式导出,默认为N
FULL={Y | N}
为Y时,标识执行数据库导出.
12. HELP
指定是否显示EXPDP命令行选项的帮助信息,默认为N
当设置为Y时,会显示导出选项的帮助信息.
Expdp help=y
13. INCLUDE
指定导出时要包含的对象类型及相关对象
INCLUDE = object_type[:name_clause] [,… ]
14. JOB_NAME
指定要导出作用的名称,默认为SYS_XXX
JOB_NAME=jobname_string
15. LOGFILE
指定导出日志文件文件的名称,默认名称为export.log
LOGFILE=[directory_object:]file_name
Directory_object用于指定目录对象名称,file_name用于指定导出日志文件名.如果不指定directory_object.导出作用会自动使用DIRECTORY的相应选项值.
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp logfile=a.log
16. NETWORK_LINK
指定数据库链名,如果要将远程数据库对象导出到本地例程的转储文件中,必须设置该选项.
17. NOLOGFILE
该选项用于指定禁止生成导出日志文件,默认值为N.
18. PARALLEL
指定执行导出操作的并行进程个数,默认值为1
19. PARFILE
指定导出参数文件的名称
PARFILE=[directory_path] file_name
20. QUERY
用于指定过滤导出数据的where条件
QUERY=[schema.] [table_name:] query_clause
Schema 用于指定方案名,table_name用于指定表名,query_clause用于指定条件限制子句.QUERY选项不能与 CONNECT=METADATA_ONLY,EXTIMATE_ONLY,TRANSPORT_TABLESPACES等选项同时使用.
Expdp scott/tiger directory=dump dumpfiel=a.dmp
Tables=emp query=’WHERE deptno=20’
21. SCHEMAS
该方案用于指定执行方案模式导出,默认为当前用户方案.
22. STATUS
指定显示导出作用进程的详细状态,默认值为0
23. TABLES
指定表模式导出
TABLES=[schema_name.]table_name[:partition_name][,…]
Schema_name用于指定方案名,table_name用于指定导出的表名,partition_name用于指定要导出的分区名.
24. TABLESPACES
指定要导出表空间列表
25. TRANSPORT_FULL_CHECK
该选项用于指定被搬移表空间和未搬移表空间关联关系的检查方式,默认为N.
当设置为Y时,导出作用会检查表空间直接的完整关联关系,如果表空间所在表空间或其索引所在的表空间只有一个表空间被搬移,将显示错误信息.当设置为N时, 导出作用只检查单端依赖,如果搬移索引所在表空间,但未搬移表所在表空间,将显示出错信息,如果搬移表所在表空间,未搬移索引所在表空间,则不会显示错误信息.
26. TRANSPORT_TABLESPACES
指定执行表空间模式导出
27. VERSION
指定被导出对象的数据库版本,默认值为COMPATIBLE.
VERSION={COMPATIBLE | LATEST | version_string}
为COMPATIBLE时,会根据初始化参数COMPATIBLE生成对象元数据;为LATEST时,会根据数据库的实际版本生成对象元数据.version_string用于指定数据库版本字符串.调用EXPDP
使用EXPDP工具时,其转储文件只能被存放在DIRECTORY对象对应的OS目录中,而不能直接指定转储文件所在的OS目录.因此,
使用EXPDP工具时,必须首先建立DIRECTORY对象.并且需要为数据库用户授予使用DIRECTORY对象权限.

Oracle查看用户默认的表空间及大小

查看用户默认的表空间:

select username,default_tablespace from dba_users;

查看用户默认的表空间文件路径:

select t1.name,t2.name from v$tablespace t1, v$datafile t2 where t1.ts# = t2.ts#;

查看用户默认的表空间文件大小:(单位MB)

SELECT tablespace_name, 
file_id, 
file_name, 
round(bytes / (1024 * 1024), 0) total_space 
FROM dba_data_files 
ORDER BY tablespace_name; 

查看指定用户下的所有表

select  table_name from all_tables where owner = upper('TANAME');

MongoDB备份/还原/导出/导入

mongodb数据备份和还原主要分为二种,一种是针对于库的mongodump和mongorestore,一种是针对库中表的mongoexport和mongoimport。
mongodb.png
一、mongodump备份数据库
常用命令

mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径  

如果没有用户谁,可以去掉-u和-p。
如果导出本机的数据库,可以去掉-h。
如果是默认端口,可以去掉--port。
如果想导出所有数据库,可以去掉-d。
导出所有数据库

mongodump -h 127.0.0.1 --port 30000 -o /tmp/mon

导出指定库

mongodump -h 127.0.0.1 --port 30000 -d DBNAME -o /tmp/mon

二、mongorestore还原数据库

mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 --drop 文件路径

--drop的意思是,先删除所有的记录,然后恢复
恢复所有数据库到mongodb中

mongorestore -h 127.0.0.1 --port 30000 /tmp/mon

还原指定的数据库

mongorestore -h 127.0.0.1 --port 30000 -d NEWDB /tmp/mon/newdb

三、mongoexport导出表,或者表中部分字段
常用命令格式

mongoexport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 -f 字段 -q 条件导出 --csv -o 文件名  

-f 导出指字段,以字号分割,-f name,email,age导出name,email,age这三个字段
-q 可以根查询条件导出,-q '{ "uid" : "100" }' 导出uid为100的数据
--csv 表示导出的文件格式为csv的,这个比较有用,因为大部分的关系型数据库都是支持csv,在这里有共同点
导出整张表

mongoexport -d DBNAME -c TBNAME -o /tmp/mon/xxx/xxxx.dat

导出表中部分字段

mongoexport -d DBNAME -c TBNAME -f uid,name,sex -o /tmp/mon/xxx/xxxx.dat

根据条件导出

mongoexport -d DBNAME -c TBNAME -q '{uid:{$gt:1}}' -o /tmp/mon/users.json

四、mongoimport导入表或表字段
还原整表导出的非csv文件

mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsert --drop 文件名  
--upsert参数:插入或者更新现有数据

还原部分字段的导出文件

mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsertFields 字段 --drop 文件名
--upsertFields参数:插入或者更新现有数据

还原导出的csv文件

mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --type 类型 --headerline --upsert --drop 文件名

还原导出的表数据

mongoimport -d DBNAME -c TBNAME --upsert /tmp/mon/users.dat

部分字段的表数据导入

mongoimport -d DBNAME -c TBNAME  --upsertFields uid,name,sex /tmp/mon/users.dat

还原csv文件

mongoimport -d DBNAME -c TBNAME --type csv --headerline --file /tmp/mon/users.csv

MySQL中使用Optimize优化表

OPTIMIZE TABLE 用于回收闲置的数据库空间,当表上的数据行被删除时,所占据的磁盘空间并没有立即被回收,使用了OPTIMIZE TABLE命令后这些空间将被回收,并且对磁盘上的数据行进行重排(注意:是磁盘上,而非数据库)。

多数时间并不需要运行OPTIMIZE TABLE,只需在批量删除数据行之后,或定期(每周一次或每月一次)进行一次数据表优化操作即可,只对那些特定的表运行,这个操作对于游戏数据库中的某些表特别起作用,这些表基本上需要每周做一次优化,甚至一周两次。

如果您已经删除了表的一大部分,或者如果您已经对含有可变长度行的表(含有VARCHAR, BLOB或TEXT列的表)进行了很多更改,则应使用OPTIMIZE TABLE。被删除的记录被保持在链接清单中,后续的INSERT操作会重新使用旧的记录位置。

OPTIMIZE TABLE只对MyISAM, BDB和InnoDB表起作用。

OPTIMIZE TABLE TABLENAME

对于MyISAM表,OPTIMIZE TABLE按如下方式操作:

  1. 如果表已经删除或分解了行,则修复表。
  2. 如果未对索引页进行分类,则进行分类。
  3. 如果表的统计数据没有更新(并且通过对索引进行分类不能实现修复),则进行更新。

对于BDB表,OPTIMIZE TABLE目前被映射到ANALYZE TABLE上。

对于InnoDB表,OPTIMIZE TABLE被映射到ALTER TABLE上,这会重建表、更新索引统计信息、回收主键索引中空间。

在OPTIMIZE TABLE运行过程中,MySQL会锁定表。
如果MySQL是有备库的,只希望在主库上执行的话,那么可以加上关键字NO_WRITE_TO_BINLOG(或者LOCAL,意思完全相同)。

Postgresql修改存储位置注意事项

1、修改postgresql.conf文件中的data_directory项内容,指定自己要存储数据的文件夹。

data_directory = '/data/pg10data/'

2、修改/usr/lib/systemd/system/postgresql-10.service中Environment项的内容

Environment=PGDATA=/data/pg10data/

3、将修改后的文件夹的属组和属主都改成postgre

chown postgres:postgres /data/pg10data

4、将修改后的文件夹的权限改成0700,即chmod 700 文件夹路径

chmod 700 /data/pg10data

查看PostgreSQL版本号

在Linux系统下,可以通过命令“postgres -V”或者命令“psql -V”查看

su - postgres
psql -V  或者 psql --version
psql (PostgreSQL) 10.1

在数据库里面直接使用SELECT version();查询

postgres=# select version();   #当前客户端Postgresql版本号
                                                 version                                                 
---------------------------------------------------------------------------------------------------------
 PostgreSQL 10.1 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16), 64-bit
(1 row)

postgres=# show server_version;   #查看所连接服务器端Postgresql版本号
 server_version 
----------------
 10.1
(1 row)

修改PostgreSQL数据库默认用户postgres密码

PostgreSQL 安装完成后,会建立一下'postgres'用户,用于执行PostgreSQL,数据库中也会建立一个'postgres'用户,默认密码为自动生成,需要在系统中改一下。

su - postgres    #切换用户,执行后提示符会变为 '-bash-4.2$'
psql -U postgres #登录数据库,执行后提示符变为 'postgres=#'
ALTER USER postgres WITH PASSWORD 'xxxxxx';  设置postgres用户密码 或者直接输入
\q  #退出数据库

也可以用下面这个方式

su - postgres
psql    #登录pg
\password postgres          #给postgres用户设置密码
Enter new password: 
Enter it again: 
\q

CentOS7.4快速安装PostgreSQL10.1

PostgreSQL可根据不同操作系统版本现在相应的安装包,在官方下载https://www.postgresql.org/download/ 根据数据库版本、操作系统版本选择相对应的的版本:
postgresql10.jpg
安装yum更新源

yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-redhat10-10-1.noarch.rpm

安装PostgreSQL客户端和服务端

yum install postgresql10 -y
yum install postgresql10-server -y

修改配置、初始化数据库,启动服务

mkdir /data/pg10data
mkdir /data/pg10data
chmod 700 /data/pg10data
chown postgres:postgres /data/pg10data
vim /usr/lib/systemd/system/postgresql-10.service
把Environment=PGDATA=/var/lib/pgsql/10/data/修改为Environment=PGDATA=/data/pg10data/

/usr/pgsql-10/bin/postgresql-10-setup initdb   #初始化
systemctl enable postgresql-10                 #设置开机启动    
systemctl start postgresql-10                  #启动postgresql服务   

也可以使用postgreSQL自带的初始化命令initdb初始化数据库:

su - postgres
初始化
/usr/pgsql-10/bin/initdb --encoding=UTF-8 --local=zh_CN.UTF8 --pgdata=/data/pg10data/
启动
/usr/pgsql-10/bin/pg_ctl -D /data/pg10data/ -l /data/pg10data/log/pglog start
停止
/usr/pgsql-10/bin/pg_ctl -D /data/pg10data/ -l /data/pg10data/log/pglog stop
#写入系统启动项
echo "su - postgres -c '/usr/pgsql-10/bin/pg_ctl -D /data/pg10data/ -l /data/pg10data/log/pglog start'" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local   

使用一种方式就可以了。

开启远程访问

vim /data/pg10data/postgresql.conf 
修改#listen_addresses = 'localhost'  为  listen_addresses='*'

当然,'*'也可以改为任何你想开放的服务器IP

信任远程连接

echo "host    all             all             192.168.120.1/24        password" >> /data/pg10data/pg_hba.conf

允许192.168.120段的机器可以使用密码认证的方式访问数据库

修改数据目录位置

vim /data/pg10data/postgresql.conf 
data_directory = '/data/pg10data/'

最后重启postgresql服务生效

systemctl restart postgresql-10

python逐行删除文件

要删除的文件在一个txt文件里面,每行一个地址,直接使用readline然后调用系统命令删除,脚本如下

#!/usr/bin/env python
#-*- coding:utf-8 -*-
import sys
import os
myfile = codecs.open("del.txt","rw","utf-8")
line = myfile.readline()
while line:
    print line,
    line = line.strip('\n\r') #去除每行的换行符
    os.system('rm -rf %s' % (line))  
    line = myfile.readline()
myfile.close()

Oracle之报错:ORA-00054: 资源正忙,要求指定 NOWAIT

在删除列、或表的时候报错“ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效”,一般都是发生锁表造成的,或者上一条语句没有执行完成,阻塞造成了锁表;
ORA-00054.png
解决方法:
找出锁表sid

select SESS.sid, SESS.SERIAL#, LO.ORACLE_USERNAME, LO.OS_USER_NAME,
      AO.OBJECT_NAME, LO.LOCKED_MODE
from V$LOCKED_OBJECT LO, DBA_OBJECTs AO, V$SESSION SESS
where AO.OBJECT_ID = LO.OBJECT_ID 
and lo.session_id = sess.sid;

select session_id from v$locked_object;

SESSION_ID
----------
127623

根据查询出来的session_id查询

SELECT sid, serial#, username, osuser FROM v$session where sid = 127623;

SID SERIAL# USERNAME OSUSER
---------- ---------- ------------------------------ ------------------------------
127623 3412 SCOTT LILWEN

kill掉

ALTER SYSTEM KILL SESSION '127623,3412';

System altered

也可以用系统级杀进程的kill释放锁:

select spid from v$process where addr = (select paddr
from v$session where sid=&sid);
kill -9 127623 ;

再次执行删除操作即可;
注意点:如果出现了锁的问题, 某个DML操作可能等待很久没有反应。 当你采用的是直接连接数据库的方式,也不要用OS系统命令 $kill process_num 或者 $kill -9 process_num来终止用户连接,因为一个用户进程可能产生一个以上的锁,杀OS进程并不能彻底清除锁的问题。

ORA-01031权限不足解决方法

在Oracle11gR2数据库上,以DBA权限的账号执行存储过程报错,PL/SQL:ORA-01031:权限不足,如下图
01031.png

原因:
1、ORACLE默认为定义者权限,定义者权限在存储过程中ROLE无效,需要显示授权。
2、如果使用AUTHID CURRENT_USER关键字使用调用者权限,则编译时ROLE无效,运行时有效。

解决办法:

方法1:对存储过程来说,CREATE TABLE想使用CREATE ANY TABLE权限,而CREATE ANY TABLE权限来自DBA角色,默认情况下,虽然在会话环境中可见,但在存储过程中不可见(无效)

所以根据上面的第一条规则,可以显示地将CREATE ANY TABLE权限授予DBA用户就可以了,即

GRANT update ANY TABLE TO xxxuser; #里面的权限根据具体存储过程更改

方法2:采用调用者权限,由于过程中使用动态SQL,所以可以避开编译时的检查,但在运行时DBA角色生效,即

CREATE OR REPLACE PROCEDURE INSERT_DATA --插入user_客户ID,套餐表,客户宽表
(RTN_ID OUT NUMBER, --返回错误ID
 RTN_STR OUT VARCHAR --返回错误叙述
 ) AUTHID CURRENT_USER IS

Oracle11g性能参数常用查询SQL

当前会话的SID,SERIAL#

SELECT Sid, Serial# FROM V$session WHERE Audsid = Sys_Context('USERENV', 'SESSIONID');

查询session的OS进程ID

SELECT p.Spid "OS Thread", b.NAME "Name-User", s.Program, s.Sid, s.Serial#,s.Osuser, s.Machine
FROM V$process p, V$session s, V$bgprocess b
WHERE p.Addr = s.Paddr
AND p.Addr = b.Paddr And (s.sid=&1 or p.spid=&1)
UNION ALL
SELECT p.Spid "OS Thread", s.Username "Name-User", s.Program, s.Sid,s.Serial#, s.Osuser, s.Machine
FROM V$process p, V$session s
WHERE p.Addr = s.Paddr
And (s.sid=&1 or p.spid=&1)
AND s.Username IS NOT NULL;

根据sid查看对应连接正在运行的sql

SELECT /*+ PUSH_SUBQ */ Command_Type, Sql_Text, Sharable_Mem, Persistent_Mem, Runtime_Mem, Sorts,
Version_Count, Loaded_Versions, Open_Versions, Users_Opening, Executions,
Users_Executing, Loads, First_Load_Time, Invalidations, Parse_Calls,
Disk_Reads, Buffer_Gets, Rows_Processed, SYSDATE Start_Time,
SYSDATE Finish_Time, '>' || Address Sql_Address, 'N' Status
FROM V$sqlarea WHERE Address = (SELECT Sql_Address
FROM V$session WHERE Sid = &sid );

查找object为哪些进程所用

SELECT p.Spid, s.Sid, s.Serial# Serial_Num, s.Username User_Name,
a.TYPE Object_Type, s.Osuser Os_User_Name, a.Owner,
a.OBJECT Object_Name,
Decode(Sign(48 - Command), 1, To_Char(Command), 'Action Code #' || To_Char(Command)) Action,
p.Program Oracle_Process, s.Terminal Terminal, s.Program Program,
s.Status Session_Status
FROM V$session s, V$access a, V$process p
WHERE s.Paddr = p.Addr
AND s.TYPE = 'USER'
AND a.Sid = s.Sid
AND a.OBJECT = '&obj'
ORDER BY s.Username, s.Osuser

查看有哪些用户连接

SELECT s.Osuser Os_User_Name,Decode(Sign(48 - Command),1,To_Char(Command),
'Action Code #' || To_Char(Command)) Action,
p.Program Oracle_Process, Status Session_Status, s.Terminal Terminal,
s.Program Program, s.Username User_Name,
s.Fixed_Table_Sequence Activity_Meter, '' Query, 0 Memory,
0 Max_Memory, 0 Cpu_Usage, s.Sid, s.Serial# Serial_Num
FROM V$session s, V$process p
WHERE s.Paddr = p.Addr
AND s.TYPE = 'USER'
ORDER BY s.Username, s.Osuser

查看锁(lock)情况

SELECT /*+ RULE */ Ls.Osuser Os_User_Name, Ls.Username User_Name,Decode(Ls.TYPE,
'RW', 'Row wait enqueue lock', 'TM', 'DML enqueue lock','TX', 'Transaction enqueue lock', 'UL', 'User supplied lock') Lock_Type,o.Object_Name OBJECT,Decode(Ls.Lmode,1, NULL, 2, 'Row Share', 3, 'Row Exclusive',
4, 'Share', 5, 'Share Row Exclusive', 6, 'Exclusive',NULL) Lock_Mode,o.Owner, Ls.Sid, Ls.Serial# Serial_Num, Ls.Id1, Ls.Id2 FROM Sys.Dba_Objects o,
(SELECT s.Osuser, s.Username, l.TYPE, l.Lmode, s.Sid, s.Serial#, l.Id1,l.Id2 FROM V$session s, V$lock l
WHERE s.Sid = l.Sid) Ls
WHERE o.Object_Id = Ls.Id1
AND o.Owner <> 'SYS'
ORDER BY o.Owner, o.Object_Name;

查看等待(wait)情况

SELECT Ws.CLASS, Ws.COUNT COUNT, SUM(Ss.VALUE) Sum_Value
FROM V$waitstat Ws, V$sysstat Ss
WHERE Ss.NAME IN ('db block gets', 'consistent gets')
GROUP BY Ws.CLASS, Ws.COUNT;

查询会话的阻塞

SELECT /*+ rule */ Lpad(' ', Decode(l.Xidusn, 0, 3, 0)) || l.Oracle_Username User_Name,
o.Owner, o.Object_Name, s.Sid, s.Serial#
FROM V$locked_Object l, Dba_Objects o, V$session s
WHERE l.Object_Id = o.Object_Id
AND l.Session_Id = s.Sid
ORDER BY o.Object_Id, Xidusn DESC;
col username format a15
col lock_level format a8
col owner format a18
col object_name format a32
SELECT /*+ rule */ s.Username,Decode(l.TYPE, 'tm', 'table lock', 'tx', 'row lock', NULL) Lock_Level,
o.Owner, o.Object_Name, s.Sid, s.Serial#
FROM V$session s, V$lock l, Dba_Objects o
WHERE l.Sid = s.Sid
AND l.Id1 = o.Object_Id(+)
AND s.Username IS NOT NULL;

等待的事件及会话信息

SELECT Se.Sid, s.Username, Se.Event, Se.Total_Waits, Se.Time_Waited,Se.Average_Wait
FROM V$session s, V$session_Event Se
WHERE s.Username IS NOT NULL
AND Se.Sid = s.Sid
AND s.Status = 'ACTIVE'
AND Se.Event NOT LIKE '%SQL*Net%'
ORDER BY s.Username;
SELECT s.Sid, s.Username, Sw.Event, Sw.Wait_Time, Sw.State,Sw.Seconds_In_Wait
FROM V$session s, V$session_Wait Sw
WHERE s.Username IS NOT NULL
AND Sw.Sid = s.Sid
AND Sw.Event NOT LIKE '%SQL*Net%'
ORDER BY s.Username;

会话等待的file_id/block_id

col event format a24
col p1text format a12
col p2text format a12
col p3text format a12
SELECT Sid, Event, P1text, P1, P2text, P2, P3text, P3
FROM V$session_Wait
WHERE Event NOT LIKE '%SQL%'
AND Event NOT LIKE '%rdbms%'
AND Event NOT LIKE '%mon%'
ORDER BY Event;
SELECT NAME, Wait_Time
FROM V$latch l
WHERE EXISTS (SELECT 1
FROM (SELECT Sid, Event, P1text, P1, P2text, P2, P3text, P3
FROM V$session_Wait
WHERE Event NOT LIKE '%SQL%'
AND Event NOT LIKE '%rdbms%'
AND Event NOT LIKE '%mon%') x
WHERE x.P1 = l.Latch#);

当前session的跟踪文件

SELECT P1.VALUE || '/' || P2.VALUE || '_ora_' || p.Spid || '.ora' Filename
FROM V$process p, V$session s, V$parameter P1, V$parameter P2
WHERE P1.NAME = 'user_dump_dest'
AND P2.NAME = 'instance_name'
AND p.Addr = s.Paddr
AND s.Audsid = Userenv('SESSIONID')
AND p.Background IS NULL
AND Instr(p.Program, 'CJQ') = 0;

查询锁定的对象

SELECT Do.Object_Name, Session_Id, Process, Locked_Mode
FROM V$locked_Object Lo, Dba_Objects Do
WHERE Lo.Object_Id = Do.Object_Id;

各项SGA相关参数:SGA,SGASTAT

select substr(name,1,10) name,substr(value,1,10) value
from v$parameter where name = 'log_buffer';
select * from v$sgastat ;
select * from v$sga;
show parameters area_size   #查看 各项区域内存参数, 其中sort_area为排序参数用;

各项视图建议参数值:V$DB_CACHE_ADVICE、V$SHARED_POOL_ADVICE),关于PGA
也有相关视图V$PGA_TARGET_ADVICE 等。

最新

分类

归档

评论

  • 安安: 都是af
  • Liang: 嗯,有点不通顺·
  • 王庭威: “MySQL互为主从...
  • Liang: 贴下编译参数和步骤,...
  • shao3911: 您好,为什么我在编译...
  • aliang: 先看是yum安装还是...
  • aliang: 将原来的nginx安...
  • yen: 3、如果要回滚的话,...
  • yen: 刚好需要升级ngin...
  • 文雨: 一些新的method...

其它