In my current project i have a challenge regarding data redaction. we do not get data from Client because they have sensitive information in some of the columns. So to get the data from them we decided to encrypt the data and then it will come to us.
I am struggling to find an inbuilt algorithm in oracle which encrypt the data. One of the main objective of mine is:
1.) Length of my original input should remain the same after data redaction.
2.) Data type of my original input should remain after data redaction.
Can you please give me your input to achieve this.
Thanks and Regards
Ankit.
There are various options to encrypt your data, you can build your own PLSQL procedures using the DBMS_CRYPTO builtin package.
https://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_crypto.htm#ARPLS65670
Or if you use Enterprise Edition of oracle:
transparent data encryption:
https://docs.oracle.com/cd/E11882_01/network.112/e40393/asotrans.htm#ASOAG600
and if you have 12c, you can use Oracle Data Redaction:
http://www.oracle.com/technetwork/articles/database/data-redaction-odb12c-2331480.html
The advantage of the last one is that the data is not touched inside the database, Oracle Data Redaction acts as an upper layer masking data on the fly before it is returned to the application.
Related
I have a MariaDB database which uses dynamic columns.
There are around 10 such columns, because the data comes from many different devices and each of the device has different attributes. The devices send some binary data which is converted into csv and then inserted. I don't have control over this at all.
Now I am planning to migrate to oracle database 12.2 but not sure how to migrate the dynamic columns to Oracle. Any ideas please?
Oracle RDBMS doesn't support this feature natively, so you will have to write some procedures to implement something analogous to the MariaDB calls.
The closest functionality to dynamic columns is JSON. You're moving to Oracle 12.2 which has pretty JSON support. Find out more. Unless your data is very complicated with lots of nesting it should be trivial to turn CSV into JSON. Once you have JSON is easy to insert, maintain and retrieve the data using Oracle's functionality.
I have a financial system with all its business logic located in the database and i have to code an automated workflow for transactions batch processing, which consists of steps listed below:
A user or an external system inserts some data in a table
Before further processing a snapshot of this data in the form of CSV file with a digital signature has to be made. The CSV snapshot itself and its signature have to be saved in the same input table. Program updates successfully signed rows to make them available for further steps of code
...further steps of code
Obvious trouble is step#2: I don't know, how to assign results of a query as a BLOB, that represents a CSV file, to a variable. It seems like some basic stuff, but I couldn't find it. The CSV format was chosen by users, because it is human-readable. Signing itself can be made with a request to external system, so it's not an issue.
Restrictions:
there is no application server, which could process the data, so i have to do it with plsql
there is no way to save a local file, everything must be done on the fly
I know that normally one would do all the work on the application layer or with some local files, but unfortunately this is not the case.
Any help would be highly appreciated, thanks in advance
I agree with #william-robertson. you just need to create a comma delimited values string (assuming header and data row) and write that to a CLOB. I recommend an "insert" trigger. There are lots of SQL tricks you can do to make that easier). On usage of that CSV string will need to be owned by the part of the application that reads it in and needs to do something with it.
I understand yo stated you need to create a CVS, but see if you could do XML instead. Then you could use DBMS_XMLGEN to generate the necessary snapshot into a database column directly from the query for it.
I do not accept the concept that a CVS is human-readable (actually try it sometime as straight text). What is valid is that Excel displays it in human-readable form. But is should also be able to display the XML as human-readable. Further, if needed the data in it can be directly back-ported into the original columns.
Just a alternate idea.
I am migrating data from sybase to oracle using talend. I am using tSybaseInput for input and tOracleOutput for output db. I am mapping them through t_Map in some whereas direct in others.
After running the job, the row order is not maintained i.e. the order in which the data comes from sybase is not same as reflected in oracle. I need the order to be same so that I can validate the data later by outputting the data of both db to csv's and then comparing them(right now I am sorting them(unix sort) ..but it seems wrong).
Please suggest a way to maintain row order of input db in output db.
Also , is my method of validation correct or should I try something else?
The character sets and sort orders between the two vendors may be slightly different, which probably why you are seeing a change in the order. You may want to add a numeric key value to your tables in the Sybase DB, which can then be used to force a particular order once the data is imported into Oracle.
As for validation, if you are already using Unix command line, once you have a key value, you should just be able to use diff to compare the two CSV files without having to involve Excel. Alternatively you can add both Sybase and Oracle as data sources for Excel, and query the data directly into your worksheets, instead of generating CSV.
I'm learning how to implement change data capture in oracle. However, not being a DB specialist but rather a DEV, i find the process tedious with respect to other things that i have to do. I end up doing it because my DBA/DEVOP don't want to take care of it.
Hence i was wondering if there is any tool that can help set oracle change data capture. In other words a simple graphical user interface that would write the all code for me. Creation of change table, PL/SQL Script and etc....
Many thanks
topic duplicated in: dba.stackexchange
What problem are you trying to solve?
How (when) will the CDC data be consumed
Are you planning to use something akin to: Oracle 11.1 CDC doc
Be sure to heed: Oracle 11.2 CDC Warning
"Oracle Change Data Capture will be de-supported in a future release of Oracle Database and will be replaced with Oracle GoldenGate. Therefore, Oracle strongly recommends that you use Oracle GoldenGate for new applications."
The company I work for, Attunity, has a pretty slick GUI CDC tool called "Replicate".
It can directly apply changes to a selected target DB, or store changes to be applies.
Many sources (Oracle, SQLserver, DB2...) many targets (Oracle. SQLserver, Netezza, Vertica,...)
Define your source and target DB, Search/Select source table, and one click to go.
Optional transformations such as: table and column names, drop and add columns, calculate values.
Regards,
Hein.
i've a simple question, but huge issue for me.
i have need to recover the data which is in a encrypted btrieve file, for migration purpose, but i can't access to the record structure.
Someone knowns a technique for that? or opensource program?
Thanks for any help or direction to go.
By "encrypted," do you mean it has an owner name or do you mean that when you open it in a text editor, it looks strange?
Btrieve data files require the Btrieve / Pervasive PSQL engine in order to be read. Once you have the engine, you can open it and read it. You'll still need to know the record layout (or guess) in order to extract meaningful data from it. Btrieve files do not store field metadata so any Btrieve tool will only see the record as a collection of bytes.
If you know the record structure, you can create a table definition using DDF Builder or the Pervasive Control Center, and then access the table using ODBC (or JDBC, ADO.NET, PDAC, ActiveX, or OLEDB) and extract the data using your favorite tool.